diff --git a/ballerina/Dependencies.toml b/ballerina/Dependencies.toml new file mode 100644 index 0000000..788c282 --- /dev/null +++ b/ballerina/Dependencies.toml @@ -0,0 +1,45 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.8.6" + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "observe" +version = "1.2.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinax" +name = "asana" +version = "0.1.0" +dependencies = [ + {org = "ballerinai", name = "observe"} +] +modules = [ + {org = "ballerinax", packageName = "asana", moduleName = "asana"} +] + diff --git a/ballerina/client.bal b/ballerina/client.bal index 2c69ef5..c0cbc85 100644 --- a/ballerina/client.bal +++ b/ballerina/client.bal @@ -1,3 +1,6 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + // Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). // // WSO2 LLC. licenses this file to you under the Apache License, @@ -12,4 +15,3382 @@ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations -// under the License. \ No newline at end of file +// under the License. + +import ballerina/http; +import ballerina/mime; + +# This is the interface for interacting with the [Asana Platform](https://developers.asana.com). Our API reference is generated from our [OpenAPI spec] (https://raw.githubusercontent.com/Asana/openapi/master/defs/asana_oas.yaml). +public isolated client class Client { + final http:Client clientEp; + # Gets invoked to initialize the `connector`. + # + # + config - The configurations to be used when initializing the `connector` + # + serviceUrl - URL of the target service + # + return - An error if connector initialization failed + public isolated function init(ConnectionConfig config, string serviceUrl = "https://app.asana.com/api/1.0") returns error? { + http:ClientConfiguration httpClientConfig = {auth: config.auth, httpVersion: config.httpVersion, timeout: config.timeout, forwarded: config.forwarded, poolConfig: config.poolConfig, compression: config.compression, circuitBreaker: config.circuitBreaker, retryConfig: config.retryConfig, validation: config.validation}; + do { + if config.http1Settings is ClientHttp1Settings { + ClientHttp1Settings settings = check config.http1Settings.ensureType(ClientHttp1Settings); + httpClientConfig.http1Settings = {...settings}; + } + if config.http2Settings is http:ClientHttp2Settings { + httpClientConfig.http2Settings = check config.http2Settings.ensureType(http:ClientHttp2Settings); + } + if config.cache is http:CacheConfig { + httpClientConfig.cache = check config.cache.ensureType(http:CacheConfig); + } + if config.responseLimits is http:ResponseLimitConfigs { + httpClientConfig.responseLimits = check config.responseLimits.ensureType(http:ResponseLimitConfigs); + } + if config.secureSocket is http:ClientSecureSocket { + httpClientConfig.secureSocket = check config.secureSocket.ensureType(http:ClientSecureSocket); + } + if config.proxy is http:ProxyConfig { + httpClientConfig.proxy = check config.proxy.ensureType(http:ProxyConfig); + } + } + http:Client httpEp = check new (serviceUrl, httpClientConfig); + self.clientEp = httpEp; + return; + } + # Get an attachment + # + # + attachment_gid - Globally unique identifier for the attachment. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a single attachment. + resource isolated function get attachments/[string attachment_gid](boolean? opt_pretty = (), ("connected_to_app"|"created_at"|"download_url"|"host"|"name"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permanent_url"|"resource_subtype"|"size"|"view_url")[]? opt_fields = ()) returns Inline_response_200|error { + string resourcePath = string `/attachments/${getEncodedUri(attachment_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200 response = check self.clientEp->get(resourcePath); + return response; + } + # Delete an attachment + # + # + attachment_gid - Globally unique identifier for the attachment. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified attachment. + resource isolated function delete attachments/[string attachment_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/attachments/${getEncodedUri(attachment_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get attachments from an object + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + parent - Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`. + # + opt_fields - 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. + # + return - Successfully retrieved the specified object's attachments. + resource isolated function get attachments(string parent, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("connected_to_app"|"created_at"|"download_url"|"host"|"name"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permanent_url"|"resource_subtype"|"size"|"uri"|"view_url")[]? opt_fields = ()) returns Inline_response_200_2|error { + string resourcePath = string `/attachments`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "parent": parent, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_2 response = check self.clientEp->get(resourcePath); + return response; + } + # Upload an attachment + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The file you want to upload. + # + return - Successfully uploaded the attachment to the parent object. + resource isolated function post attachments(AttachmentRequest payload, boolean? opt_pretty = (), ("connected_to_app"|"created_at"|"download_url"|"host"|"name"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permanent_url"|"resource_subtype"|"size"|"view_url")[]? opt_fields = ()) returns Inline_response_200|error { + string resourcePath = string `/attachments`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + mime:Entity[] bodyParts = check createBodyParts(payload); + request.setBodyParts(bodyParts); + Inline_response_200 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get audit log events + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + start_at - Filter to events created after this time (inclusive). + # + end_at - Filter to events created before this time (exclusive). + # + event_type - Filter to events of this type. + # Refer to the [supported audit log events](/docs/audit-log-events#supported-audit-log-events) for a full list of values. + # + actor_type - Filter to events with an actor of this type. + # This only needs to be included if querying for actor types without an ID. If `actor_gid` is included, this should be excluded. + # + actor_gid - Filter to events triggered by the actor with this ID. + # + resource_gid - Filter to events with this resource ID. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + return - AuditLogEvents were successfully retrieved. + resource isolated function get workspaces/[string workspace_gid]/audit_log_events(string? start_at = (), string? end_at = (), string? event_type = (), "user"|"asana"|"asana_support"|"anonymous"|"external_administrator"? actor_type = (), string? actor_gid = (), string? resource_gid = (), int? 'limit = (), string? offset = ()) returns Inline_response_200_3|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/audit_log_events`; + map queryParam = {"start_at": start_at, "end_at": end_at, "event_type": event_type, "actor_type": actor_type, "actor_gid": actor_gid, "resource_gid": resource_gid, "limit": 'limit, "offset": offset}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_3 response = check self.clientEp->get(resourcePath); + return response; + } + # Submit parallel requests + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The requests to batch together via the Batch API. + # + return - Successfully completed the requested batch API operations. + resource isolated function post batch(Batch_body payload, boolean? opt_pretty = (), ("body"|"headers"|"status_code")[]? opt_fields = ()) returns Inline_response_200_4|error { + string resourcePath = string `/batch`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_4 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a project's custom fields + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved custom field settings objects for a project. + resource isolated function get projects/[string project_gid]/custom_field_settings(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("custom_field"|"custom_field.asana_created_field"|"custom_field.created_by"|"custom_field.created_by.name"|"custom_field.currency_code"|"custom_field.custom_label"|"custom_field.custom_label_position"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.description"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.format"|"custom_field.has_notifications_enabled"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.is_global_to_workspace"|"custom_field.is_value_read_only"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.people_value"|"custom_field.people_value.name"|"custom_field.precision"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"is_important"|"offset"|"parent"|"parent.name"|"path"|"project"|"project.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/custom_field_settings`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_5 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a portfolio's custom fields + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved custom field settings objects for a portfolio. + resource isolated function get portfolios/[string portfolio_gid]/custom_field_settings(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("custom_field"|"custom_field.asana_created_field"|"custom_field.created_by"|"custom_field.created_by.name"|"custom_field.currency_code"|"custom_field.custom_label"|"custom_field.custom_label_position"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.description"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.format"|"custom_field.has_notifications_enabled"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.is_global_to_workspace"|"custom_field.is_value_read_only"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.people_value"|"custom_field.people_value.name"|"custom_field.precision"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"is_important"|"offset"|"parent"|"parent.name"|"path"|"project"|"project.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_5|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/custom_field_settings`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_5 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a custom field + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The custom field object to create. + # + return - Custom field successfully created. + resource isolated function post custom_fields(Custom_fields_body payload, boolean? opt_pretty = (), ("asana_created_field"|"created_by"|"created_by.name"|"currency_code"|"custom_label"|"custom_label_position"|"date_value"|"date_value.date"|"date_value.date_time"|"description"|"display_value"|"enabled"|"enum_options"|"enum_options.color"|"enum_options.enabled"|"enum_options.name"|"enum_value"|"enum_value.color"|"enum_value.enabled"|"enum_value.name"|"format"|"has_notifications_enabled"|"id_prefix"|"is_formula_field"|"is_global_to_workspace"|"is_value_read_only"|"multi_enum_values"|"multi_enum_values.color"|"multi_enum_values.enabled"|"multi_enum_values.name"|"name"|"number_value"|"people_value"|"people_value.name"|"precision"|"representation_type"|"resource_subtype"|"text_value"|"type")[]? opt_fields = ()) returns Inline_response_201|error { + string resourcePath = string `/custom_fields`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a custom field + # + # + custom_field_gid - Globally unique identifier for the custom field. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the complete definition of a custom field’s metadata. + resource isolated function get custom_fields/[string custom_field_gid](boolean? opt_pretty = (), ("asana_created_field"|"created_by"|"created_by.name"|"currency_code"|"custom_label"|"custom_label_position"|"date_value"|"date_value.date"|"date_value.date_time"|"description"|"display_value"|"enabled"|"enum_options"|"enum_options.color"|"enum_options.enabled"|"enum_options.name"|"enum_value"|"enum_value.color"|"enum_value.enabled"|"enum_value.name"|"format"|"has_notifications_enabled"|"id_prefix"|"is_formula_field"|"is_global_to_workspace"|"is_value_read_only"|"multi_enum_values"|"multi_enum_values.color"|"multi_enum_values.enabled"|"multi_enum_values.name"|"name"|"number_value"|"people_value"|"people_value.name"|"precision"|"representation_type"|"resource_subtype"|"text_value"|"type")[]? opt_fields = ()) returns Inline_response_201|error { + string resourcePath = string `/custom_fields/${getEncodedUri(custom_field_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a custom field + # + # + custom_field_gid - Globally unique identifier for the custom field. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The custom field object with all updated properties. + # + return - The custom field was successfully updated. + resource isolated function put custom_fields/[string custom_field_gid](Custom_fields_custom_field_gid_body payload, boolean? opt_pretty = (), ("asana_created_field"|"created_by"|"created_by.name"|"currency_code"|"custom_label"|"custom_label_position"|"date_value"|"date_value.date"|"date_value.date_time"|"description"|"display_value"|"enabled"|"enum_options"|"enum_options.color"|"enum_options.enabled"|"enum_options.name"|"enum_value"|"enum_value.color"|"enum_value.enabled"|"enum_value.name"|"format"|"has_notifications_enabled"|"id_prefix"|"is_formula_field"|"is_global_to_workspace"|"is_value_read_only"|"multi_enum_values"|"multi_enum_values.color"|"multi_enum_values.enabled"|"multi_enum_values.name"|"name"|"number_value"|"people_value"|"people_value.name"|"precision"|"representation_type"|"resource_subtype"|"text_value"|"type")[]? opt_fields = ()) returns Inline_response_201|error { + string resourcePath = string `/custom_fields/${getEncodedUri(custom_field_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a custom field + # + # + custom_field_gid - Globally unique identifier for the custom field. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - The custom field was successfully deleted. + resource isolated function delete custom_fields/[string custom_field_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/custom_fields/${getEncodedUri(custom_field_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get a workspace's custom fields + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved all custom fields for the given workspace. + resource isolated function get workspaces/[string workspace_gid]/custom_fields(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("asana_created_field"|"created_by"|"created_by.name"|"currency_code"|"custom_label"|"custom_label_position"|"date_value"|"date_value.date"|"date_value.date_time"|"description"|"display_value"|"enabled"|"enum_options"|"enum_options.color"|"enum_options.enabled"|"enum_options.name"|"enum_value"|"enum_value.color"|"enum_value.enabled"|"enum_value.name"|"format"|"has_notifications_enabled"|"id_prefix"|"is_formula_field"|"is_global_to_workspace"|"is_value_read_only"|"multi_enum_values"|"multi_enum_values.color"|"multi_enum_values.enabled"|"multi_enum_values.name"|"name"|"number_value"|"offset"|"path"|"people_value"|"people_value.name"|"precision"|"representation_type"|"resource_subtype"|"text_value"|"type"|"uri")[]? opt_fields = ()) returns Inline_response_200_6|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/custom_fields`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_6 response = check self.clientEp->get(resourcePath); + return response; + } + # Create an enum option + # + # + custom_field_gid - Globally unique identifier for the custom field. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The enum option object to create. + # + return - Custom field enum option successfully created. + resource isolated function post custom_fields/[string custom_field_gid]/enum_options(Custom_field_gid_enum_options_body payload, boolean? opt_pretty = (), ("color"|"enabled"|"name")[]? opt_fields = ()) returns Inline_response_201_1|error { + string resourcePath = string `/custom_fields/${getEncodedUri(custom_field_gid)}/enum_options`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Reorder a custom field's enum + # + # + custom_field_gid - Globally unique identifier for the custom field. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The enum option object to create. + # + return - Custom field enum option successfully reordered. + resource isolated function post custom_fields/[string custom_field_gid]/enum_options/insert(Enum_options_insert_body payload, boolean? opt_pretty = (), ("color"|"enabled"|"name")[]? opt_fields = ()) returns Inline_response_201_1|error { + string resourcePath = string `/custom_fields/${getEncodedUri(custom_field_gid)}/enum_options/insert`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Update an enum option + # + # + enum_option_gid - Globally unique identifier for the enum option. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The enum option object to update + # + return - Successfully updated the specified custom field enum. + resource isolated function put enum_options/[string enum_option_gid](Enum_options_enum_option_gid_body payload, boolean? opt_pretty = (), ("color"|"enabled"|"name")[]? opt_fields = ()) returns Inline_response_201_1|error { + string resourcePath = string `/enum_options/${getEncodedUri(enum_option_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_1 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Get events on a resource + # + # + 'resource - A resource ID to subscribe to. The resource can be a task, project, or goal. + # + sync - A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated. + # *Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token.If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.* + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved events. + resource isolated function get events(string 'resource, string? sync = (), boolean? opt_pretty = (), ("action"|"change"|"change.action"|"change.added_value"|"change.field"|"change.new_value"|"change.removed_value"|"created_at"|"parent"|"parent.name"|"resource"|"resource.name"|"type"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_7|error { + string resourcePath = string `/events`; + map queryParam = {"resource": 'resource, "sync": sync, "opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_7 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a goal relationship + # + # + goal_relationship_gid - Globally unique identifier for the goal relationship. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for the goal relationship. + resource isolated function get goal_relationships/[string goal_relationship_gid](boolean? opt_pretty = (), ("contribution_weight"|"resource_subtype"|"supported_goal"|"supported_goal.name"|"supported_goal.owner"|"supported_goal.owner.name"|"supporting_resource"|"supporting_resource.name")[]? opt_fields = ()) returns Inline_response_200_8|error { + string resourcePath = string `/goal_relationships/${getEncodedUri(goal_relationship_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_8 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a goal relationship + # + # + goal_relationship_gid - Globally unique identifier for the goal relationship. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the goal relationship. + # + return - Successfully updated the goal relationship. + resource isolated function put goal_relationships/[string goal_relationship_gid](Goal_relationships_goal_relationship_gid_body payload, boolean? opt_pretty = (), ("contribution_weight"|"resource_subtype"|"supported_goal"|"supported_goal.name"|"supported_goal.owner"|"supported_goal.owner.name"|"supporting_resource"|"supporting_resource.name")[]? opt_fields = ()) returns Inline_response_200_8|error { + string resourcePath = string `/goal_relationships/${getEncodedUri(goal_relationship_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_8 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Get goal relationships + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + supported_goal - Globally unique identifier for the supported goal in the goal relationship. + # + resource_subtype - If provided, filter to goal relationships with a given resource_subtype. + # + opt_fields - 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. + # + return - Successfully retrieved the requested goal relationships. + resource isolated function get goal_relationships(string supported_goal, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? resource_subtype = (), ("contribution_weight"|"offset"|"path"|"resource_subtype"|"supported_goal"|"supported_goal.name"|"supported_goal.owner"|"supported_goal.owner.name"|"supporting_resource"|"supporting_resource.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_9|error { + string resourcePath = string `/goal_relationships`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "supported_goal": supported_goal, "resource_subtype": resource_subtype, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_9 response = check self.clientEp->get(resourcePath); + return response; + } + # Add a supporting goal relationship + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The supporting resource to be added to the goal + # + return - Successfully created the goal relationship. + resource isolated function post goals/[string goal_gid]/addSupportingRelationship(Goal_gid_addSupportingRelationship_body payload, boolean? opt_pretty = (), ("contribution_weight"|"resource_subtype"|"supported_goal"|"supported_goal.name"|"supported_goal.owner"|"supported_goal.owner.name"|"supporting_resource"|"supporting_resource.name")[]? opt_fields = ()) returns Inline_response_200_8|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/addSupportingRelationship`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_8 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Removes a supporting goal relationship + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The supporting resource to be removed from the goal + # + return - Successfully removed the goal relationship. + resource isolated function post goals/[string goal_gid]/removeSupportingRelationship(Goal_gid_removeSupportingRelationship_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/removeSupportingRelationship`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a single goal. + resource isolated function get goals/[string goal_gid](boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_10 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the goal. + # + return - Successfully updated the goal. + resource isolated function put goals/[string goal_gid](Goals_goal_gid_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified goal. + resource isolated function delete goals/[string goal_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get goals + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + portfolio - Globally unique identifier for supporting portfolio. + # + project - Globally unique identifier for supporting project. + # + task - Globally unique identifier for supporting task. + # + is_workspace_level - Filter to goals with is_workspace_level set to query value. Must be used with the workspace parameter. + # + team - Globally unique identifier for the team. + # + workspace - Globally unique identifier for the workspace. + # + time_periods - Globally unique identifiers for the time periods. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested goals. + resource isolated function get goals(boolean? opt_pretty = (), string? portfolio = (), string? project = (), string? task = (), boolean? is_workspace_level = (), string? team = (), string? workspace = (), string[]? time_periods = (), int? 'limit = (), string? offset = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"offset"|"owner"|"owner.name"|"path"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_11|error { + string resourcePath = string `/goals`; + map queryParam = {"opt_pretty": opt_pretty, "portfolio": portfolio, "project": project, "task": task, "is_workspace_level": is_workspace_level, "team": team, "workspace": workspace, "time_periods": time_periods, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"time_periods": {style: FORM, explode: true}, "opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_11 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a goal + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The goal to create. + # + return - Successfully created a new goal. + resource isolated function post goals(Goals_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Create a goal metric + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The goal metric to create. + # + return - Successfully created a new goal metric. + resource isolated function post goals/[string goal_gid]/setMetric(Goal_gid_setMetric_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/setMetric`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Update a goal metric + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the goal metric. + # + return - Successfully updated the goal metric. + resource isolated function post goals/[string goal_gid]/setMetricCurrentValue(Goal_gid_setMetricCurrentValue_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/setMetricCurrentValue`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add a collaborator to a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The followers to be added as collaborators + # + return - Successfully added users as collaborators. + resource isolated function post goals/[string goal_gid]/addFollowers(Goal_gid_addFollowers_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/addFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a collaborator from a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The followers to be removed as collaborators + # + return - Successfully removed users as collaborators. + resource isolated function post goals/[string goal_gid]/removeFollowers(Goal_gid_removeFollowers_body payload, boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_10|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/removeFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get parent goals from a goal + # + # + goal_gid - Globally unique identifier for the goal. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified goal's parent goals. + resource isolated function get goals/[string goal_gid]/parentGoals(boolean? opt_pretty = (), ("current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"due_on"|"followers"|"followers.name"|"html_notes"|"is_workspace_level"|"liked"|"likes"|"likes.user"|"likes.user.name"|"metric"|"metric.can_manage"|"metric.currency_code"|"metric.current_display_value"|"metric.current_number_value"|"metric.initial_number_value"|"metric.precision"|"metric.progress_source"|"metric.resource_subtype"|"metric.target_number_value"|"metric.unit"|"name"|"notes"|"num_likes"|"owner"|"owner.name"|"start_on"|"status"|"team"|"team.name"|"time_period"|"time_period.display_name"|"time_period.end_on"|"time_period.period"|"time_period.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_12|error { + string resourcePath = string `/goals/${getEncodedUri(goal_gid)}/parentGoals`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_12 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a job by id + # + # + job_gid - Globally unique identifier for the job. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved Job. + resource isolated function get jobs/[string job_gid](boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/jobs/${getEncodedUri(job_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_13 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple memberships + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + parent - Globally unique identifier for `goal` or `project`. + # + member - Globally unique identifier for `team` or `user`. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested membership. + resource isolated function get memberships(boolean? opt_pretty = (), string? parent = (), string? member = (), int? 'limit = (), string? offset = (), ("offset"|"path"|"uri")[]? opt_fields = ()) returns Inline_response_200_14|error { + string resourcePath = string `/memberships`; + map queryParam = {"opt_pretty": opt_pretty, "parent": parent, "member": member, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_14 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a membership + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The updated fields for the membership. + # + return - Successfully created the requested membership. + resource isolated function post memberships(Memberships_body payload, boolean? opt_pretty = ()) returns Inline_response_201_2|error { + string resourcePath = string `/memberships`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_2 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a membership + # + # + membership_gid - Globally unique identifier for the membership. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a single membership. + resource isolated function get memberships/[string membership_gid](boolean? opt_pretty = (), ("access_level"|"member"|"member.name"|"parent"|"parent.name"|"resource_subtype")[]? opt_fields = ()) returns Inline_response_200_15|error { + string resourcePath = string `/memberships/${getEncodedUri(membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_15 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a membership + # + # + membership_gid - Globally unique identifier for the membership. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The membership to update. + # + return - Successfully updated the requested membership. + resource isolated function put memberships/[string membership_gid](Memberships_membership_gid_body payload, boolean? opt_pretty = ()) returns Inline_response_201_2|error { + string resourcePath = string `/memberships/${getEncodedUri(membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_2 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a membership + # + # + membership_gid - Globally unique identifier for the membership. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the requested membership. + resource isolated function delete memberships/[string membership_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/memberships/${getEncodedUri(membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Create an organization export request + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The organization to export. + # + return - Successfully created organization export request. + resource isolated function post organization_exports(Organization_exports_body payload, boolean? opt_pretty = (), ("created_at"|"download_url"|"organization"|"organization.name"|"state")[]? opt_fields = ()) returns Inline_response_201_3|error { + string resourcePath = string `/organization_exports`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_3 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get details on an org export request + # + # + organization_export_gid - Globally unique identifier for the organization export. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved organization export object. + resource isolated function get organization_exports/[string organization_export_gid](boolean? opt_pretty = (), ("created_at"|"download_url"|"organization"|"organization.name"|"state")[]? opt_fields = ()) returns Inline_response_201_3|error { + string resourcePath = string `/organization_exports/${getEncodedUri(organization_export_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_3 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple portfolio memberships + # + # + portfolio - The portfolio to filter results on. + # + workspace - The workspace to filter results on. + # + user - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved portfolio memberships. + resource isolated function get portfolio_memberships(string? portfolio = (), string? workspace = (), string? user = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("offset"|"path"|"portfolio"|"portfolio.name"|"uri"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_16|error { + string resourcePath = string `/portfolio_memberships`; + map queryParam = {"portfolio": portfolio, "workspace": workspace, "user": user, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_16 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a portfolio membership + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested portfolio membership. + resource isolated function get portfolio_memberships/[string portfolio_membership_gid](boolean? opt_pretty = (), ("portfolio"|"portfolio.name"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_17|error { + string resourcePath = string `/portfolio_memberships/${getEncodedUri(portfolio_membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_17 response = check self.clientEp->get(resourcePath); + return response; + } + # Get memberships from a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + user - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested portfolio's memberships. + resource isolated function get portfolios/[string portfolio_gid]/portfolio_memberships(string? user = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("offset"|"path"|"portfolio"|"portfolio.name"|"uri"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_16|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/portfolio_memberships`; + map queryParam = {"user": user, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_16 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple portfolios + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + workspace - The workspace or organization to filter portfolios on. + # + owner - The user who owns the portfolio. Currently, API users can only get a list of portfolios that they themselves own, unless the request is made from a Service Account. In the case of a Service Account, if this parameter is specified, then all portfolios owned by this parameter are returned. Otherwise, all portfolios across the workspace are returned. + # + opt_fields - 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. + # + return - Successfully retrieved portfolios. + resource isolated function get portfolios(string workspace, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? owner = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"offset"|"owner"|"owner.name"|"path"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_18|error { + string resourcePath = string `/portfolios`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "workspace": workspace, "owner": owner, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_18 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a portfolio + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The portfolio to create. + # + return - Successfully created portfolio. + resource isolated function post portfolios(Portfolios_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"owner"|"owner.name"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_4|error { + string resourcePath = string `/portfolios`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_4 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested portfolio. + resource isolated function get portfolios/[string portfolio_gid](boolean? opt_pretty = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"owner"|"owner.name"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_4|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_4 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the portfolio. + # + return - Successfully updated the portfolio. + resource isolated function put portfolios/[string portfolio_gid](Portfolios_portfolio_gid_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"owner"|"owner.name"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_4|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_4 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified portfolio. + resource isolated function delete portfolios/[string portfolio_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get portfolio items + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested portfolio's items. + resource isolated function get portfolios/[string portfolio_gid]/items(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"offset"|"owner"|"path"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_19|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/items`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_19 response = check self.clientEp->get(resourcePath); + return response; + } + # Add a portfolio item + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - Information about the item being inserted. + # + return - Successfully added the item to the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/addItem(Portfolio_gid_addItem_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/addItem`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a portfolio item + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - Information about the item being removed. + # + return - Successfully removed the item from the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/removeItem(Portfolio_gid_removeItem_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/removeItem`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add a custom field to a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - Information about the custom field setting. + # + return - Successfully added the custom field to the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/addCustomFieldSetting(Portfolio_gid_addCustomFieldSetting_body payload, boolean? opt_pretty = ()) returns Inline_response_200_20|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/addCustomFieldSetting`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_20 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a custom field from a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - Information about the custom field setting being removed. + # + return - Successfully removed the custom field from the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/removeCustomFieldSetting(Portfolio_gid_removeCustomFieldSetting_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/removeCustomFieldSetting`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add users to a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the members being added. + # + return - Successfully added members to the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/addMembers(Portfolio_gid_addMembers_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"owner"|"owner.name"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_4|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/addMembers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_4 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove users from a portfolio + # + # + portfolio_gid - Globally unique identifier for the portfolio. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the members being removed. + # + return - Successfully removed the members from the portfolio. + resource isolated function post portfolios/[string portfolio_gid]/removeMembers(Portfolio_gid_removeMembers_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"created_by"|"created_by.name"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"due_on"|"members"|"members.name"|"name"|"owner"|"owner.name"|"permalink_url"|"project_templates"|"project_templates.name"|"public"|"start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_4|error { + string resourcePath = string `/portfolios/${getEncodedUri(portfolio_gid)}/removeMembers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_4 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a project brief + # + # + project_brief_gid - Globally unique identifier for the project brief. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a project brief. + resource isolated function get project_briefs/[string project_brief_gid](boolean? opt_pretty = (), ("html_text"|"permalink_url"|"project"|"project.name"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_21|error { + string resourcePath = string `/project_briefs/${getEncodedUri(project_brief_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_21 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a project brief + # + # + project_brief_gid - Globally unique identifier for the project brief. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the project brief. + # + return - Successfully updated the project brief. + resource isolated function put project_briefs/[string project_brief_gid](Project_briefs_project_brief_gid_body payload, boolean? opt_pretty = (), ("html_text"|"permalink_url"|"project"|"project.name"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_21|error { + string resourcePath = string `/project_briefs/${getEncodedUri(project_brief_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_21 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a project brief + # + # + project_brief_gid - Globally unique identifier for the project brief. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified project brief. + resource isolated function delete project_briefs/[string project_brief_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/project_briefs/${getEncodedUri(project_brief_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Create a project brief + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The project brief to create. + # + return - Successfully created a new project brief. + resource isolated function post projects/[string project_gid]/project_briefs(Project_gid_project_briefs_body payload, boolean? opt_pretty = (), ("html_text"|"permalink_url"|"project"|"project.name"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_21|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/project_briefs`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_21 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a project membership + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested project membership. + resource isolated function get project_memberships/[string project_membership_gid](boolean? opt_pretty = (), ("access_level"|"member"|"member.name"|"parent"|"parent.name"|"project"|"project.name"|"user"|"user.name"|"write_access")[]? opt_fields = ()) returns Inline_response_200_22|error { + string resourcePath = string `/project_memberships/${getEncodedUri(project_membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_22 response = check self.clientEp->get(resourcePath); + return response; + } + # Get memberships from a project + # + # + project_gid - Globally unique identifier for the project. + # + user - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested project's memberships. + resource isolated function get projects/[string project_gid]/project_memberships(string? user = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("access_level"|"member"|"member.name"|"offset"|"parent"|"parent.name"|"path"|"uri")[]? opt_fields = ()) returns Inline_response_200_23|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/project_memberships`; + map queryParam = {"user": user, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_23 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a project status + # + # + project_status_gid - The project status update to get. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified project's status updates. + resource isolated function get project_statuses/[string project_status_gid](boolean? opt_pretty = (), ("author"|"author.name"|"color"|"created_at"|"created_by"|"created_by.name"|"html_text"|"modified_at"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_24|error { + string resourcePath = string `/project_statuses/${getEncodedUri(project_status_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_24 response = check self.clientEp->get(resourcePath); + return response; + } + # Delete a project status + # + # + project_status_gid - The project status update to get. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified project status. + resource isolated function delete project_statuses/[string project_status_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/project_statuses/${getEncodedUri(project_status_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get statuses from a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified project's status updates. + resource isolated function get projects/[string project_gid]/project_statuses(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("author"|"author.name"|"color"|"created_at"|"created_by"|"created_by.name"|"html_text"|"modified_at"|"offset"|"path"|"text"|"title"|"uri")[]? opt_fields = ()) returns Inline_response_200_25|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/project_statuses`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_25 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a project status + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The project status to create. + # + return - Successfully created a new story. + resource isolated function post projects/[string project_gid]/project_statuses(Project_gid_project_statuses_body payload, boolean? opt_pretty = (), ("author"|"author.name"|"color"|"created_at"|"created_by"|"created_by.name"|"html_text"|"modified_at"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_24|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/project_statuses`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_24 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a project template + # + # + project_template_gid - Globally unique identifier for the project template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested project template. + resource isolated function get project_templates/[string project_template_gid](boolean? opt_pretty = (), ("color"|"description"|"html_description"|"name"|"owner"|"public"|"requested_dates"|"requested_dates.description"|"requested_dates.name"|"requested_roles"|"requested_roles.name"|"team"|"team.name")[]? opt_fields = ()) returns Inline_response_200_26|error { + string resourcePath = string `/project_templates/${getEncodedUri(project_template_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_26 response = check self.clientEp->get(resourcePath); + return response; + } + # Delete a project template + # + # + project_template_gid - Globally unique identifier for the project template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified project template. + resource isolated function delete project_templates/[string project_template_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/project_templates/${getEncodedUri(project_template_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get multiple project templates + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + workspace - The workspace to filter results on. + # + team - The team to filter projects on. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested team's or workspace's project templates. + resource isolated function get project_templates(boolean? opt_pretty = (), string? workspace = (), string? team = (), int? 'limit = (), string? offset = (), ("color"|"description"|"html_description"|"name"|"offset"|"owner"|"path"|"public"|"requested_dates"|"requested_dates.description"|"requested_dates.name"|"requested_roles"|"requested_roles.name"|"team"|"team.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_27|error { + string resourcePath = string `/project_templates`; + map queryParam = {"opt_pretty": opt_pretty, "workspace": workspace, "team": team, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_27 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a team's project templates + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested team's project templates. + resource isolated function get teams/[string team_gid]/project_templates(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("color"|"description"|"html_description"|"name"|"offset"|"owner"|"path"|"public"|"requested_dates"|"requested_dates.description"|"requested_dates.name"|"requested_roles"|"requested_roles.name"|"team"|"team.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_27|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/project_templates`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_27 response = check self.clientEp->get(resourcePath); + return response; + } + # Instantiate a project from a project template + # + # + project_template_gid - Globally unique identifier for the project template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Describes the inputs used for instantiating a project, such as the resulting project's name, which team it should be created in, and values for date variables. + # + return - Successfully created the job to handle project instantiation. + resource isolated function post project_templates/[string project_template_gid]/instantiateProject(Project_template_gid_instantiateProject_body payload, boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/project_templates/${getEncodedUri(project_template_gid)}/instantiateProject`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_13 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get multiple projects + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + workspace - The workspace or organization to filter projects on. + # + team - The team to filter projects on. + # + archived - Only return projects whose `archived` field takes on the value of this parameter. + # + opt_fields - 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. + # + return - Successfully retrieved projects. + resource isolated function get projects(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? workspace = (), string? team = (), boolean? archived = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"offset"|"owner"|"path"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_19|error { + string resourcePath = string `/projects`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "workspace": workspace, "team": team, "archived": archived, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_19 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a project + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The project to create. + # + return - Successfully retrieved projects. + resource isolated function post projects(Projects_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested project. + resource isolated function get projects/[string project_gid](boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_5 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the project. + # + return - Successfully updated the project. + resource isolated function put projects/[string project_gid](Projects_project_gid_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified project. + resource isolated function delete projects/[string project_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Duplicate a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Describes the duplicate's name and the elements that will be duplicated. + # + return - Successfully created the job to handle duplication. + resource isolated function post projects/[string project_gid]/duplicate(Project_gid_duplicate_body payload, boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/duplicate`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_13 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get projects a task is in + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the projects for the given task. + resource isolated function get tasks/[string task_gid]/projects(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"offset"|"owner"|"path"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_19|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/projects`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_19 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a team's projects + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + archived - Only return projects whose `archived` field takes on the value of this parameter. + # + opt_fields - 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. + # + return - Successfully retrieved the requested team's projects. + resource isolated function get teams/[string team_gid]/projects(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), boolean? archived = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"offset"|"owner"|"path"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_19|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/projects`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "archived": archived, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_19 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a project in a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The new project to create. + # + return - Successfully created the specified project. + resource isolated function post teams/[string team_gid]/projects(Team_gid_projects_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/projects`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get all projects in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + archived - Only return projects whose `archived` field takes on the value of this parameter. + # + opt_fields - 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. + # + return - Successfully retrieved the requested workspace's projects. + resource isolated function get workspaces/[string workspace_gid]/projects(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), boolean? archived = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"offset"|"owner"|"path"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_19|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/projects`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "archived": archived, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_19 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a project in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The new project to create. + # + return - Successfully created a new project in the specified workspace. + resource isolated function post workspaces/[string workspace_gid]/projects(Workspace_gid_projects_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/projects`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add a custom field to a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the custom field setting. + # + return - Successfully added the custom field to the project. + resource isolated function post projects/[string project_gid]/addCustomFieldSetting(Project_gid_addCustomFieldSetting_body payload, boolean? opt_pretty = (), ("custom_field"|"custom_field.asana_created_field"|"custom_field.created_by"|"custom_field.created_by.name"|"custom_field.currency_code"|"custom_field.custom_label"|"custom_field.custom_label_position"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.description"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.format"|"custom_field.has_notifications_enabled"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.is_global_to_workspace"|"custom_field.is_value_read_only"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.people_value"|"custom_field.people_value.name"|"custom_field.precision"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"is_important"|"parent"|"parent.name"|"project"|"project.name")[]? opt_fields = ()) returns Inline_response_200_20|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/addCustomFieldSetting`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_20 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a custom field from a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - Information about the custom field setting being removed. + # + return - Successfully removed the custom field from the project. + resource isolated function post projects/[string project_gid]/removeCustomFieldSetting(Project_gid_removeCustomFieldSetting_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/removeCustomFieldSetting`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get task count of a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested project's task counts. + resource isolated function get projects/[string project_gid]/task_counts(boolean? opt_pretty = (), ("num_completed_milestones"|"num_completed_tasks"|"num_incomplete_milestones"|"num_incomplete_tasks"|"num_milestones"|"num_tasks")[]? opt_fields = ()) returns Inline_response_200_28|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/task_counts`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_28 response = check self.clientEp->get(resourcePath); + return response; + } + # Add users to a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the members being added. + # + return - Successfully added members to the project. + resource isolated function post projects/[string project_gid]/addMembers(Project_gid_addMembers_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/addMembers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove users from a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the members being removed. + # + return - Successfully removed the members from the project. + resource isolated function post projects/[string project_gid]/removeMembers(Project_gid_removeMembers_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/removeMembers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add followers to a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the followers being added. + # + return - Successfully added followers to the project. + resource isolated function post projects/[string project_gid]/addFollowers(Project_gid_addFollowers_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/addFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove followers from a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the followers being removed. + # + return - Successfully removed followers from the project. + resource isolated function post projects/[string project_gid]/removeFollowers(Project_gid_removeFollowers_body payload, boolean? opt_pretty = (), ("archived"|"color"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_from_template"|"created_from_template.name"|"current_status"|"current_status.author"|"current_status.author.name"|"current_status.color"|"current_status.created_at"|"current_status.created_by"|"current_status.created_by.name"|"current_status.html_text"|"current_status.modified_at"|"current_status.text"|"current_status.title"|"current_status_update"|"current_status_update.resource_subtype"|"current_status_update.title"|"custom_field_settings"|"custom_field_settings.custom_field"|"custom_field_settings.custom_field.asana_created_field"|"custom_field_settings.custom_field.created_by"|"custom_field_settings.custom_field.created_by.name"|"custom_field_settings.custom_field.currency_code"|"custom_field_settings.custom_field.custom_label"|"custom_field_settings.custom_field.custom_label_position"|"custom_field_settings.custom_field.date_value"|"custom_field_settings.custom_field.date_value.date"|"custom_field_settings.custom_field.date_value.date_time"|"custom_field_settings.custom_field.description"|"custom_field_settings.custom_field.display_value"|"custom_field_settings.custom_field.enabled"|"custom_field_settings.custom_field.enum_options"|"custom_field_settings.custom_field.enum_options.color"|"custom_field_settings.custom_field.enum_options.enabled"|"custom_field_settings.custom_field.enum_options.name"|"custom_field_settings.custom_field.enum_value"|"custom_field_settings.custom_field.enum_value.color"|"custom_field_settings.custom_field.enum_value.enabled"|"custom_field_settings.custom_field.enum_value.name"|"custom_field_settings.custom_field.format"|"custom_field_settings.custom_field.has_notifications_enabled"|"custom_field_settings.custom_field.id_prefix"|"custom_field_settings.custom_field.is_formula_field"|"custom_field_settings.custom_field.is_global_to_workspace"|"custom_field_settings.custom_field.is_value_read_only"|"custom_field_settings.custom_field.multi_enum_values"|"custom_field_settings.custom_field.multi_enum_values.color"|"custom_field_settings.custom_field.multi_enum_values.enabled"|"custom_field_settings.custom_field.multi_enum_values.name"|"custom_field_settings.custom_field.name"|"custom_field_settings.custom_field.number_value"|"custom_field_settings.custom_field.people_value"|"custom_field_settings.custom_field.people_value.name"|"custom_field_settings.custom_field.precision"|"custom_field_settings.custom_field.representation_type"|"custom_field_settings.custom_field.resource_subtype"|"custom_field_settings.custom_field.text_value"|"custom_field_settings.custom_field.type"|"custom_field_settings.is_important"|"custom_field_settings.parent"|"custom_field_settings.parent.name"|"custom_field_settings.project"|"custom_field_settings.project.name"|"custom_fields"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"default_access_level"|"default_view"|"due_date"|"due_on"|"followers"|"followers.name"|"html_notes"|"icon"|"members"|"members.name"|"minimum_access_level_for_customization"|"minimum_access_level_for_sharing"|"modified_at"|"name"|"notes"|"owner"|"permalink_url"|"privacy_setting"|"project_brief"|"public"|"start_on"|"team"|"team.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_5|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/removeFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_5 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Create a project template from a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Describes the inputs used for creating a project template, such as the resulting project template's name, which team it should be created in. + # + return - Successfully created the job to handle project template creation. + resource isolated function post projects/[string project_gid]/saveAsTemplate(Project_gid_saveAsTemplate_body payload, boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/saveAsTemplate`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_13 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Trigger a rule + # + # + rule_trigger_gid - The ID of the incoming web request trigger. This value is a path parameter that is automatically generated for the API endpoint. + # + payload - A dictionary of variables accessible from within the rule. + # + return - Successfully triggered a rule. + resource isolated function post rule_triggers/[string rule_trigger_gid]/run(Rule_trigger_gid_run_body payload) returns Inline_response_200_29|error { + string resourcePath = string `/rule_triggers/${getEncodedUri(rule_trigger_gid)}/run`; + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_29 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a section + # + # + section_gid - The globally unique identifier for the section. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved section. + resource isolated function get sections/[string section_gid](boolean? opt_pretty = (), ("created_at"|"name"|"project"|"project.name"|"projects"|"projects.name")[]? opt_fields = ()) returns Inline_response_200_30|error { + string resourcePath = string `/sections/${getEncodedUri(section_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_30 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a section + # + # + section_gid - The globally unique identifier for the section. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The section to create. + # + return - Successfully updated the specified section. + resource isolated function put sections/[string section_gid](Sections_section_gid_body payload, boolean? opt_pretty = (), ("created_at"|"name"|"project"|"project.name"|"projects"|"projects.name")[]? opt_fields = ()) returns Inline_response_200_30|error { + string resourcePath = string `/sections/${getEncodedUri(section_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_30 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a section + # + # + section_gid - The globally unique identifier for the section. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified section. + resource isolated function delete sections/[string section_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/sections/${getEncodedUri(section_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get sections in a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved sections in project. + resource isolated function get projects/[string project_gid]/sections(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("created_at"|"name"|"offset"|"path"|"project"|"project.name"|"projects"|"projects.name"|"uri")[]? opt_fields = ()) returns Inline_response_200_31|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/sections`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_31 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a section in a project + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The section to create. + # + return - Successfully created the specified section. + resource isolated function post projects/[string project_gid]/sections(Project_gid_sections_body payload, boolean? opt_pretty = (), ("created_at"|"name"|"project"|"project.name"|"projects"|"projects.name")[]? opt_fields = ()) returns Inline_response_200_30|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/sections`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_30 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add task to section + # + # + section_gid - The globally unique identifier for the section. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The task and optionally the insert location. + # + return - Successfully added the task. + resource isolated function post sections/[string section_gid]/addTask(Section_gid_addTask_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/sections/${getEncodedUri(section_gid)}/addTask`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Move or Insert sections + # + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The section's move action. + # + return - Successfully moved the specified section. + resource isolated function post projects/[string project_gid]/sections/insert(Sections_insert_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/sections/insert`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a status update + # + # + status_update_gid - The status update to get. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified object's status updates. + resource isolated function get status_updates/[string status_update_gid](boolean? opt_pretty = (), ("author"|"author.name"|"created_at"|"created_by"|"created_by.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"liked"|"likes"|"likes.user"|"likes.user.name"|"modified_at"|"num_hearts"|"num_likes"|"parent"|"parent.name"|"resource_subtype"|"status_type"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_32|error { + string resourcePath = string `/status_updates/${getEncodedUri(status_update_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_32 response = check self.clientEp->get(resourcePath); + return response; + } + # Delete a status update + # + # + status_update_gid - The status update to get. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified status. + resource isolated function delete status_updates/[string status_update_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/status_updates/${getEncodedUri(status_update_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get status updates from an object + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + parent - Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal. + # + created_since - Only return statuses that have been created since the given time. + # + opt_fields - 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. + # + return - Successfully retrieved the specified object's status updates. + resource isolated function get status_updates(string parent, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? created_since = (), ("author"|"author.name"|"created_at"|"created_by"|"created_by.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"liked"|"likes"|"likes.user"|"likes.user.name"|"modified_at"|"num_hearts"|"num_likes"|"offset"|"parent"|"parent.name"|"path"|"resource_subtype"|"status_type"|"text"|"title"|"uri")[]? opt_fields = ()) returns Inline_response_200_33|error { + string resourcePath = string `/status_updates`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "parent": parent, "created_since": created_since, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_33 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a status update + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + payload - The status update to create. + # + return - Successfully created a new status update. + resource isolated function post status_updates(Status_updates_body payload, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("author"|"author.name"|"created_at"|"created_by"|"created_by.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"liked"|"likes"|"likes.user"|"likes.user.name"|"modified_at"|"num_hearts"|"num_likes"|"parent"|"parent.name"|"resource_subtype"|"status_type"|"text"|"title")[]? opt_fields = ()) returns Inline_response_200_32|error { + string resourcePath = string `/status_updates`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_32 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a story + # + # + story_gid - Globally unique identifier for the story. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified story. + resource isolated function get stories/[string story_gid](boolean? opt_pretty = (), ("assignee"|"assignee.name"|"created_at"|"created_by"|"created_by.name"|"custom_field"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"dependency"|"dependency.created_by"|"dependency.name"|"dependency.resource_subtype"|"duplicate_of"|"duplicate_of.created_by"|"duplicate_of.name"|"duplicate_of.resource_subtype"|"duplicated_from"|"duplicated_from.created_by"|"duplicated_from.name"|"duplicated_from.resource_subtype"|"follower"|"follower.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"is_editable"|"is_edited"|"is_pinned"|"liked"|"likes"|"likes.user"|"likes.user.name"|"new_approval_status"|"new_date_value"|"new_dates"|"new_dates.due_at"|"new_dates.due_on"|"new_dates.start_on"|"new_enum_value"|"new_enum_value.color"|"new_enum_value.enabled"|"new_enum_value.name"|"new_multi_enum_values"|"new_multi_enum_values.color"|"new_multi_enum_values.enabled"|"new_multi_enum_values.name"|"new_name"|"new_number_value"|"new_people_value"|"new_people_value.name"|"new_resource_subtype"|"new_section"|"new_section.name"|"new_text_value"|"num_hearts"|"num_likes"|"old_approval_status"|"old_date_value"|"old_dates"|"old_dates.due_at"|"old_dates.due_on"|"old_dates.start_on"|"old_enum_value"|"old_enum_value.color"|"old_enum_value.enabled"|"old_enum_value.name"|"old_multi_enum_values"|"old_multi_enum_values.color"|"old_multi_enum_values.enabled"|"old_multi_enum_values.name"|"old_name"|"old_number_value"|"old_people_value"|"old_people_value.name"|"old_resource_subtype"|"old_section"|"old_section.name"|"old_text_value"|"previews"|"previews.fallback"|"previews.footer"|"previews.header"|"previews.header_link"|"previews.html_text"|"previews.text"|"previews.title"|"previews.title_link"|"project"|"project.name"|"resource_subtype"|"source"|"sticker_name"|"story"|"story.created_at"|"story.created_by"|"story.created_by.name"|"story.resource_subtype"|"story.text"|"tag"|"tag.name"|"target"|"target.created_by"|"target.name"|"target.resource_subtype"|"task"|"task.created_by"|"task.name"|"task.resource_subtype"|"text"|"type")[]? opt_fields = ()) returns Inline_response_200_34|error { + string resourcePath = string `/stories/${getEncodedUri(story_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_34 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a story + # + # + story_gid - Globally unique identifier for the story. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The comment story to update. + # + return - Successfully retrieved the specified story. + resource isolated function put stories/[string story_gid](Stories_story_gid_body payload, boolean? opt_pretty = (), ("assignee"|"assignee.name"|"created_at"|"created_by"|"created_by.name"|"custom_field"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"dependency"|"dependency.created_by"|"dependency.name"|"dependency.resource_subtype"|"duplicate_of"|"duplicate_of.created_by"|"duplicate_of.name"|"duplicate_of.resource_subtype"|"duplicated_from"|"duplicated_from.created_by"|"duplicated_from.name"|"duplicated_from.resource_subtype"|"follower"|"follower.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"is_editable"|"is_edited"|"is_pinned"|"liked"|"likes"|"likes.user"|"likes.user.name"|"new_approval_status"|"new_date_value"|"new_dates"|"new_dates.due_at"|"new_dates.due_on"|"new_dates.start_on"|"new_enum_value"|"new_enum_value.color"|"new_enum_value.enabled"|"new_enum_value.name"|"new_multi_enum_values"|"new_multi_enum_values.color"|"new_multi_enum_values.enabled"|"new_multi_enum_values.name"|"new_name"|"new_number_value"|"new_people_value"|"new_people_value.name"|"new_resource_subtype"|"new_section"|"new_section.name"|"new_text_value"|"num_hearts"|"num_likes"|"old_approval_status"|"old_date_value"|"old_dates"|"old_dates.due_at"|"old_dates.due_on"|"old_dates.start_on"|"old_enum_value"|"old_enum_value.color"|"old_enum_value.enabled"|"old_enum_value.name"|"old_multi_enum_values"|"old_multi_enum_values.color"|"old_multi_enum_values.enabled"|"old_multi_enum_values.name"|"old_name"|"old_number_value"|"old_people_value"|"old_people_value.name"|"old_resource_subtype"|"old_section"|"old_section.name"|"old_text_value"|"previews"|"previews.fallback"|"previews.footer"|"previews.header"|"previews.header_link"|"previews.html_text"|"previews.text"|"previews.title"|"previews.title_link"|"project"|"project.name"|"resource_subtype"|"source"|"sticker_name"|"story"|"story.created_at"|"story.created_by"|"story.created_by.name"|"story.resource_subtype"|"story.text"|"tag"|"tag.name"|"target"|"target.created_by"|"target.name"|"target.resource_subtype"|"task"|"task.created_by"|"task.name"|"task.resource_subtype"|"text"|"type")[]? opt_fields = ()) returns Inline_response_200_34|error { + string resourcePath = string `/stories/${getEncodedUri(story_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_34 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a story + # + # + story_gid - Globally unique identifier for the story. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified story. + resource isolated function delete stories/[string story_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/stories/${getEncodedUri(story_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get stories from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified task's stories. + resource isolated function get tasks/[string task_gid]/stories(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("assignee"|"assignee.name"|"created_at"|"created_by"|"created_by.name"|"custom_field"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"dependency"|"dependency.created_by"|"dependency.name"|"dependency.resource_subtype"|"duplicate_of"|"duplicate_of.created_by"|"duplicate_of.name"|"duplicate_of.resource_subtype"|"duplicated_from"|"duplicated_from.created_by"|"duplicated_from.name"|"duplicated_from.resource_subtype"|"follower"|"follower.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"is_editable"|"is_edited"|"is_pinned"|"liked"|"likes"|"likes.user"|"likes.user.name"|"new_approval_status"|"new_date_value"|"new_dates"|"new_dates.due_at"|"new_dates.due_on"|"new_dates.start_on"|"new_enum_value"|"new_enum_value.color"|"new_enum_value.enabled"|"new_enum_value.name"|"new_multi_enum_values"|"new_multi_enum_values.color"|"new_multi_enum_values.enabled"|"new_multi_enum_values.name"|"new_name"|"new_number_value"|"new_people_value"|"new_people_value.name"|"new_resource_subtype"|"new_section"|"new_section.name"|"new_text_value"|"num_hearts"|"num_likes"|"offset"|"old_approval_status"|"old_date_value"|"old_dates"|"old_dates.due_at"|"old_dates.due_on"|"old_dates.start_on"|"old_enum_value"|"old_enum_value.color"|"old_enum_value.enabled"|"old_enum_value.name"|"old_multi_enum_values"|"old_multi_enum_values.color"|"old_multi_enum_values.enabled"|"old_multi_enum_values.name"|"old_name"|"old_number_value"|"old_people_value"|"old_people_value.name"|"old_resource_subtype"|"old_section"|"old_section.name"|"old_text_value"|"path"|"previews"|"previews.fallback"|"previews.footer"|"previews.header"|"previews.header_link"|"previews.html_text"|"previews.text"|"previews.title"|"previews.title_link"|"project"|"project.name"|"resource_subtype"|"source"|"sticker_name"|"story"|"story.created_at"|"story.created_by"|"story.created_by.name"|"story.resource_subtype"|"story.text"|"tag"|"tag.name"|"target"|"target.created_by"|"target.name"|"target.resource_subtype"|"task"|"task.created_by"|"task.name"|"task.resource_subtype"|"text"|"type"|"uri")[]? opt_fields = ()) returns Inline_response_200_35|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/stories`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_35 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a story on a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The story to create. + # + return - Successfully created a new story. + resource isolated function post tasks/[string task_gid]/stories(Task_gid_stories_body payload, boolean? opt_pretty = (), ("assignee"|"assignee.name"|"created_at"|"created_by"|"created_by.name"|"custom_field"|"custom_field.date_value"|"custom_field.date_value.date"|"custom_field.date_value.date_time"|"custom_field.display_value"|"custom_field.enabled"|"custom_field.enum_options"|"custom_field.enum_options.color"|"custom_field.enum_options.enabled"|"custom_field.enum_options.name"|"custom_field.enum_value"|"custom_field.enum_value.color"|"custom_field.enum_value.enabled"|"custom_field.enum_value.name"|"custom_field.id_prefix"|"custom_field.is_formula_field"|"custom_field.multi_enum_values"|"custom_field.multi_enum_values.color"|"custom_field.multi_enum_values.enabled"|"custom_field.multi_enum_values.name"|"custom_field.name"|"custom_field.number_value"|"custom_field.representation_type"|"custom_field.resource_subtype"|"custom_field.text_value"|"custom_field.type"|"dependency"|"dependency.created_by"|"dependency.name"|"dependency.resource_subtype"|"duplicate_of"|"duplicate_of.created_by"|"duplicate_of.name"|"duplicate_of.resource_subtype"|"duplicated_from"|"duplicated_from.created_by"|"duplicated_from.name"|"duplicated_from.resource_subtype"|"follower"|"follower.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_text"|"is_editable"|"is_edited"|"is_pinned"|"liked"|"likes"|"likes.user"|"likes.user.name"|"new_approval_status"|"new_date_value"|"new_dates"|"new_dates.due_at"|"new_dates.due_on"|"new_dates.start_on"|"new_enum_value"|"new_enum_value.color"|"new_enum_value.enabled"|"new_enum_value.name"|"new_multi_enum_values"|"new_multi_enum_values.color"|"new_multi_enum_values.enabled"|"new_multi_enum_values.name"|"new_name"|"new_number_value"|"new_people_value"|"new_people_value.name"|"new_resource_subtype"|"new_section"|"new_section.name"|"new_text_value"|"num_hearts"|"num_likes"|"old_approval_status"|"old_date_value"|"old_dates"|"old_dates.due_at"|"old_dates.due_on"|"old_dates.start_on"|"old_enum_value"|"old_enum_value.color"|"old_enum_value.enabled"|"old_enum_value.name"|"old_multi_enum_values"|"old_multi_enum_values.color"|"old_multi_enum_values.enabled"|"old_multi_enum_values.name"|"old_name"|"old_number_value"|"old_people_value"|"old_people_value.name"|"old_resource_subtype"|"old_section"|"old_section.name"|"old_text_value"|"previews"|"previews.fallback"|"previews.footer"|"previews.header"|"previews.header_link"|"previews.html_text"|"previews.text"|"previews.title"|"previews.title_link"|"project"|"project.name"|"resource_subtype"|"source"|"sticker_name"|"story"|"story.created_at"|"story.created_by"|"story.created_by.name"|"story.resource_subtype"|"story.text"|"tag"|"tag.name"|"target"|"target.created_by"|"target.name"|"target.resource_subtype"|"task"|"task.created_by"|"task.name"|"task.resource_subtype"|"text"|"type")[]? opt_fields = ()) returns Inline_response_200_34|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/stories`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_34 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get multiple tags + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + workspace - The workspace to filter tags on. + # + opt_fields - 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. + # + return - Successfully retrieved the specified set of tags. + resource isolated function get tags(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? workspace = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"offset"|"path"|"permalink_url"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_36|error { + string resourcePath = string `/tags`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_36 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a tag + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The tag to create. + # + return - Successfully created the newly specified tag. + resource isolated function post tags(Tags_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"permalink_url"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_6|error { + string resourcePath = string `/tags`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_6 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a tag + # + # + tag_gid - Globally unique identifier for the tag. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified tag. + resource isolated function get tags/[string tag_gid](boolean? opt_pretty = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"permalink_url"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_6|error { + string resourcePath = string `/tags/${getEncodedUri(tag_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_6 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a tag + # + # + tag_gid - Globally unique identifier for the tag. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully updated the specified tag. + resource isolated function put tags/[string tag_gid](boolean? opt_pretty = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"permalink_url"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_6|error { + string resourcePath = string `/tags/${getEncodedUri(tag_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + Inline_response_201_6 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a tag + # + # + tag_gid - Globally unique identifier for the tag. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified tag. + resource isolated function delete tags/[string tag_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tags/${getEncodedUri(tag_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get a task's tags + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the tags for the given task. + resource isolated function get tasks/[string task_gid]/tags(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"offset"|"path"|"permalink_url"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_36|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/tags`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_36 response = check self.clientEp->get(resourcePath); + return response; + } + # Get tags in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified set of tags. + resource isolated function get workspaces/[string workspace_gid]/tags(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"offset"|"path"|"permalink_url"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_36|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/tags`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_36 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a tag in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The tag to create. + # + return - Successfully created the newly specified tag. + resource isolated function post workspaces/[string workspace_gid]/tags(Workspace_gid_tags_body payload, boolean? opt_pretty = (), ("color"|"created_at"|"followers"|"followers.name"|"name"|"notes"|"permalink_url"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_6|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/tags`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_6 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get multiple task templates + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + project - The project to filter task templates on. + # + opt_fields - 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. + # + return - Successfully retrieved requested task templates + resource isolated function get task_templates(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? project = (), ("created_at"|"created_by"|"name"|"project"|"template")[]? opt_fields = ()) returns Inline_response_200_37|error { + string resourcePath = string `/task_templates`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "project": project, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_37 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a task template + # + # + task_template_gid - Globally unique identifier for the task template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved requested task template + resource isolated function get task_templates/[string task_template_gid](boolean? opt_pretty = (), ("created_at"|"created_by"|"name"|"project"|"template")[]? opt_fields = ()) returns Inline_response_200_38|error { + string resourcePath = string `/task_templates/${getEncodedUri(task_template_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_38 response = check self.clientEp->get(resourcePath); + return response; + } + # Delete a task template + # + # + task_template_gid - Globally unique identifier for the task template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified task template. + resource isolated function delete task_templates/[string task_template_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/task_templates/${getEncodedUri(task_template_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Instantiate a task from a task template + # + # + task_template_gid - Globally unique identifier for the task template. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Describes the inputs used for instantiating a task - the task's name. + # + return - Successfully created the job to handle task instantiation. + resource isolated function post task_templates/[string task_template_gid]/instantiateTask(Task_template_gid_instantiateTask_body payload, boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/task_templates/${getEncodedUri(task_template_gid)}/instantiateTask`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_13 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get multiple tasks + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + assignee - The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified. + # *Note: If you specify `assignee`, you must also specify the `workspace` to filter on.* + # + project - The project to filter tasks on. + # + section - The section to filter tasks on. + # + workspace - The workspace to filter tasks on. + # *Note: If you specify `workspace`, you must also specify the `assignee` to filter on.* + # + completed_since - Only return tasks that are either incomplete or that have been completed since this time. + # + modified_since - Only return tasks that have been modified since the given time. + # *Note: A task is considered “modified” if any of its properties + # change, or associations between it and other objects are modified + # (e.g. a task being added to a project). A task is not considered + # modified just because another object it is associated with (e.g. a + # subtask) is modified. Actions that count as modifying the task + # include assigning, renaming, completing, and adding stories.* + # + opt_fields - 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. + # + return - Successfully retrieved requested tasks. + resource isolated function get tasks(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? assignee = (), string? project = (), string? section = (), string? workspace = (), string? completed_since = (), string? modified_since = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/tasks`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "assignee": assignee, "project": project, "section": section, "workspace": workspace, "completed_since": completed_since, "modified_since": modified_since, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a task + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The task to create. + # + return - Successfully created a new task. + resource isolated function post tasks(Tasks_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the specified task. + resource isolated function get tasks/[string task_gid](boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_7 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The task to update. + # + return - Successfully updated the specified task. + resource isolated function put tasks/[string task_gid](Tasks_task_gid_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified task. + resource isolated function delete tasks/[string task_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Duplicate a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Describes the duplicate's name and the fields that will be duplicated. + # + return - Successfully created the job to handle duplication. + resource isolated function post tasks/[string task_gid]/duplicate(Task_gid_duplicate_body payload, boolean? opt_pretty = (), ("new_project"|"new_project.name"|"new_project_template"|"new_project_template.name"|"new_task"|"new_task.created_by"|"new_task.name"|"new_task.resource_subtype"|"new_task_template"|"new_task_template.name"|"resource_subtype"|"status")[]? opt_fields = ()) returns Inline_response_200_13|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/duplicate`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_13 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get tasks from a project + # + # + completed_since - Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + # + project_gid - Globally unique identifier for the project. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested project's tasks. + resource isolated function get projects/[string project_gid]/tasks(string? completed_since = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/projects/${getEncodedUri(project_gid)}/tasks`; + map queryParam = {"completed_since": completed_since, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Get tasks from a section + # + # + section_gid - The globally unique identifier for the section. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + completed_since - Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + # + opt_fields - 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. + # + return - Successfully retrieved the section's tasks. + resource isolated function get sections/[string section_gid]/tasks(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? completed_since = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/sections/${getEncodedUri(section_gid)}/tasks`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "completed_since": completed_since, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Get tasks from a tag + # + # + tag_gid - Globally unique identifier for the tag. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the tasks associated with the specified tag. + resource isolated function get tags/[string tag_gid]/tasks(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/tags/${getEncodedUri(tag_gid)}/tasks`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Get tasks from a user task list + # + # + completed_since - Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + # + user_task_list_gid - Globally unique identifier for the user task list. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the user task list's tasks. + resource isolated function get user_task_lists/[string user_task_list_gid]/tasks(string? completed_since = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/user_task_lists/${getEncodedUri(user_task_list_gid)}/tasks`; + map queryParam = {"completed_since": completed_since, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Get subtasks from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified task's subtasks. + resource isolated function get tasks/[string task_gid]/subtasks(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/subtasks`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a subtask + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The new subtask to create. + # + return - Successfully created the specified subtask. + resource isolated function post tasks/[string task_gid]/subtasks(Task_gid_subtasks_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/subtasks`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Set the parent of a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The new parent of the subtask. + # + return - Successfully changed the parent of the specified subtask. + resource isolated function post tasks/[string task_gid]/setParent(Task_gid_setParent_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/setParent`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get dependencies from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified task's dependencies. + resource isolated function get tasks/[string task_gid]/dependencies(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/dependencies`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Set dependencies for a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The list of tasks to set as dependencies. + # + return - Successfully set the specified dependencies on the task. + resource isolated function post tasks/[string task_gid]/addDependencies(Task_gid_addDependencies_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/addDependencies`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Unlink dependencies from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The list of tasks to unlink as dependencies. + # + return - Successfully unlinked the dependencies from the specified task. + resource isolated function post tasks/[string task_gid]/removeDependencies(Task_gid_removeDependencies_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/removeDependencies`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get dependents from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the specified dependents of the task. + resource isolated function get tasks/[string task_gid]/dependents(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"offset"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"path"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"uri"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_39|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/dependents`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_39 response = check self.clientEp->get(resourcePath); + return response; + } + # Set dependents for a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The list of tasks to add as dependents. + # + return - Successfully set the specified dependents on the given task. + resource isolated function post tasks/[string task_gid]/addDependents(Task_gid_addDependents_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/addDependents`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Unlink dependents from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The list of tasks to remove as dependents. + # + return - Successfully unlinked the specified tasks as dependents. + resource isolated function post tasks/[string task_gid]/removeDependents(Task_gid_removeDependents_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/removeDependents`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add a project to a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The project to add the task to. + # + return - Successfully added the specified project to the task. + resource isolated function post tasks/[string task_gid]/addProject(Task_gid_addProject_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/addProject`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a project from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The project to remove the task from. + # + return - Successfully removed the specified project from the task. + resource isolated function post tasks/[string task_gid]/removeProject(Task_gid_removeProject_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/removeProject`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add a tag to a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The tag to add to the task. + # + return - Successfully added the specified tag to the task. + resource isolated function post tasks/[string task_gid]/addTag(Task_gid_addTag_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/addTag`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a tag from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The tag to remove from the task. + # + return - Successfully removed the specified tag from the task. + resource isolated function post tasks/[string task_gid]/removeTag(Task_gid_removeTag_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/removeTag`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Add followers to a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The followers to add to the task. + # + return - Successfully added the specified followers to the task. + resource isolated function post tasks/[string task_gid]/addFollowers(Task_gid_addFollowers_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/addFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove followers from a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The followers to remove from the task. + # + return - Successfully removed the specified followers from the task. + resource isolated function post tasks/[string task_gid]/removeFollowers(Task_gid_removeFollowers_body payload, boolean? opt_pretty = (), ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_201_7|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/removeFollowers`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_7 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a task for a given custom ID + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + custom_id - Generated custom ID for a task. + # + return - Successfully retrieved task for given custom ID. + resource isolated function get workspaces/[string workspace_gid]/tasks/custom_id/[string custom_id]() returns Inline_response_201_7|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/tasks/custom_id/${getEncodedUri(custom_id)}`; + Inline_response_201_7 response = check self.clientEp->get(resourcePath); + return response; + } + # Search tasks in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + text - Performs full-text search on both task name and description + # + resource_subtype - Filters results by the task's resource_subtype + # + assigneeAny - Comma-separated list of user identifiers + # + assigneeNot - Comma-separated list of user identifiers + # + portfoliosAny - Comma-separated list of portfolio IDs + # + projectsAny - Comma-separated list of project IDs + # + projectsNot - Comma-separated list of project IDs + # + projectsAll - Comma-separated list of project IDs + # + sectionsAny - Comma-separated list of section or column IDs + # + sectionsNot - Comma-separated list of section or column IDs + # + sectionsAll - Comma-separated list of section or column IDs + # + tagsAny - Comma-separated list of tag IDs + # + tagsNot - Comma-separated list of tag IDs + # + tagsAll - Comma-separated list of tag IDs + # + teamsAny - Comma-separated list of team IDs + # + followersNot - Comma-separated list of user identifiers + # + created_byAny - Comma-separated list of user identifiers + # + created_byNot - Comma-separated list of user identifiers + # + assigned_byAny - Comma-separated list of user identifiers + # + assigned_byNot - Comma-separated list of user identifiers + # + liked_byNot - Comma-separated list of user identifiers + # + commented_on_byNot - Comma-separated list of user identifiers + # + due_onBefore - ISO 8601 date string + # + due_onAfter - ISO 8601 date string + # + due_on - ISO 8601 date string or `null` + # + due_atBefore - ISO 8601 datetime string + # + due_atAfter - ISO 8601 datetime string + # + start_onBefore - ISO 8601 date string + # + start_onAfter - ISO 8601 date string + # + start_on - ISO 8601 date string or `null` + # + created_onBefore - ISO 8601 date string + # + created_onAfter - ISO 8601 date string + # + created_on - ISO 8601 date string or `null` + # + created_atBefore - ISO 8601 datetime string + # + created_atAfter - ISO 8601 datetime string + # + completed_onBefore - ISO 8601 date string + # + completed_onAfter - ISO 8601 date string + # + completed_on - ISO 8601 date string or `null` + # + completed_atBefore - ISO 8601 datetime string + # + completed_atAfter - ISO 8601 datetime string + # + modified_onBefore - ISO 8601 date string + # + modified_onAfter - ISO 8601 date string + # + modified_on - ISO 8601 date string or `null` + # + modified_atBefore - ISO 8601 datetime string + # + modified_atAfter - ISO 8601 datetime string + # + is_blocking - Filter to incomplete tasks with dependents + # + is_blocked - Filter to tasks with incomplete dependencies + # + has_attachment - Filter to tasks with attachments + # + completed - Filter to completed tasks + # + is_subtask - Filter to subtasks + # + sort_by - One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at` + # + sort_ascending - Default `false` + # + opt_fields - 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. + # + return - Successfully retrieved the section's tasks. + resource isolated function get workspaces/[string workspace_gid]/tasks/search(boolean? opt_pretty = (), string? text = (), "default_task"|"milestone" resource_subtype = "milestone", string? assigneeAny = (), string? assigneeNot = (), string? portfoliosAny = (), string? projectsAny = (), string? projectsNot = (), string? projectsAll = (), string? sectionsAny = (), string? sectionsNot = (), string? sectionsAll = (), string? tagsAny = (), string? tagsNot = (), string? tagsAll = (), string? teamsAny = (), string? followersNot = (), string? created_byAny = (), string? created_byNot = (), string? assigned_byAny = (), string? assigned_byNot = (), string? liked_byNot = (), string? commented_on_byNot = (), string? due_onBefore = (), string? due_onAfter = (), string? due_on = (), string? due_atBefore = (), string? due_atAfter = (), string? start_onBefore = (), string? start_onAfter = (), string? start_on = (), string? created_onBefore = (), string? created_onAfter = (), string? created_on = (), string? created_atBefore = (), string? created_atAfter = (), string? completed_onBefore = (), string? completed_onAfter = (), string? completed_on = (), string? completed_atBefore = (), string? completed_atAfter = (), string? modified_onBefore = (), string? modified_onAfter = (), string? modified_on = (), string? modified_atBefore = (), string? modified_atAfter = (), boolean? is_blocking = (), boolean? is_blocked = (), boolean? has_attachment = (), boolean? completed = (), boolean? is_subtask = (), "due_date"|"created_at"|"completed_at"|"likes"|"modified_at" sort_by = "modified_at", boolean sort_ascending = false, ("actual_time_minutes"|"approval_status"|"assignee"|"assignee.name"|"assignee_section"|"assignee_section.name"|"assignee_status"|"completed"|"completed_at"|"completed_by"|"completed_by.name"|"created_at"|"created_by"|"custom_fields"|"custom_fields.asana_created_field"|"custom_fields.created_by"|"custom_fields.created_by.name"|"custom_fields.currency_code"|"custom_fields.custom_label"|"custom_fields.custom_label_position"|"custom_fields.date_value"|"custom_fields.date_value.date"|"custom_fields.date_value.date_time"|"custom_fields.description"|"custom_fields.display_value"|"custom_fields.enabled"|"custom_fields.enum_options"|"custom_fields.enum_options.color"|"custom_fields.enum_options.enabled"|"custom_fields.enum_options.name"|"custom_fields.enum_value"|"custom_fields.enum_value.color"|"custom_fields.enum_value.enabled"|"custom_fields.enum_value.name"|"custom_fields.format"|"custom_fields.has_notifications_enabled"|"custom_fields.id_prefix"|"custom_fields.is_formula_field"|"custom_fields.is_global_to_workspace"|"custom_fields.is_value_read_only"|"custom_fields.multi_enum_values"|"custom_fields.multi_enum_values.color"|"custom_fields.multi_enum_values.enabled"|"custom_fields.multi_enum_values.name"|"custom_fields.name"|"custom_fields.number_value"|"custom_fields.people_value"|"custom_fields.people_value.name"|"custom_fields.precision"|"custom_fields.representation_type"|"custom_fields.resource_subtype"|"custom_fields.text_value"|"custom_fields.type"|"dependencies"|"dependents"|"due_at"|"due_on"|"external"|"external.data"|"followers"|"followers.name"|"hearted"|"hearts"|"hearts.user"|"hearts.user.name"|"html_notes"|"is_rendered_as_separator"|"liked"|"likes"|"likes.user"|"likes.user.name"|"memberships"|"memberships.project"|"memberships.project.name"|"memberships.section"|"memberships.section.name"|"modified_at"|"name"|"notes"|"num_hearts"|"num_likes"|"num_subtasks"|"parent"|"parent.created_by"|"parent.name"|"parent.resource_subtype"|"permalink_url"|"projects"|"projects.name"|"resource_subtype"|"start_at"|"start_on"|"tags"|"tags.name"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_40|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/tasks/search`; + map queryParam = {"opt_pretty": opt_pretty, "text": text, "resource_subtype": resource_subtype, "assignee.any": assigneeAny, "assignee.not": assigneeNot, "portfolios.any": portfoliosAny, "projects.any": projectsAny, "projects.not": projectsNot, "projects.all": projectsAll, "sections.any": sectionsAny, "sections.not": sectionsNot, "sections.all": sectionsAll, "tags.any": tagsAny, "tags.not": tagsNot, "tags.all": tagsAll, "teams.any": teamsAny, "followers.not": followersNot, "created_by.any": created_byAny, "created_by.not": created_byNot, "assigned_by.any": assigned_byAny, "assigned_by.not": assigned_byNot, "liked_by.not": liked_byNot, "commented_on_by.not": commented_on_byNot, "due_on.before": due_onBefore, "due_on.after": due_onAfter, "due_on": due_on, "due_at.before": due_atBefore, "due_at.after": due_atAfter, "start_on.before": start_onBefore, "start_on.after": start_onAfter, "start_on": start_on, "created_on.before": created_onBefore, "created_on.after": created_onAfter, "created_on": created_on, "created_at.before": created_atBefore, "created_at.after": created_atAfter, "completed_on.before": completed_onBefore, "completed_on.after": completed_onAfter, "completed_on": completed_on, "completed_at.before": completed_atBefore, "completed_at.after": completed_atAfter, "modified_on.before": modified_onBefore, "modified_on.after": modified_onAfter, "modified_on": modified_on, "modified_at.before": modified_atBefore, "modified_at.after": modified_atAfter, "is_blocking": is_blocking, "is_blocked": is_blocked, "has_attachment": has_attachment, "completed": completed, "is_subtask": is_subtask, "sort_by": sort_by, "sort_ascending": sort_ascending, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_40 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a team membership + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested team membership. + resource isolated function get team_memberships/[string team_membership_gid](boolean? opt_pretty = (), ("is_admin"|"is_guest"|"is_limited_access"|"team"|"team.name"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_41|error { + string resourcePath = string `/team_memberships/${getEncodedUri(team_membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_41 response = check self.clientEp->get(resourcePath); + return response; + } + # Get team memberships + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + team - Globally unique identifier for the team. + # + user - A string identifying a user. This can either be the string "me", an email, or the gid of a user. This parameter must be used with the workspace parameter. + # + workspace - Globally unique identifier for the workspace. This parameter must be used with the user parameter. + # + opt_fields - 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. + # + return - Successfully retrieved the requested team memberships. + resource isolated function get team_memberships(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? team = (), string? user = (), string? workspace = (), ("is_admin"|"is_guest"|"is_limited_access"|"offset"|"path"|"team"|"team.name"|"uri"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_42|error { + string resourcePath = string `/team_memberships`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "team": team, "user": user, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_42 response = check self.clientEp->get(resourcePath); + return response; + } + # Get memberships from a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested team's memberships. + resource isolated function get teams/[string team_gid]/team_memberships(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("is_admin"|"is_guest"|"is_limited_access"|"offset"|"path"|"team"|"team.name"|"uri"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_42|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/team_memberships`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_42 response = check self.clientEp->get(resourcePath); + return response; + } + # Get memberships from a user + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + workspace - Globally unique identifier for the workspace. + # + opt_fields - 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. + # + return - Successfully retrieved the requested users's memberships. + resource isolated function get users/[string user_gid]/team_memberships(string workspace, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("is_admin"|"is_guest"|"is_limited_access"|"offset"|"path"|"team"|"team.name"|"uri"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_42|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}/team_memberships`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_42 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a team + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The team to create. + # + return - Successfully created a new team. + resource isolated function post teams(Teams_body payload, boolean? opt_pretty = (), ("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")[]? opt_fields = ()) returns Inline_response_201_8|error { + string resourcePath = string `/teams`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_8 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a single team. + resource isolated function get teams/[string team_gid](boolean? opt_pretty = (), ("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")[]? opt_fields = ()) returns Inline_response_201_8|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_8 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The team to update. + # + return - Successfully updated the team. + resource isolated function put teams/[string team_gid](Teams_team_gid_body payload, boolean? opt_pretty = (), ("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")[]? opt_fields = ()) returns Inline_response_201_8|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_8 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Get teams in a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Returns the team records for all teams in the organization or workspace accessible to the authenticated user. + resource isolated function get workspaces/[string workspace_gid]/teams(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("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")[]? opt_fields = ()) returns Inline_response_200_43|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/teams`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_43 response = check self.clientEp->get(resourcePath); + return response; + } + # Get teams for a user + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + organization - The workspace or organization to filter teams on. + # + opt_fields - 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. + # + return - Returns the team records for all teams in the organization or workspace to which the given user is assigned. + resource isolated function get users/[string user_gid]/teams(string organization, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("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")[]? opt_fields = ()) returns Inline_response_200_43|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}/teams`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "organization": organization, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_43 response = check self.clientEp->get(resourcePath); + return response; + } + # Add a user to a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The user to add to the team. + # + return - Successfully added user to the team. + resource isolated function post teams/[string team_gid]/addUser(Team_gid_addUser_body payload, boolean? opt_pretty = (), ("is_admin"|"is_guest"|"is_limited_access"|"team"|"team.name"|"user"|"user.name")[]? opt_fields = ()) returns Inline_response_200_41|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/addUser`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_41 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a user from a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The user to remove from the team. + # + return - Returns an empty data record + resource isolated function post teams/[string team_gid]/removeUser(Team_gid_removeUser_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/removeUser`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a time period + # + # + time_period_gid - Globally unique identifier for the time period. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the record for a single time period. + resource isolated function get time_periods/[string time_period_gid](boolean? opt_pretty = (), ("display_name"|"end_on"|"parent"|"parent.display_name"|"parent.end_on"|"parent.period"|"parent.start_on"|"period"|"start_on")[]? opt_fields = ()) returns Inline_response_200_44|error { + string resourcePath = string `/time_periods/${getEncodedUri(time_period_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_44 response = check self.clientEp->get(resourcePath); + return response; + } + # Get time periods + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + start_on - ISO 8601 date string + # + end_on - ISO 8601 date string + # + workspace - Globally unique identifier for the workspace. + # + opt_fields - 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. + # + return - Successfully retrieved the requested time periods. + resource isolated function get time_periods(string workspace, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? start_on = (), string? end_on = (), ("display_name"|"end_on"|"offset"|"parent"|"parent.display_name"|"parent.end_on"|"parent.period"|"parent.start_on"|"path"|"period"|"start_on"|"uri")[]? opt_fields = ()) returns Inline_response_200_45|error { + string resourcePath = string `/time_periods`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "start_on": start_on, "end_on": end_on, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_45 response = check self.clientEp->get(resourcePath); + return response; + } + # Get time tracking entries for a task + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested time tracking entries. + resource isolated function get tasks/[string task_gid]/time_tracking_entries(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("created_by"|"created_by.name"|"duration_minutes"|"entered_on"|"offset"|"path"|"uri")[]? opt_fields = ()) returns Inline_response_200_46|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/time_tracking_entries`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_46 response = check self.clientEp->get(resourcePath); + return response; + } + # Create a time tracking entry + # + # + task_gid - The task to operate on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - Information about the time tracking entry. + # + return - Successfully created a time tracking entry for the task. + resource isolated function post tasks/[string task_gid]/time_tracking_entries(Task_gid_time_tracking_entries_body payload, boolean? opt_pretty = (), ("created_at"|"created_by"|"created_by.name"|"duration_minutes"|"entered_on"|"task"|"task.created_by"|"task.name"|"task.resource_subtype")[]? opt_fields = ()) returns Inline_response_201_9|error { + string resourcePath = string `/tasks/${getEncodedUri(task_gid)}/time_tracking_entries`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_9 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a time tracking entry + # + # + time_tracking_entry_gid - Globally unique identifier for the time tracking entry. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested time tracking entry. + resource isolated function get time_tracking_entries/[string time_tracking_entry_gid](boolean? opt_pretty = (), ("created_at"|"created_by"|"created_by.name"|"duration_minutes"|"entered_on"|"task"|"task.created_by"|"task.name"|"task.resource_subtype")[]? opt_fields = ()) returns Inline_response_201_9|error { + string resourcePath = string `/time_tracking_entries/${getEncodedUri(time_tracking_entry_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_9 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a time tracking entry + # + # + time_tracking_entry_gid - Globally unique identifier for the time tracking entry. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated fields for the time tracking entry. + # + return - Successfully updated the time tracking entry. + resource isolated function put time_tracking_entries/[string time_tracking_entry_gid](Time_tracking_entries_time_tracking_entry_gid_body payload, boolean? opt_pretty = (), ("created_at"|"created_by"|"created_by.name"|"duration_minutes"|"entered_on"|"task"|"task.created_by"|"task.name"|"task.resource_subtype")[]? opt_fields = ()) returns Inline_response_201_9|error { + string resourcePath = string `/time_tracking_entries/${getEncodedUri(time_tracking_entry_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_9 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a time tracking entry + # + # + time_tracking_entry_gid - Globally unique identifier for the time tracking entry. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully deleted the specified time tracking entry. + resource isolated function delete time_tracking_entries/[string time_tracking_entry_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/time_tracking_entries/${getEncodedUri(time_tracking_entry_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get objects via typeahead + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + resource_type - The type of values the typeahead should return. You can choose from one of the following: `custom_field`, `goal`, `project`, `project_template`, `portfolio`, `tag`, `task`, `team`, and `user`. Note that unlike in the names of endpoints, the types listed here are in singular form (e.g. `task`). Using multiple types is not yet supported. + # + 'type - *Deprecated: new integrations should prefer the resource_type field.* + # + query - The string that will be used to search for relevant objects. If an empty string is passed in, the API will return results. + # + count - The number of results to return. The default is 20 if this parameter is omitted, with a minimum of 1 and a maximum of 100. If there are fewer results found than requested, all will be returned. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved objects via a typeahead search algorithm. + resource isolated function get workspaces/[string workspace_gid]/typeahead("custom_field"|"goal"|"project"|"project_template"|"portfolio"|"tag"|"task"|"team"|"user" resource_type, "custom_field"|"portfolio"|"project"|"tag"|"task"|"user" 'type = "user", string? query = (), int? count = (), boolean? opt_pretty = (), ("name")[]? opt_fields = ()) returns Inline_response_200_47|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/typeahead`; + map queryParam = {"resource_type": resource_type, "type": 'type, "query": query, "count": count, "opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_47 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a user task list + # + # + user_task_list_gid - Globally unique identifier for the user task list. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the user task list. + resource isolated function get user_task_lists/[string user_task_list_gid](boolean? opt_pretty = (), ("name"|"owner"|"workspace")[]? opt_fields = ()) returns Inline_response_200_48|error { + string resourcePath = string `/user_task_lists/${getEncodedUri(user_task_list_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_48 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a user's task list + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + workspace - The workspace in which to get the user task list. + # + opt_fields - 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. + # + return - Successfully retrieved the user's task list. + resource isolated function get users/[string user_gid]/user_task_list(string workspace, boolean? opt_pretty = (), ("name"|"owner"|"workspace")[]? opt_fields = ()) returns Inline_response_200_48|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}/user_task_list`; + map queryParam = {"opt_pretty": opt_pretty, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_48 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple users + # + # + workspace - The workspace or organization ID to filter users on. + # + team - The team ID to filter users on. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested user records. + resource isolated function get users(string? workspace = (), string? team = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("email"|"name"|"offset"|"path"|"photo"|"photo.image_1024x1024"|"photo.image_128x128"|"photo.image_21x21"|"photo.image_27x27"|"photo.image_36x36"|"photo.image_60x60"|"uri"|"workspaces"|"workspaces.name")[]? opt_fields = ()) returns Inline_response_200_49|error { + string resourcePath = string `/users`; + map queryParam = {"workspace": workspace, "team": team, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_49 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a user + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Returns the user specified. + resource isolated function get users/[string user_gid](boolean? opt_pretty = (), ("email"|"name"|"photo"|"photo.image_1024x1024"|"photo.image_128x128"|"photo.image_21x21"|"photo.image_27x27"|"photo.image_36x36"|"photo.image_60x60"|"workspaces"|"workspaces.name")[]? opt_fields = ()) returns Inline_response_200_50|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_50 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a user's favorites + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + resource_type - The resource type of favorites to be returned. + # + workspace - The workspace in which to get favorites. + # + opt_fields - 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. + # + return - Returns the specified user's favorites. + resource isolated function get users/[string user_gid]/favorites("portfolio"|"project"|"tag"|"task"|"user"|"project_template" resource_type, string workspace, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("name"|"offset"|"path"|"uri")[]? opt_fields = ()) returns Inline_response_200_51|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}/favorites`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "resource_type": resource_type, "workspace": workspace, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_51 response = check self.clientEp->get(resourcePath); + return response; + } + # Get users in a team + # + # + team_gid - Globally unique identifier for the team. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + offset - 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 - 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. + # + return - Returns the user records for all the members of the team, including guests and limited access users + resource isolated function get teams/[string team_gid]/users(boolean? opt_pretty = (), string? offset = (), ("email"|"name"|"photo"|"photo.image_1024x1024"|"photo.image_128x128"|"photo.image_21x21"|"photo.image_27x27"|"photo.image_36x36"|"photo.image_60x60"|"workspaces"|"workspaces.name")[]? opt_fields = ()) returns Inline_response_200_52|error { + string resourcePath = string `/teams/${getEncodedUri(team_gid)}/users`; + map queryParam = {"opt_pretty": opt_pretty, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_52 response = check self.clientEp->get(resourcePath); + return response; + } + # Get users in a workspace or organization + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + offset - 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 - 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. + # + return - Return the users in the specified workspace or org. + resource isolated function get workspaces/[string workspace_gid]/users(boolean? opt_pretty = (), string? offset = (), ("email"|"name"|"photo"|"photo.image_1024x1024"|"photo.image_128x128"|"photo.image_21x21"|"photo.image_27x27"|"photo.image_36x36"|"photo.image_60x60"|"workspaces"|"workspaces.name")[]? opt_fields = ()) returns Inline_response_200_52|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/users`; + map queryParam = {"opt_pretty": opt_pretty, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_52 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple webhooks + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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.' + # + workspace - The workspace to query for webhooks in. + # + 'resource - Only return webhooks for the given resource. + # + opt_fields - 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. + # + return - Successfully retrieved the requested webhooks. + resource isolated function get webhooks(string workspace, boolean? opt_pretty = (), int? 'limit = (), string? offset = (), string? 'resource = (), ("active"|"created_at"|"filters"|"filters.action"|"filters.fields"|"filters.resource_subtype"|"last_failure_at"|"last_failure_content"|"last_success_at"|"offset"|"path"|"resource"|"resource.name"|"target"|"uri")[]? opt_fields = ()) returns Inline_response_200_53|error { + string resourcePath = string `/webhooks`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "workspace": workspace, "resource": 'resource, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_53 response = check self.clientEp->get(resourcePath); + return response; + } + # Establish a webhook + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The webhook workspace and target. + # + return - Successfully created the requested webhook. + resource isolated function post webhooks(Webhooks_body payload, boolean? opt_pretty = (), ("active"|"created_at"|"filters"|"filters.action"|"filters.fields"|"filters.resource_subtype"|"last_failure_at"|"last_failure_content"|"last_success_at"|"resource"|"resource.name"|"target")[]? opt_fields = ()) returns Inline_response_201_10|error { + string resourcePath = string `/webhooks`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_10 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Get a webhook + # + # + webhook_gid - Globally unique identifier for the webhook. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested webhook. + resource isolated function get webhooks/[string webhook_gid](boolean? opt_pretty = (), ("active"|"created_at"|"filters"|"filters.action"|"filters.fields"|"filters.resource_subtype"|"last_failure_at"|"last_failure_content"|"last_success_at"|"resource"|"resource.name"|"target")[]? opt_fields = ()) returns Inline_response_201_10|error { + string resourcePath = string `/webhooks/${getEncodedUri(webhook_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_201_10 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a webhook + # + # + webhook_gid - Globally unique identifier for the webhook. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The updated filters for the webhook. + # + return - Successfully updated the webhook. + resource isolated function put webhooks/[string webhook_gid](Webhooks_webhook_gid_body payload, boolean? opt_pretty = (), ("active"|"created_at"|"filters"|"filters.action"|"filters.fields"|"filters.resource_subtype"|"last_failure_at"|"last_failure_content"|"last_success_at"|"resource"|"resource.name"|"target")[]? opt_fields = ()) returns Inline_response_201_10|error { + string resourcePath = string `/webhooks/${getEncodedUri(webhook_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_201_10 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Delete a webhook + # + # + webhook_gid - Globally unique identifier for the webhook. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + return - Successfully retrieved the requested webhook. + resource isolated function delete webhooks/[string webhook_gid](boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/webhooks/${getEncodedUri(webhook_gid)}`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + Inline_response_200_1 response = check self.clientEp->delete(resourcePath); + return response; + } + # Get a workspace membership + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Successfully retrieved the requested workspace membership. + resource isolated function get workspace_memberships/[string workspace_membership_gid](boolean? opt_pretty = (), ("created_at"|"is_active"|"is_admin"|"is_guest"|"user"|"user.name"|"user_task_list"|"user_task_list.name"|"user_task_list.owner"|"user_task_list.workspace"|"vacation_dates"|"vacation_dates.end_on"|"vacation_dates.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_54|error { + string resourcePath = string `/workspace_memberships/${getEncodedUri(workspace_membership_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_54 response = check self.clientEp->get(resourcePath); + return response; + } + # Get workspace memberships for a user + # + # + user_gid - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested user's workspace memberships. + resource isolated function get users/[string user_gid]/workspace_memberships(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("created_at"|"is_active"|"is_admin"|"is_guest"|"offset"|"path"|"uri"|"user"|"user.name"|"user_task_list"|"user_task_list.name"|"user_task_list.owner"|"user_task_list.workspace"|"vacation_dates"|"vacation_dates.end_on"|"vacation_dates.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_55|error { + string resourcePath = string `/users/${getEncodedUri(user_gid)}/workspace_memberships`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_55 response = check self.clientEp->get(resourcePath); + return response; + } + # Get the workspace memberships for a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + user - A string identifying a user. This can either be the string "me", an email, or the gid of a user. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Successfully retrieved the requested workspace's memberships. + resource isolated function get workspaces/[string workspace_gid]/workspace_memberships(string? user = (), boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("created_at"|"is_active"|"is_admin"|"is_guest"|"offset"|"path"|"uri"|"user"|"user.name"|"user_task_list"|"user_task_list.name"|"user_task_list.owner"|"user_task_list.workspace"|"vacation_dates"|"vacation_dates.end_on"|"vacation_dates.start_on"|"workspace"|"workspace.name")[]? opt_fields = ()) returns Inline_response_200_55|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/workspace_memberships`; + map queryParam = {"user": user, "opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_55 response = check self.clientEp->get(resourcePath); + return response; + } + # Get multiple workspaces + # + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + 'limit - Results per page. + # The number of objects to return per page. The value must be between 1 and 100. + # + offset - 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 - 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. + # + return - Return all workspaces visible to the authorized user. + resource isolated function get workspaces(boolean? opt_pretty = (), int? 'limit = (), string? offset = (), ("email_domains"|"is_organization"|"name"|"offset"|"path"|"uri")[]? opt_fields = ()) returns Inline_response_200_56|error { + string resourcePath = string `/workspaces`; + map queryParam = {"opt_pretty": opt_pretty, "limit": 'limit, "offset": offset, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_56 response = check self.clientEp->get(resourcePath); + return response; + } + # Get a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + return - Return the full workspace record. + resource isolated function get workspaces/[string workspace_gid](boolean? opt_pretty = (), ("email_domains"|"is_organization"|"name")[]? opt_fields = ()) returns Inline_response_200_57|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + Inline_response_200_57 response = check self.clientEp->get(resourcePath); + return response; + } + # Update a workspace + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The workspace object with all updated properties. + # + return - Update for the workspace was successful. + resource isolated function put workspaces/[string workspace_gid](Workspaces_workspace_gid_body payload, boolean? opt_pretty = (), ("email_domains"|"is_organization"|"name")[]? opt_fields = ()) returns Inline_response_200_57|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_57 response = check self.clientEp->put(resourcePath, request); + return response; + } + # Add a user to a workspace or organization + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + opt_fields - 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. + # + payload - The user to add to the workspace. + # + return - The user was added successfully to the workspace or organization. + resource isolated function post workspaces/[string workspace_gid]/addUser(Workspace_gid_addUser_body payload, boolean? opt_pretty = (), ("email"|"name"|"photo"|"photo.image_1024x1024"|"photo.image_128x128"|"photo.image_21x21"|"photo.image_27x27"|"photo.image_36x36"|"photo.image_60x60")[]? opt_fields = ()) returns Inline_response_200_58|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/addUser`; + map queryParam = {"opt_pretty": opt_pretty, "opt_fields": opt_fields}; + map queryParamEncoding = {"opt_fields": {style: FORM, explode: false}}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam, queryParamEncoding); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_58 response = check self.clientEp->post(resourcePath, request); + return response; + } + # Remove a user from a workspace or organization + # + # + workspace_gid - Globally unique identifier for the workspace or organization. + # + opt_pretty - Provides “pretty” output. + # Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. + # + payload - The user to remove from the workspace. + # + return - The user was removed successfully to the workspace or organization. + resource isolated function post workspaces/[string workspace_gid]/removeUser(Workspace_gid_removeUser_body payload, boolean? opt_pretty = ()) returns Inline_response_200_1|error { + string resourcePath = string `/workspaces/${getEncodedUri(workspace_gid)}/removeUser`; + map queryParam = {"opt_pretty": opt_pretty}; + resourcePath = resourcePath + check getPathForQueryParam(queryParam); + http:Request request = new; + json jsonBody = payload.toJson(); + request.setPayload(jsonBody, "application/json"); + Inline_response_200_1 response = check self.clientEp->post(resourcePath, request); + return response; + } +} diff --git a/ballerina/types.bal b/ballerina/types.bal new file mode 100644 index 0000000..5c4ec6c --- /dev/null +++ b/ballerina/types.bal @@ -0,0 +1,2777 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerina/http; + +# Provides a set of configurations for controlling the behaviours when communicating with a remote HTTP endpoint. +@display {label: "Connection Config"} +public type ConnectionConfig record {| + # Configurations related to client authentication + http:BearerTokenConfig|OAuth2RefreshTokenGrantConfig auth; + # The HTTP version understood by the client + http:HttpVersion httpVersion = http:HTTP_2_0; + # Configurations related to HTTP/1.x protocol + ClientHttp1Settings http1Settings?; + # Configurations related to HTTP/2 protocol + http:ClientHttp2Settings http2Settings?; + # The maximum time to wait (in seconds) for a response before closing the connection + decimal timeout = 60; + # The choice of setting `forwarded`/`x-forwarded` header + string forwarded = "disable"; + # Configurations associated with request pooling + http:PoolConfiguration poolConfig?; + # HTTP caching related configurations + http:CacheConfig cache?; + # Specifies the way of handling compression (`accept-encoding`) header + http:Compression compression = http:COMPRESSION_AUTO; + # Configurations associated with the behaviour of the Circuit Breaker + http:CircuitBreakerConfig circuitBreaker?; + # Configurations associated with retrying + http:RetryConfig retryConfig?; + # Configurations associated with inbound response size limits + http:ResponseLimitConfigs responseLimits?; + # SSL/TLS-related options + http:ClientSecureSocket secureSocket?; + # Proxy server related options + http:ProxyConfig proxy?; + # Enables the inbound payload validation functionality which provided by the constraint package. Enabled by default + boolean validation = true; +|}; + +# Provides settings related to HTTP/1.x protocol. +public type ClientHttp1Settings record {| + # Specifies whether to reuse a connection for multiple requests + http:KeepAlive keepAlive = http:KEEPALIVE_AUTO; + # The chunking behaviour of the request + http:Chunking chunking = http:CHUNKING_AUTO; + # Proxy server related options + ProxyConfig proxy?; +|}; + +# Proxy server configurations to be used with the HTTP client endpoint. +public type ProxyConfig record {| + # Host name of the proxy server + string host = ""; + # Proxy server port + int port = 0; + # Proxy server username + string userName = ""; + # Proxy server password + @display {label: "", kind: "password"} + string password = ""; +|}; + +# OAuth2 Refresh Token Grant Configs +public type OAuth2RefreshTokenGrantConfig record {| + *http:OAuth2RefreshTokenGrantConfig; + # Refresh URL + string refreshUrl = "https://app.asana.com/-/oauth_token"; +|}; + +public type PortfolioMembershipResponse PortfolioMembershipBase; + +# The entity that triggered the event. Will typically be a user. +public type AuditLogEventActor record { + # The type of actor. + # Can be one of `user`, `asana`, `asana_support`, `anonymous`, or `external_administrator`. + "user"|"asana"|"asana_support"|"anonymous"|"external_administrator" actor_type?; + # Globally unique identifier of the actor, if it is a user. + string gid?; + # The name of the actor, if it is a user. + string name?; + # The email of the actor, if it is a user. + string email?; +}; + +public type GoalRelationshipCompact record { + *AsanaResource; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + "subgoal"|"supporting_work" resource_subtype?; + record {*ProjectCompact;} supporting_resource?; + # The weight that the supporting resource's progress contributes to the supported goal's progress. This can only be 0 or 1. + decimal contribution_weight?; +}; + +public type Portfolio_gid_addMembers_body record { + AddMembersRequest data?; +}; + +public type GoalMembershipCompact record { + *GoalMembershipBase; + # *Deprecated: new integrations should prefer the `role` field.* Describes if the member is comment only in goal. + boolean is_commenter?; + # *Deprecated: new integrations should prefer the `role` field.* Describes if the member is editor in goal. + boolean is_editor?; +}; + +public type Sections_insert_body record { + ProjectSectionInsertRequest data?; +}; + +# A response object returned from a batch request. +public type BatchResponse record { + # The HTTP status code that the invoked endpoint returned. + int status_code?; + # A map of HTTP headers specific to this result. This is primarily used for returning a `Location` header to accompany a `201 Created` result. The parent HTTP response will contain all common headers. + record {} headers?; + # The JSON body that the invoked endpoint returned. + record {} body?; +}; + +public type Stories_story_gid_body record { + StoryRequest data?; +}; + +public type ProjectStatusRequest ProjectStatusBase; + +public type Custom_fields_custom_field_gid_body record { + CustomFieldRequest data?; +}; + +public type TeamRequest record { + *TeamBase; + # The description of the team. + string description?; + # The description of the team with formatting as HTML. + string html_description?; + # The organization/workspace the team belongs to. This must be the same organization you are in and cannot be changed once set. + string organization?; + # The visibility of the team to users in the same organization + "secret"|"request_to_join"|"public" visibility?; + # Controls who can edit team name and description + "all_team_members"|"only_team_admins" edit_team_name_or_description_access_level?; + # Controls who can edit team visibility and trash teams + "all_team_members"|"only_team_admins" edit_team_visibility_or_trash_team_access_level?; + # Controls who can accept or deny member invites for a given team + "all_team_members"|"only_team_admins" member_invite_management_access_level?; + # Controls who can accept or deny guest invites for a given team + "all_team_members"|"only_team_admins" guest_invite_management_access_level?; + # Controls who can accept or deny join team requests for a Membership by Request team + "all_team_members"|"only_team_admins" join_request_management_access_level?; + # Controls who can remove team members + "all_team_members"|"only_team_admins" team_member_removal_access_level?; +}; + +public type SectionTaskInsertRequest record { + # The task to add to this section. + string task; + # An existing task within this section before which the added task should be inserted. Cannot be provided together with insert_after. + string insert_before?; + # An existing task within this section after which the added task should be inserted. Cannot be provided together with insert_before. + string insert_after?; +}; + +public type ProjectMembershipBase ProjectMembershipCompact; + +public type CustomFieldSettingBase CustomFieldSettingCompact; + +public type PortfolioResponse record { + *PortfolioBase; + # The time at which this resource was created. + string created_at?; + UserCompact created_by?; + # Array of custom field settings applied to the portfolio. + CustomFieldSettingResponse[] custom_field_settings?; + StatusUpdateCompact current_status_update?; + # The localized day on which this portfolio is due. This takes a date with format YYYY-MM-DD. + string? due_on?; + # Array of Custom Fields. + CustomFieldCompact[] custom_fields?; + UserCompact[] members?; + UserCompact owner?; + # The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.* + string? start_on?; + record {*WorkspaceCompact;} workspace?; + # A url that points directly to the object within Asana. + string permalink_url?; + # True if the portfolio is public to its workspace members. + boolean 'public?; + # Array of project templates that are in the portfolio + ProjectTemplateCompact[] project_templates?; +}; + +public type Memberships_body record { + CreateMembershipRequest data?; +}; + +public type StoryBase record { + *AsanaResource; + # The time at which this resource was created. + string created_at?; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + string resource_subtype?; + # The plain text of the comment to add. Cannot be used with html_text. + string text?; + # [Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator. + string html_text?; + # *Conditional*. Whether the story should be pinned on the resource. + boolean is_pinned?; + # The name of the sticker in this story. `null` if there is no sticker. + "green_checkmark"|"people_dancing"|"dancing_unicorn"|"heart"|"party_popper"|"people_waving_flags"|"splashing_narwhal"|"trophy"|"yeti_riding_unicorn"|"celebrating_people"|"determined_climbers"|"phoenix_spreading_love" sticker_name?; +}; + +public type WebhookRequest record { + # A resource ID to subscribe to. Many Asana resources are valid to create webhooks on, but higher-level resources require filters. + string 'resource; + # The URL to receive the HTTP POST. The full URL will be used to deliver events from this webhook (including parameters) which allows encoding of application-specific state when the webhook is created. + string target; + # An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server. + record {*WebhookFilter;}[] filters?; +}; + +public type TaskAddTagRequest record { + # The tag's gid to add to the task. + string tag; +}; + +# A request object for use in a batch request. +public type BatchRequest record { + BatchRequestAction[] actions?; +}; + +public type RuleTriggerRequest record { + # The ID of the resource. For the duration of the beta, this resource is always a task, and this task must exist in the project in which the rule is created. + string 'resource; + # The dynamic keys and values of the request. These fields are intended to be used in the action for the rule associated with this trigger. + record {} action_data; +}; + +public type Inline_response_201_8 record { + TeamResponse data?; +}; + +public type CustomFieldSettingCompact record { + *AsanaResource; +}; + +public type TagResponse record { + *TagBase; + # The time at which this resource was created. + string created_at?; + # Array of users following this tag. + UserCompact[] followers?; + WorkspaceCompact workspace?; + # A url that points directly to the object within Asana. + string permalink_url?; +}; + +public type Inline_response_201_9 record { + TimeTrackingEntryBase data?; +}; + +public type Portfolio_gid_removeMembers_body record { + RemoveMembersRequest data?; +}; + +public type Inline_response_201_6 record { + TagResponse data?; +}; + +public type RuleTriggerResponse record { + # Message providing more detail about the result + string message?; +}; + +public type Inline_response_201_7 record { + TaskResponse data?; +}; + +# *OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options). +# The external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details. +public type TaskBase_external record { + string gid?; + string data?; +}; + +public type Inline_response_201_4 record { + PortfolioResponse data?; +}; + +public type Inline_response_201_5 record { + ProjectResponse data?; +}; + +public type Portfolios_body record { + PortfolioRequest data?; +}; + +public type TaskAddProjectRequest record { + # The project to add the task to. + string project; + # A task in the project to insert the task after, or `null` to insert at the beginning of the list. + string? insert_after?; + # A task in the project to insert the task before, or `null` to insert at the end of the list. + string? insert_before?; + # A section in the project to insert the task into. The task will be inserted at the bottom of the section. + string? section?; +}; + +public type WebhookResponse record { + *WebhookCompact; + # The time at which this resource was created. + string created_at?; + # The timestamp when the webhook last received an error when sending an event to the target. + string last_failure_at?; + # The contents of the last error response sent to the webhook when attempting to deliver events to the target. + string last_failure_content?; + # The timestamp when the webhook last successfully sent an event to the target. + string last_success_at?; + # Whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server. + record {*WebhookFilter;}[] filters?; +}; + +public type Webhooks_body record { + WebhookRequest data?; +}; + +public type MemberCompact record { + *AsanaResource; + # The name of the member + string name?; + # The type of the member (team or user) + string resource_type?; +}; + +public type AddCustomFieldSettingRequest record { + # The custom field to associate with this container. + string custom_field; + # Whether this field should be considered important to this container (for instance, to display in the list view of items in the container). + boolean is_important?; + # A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_before?; + # A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_after?; +}; + +public type Workspace_gid_addUser_body record { + # A user identification object for specification with the addUser/removeUser endpoints. + WorkspaceAddUserRequest data?; +}; + +public type Team_gid_projects_body record { + ProjectRequest data?; +}; + +public type ProjectMembershipCompactResponse record { + *ProjectMembershipCompact; + # The base type of this resource. + string resource_type?; + # Type of the membership. + string resource_subtype?; +}; + +public type ProjectBase record { + *ProjectCompact; + # True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries. + boolean archived?; + # Color of the project. + "dark-pink"|"dark-green"|"dark-blue"|"dark-red"|"dark-teal"|"dark-brown"|"dark-orange"|"dark-purple"|"dark-warm-gray"|"light-pink"|"light-green"|"light-blue"|"light-red"|"light-teal"|"light-brown"|"light-orange"|"light-purple"|"light-warm-gray"|"none"? color?; + # The time at which this resource was created. + string created_at?; + record {*ProjectStatusResponse;} current_status?; + record {*StatusUpdateCompact;} current_status_update?; + # Array of Custom Field Settings (in compact form). + CustomFieldSettingResponse[] custom_field_settings?; + # The default view (list, board, calendar, or timeline) of a project. + "list"|"board"|"calendar"|"timeline" default_view?; + # *Deprecated: new integrations should prefer the `due_on` field.* + string? due_date?; + # The day on which this project is due. This takes a date with format YYYY-MM-DD. + string? due_on?; + # [Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML. + string html_notes?; + # Array of users who are members of this project. + UserCompact[] members?; + # The time at which this project was last modified. + # *Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.* + string modified_at?; + # Free-form textual information associated with the project (ie., its description). + string notes?; + # *Deprecated:* new integrations use `privacy_setting` instead. + boolean 'public?; + # The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.* + "public_to_workspace"|"private_to_team"|"private" privacy_setting?; + # The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.* + string? start_on?; + # The default access for users or teams who join or are added as members to the project. + "admin"|"editor"|"commenter"|"viewer" default_access_level?; + # The minimum access level needed for project members to modify this project's workflow and appearance. + "admin"|"editor" minimum_access_level_for_customization?; + # The minimum access level needed for project members to share the project and manage project memberships. + "admin"|"editor" minimum_access_level_for_sharing?; +}; + +public type Inline_response_201_2 record { + MembershipResponse data?; +}; + +public type Inline_response_201_3 record { + OrganizationExportResponse data?; +}; + +public type CustomFieldResponse record { + *CustomFieldBase; + # This field tells the type of the custom field. + "text"|"enum"|"multi_enum"|"number"|"date"|"people"|"formula"|"custom_id" representation_type?; + # This field is the unique custom ID string for the custom field. + string? id_prefix?; + # *Conditional*. This flag describes whether a custom field is a formula custom field. + boolean is_formula_field?; + # *Conditional*. This flag describes whether a custom field is read only. + boolean is_value_read_only?; + UserCompact created_by?; + # *Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field. + UserCompact[] people_value?; +}; + +public type Inline_response_201_1 record { + EnumOption data?; +}; + +public type CustomFieldCompact record { + *AsanaResource; + # The name of the custom field. + string name?; + # The type of the custom field. Must be one of the given values. + "text"|"enum"|"multi_enum"|"number"|"date"|"people" resource_subtype?; + # *Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values. + "text"|"enum"|"multi_enum"|"number"|"date"|"people" 'type?; + # *Conditional*. Only relevant for custom fields of type `enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield). + EnumOption[] enum_options?; + # *Conditional*. Determines if the custom field is enabled or not. + boolean enabled?; + # This field tells the type of the custom field. + "text"|"enum"|"multi_enum"|"number"|"date"|"people"|"formula"|"custom_id" representation_type?; + # This field is the unique custom ID string for the custom field. + string? id_prefix?; + # *Conditional*. This flag describes whether a custom field is a formula custom field. + boolean is_formula_field?; + # *Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`. + CustomFieldCompact_date_value? date_value?; + record {*EnumOption;} enum_value?; + # *Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field. + EnumOption[] multi_enum_values?; + # *Conditional*. This number is the value of a `number` custom field. + decimal? number_value?; + # *Conditional*. This string is the value of a `text` custom field. + string? text_value?; + # A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types. + string? display_value?; +}; + +public type JobCompact record { + *AsanaResource; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + string resource_subtype?; + # The current status of this job. The value is one of: `not_started`, `in_progress`, `succeeded`, or `failed`. + "not_started"|"in_progress"|"succeeded"|"failed" status?; + ProjectCompact new_project?; + record {*TaskCompact;} new_task?; + ProjectTemplateCompact new_project_template?; +}; + +public type WorkspaceResponse record { + *WorkspaceBase; + # The email domains that are associated with this workspace. + string[] email_domains?; + # Whether the workspace is an *organization*. + boolean is_organization?; +}; + +public type PortfolioRequest record { + *PortfolioBase; + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string[] members?; + # Gid of an object. + string workspace?; + # True if the portfolio is public to its workspace members. + boolean 'public?; +}; + +public type Project_briefs_project_brief_gid_body record { + ProjectBriefRequest data?; +}; + +public type SectionResponse record { + *SectionBase; + # The time at which this resource was created. + string created_at?; + ProjectCompact project?; + # *Deprecated - please use project instead* + ProjectCompact[] projects?; +}; + +public type Goal_gid_addSupportingRelationship_body record { + GoalAddSupportingRelationshipRequest data?; +}; + +public type TaskTemplateBase TaskTemplateCompact; + +# A dictionary of options to auto-shift dates. `task_dates` must be included to use this option. Requires either `start_on` or `due_on`, but not both. +public type ProjectDuplicateRequest_schedule_dates record { + # Determines if the auto-shifted dates should skip weekends. + boolean should_skip_weekends; + # Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project. + string due_on?; + # Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project. + string start_on?; +}; + +public type TaskRemoveProjectRequest record { + # The project to remove the task from. + string project; +}; + +public type Task_gid_setParent_body record { + TaskSetParentRequest data?; +}; + +public type AttachmentCompact record { + *AsanaResource; + # The name of the file. + string name?; + # The service hosting the attachment. Valid values are `asana`, `dropbox`, `gdrive`, `onedrive`, `box`, `vimeo`, and `external`. + string resource_subtype?; +}; + +public type Task_gid_removeDependencies_body record { + ModifyDependenciesRequest data?; +}; + +public type Task_gid_addDependencies_body record { + ModifyDependenciesRequest data?; +}; + +# A user identification object for specification with the addUser/removeUser endpoints. +public type WorkspaceAddUserRequest record { + # A string identifying a user. This can either be the string "me", an email, or the gid of a user. + string user?; +}; + +public type Task_gid_stories_body record { + StoryRequest data?; +}; + +public type ProjectCompact record { + *AsanaResource; + # Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer. + string name?; +}; + +# A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](/reference/events) +public type WebhookFilter record { + # The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`. + string resource_type?; + # The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves. + string resource_subtype?; + # The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](/reference/events) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource. + string action?; + # *Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed` + string[] fields?; +}; + +public type Task_gid_removeDependents_body record { + # A set of dependent tasks. + ModifyDependentsRequest data?; +}; + +public type TeamMembershipBase TeamMembershipCompact; + +public type UserBaseResponse record { + *UserBase; + # The user's email address. + string email?; + # A map of the user’s profile photo in various sizes, or null if no photo is set. Sizes provided are 21, 27, 36, 60, 128, and 1024. All images are in PNG format, except for 1024 (which is in JPEG format). + UserBaseResponse_photo? photo?; +}; + +public type GoalCompact record { + *AsanaResource; + # The name of the goal. + string name?; + record {*UserCompact;} owner?; +}; + +public type Portfolio_gid_addItem_body record { + PortfolioAddItemRequest data?; +}; + +public type Inline_response_412_errors record { + # Message providing more detail about the error that occurred, if available. + string message?; +}; + +public type MembershipResponse GoalMembershipResponse|ProjectMembershipCompactResponse; + +public type PortfolioRemoveItemRequest record { + # The item to remove from the portfolio. + string item; +}; + +public type ProjectTemplateResponse ProjectTemplateBase; + +public type TaskRequest record { + *TaskBase; + # Gid of a user. + string? assignee?; + # The *assignee section* is a subdivision of a project that groups tasks together in the assignee's "My Tasks" list. It can either be a header above a list of tasks in a list view or a column in a board view of "My Tasks." + # The `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's "My Tasks" list. + string? assignee_section?; + # An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values. + record {|string...;|} custom_fields?; + # *Create-Only* An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`. + string[] followers?; + # Gid of a task. + string? parent?; + # *Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`. + string[] projects?; + # *Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`. + string[] tags?; + # Gid of a workspace. + string workspace?; +}; + +public type UserTaskListRequest UserTaskListBase; + +# Sadly, sometimes requests to the API are not successful. Failures can +# occur for a wide range of reasons. In all cases, the API should return +# an HTTP Status Code that indicates the nature of the failure, +# with a response body in JSON format containing additional information. +# +# +# In the event of a server error the response body will contain an error +# phrase. These phrases are automatically generated using the +# [node-asana-phrase +# library](https://github.com/Asana/node-asana-phrase) and can be used by +# Asana support to quickly look up the incident that caused the server +# error. +public type ErrorResponse record { + Error[] errors?; +}; + +public type TimeTrackingEntryCompact record { + *AsanaResource; + # Time in minutes tracked by the entry. + int duration_minutes?; + # The day that this entry is logged on. + string entered_on?; + UserCompact created_by?; +}; + +public type TimeTrackingEntryBase record { + *TimeTrackingEntryCompact; + TaskCompact task?; + # The time at which this resource was created. + string created_at?; +}; + +public type TaskTemplateResponse record { + *TaskTemplateBase; + # Name of the task template. + string name?; + # The project that this task template belongs to. + ProjectCompact? project?; + # The configuration for the task that will be created from this template. + TaskTemplateRecipe template?; + # The user who created this task template. + UserCompact created_by?; + # The time at which this task template was created. + string created_at?; +}; + +public type GoalBase record { + *AsanaResource; + # The name of the goal. + string name?; + # The notes of the goal with formatting as HTML. + string html_notes?; + # Free-form textual information associated with the goal (i.e. its description). + string notes?; + # The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`. + string? due_on?; + # The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date. + string? start_on?; + # *Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace’s goals) or not. If it isn’t a workspace-level goal, it is a team-level goal, and is associated with the goal’s team. + boolean is_workspace_level?; + # True if the goal is liked by the authorized user, false if not. + boolean liked?; +}; + +public type MembershipUpdateRequest record { + # The role given to the member. Can be `editor` or `commenter`. + string access_level?; +}; + +public type MembershipCompact GoalMembershipCompact|ProjectMembershipCompactResponse; + +public type ProjectBriefBase record { + *ProjectBriefCompact; + # The title of the project brief. + string title?; + # HTML formatted text for the project brief. + string html_text?; +}; + +public type OrganizationExportBase OrganizationExportCompact; + +public type Project_gid_sections_body record { + SectionRequest data?; +}; + +public type AsanaNamedResource record { + *AsanaResource; + # The name of the object. + string name?; +}; + +public type WebhookUpdateRequest record { + # An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server. + record {*WebhookFilter;}[] filters?; +}; + +public type Tasks_task_gid_body record { + TaskRequest data?; +}; + +public type Goal_relationships_goal_relationship_gid_body record { + GoalRelationshipRequest data?; +}; + +public type Task_template_gid_instantiateTask_body record { + TaskTemplateInstantiateTaskRequest data?; +}; + +public type AllocationResponse record { + *AllocationCompact; + UserCompact created_by?; + # The subtype of the allocation. + string resource_subtype?; +}; + +public type GoalMetricCurrentValueRequest record { + *AsanaResource; + # *Conditional*. This number is the current value of a goal metric of type number. + decimal current_number_value?; +}; + +public type Projects_body record { + ProjectRequest data?; +}; + +public type TaskTemplateRecipeCompact record { + # Name of the task that will be created from this template. + string name?; + # The subtype of the task that will be created from this template. + "default_task"|"milestone_task"|"approval_task" task_resource_subtype?; +}; + +public type SectionBase SectionCompact; + +public type Goal_gid_removeSupportingRelationship_body record { + GoalRemoveSupportingRelationshipRequest data?; +}; + +public type Project_template_gid_instantiateProject_body record { + ProjectTemplateInstantiateProjectRequest data?; +}; + +public type UserTaskListCompact record { + *AsanaResource; + # The name of the user task list. + string name?; + # The owner of the user task list, i.e. the person whose My Tasks is represented by this resource. + UserCompact owner?; + # The workspace in which the user task list is located. + WorkspaceCompact workspace?; +}; + +# A user identification object for specification with the addUser/removeUser endpoints. +public type WorkspaceRemoveUserRequest record { + # A string identifying a user. This can either be the string "me", an email, or the gid of a user. + string user?; +}; + +public type PortfolioAddItemRequest record { + # The item to add to the portfolio. + string item; + # An id of an item in this portfolio. The new item will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_before?; + # An id of an item in this portfolio. The new item will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_after?; +}; + +public type TaskTemplateCompact record { + *AsanaResource; + # Name of the task template. + string name?; +}; + +public type Portfolio_gid_addCustomFieldSetting_body record { + AddCustomFieldSettingRequest data?; +}; + +public type PortfolioBase record { + *PortfolioCompact; + # Color of the portfolio. + "dark-pink"|"dark-green"|"dark-blue"|"dark-red"|"dark-teal"|"dark-brown"|"dark-orange"|"dark-purple"|"dark-warm-gray"|"light-pink"|"light-green"|"light-blue"|"light-red"|"light-teal"|"light-brown"|"light-orange"|"light-purple"|"light-warm-gray" color?; +}; + +public type UserRequest UserBase; + +public type Workspace_gid_projects_body record { + ProjectRequest data?; +}; + +public type TaskSetParentRequest record { + # The new parent of the task, or `null` for no parent. + string parent; + # A subtask of the parent to insert the task after, or `null` to insert at the beginning of the list. + string insert_after?; + # A subtask of the parent to insert the task before, or `null` to insert at the end of the list. + string insert_before?; +}; + +public type RemoveMembersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string members; +}; + +public type EnumOption record { + *AsanaResource; + # The name of the enum option. + string name?; + # Whether or not the enum option is a selectable value for the custom field. + boolean enabled?; + # The color of the enum option. Defaults to ‘none’. + string color?; +}; + +public type UserCompact record { + *AsanaResource; + # *Read-only except when same user as requester*. The user’s name. + string name?; +}; + +public type TaskAddFollowersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string[] followers; +}; + +public type EnumOptionRequest record { + *EnumOptionBase; + # An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option. + string insert_before?; + # An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option. + string insert_after?; +}; + +public type ProjectBriefCompact record { + *AsanaResource; +}; + +public type ProjectResponse record { + *ProjectBase; + # Array of Custom Fields. + CustomFieldCompact[] custom_fields?; + # True if the project is currently marked complete, false if not. + boolean completed?; + # The time at which this project was completed, or null if the project is not completed. + string? completed_at?; + UserCompact completed_by?; + # Array of users following this project. Followers are a subset of members who have opted in to receive "tasks added" notifications for a project. + UserCompact[] followers?; + # The current owner of the project, may be null. + record {*UserCompact;} owner?; + record {*TeamCompact;} team?; + # The icon for a project. + "list"|"board"|"timeline"|"calendar"|"rocket"|"people"|"graph"|"star"|"bug"|"light_bulb"|"globe"|"gear"|"notebook"|"computer"|"check"|"target"|"html"|"megaphone"|"chat_bubbles"|"briefcase"|"page_layout"|"mountain_flag"|"puzzle"|"presentation"|"line_and_symbols"|"speed_dial"|"ribbon"|"shoe"|"shopping_basket"|"map"|"ticket"|"coins" icon?; + # A url that points directly to the object within Asana. + string permalink_url?; + record {*ProjectBriefCompact;} project_brief?; + record {*ProjectTemplateCompact;} created_from_template?; + record {*WorkspaceCompact;} workspace?; +}; + +public type TeamBase TeamCompact; + +public type UserBase UserCompact; + +public type Portfolios_portfolio_gid_body record { + PortfolioRequest data?; +}; + +public type ProjectBriefRequest record { + *ProjectBriefBase; + # The plain text of the project brief. When writing to a project brief, you can specify either `html_text` (preferred) or `text`, but not both. + string text?; +}; + +public type GoalMetricBase record { + *AsanaResource; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + "number" resource_subtype?; + # *Conditional*. Only relevant for goal metrics of type ‘Number’. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive. + # For percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%. + int precision?; + # A supported unit of measure for the goal metric, or none. + "none"|"currency"|"percentage" unit?; + # ISO 4217 currency code to format this custom field. This will be null if the `unit` is not `currency`. + string? currency_code?; + # This number is the start value of a goal metric of type number. + decimal initial_number_value?; + # This number is the end value of a goal metric of type number. This number cannot equal `initial_number_value`. + decimal target_number_value?; + # This number is the current value of a goal metric of type number. + decimal current_number_value?; + # This string is the current value of a goal metric of type string. + string current_display_value?; + # This field defines how the progress value of a goal metric is being calculated. A goal's progress can be provided manually by the user, calculated automatically from contributing subgoals, projects, or tasks, or managed by an integration with an external data source, such as Salesforce. + "manual"|"subgoal_progress"|"project_task_completion"|"project_milestone_completion"|"task_completion"|"external" progress_source?; +}; + +public type Task_gid_removeProject_body record { + TaskRemoveProjectRequest data?; +}; + +public type ProjectStatusResponse record { + *ProjectStatusBase; + UserCompact author?; + # The time at which this resource was created. + string created_at?; + UserCompact created_by?; + # The time at which this project status was last modified. + # *Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.* + string modified_at?; +}; + +# The context from which this event originated. +public type AuditLogEventContext record { + # The type of context. + # Can be one of `web`, `desktop`, `mobile`, `asana_support`, `asana`, `email`, or `api`. + "web"|"desktop"|"mobile"|"asana_support"|"asana"|"email"|"api" context_type?; + # The authentication method used in the context of an API request. + # Only present if the `context_type` is `api`. Can be one of `cookie`, `oauth`, `personal_access_token`, or `service_account`. + "cookie"|"oauth"|"personal_access_token"|"service_account" api_authentication_method?; + # The IP address of the client that initiated the event, if applicable. + string client_ip_address?; + # The user agent of the client that initiated the event, if applicable. + string user_agent?; + # The name of the OAuth App that initiated the event. + # Only present if the `api_authentication_method` is `oauth`. + string oauth_app_name?; +}; + +public type Rule_trigger_gid_run_body record { + RuleTriggerRequest data?; +}; + +public type OrganizationExportResponse OrganizationExportBase; + +public type Project_gid_removeMembers_body record { + RemoveMembersRequest data?; +}; + +public type SectionCompact record { + *AsanaResource; + # The name of the section (i.e. the text displayed as the section header). + string name?; +}; + +public type Enum_options_enum_option_gid_body record { + EnumOptionBase data?; +}; + +public type Task_gid_addProject_body record { + TaskAddProjectRequest data?; +}; + +public type ProjectSaveAsTemplateRequest record { + # The name of the new project template. + string name; + # Sets the team of the new project template. If the project exists in an organization, specify team and not workspace. + string team?; + # Sets the workspace of the new project template. Only specify workspace if the project exists in a workspace. + string workspace?; + # Sets the project template to public to its team. + boolean 'public; +}; + +public type MembershipRequest record { + # *Optional*. Denotes if a member is active. Applies to all memberships + boolean is_active?; +}; + +public type TimePeriodCompact record { + *AsanaResource; + # The localized end date of the time period in `YYYY-MM-DD` format. + string end_on?; + # The localized start date of the time period in `YYYY-MM-DD` format. + string start_on?; + # The cadence and index of the time period. The value is one of: `FY`, `H1`, `H2`, `Q1`, `Q2`, `Q3`, or `Q4`. + "FY"|"H1"|"H2"|"Q1"|"Q2"|"Q3"|"Q4" period?; + # A string representing the cadence code and the fiscal year. + string display_name?; +}; + +# *Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`. +public type CustomFieldCompact_date_value record { + # A string representing the date in YYYY-MM-DD format. + string date?; + # A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`. + string date_time?; +}; + +# Pagination (`limit` and `offset`) and output options (`fields` or `expand`) for the action. “Pretty” JSON output is not an available option on individual actions; if you want pretty output, specify that option on the parent request. +public type BatchRequestAction_options record { + # Pagination limit for the request. + int 'limit?; + # Pagination offset for the request. + int offset?; + # The fields to retrieve in the request. + string[] fields?; +}; + +public type WorkspaceBase WorkspaceCompact; + +public type GoalRemoveSubgoalRequest record { + # The goal gid to remove as subgoal from the parent goal + string subgoal; +}; + +public type TeamResponse record { + *TeamBase; + # [Opt In](/docs/inputoutput-options). The description of the team. + string description?; + # [Opt In](/docs/inputoutput-options). The description of the team with formatting as HTML. + string html_description?; + record {*WorkspaceCompact;} organization?; + # A url that points directly to the object within Asana. + string permalink_url?; + # The visibility of the team to users in the same organization + "secret"|"request_to_join"|"public" visibility?; + # Controls who can edit team name and description + "all_team_members"|"only_team_admins" edit_team_name_or_description_access_level?; + # Controls who can edit team visibility and trash teams + "all_team_members"|"only_team_admins" edit_team_visibility_or_trash_team_access_level?; + # Controls who can accept or deny member invites for a given team + "all_team_members"|"only_team_admins" member_invite_management_access_level?; + # Controls who can accept or deny guest invites for a given team + "all_team_members"|"only_team_admins" guest_invite_management_access_level?; + # Controls who can accept or deny join team requests for a Membership by Request team + "all_team_members"|"only_team_admins" join_request_management_access_level?; + # Controls who can remove team members + "all_team_members"|"only_team_admins" team_member_removal_access_level?; +}; + +# A set of dependent tasks. +public type ModifyDependentsRequest record { + # An array of task gids that are dependents of the given task. + string[] dependents?; +}; + +public type UserTaskListBase UserTaskListCompact; + +public type Project_gid_project_briefs_body record { + ProjectBriefRequest data?; +}; + +public type GoalMetricRequest GoalMetricBase; + +public type StatusUpdateBase record { + *StatusUpdateCompact; + # The text content of the status update. + string text; + # [Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML. + string html_text?; + # The type associated with the status update. This represents the current state of the object this object is on. + "on_track"|"at_risk"|"off_track"|"on_hold"|"complete"|"achieved"|"partial"|"missed"|"dropped" status_type; +}; + +public type StatusUpdateResponse record { + *StatusUpdateBase; + UserCompact author?; + # The time at which this resource was created. + string created_at?; + UserCompact created_by?; + # *Deprecated - please use liked instead* True if the status is hearted by the authorized user, false if not. + boolean hearted?; + # *Deprecated - please use likes instead* Array of likes for users who have hearted this status. + Like[] hearts?; + # True if the status is liked by the authorized user, false if not. + boolean liked?; + # Array of likes for users who have liked this status. + Like[] likes?; + # The time at which this project status was last modified. + # *Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the status.* + string modified_at?; + # *Deprecated - please use likes instead* The number of users who have hearted this status. + int num_hearts?; + # The number of users who have liked this status. + int num_likes?; + record {*ProjectCompact;} parent?; +}; + +public type Portfolio_gid_removeCustomFieldSetting_body record { + RemoveCustomFieldSettingRequest data?; +}; + +public type Inline_response_200_9 record { + GoalRelationshipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type AllocationBase record { + *AsanaResource; + # The localized day on which the allocation starts. + string start_date?; + # The localized day on which the allocation ends. + string end_date?; +}; + +# The full record for all events that have occurred since the sync token was created. +public type Inline_response_200_7 record { + EventResponse[] data?; + # A sync token to be used with the next call to the /events endpoint. + string sync?; + # Indicates whether there are more events to pull. + boolean has_more?; +}; + +public type Inline_response_200_8 record { + GoalRelationshipResponse data?; +}; + +public type Inline_response_200_5 record { + CustomFieldSettingResponse[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Tags_body record { + TagRequest data?; +}; + +public type Inline_response_200_6 record { + CustomFieldResponse[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type StatusUpdateRequest record { + *StatusUpdateBase; + string parent; +}; + +public type Project_gid_duplicate_body record { + ProjectDuplicateRequest data?; +}; + +public type UserResponse record { + *UserBaseResponse; + # Workspaces and organizations this user may access. + # Note\: The API will only return workspaces and organizations that also contain the authenticated user. + WorkspaceCompact[] workspaces?; +}; + +# An object representing a single event within an Asana domain. +# +# Every audit log event is comprised of an `event_type`, `actor`, `resource`, and `context`. Some events will include additional metadata about the event under `details`. See our [currently supported list of events](/docs/audit-log-events#supported-audit-log-events) for more details. +public type AuditLogEvent record { + # Globally unique identifier of the `AuditLogEvent`, as a string. + string gid?; + # The time the event was created. + string created_at?; + # The type of the event. + string event_type?; + # The category that this `event_type` belongs to. + string event_category?; + # The entity that triggered the event. Will typically be a user. + AuditLogEventActor actor?; + # The primary object that was affected by this event. + AuditLogEventResource 'resource?; + # Event specific details. The schema will vary depending on the `event_type`. + AuditLogEventDetails details?; + # The context from which this event originated. + AuditLogEventContext context?; +}; + +public type RemoveFollowersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string followers; +}; + +# A user identification object for specification with the addUser/removeUser endpoints. +public type TeamAddUserRequest record { + # A string identifying a user. This can either be the string "me", an email, or the gid of a user. + string user?; +}; + +public type TeamMembershipCompact record { + *AsanaResource; + UserCompact user?; + TeamCompact team?; + # Describes if the user is a guest in the team. + boolean is_guest?; + # Describes if the user has limited access to the team. + boolean is_limited_access?; + # Describes if the user is a team admin. + boolean is_admin?; +}; + +public type PortfolioMembershipCompact record { + *AsanaResource; + PortfolioCompact portfolio?; + UserCompact user?; +}; + +public type Projects_project_gid_body record { + ProjectUpdateRequest data?; +}; + +# A response object returned from the task count endpoint. +public type TaskCountResponse record { + # The number of tasks in a project. + int num_tasks?; + # The number of incomplete tasks in a project. + int num_incomplete_tasks?; + # The number of completed tasks in a project. + int num_completed_tasks?; + # The number of milestones in a project. + int num_milestones?; + # The number of incomplete milestones in a project. + int num_incomplete_milestones?; + # The number of completed milestones in a project. + int num_completed_milestones?; +}; + +public type TaskTemplateInstantiateTaskRequest record { + # The name of the new task. If not provided, the name of the task template will be used. + string name?; +}; + +public type GoalAddSupportingRelationshipRequest record { + # The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio. + string supporting_resource; + # An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal. + string insert_before?; + # An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal. + string insert_after?; + # The weight that the supporting resource's progress will contribute to the supported goal's progress. This can only be 0 or 1. + decimal contribution_weight?; +}; + +public type StoryResponse record { + *StoryBase; + UserCompact created_by?; + "comment"|"system" 'type?; + # *Conditional*. Whether the text of the story can be edited after creation. + boolean is_editable?; + # *Conditional*. Whether the text of the story has been edited after creation. + boolean is_edited?; + # *Deprecated - please use likes instead* + # *Conditional*. True if the story is hearted by the authorized user, false if not. + boolean hearted?; + # *Deprecated - please use likes instead* + # + # *Conditional*. Array of likes for users who have hearted this story. + Like[] hearts?; + # *Deprecated - please use likes instead* + # + # *Conditional*. The number of users who have hearted this story. + int num_hearts?; + # *Conditional*. True if the story is liked by the authorized user, false if not. + boolean liked?; + # *Conditional*. Array of likes for users who have liked this story. + Like[] likes?; + # *Conditional*. The number of users who have liked this story. + int num_likes?; + # *Conditional*. A collection of previews to be displayed in the story. + # + # *Note: This property only exists for comment stories.* + Preview[] previews?; + # *Conditional*' + string old_name?; + # *Conditional* + string? new_name?; + # *Conditional* + StoryResponseDates old_dates?; + # *Conditional* + StoryResponseDates new_dates?; + # *Conditional* + string old_resource_subtype?; + # *Conditional* + string new_resource_subtype?; + StoryCompact story?; + UserCompact assignee?; + UserCompact follower?; + SectionCompact old_section?; + SectionCompact new_section?; + TaskCompact task?; + ProjectCompact project?; + TagCompact tag?; + CustomFieldCompact custom_field?; + # *Conditional* + string old_text_value?; + # *Conditional* + string new_text_value?; + # *Conditional* + int? old_number_value?; + # *Conditional* + int new_number_value?; + EnumOption old_enum_value?; + EnumOption new_enum_value?; + StoryResponseDates old_date_value?; + StoryResponseDates new_date_value?; + # *Conditional*. The old value of a people custom field story. + UserCompact[] old_people_value?; + # *Conditional*. The new value of a people custom field story. + UserCompact[] new_people_value?; + # *Conditional*. The old value of a multi-enum custom field story. + EnumOption[] old_multi_enum_values?; + # *Conditional*. The new value of a multi-enum custom field story. + EnumOption[] new_multi_enum_values?; + # *Conditional*. The new value of approval status. + string new_approval_status?; + # *Conditional*. The old value of approval status. + string old_approval_status?; + TaskCompact duplicate_of?; + TaskCompact duplicated_from?; + TaskCompact dependency?; + # The component of the Asana product the user used to trigger the story. + "web"|"email"|"mobile"|"api"|"unknown" 'source?; + record {*TaskCompact;} target?; +}; + +public type GoalMembershipBase record { + *AsanaResource; + # The base type of this resource. + string resource_type?; + # The type of membership. + string resource_subtype?; + MemberCompact member?; + record {*GoalCompact;} parent?; + # *Deprecated: Describes if the member is a commenter or editor in goal.* + "commenter"|"editor" role?; + # Describes if member is commenter or editor in goal. This is preferred over role + "commenter"|"editor" access_level?; + record {*GoalCompact;} goal?; +}; + +public type Inline_response_200_3 record { + AuditLogEvent[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_4 record { + BatchResponse[] data?; +}; + +public type StatusUpdateCompact record { + *AsanaResource; + # The title of the status update. + string title?; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + # The `resource_subtype`s for `status` objects represent the type of their parent. + "project_status_update"|"portfolio_status_update"|"goal_status_update" resource_subtype?; +}; + +public type Inline_response_200_1 record { + # An empty object. Some endpoints do not return an object on success. The success is conveyed through a 2-- status code and returning an empty object. + EmptyResponse data?; +}; + +public type Inline_response_200_2 record { + AttachmentCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type ProjectMembershipCompact record { + *AsanaResource; + ProjectCompact parent?; + MemberCompact member?; + # Whether the member has admin, editor, commenter, or viewer access to the project. + "admin"|"editor"|"commenter"|"viewer" access_level?; +}; + +# *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. +public type NextPage record { + # Pagination offset for the request. + string offset?; + # A relative path containing the query parameters to fetch for next_page + string path?; + # A full uri containing the query parameters to fetch for next_page + string uri?; +}; + +public type Task_gid_time_tracking_entries_body record { + CreateTimeTrackingEntryRequest data?; +}; + +public type TaskRemoveTagRequest record { + # The tag's gid to remove from the task. + string tag; +}; + +public type CustomFieldSettingResponse record { + *CustomFieldSettingBase; + record {*ProjectCompact;} project?; + # `is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio. + boolean is_important?; + record {*ProjectCompact;} parent?; + record {*CustomFieldResponse;} custom_field?; +}; + +# A map of the user’s profile photo in various sizes, or null if no photo is set. Sizes provided are 21, 27, 36, 60, 128, and 1024. All images are in PNG format, except for 1024 (which is in JPEG format). +public type UserBaseResponse_photo record { + string image_21x21?; + string image_27x27?; + string image_36x36?; + string image_60x60?; + string image_128x128?; + string image_1024x1024?; +}; + +public type Inline_response_200_49 record { + UserCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type DateVariableCompact record { + # Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date. + string gid?; + # The name of the date variable. + string name?; + # The description of what the date variable is used for when instantiating a project. + string description?; +}; + +public type EffortCompact record { + *AsanaResource; + # The units used for tracking effort on an allocation, either "hours" or "percent". + "hours"|"percent" 'type?; + # The numeric effort value on the allocation. + decimal value?; +}; + +# A generic list of objects, such as those returned by the typeahead search endpoint. +public type Inline_response_200_47 record { + AsanaNamedResource[] data?; +}; + +public type GoalMembershipResponse record { + *GoalMembershipBase; + record {*UserCompact;} user?; + record {*WorkspaceCompact;} workspace?; +}; + +public type Inline_response_200_48 record { + UserTaskListResponse data?; +}; + +public type SectionRequest record { + # The text to be displayed as the section name. This cannot be an empty string. + string name; + # An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after. + string insert_before?; + # An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before. + string insert_after?; +}; + +public type Inline_response_200_45 record { + TimePeriodCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_46 record { + TimeTrackingEntryCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_43 record { + TeamCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type CustomFieldRequest record { + *CustomFieldBase; + # *Create-Only* The workspace to create a custom field in. + string workspace; + # *Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`. + boolean owned_by_app?; + # *Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array. + string[] people_value?; +}; + +public type Inline_response_200_44 record { + TimePeriodResponse data?; +}; + +public type Inline_response_200_41 record { + TeamMembershipResponse data?; +}; + +# An action object for use in a batch request. +public type BatchRequestAction record { + # The path of the desired endpoint relative to the API’s base URL. Query parameters are not accepted here; put them in `data` instead. + string relative_path; + # The HTTP method you wish to emulate for the action. + "get"|"post"|"put"|"delete"|"patch"|"head" method; + # For `GET` requests, this should be a map of query parameters you would have normally passed in the URL. Options and pagination are not accepted here; put them in `options` instead. For `POST`, `PATCH`, and `PUT` methods, this should be the content you would have normally put in the data field of the body. + record {} data?; + # Pagination (`limit` and `offset`) and output options (`fields` or `expand`) for the action. “Pretty” JSON output is not an available option on individual actions; if you want pretty output, specify that option on the parent request. + BatchRequestAction_options options?; +}; + +public type ProjectBriefResponse record { + *ProjectBriefBase; + # [Opt In](/docs/inputoutput-options). The plain text of the project brief. + string text?; + # A url that points directly to the object within Asana. + string permalink_url?; + record {*ProjectCompact;} project?; +}; + +public type ProjectTemplateInstantiateProjectRequest record { + # The name of the new project. + string name; + # *Optional*. Sets the team of the new project. If the project template exists in an _organization_, you may specify a value for `team`. If no value is provided then it defaults to the same team as the project template. + string team?; + # Sets the project to public to its team. + boolean 'public?; + # *Optional*. If set to `true`, the endpoint returns an "Unprocessable Entity" error if you fail to provide a calendar date value for any date variable. If set to `false`, a default date is used for each unfulfilled date variable (e.g., the current date is used as the Start Date of a project). + boolean is_strict?; + # Array of mappings of date variables to calendar dates. + DateVariableRequest[] requested_dates?; + # Array of mappings of template roles to user ids + RequestedRoleRequest[] requested_roles?; +}; + +public type Inline_response_200_42 record { + TeamMembershipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_201_10 record { + WebhookResponse data?; +}; + +public type Project_gid_removeCustomFieldSetting_body record { + RemoveCustomFieldSettingRequest data?; +}; + +public type Inline_response_200_40 record { + TaskCompact[] data?; +}; + +public type ProjectTemplateCompact record { + *AsanaResource; + # Name of the project template. + string name?; +}; + +public type Teams_team_gid_body record { + TeamRequest data?; +}; + +public type RequestedRoleRequest record { + # Globally unique identifier of the template role in the project template. + string gid?; + # The user id that should be assigned to the template role. + string value?; +}; + +public type AttachmentRequest record { + # The type of the attachment. Must be one of the given values. If not specified, a file attachment of type `asana` will be assumed. Note that if the value of `resource_subtype` is `external`, a `parent`, `name`, and `url` must also be provided. + "asana"|"dropbox"|"gdrive"|"onedrive"|"box"|"vimeo"|"external" resource_subtype?; + # Required for `asana` attachments. + record {byte[] fileContent; string fileName;} file?; + # Required identifier of the parent task, project, or project_brief, as a string. + string parent; + # The URL of the external resource being attached. Required for attachments of type `external`. + string url?; + # The name of the external resource being attached. Required for attachments of type `external`. + string name?; + # *Optional*. Only relevant for external attachments with a parent task. A boolean indicating whether the current app should be connected with the attachment for the purposes of showing an app components widget. Requires the app to have been added to a project the parent task is in. + boolean connect_to_app?; +}; + +public type TaskResponse record { + *TaskBase; + UserCompact assignee?; + record {*SectionCompact;} assignee_section?; + # Array of custom field values applied to the task. These represent the custom field values recorded on this project for a particular custom field. For example, these custom field values will contain an `enum_value` property for custom fields of type `enum`, a `text_value` property for custom fields of type `text`, and so on. Please note that the `gid` returned on each custom field value *is identical* to the `gid` of the custom field, which allows referencing the custom field metadata through the `/custom_fields/custom_field-gid` endpoint. + CustomFieldResponse[] custom_fields?; + # Array of users following this task. + UserCompact[] followers?; + record {*TaskCompact;} parent?; + # *Create-only.* Array of projects this task is associated with. At task creation time, this array can be used to add the task to many projects at once. After task creation, these associations can be modified using the addProject and removeProject endpoints. + ProjectCompact[] projects?; + # Array of tags associated with this task. In order to change tags on an existing task use `addTag` and `removeTag`. + TagCompact[] tags?; + record {*WorkspaceCompact;} workspace?; + # A url that points directly to the object within Asana. + string permalink_url?; +}; + +public type Task_gid_removeFollowers_body record { + TaskRemoveFollowersRequest data?; +}; + +public type WorkspaceMembershipResponse record { + *WorkspaceMembershipBase; + UserTaskListResponse user_task_list?; + # Reflects if this user still a member of the workspace. + boolean is_active?; + # Reflects if this user is an admin of the workspace. + boolean is_admin?; + # Reflects if this user is a guest of the workspace. + boolean is_guest?; + # Contains keys `start_on` and `end_on` for the vacation dates for the user in this workspace. If `start_on` is null, the entire `vacation_dates` object will be null. If `end_on` is before today, the entire `vacation_dates` object will be null. + WorkspaceMembershipResponse_vacation_dates? vacation_dates?; + # The time at which this resource was created. + string created_at?; +}; + +public type Inline_response_200_38 record { + TaskTemplateResponse data?; +}; + +public type Goal_gid_setMetric_body record { + GoalMetricRequest data?; +}; + +public type Inline_response_200_39 record { + TaskCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type GoalResponse record { + *GoalBase; + # Array of likes for users who have liked this goal. + Like[] likes?; + # The number of users who have liked this goal. + int num_likes?; + record {*TeamCompact;} team?; + record {*WorkspaceCompact;} workspace?; + # Array of users who are members of this goal. + UserCompact[] followers?; + record {*TimePeriodCompact;} time_period?; + record { + *GoalMetricBase; + # *Conditional*. Only relevant for `progress_source` of type `external`. This boolean indicates whether the requester has the ability to update the current value of this metric. This returns `true` if the external metric was created by the requester, `false` otherwise. + boolean can_manage?; + } metric?; + record {*UserCompact;} owner?; + StatusUpdateCompact current_status_update?; + # The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect "On Track", "At Risk", and "Off Track", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`. + # *Note* you can only write to this property if `metric` is set. + string? status?; +}; + +public type ProjectStatusBase record { + *ProjectStatusCompact; + # The text content of the status update. + string text?; + # [Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML. + string html_text?; + # The color associated with the status update. + "green"|"yellow"|"red"|"blue"|"complete" color?; +}; + +public type Inline_response_200_36 record { + TagCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +# An *organization_export* request starts a job to export the complete data of the given Organization. +public type OrganizationExportRequest record { + # Globally unique identifier for the workspace or organization. + string organization?; +}; + +public type TaskCompact record { + *AsanaResource; + # The name of the task. + string name?; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + # The resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date. + "default_task"|"milestone"|"section"|"approval" resource_subtype?; + # [Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks. + TaskCompact_created_by created_by?; +}; + +public type Inline_response_200_37 record { + TaskTemplateCompact[] data?; +}; + +public type Inline_response_200_34 record { + StoryResponse data?; +}; + +# Information about the type of change that has occurred. This field is only present when the value of the property `action`, describing the action taken on the **resource**, is `changed`. +public type EventResponse_change record { + # The name of the field that has changed in the resource. + string 'field?; + # The type of action taken on the **field** which has been changed. This can be one of `changed`, `added`, or `removed` depending on the nature of the change. + string action?; + # *Conditional.* This property is only present when the value of the event's `change.action` is `changed` _and_ the `new_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](/docs/inputoutput-options)) when using the [get events](/reference/getevents) endpoint. + anydata new_value?; + # *Conditional.* This property is only present when the value of the event's `change.action` is `added` _and_ the `added_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](/docs/inputoutput-options)) when using the [get events](/reference/getevents) endpoint. + anydata added_value?; + # *Conditional.* This property is only present when the value of the event's `change.action` is `removed` _and_ the `removed_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](/docs/inputoutput-options)) when using the [get events](/reference/getevents) endpoint. + anydata removed_value?; +}; + +public type Inline_response_200_35 record { + StoryCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type TimePeriodResponse TimePeriodBase; + +public type Inline_response_200_32 record { + StatusUpdateResponse data?; +}; + +public type Inline_response_200_33 record { + StatusUpdateCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_30 record { + SectionResponse data?; +}; + +public type Inline_response_200_31 record { + SectionCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type ProjectRequest record { + *ProjectBase; + # An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values. + record {|string...;|} custom_fields?; + # *Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive "tasks added" notifications for a project. + string followers?; + # The current owner of the project, may be null. + string? owner?; + # The team that this project is shared with. + string team?; + # The `gid` of a workspace. + string workspace?; +}; + +public type CustomFieldBase record { + *CustomFieldCompact; + # [Opt In](/docs/inputoutput-options). The description of the custom field. + string description?; + # *Conditional*. Only relevant for custom fields of type `enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield). + EnumOption[] enum_options?; + # Only relevant for custom fields of type ‘Number’. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive. + # For percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%. + # The identifier format will always have a precision of 0. + int precision?; + # The format of this custom field. + "currency"|"identifier"|"percentage"|"custom"|"duration"|"none" format?; + # ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`. + string? currency_code?; + # This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`. + string? custom_label?; + # Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`. + "prefix"|"suffix"? custom_label_position?; + # This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true. + boolean is_global_to_workspace?; + # *Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field. + boolean has_notifications_enabled?; + # *Conditional*. A unique identifier to associate this field with the template source of truth. + "a_v_requirements"|"account_name"|"actionable"|"align_shipping_link"|"align_status"|"allotted_time"|"appointment"|"approval_stage"|"approved"|"article_series"|"board_committee"|"browser"|"campaign_audience"|"campaign_project_status"|"campaign_regions"|"channel_primary"|"client_topic_type"|"complete_by"|"contact"|"contact_email_address"|"content_channels"|"content_channels_needed"|"content_stage"|"content_type"|"contract"|"contract_status"|"cost"|"creation_stage"|"creative_channel"|"creative_needed"|"creative_needs"|"data_sensitivity"|"deal_size"|"delivery_appt"|"delivery_appt_date"|"department"|"department_responsible"|"design_request_needed"|"design_request_type"|"discussion_category"|"do_this_task"|"editorial_content_status"|"editorial_content_tag"|"editorial_content_type"|"effort"|"effort_level"|"est_completion_date"|"estimated_time"|"estimated_value"|"expected_cost"|"external_steps_needed"|"favorite_idea"|"feedback_type"|"financial"|"funding_amount"|"grant_application_process"|"hiring_candidate_status"|"idea_status"|"ids_link"|"ids_patient_link"|"implementation_stage"|"insurance"|"interview_area"|"interview_question_score"|"itero_scan_link"|"job_s_applied_to"|"lab"|"launch_status"|"lead_status"|"localization_language"|"localization_market_team"|"localization_status"|"meeting_minutes"|"meeting_needed"|"minutes"|"mrr"|"must_localize"|"name_of_foundation"|"need_to_follow_up"|"next_appointment"|"next_steps_sales"|"num_people"|"number_of_user_reports"|"office_location"|"onboarding_activity"|"owner"|"participants_needed"|"patient_date_of_birth"|"patient_email"|"patient_phone"|"patient_status"|"phone_number"|"planning_category"|"point_of_contact"|"position"|"post_format"|"prescription"|"priority"|"priority_level"|"product"|"product_stage"|"progress"|"project_size"|"project_status"|"proposed_budget"|"publish_status"|"reason_for_scan"|"referral"|"request_type"|"research_status"|"responsible_department"|"responsible_team"|"risk_assessment_status"|"room_name"|"sales_counterpart"|"sentiment"|"shipping_link"|"social_channels"|"stage"|"status"|"status_design"|"status_of_initiative"|"system_setup"|"task_progress"|"team"|"team_marketing"|"team_responsible"|"time_it_takes_to_complete_tasks"|"timeframe"|"treatment_type"|"type_work_requests_it"|"use_agency"|"user_name"|"vendor_category"|"vendor_type"|"word_count"? asana_created_field?; +}; + +public type AttachmentBase AttachmentCompact; + +public type Inline_response_200_29 record { + RuleTriggerResponse data?; +}; + +public type GoalRelationshipRequest record { + *GoalRelationshipBase; +}; + +public type Inline_response_200_27 record { + ProjectTemplateCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Custom_field_gid_enum_options_body record { + EnumOptionRequest data?; +}; + +public type Portfolio_gid_removeItem_body record { + PortfolioRemoveItemRequest data?; +}; + +public type Inline_response_200_28 record { + # A response object returned from the task count endpoint. + TaskCountResponse data?; +}; + +public type Inline_response_200_25 record { + ProjectStatusCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type GoalRequestBase record { + *GoalBase; + # *Conditional*. This property is only present when the `workspace` provided is an organization. + string? team?; + # The `gid` of a workspace. + string workspace?; + # The `gid` of a time period. + string? time_period?; + # The `gid` of a user. + string? owner?; +}; + +public type Inline_response_200_26 record { + ProjectTemplateResponse data?; +}; + +public type Inline_response_200_23 record { + ProjectMembershipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type JobResponse JobBase; + +public type TaskBase record { + *TaskCompact; + # *Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`. + "pending"|"approved"|"rejected"|"changes_requested" approval_status?; + # *Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to "inbox" or "upcoming" inserts it at the top of the section, while the other options will insert at the bottom. + "today"|"upcoming"|"later"|"new"|"inbox" assignee_status?; + # True if the task is currently marked complete, false if not. + boolean completed?; + # The time at which this task was completed, or null if the task is incomplete. + string? completed_at?; + UserCompact completed_by?; + # The time at which this resource was created. + string created_at?; + # [Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency. + AsanaResource[] dependencies?; + # [Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent. + AsanaResource[] dependents?; + # The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`. + string? due_at?; + # The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`. + string? due_on?; + # *OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options). + # The external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details. + TaskBase_external 'external?; + # [Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML. + string html_notes?; + # *Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not. + boolean hearted?; + # *Deprecated - please use likes instead* Array of likes for users who have hearted this task. + Like[] hearts?; + # [Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. + boolean is_rendered_as_separator?; + # True if the task is liked by the authorized user, false if not. + boolean liked?; + # Array of likes for users who have liked this task. + Like[] likes?; + # *Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property. + TaskBase_memberships[] memberships?; + # The time at which this task was last modified. + # + # The following conditions will change `modified_at`: + # + # - story is created on a task + # - story is trashed on a task + # - attachment is trashed on a task + # - task is assigned or unassigned + # - custom field value is changed + # - the task itself is trashed + # - Or if any of the following fields are updated: + # - completed + # - name + # - due_date + # - description + # - attachments + # - items + # - schedule_status + # + # The following conditions will _not_ change `modified_at`: + # + # - moving to a new container (project, portfolio, etc) + # - comments being added to the task (but the stories they generate + # _will_ affect `modified_at`) + string modified_at?; + # Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer. + string name?; + # Free-form textual information associated with the task (i.e. its description). + string notes?; + # *Deprecated - please use likes instead* The number of users who have hearted this task. + int num_hearts?; + # The number of users who have liked this task. + int num_likes?; + # [Opt In](/docs/inputoutput-options). The number of subtasks on this task. + int num_subtasks?; + # Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`. + # *Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.* + string? start_at?; + # The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`. + # *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.* + string? start_on?; + # This value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value. + decimal? actual_time_minutes?; +}; + +public type Inline_response_200_24 record { + ProjectStatusResponse data?; +}; + +public type Inline_response_200_21 record { + ProjectBriefResponse data?; +}; + +# [Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks. +public type TaskCompact_created_by record { + # Globally unique identifier of the resource. + string gid?; + # The type of resource. + string resource_type?; +}; + +public type Goal_gid_setMetricCurrentValue_body record { + GoalMetricCurrentValueRequest data?; +}; + +public type Inline_response_200_22 record { + ProjectMembershipNormalResponse data?; +}; + +public type Inline_response_200_20 record { + CustomFieldSettingResponse data?; +}; + +public type Task_gid_duplicate_body record { + TaskDuplicateRequest data?; +}; + +# An *event* is an object representing a change to a resource that was +# observed by an event subscription or delivered asynchronously to +# the target location of an active webhook. +# +# The event may be triggered by a different `user` than the +# subscriber. For example, if user A subscribes to a task and user B +# modified it, the event’s user will be user B. Note: Some events +# are generated by the system, and will have `null` as the user. API +# consumers should make sure to handle this case. +# +# The `resource` that triggered the event may be different from the one +# that the events were requested for or the webhook is subscribed to. For +# example, a subscription to a project will contain events for tasks +# contained within the project. +# +# **Note:** pay close attention to the relationship between the fields +# `Event.action` and `Event.change.action`. +# `Event.action` represents the action taken on the resource +# itself, and `Event.change.action` represents how the information +# within the resource's fields have been modified. +# +# For instance, consider these scenarios: +# +# +# * When at task is added to a project, `Event.action` will be +# `added`, `Event.parent` will be an object with the `id` and +# `type` of the project, and there will be no `change` field. +# +# +# * When an assignee is set on the task, `Event.parent` will be +# `null`, `Event.action` will be `changed`, +# `Event.change.action` will be `changed`, and `new_value` will +# be an object with the user's `id` and `type`. +# +# +# * When a collaborator is added to the task, `Event.parent` will +# be `null`, `Event.action` will be `changed`, +# `Event.change.action` will be `added`, and `added_value` will be +# an object with the user's `id` and `type`. +public type EventResponse record { + UserCompact user?; + AsanaNamedResource 'resource?; + # *Deprecated: Refer to the resource_type of the resource.* The type of the resource that generated the event. + string 'type?; + # The type of action taken on the **resource** that triggered the event. This can be one of `changed`, `added`, `removed`, `deleted`, or `undeleted` depending on the nature of the event. + string action?; + AsanaNamedResource parent?; + # The timestamp when the event occurred. + string created_at?; + # Information about the type of change that has occurred. This field is only present when the value of the property `action`, describing the action taken on the **resource**, is `changed`. + EventResponse_change change?; +}; + +public type TeamCompact record { + *AsanaResource; + # The name of the team. + string name?; +}; + +public type ModifyDependenciesRequest record { + # An array of task gids that a task depends on. + string[] dependencies?; +}; + +public type StoryCompact record { + *AsanaResource; + # The time at which this resource was created. + string created_at?; + UserCompact created_by?; + # The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning. + string resource_subtype?; + # *Create-only*. Human-readable text for the story or comment. + # This will not include the name of the creator. + # *Note: This is not guaranteed to be stable for a given type of story. For example, text for a reassignment may not always say “assigned to …” as the text for a story can both be edited and change based on the language settings of the user making the request.* + # Use the `resource_subtype` property to discover the action that created the story. + string text?; +}; + +public type ProjectSectionInsertRequest record { + # The section to reorder. + string section; + # Insert the given section immediately before the section specified by this parameter. + string before_section?; + # Insert the given section immediately after the section specified by this parameter. + string after_section?; +}; + +public type Project_gid_removeFollowers_body record { + RemoveFollowersRequest data?; +}; + +public type Task_gid_addTag_body record { + TaskAddTagRequest data?; +}; + +# A user identification object for specification with the addUser/removeUser endpoints. +public type TeamRemoveUserRequest record { + # A string identifying a user. This can either be the string "me", an email, or the gid of a user. + string user?; +}; + +public type Inline_response_200_18 record { + PortfolioCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_19 record { + ProjectCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_16 record { + PortfolioMembershipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_17 record { + PortfolioMembershipResponse data?; +}; + +public type GoalRequest record { + *GoalRequestBase; + string[] followers?; +}; + +public type Inline_response_200_14 record { + MembershipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Goal_gid_removeFollowers_body record { + TaskAddFollowersRequest data?; +}; + +public type Inline_response_200_15 record { + ProjectMembershipCompactResponse data?; +}; + +public type Batch_body record { + # A request object for use in a batch request. + BatchRequest data?; +}; + +public type Inline_response_200_12 record { + GoalCompact[] data?; +}; + +public type Inline_response_200_13 record { + JobResponse data?; +}; + +public type GoalAddSubgoalRequest record { + # The goal gid to add as subgoal to a parent goal + string subgoal; + # An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_before?; + # An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. + string insert_after?; +}; + +public type Inline_response_200_10 record { + GoalResponse data?; +}; + +public type Inline_response_200_11 record { + GoalCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type AllocationCompact record { + *AllocationBase; + UserCompact assignee?; + ProjectCompact parent?; + EffortCompact effort?; +}; + +public type GoalRelationshipResponse record { + *GoalRelationshipBase; +}; + +public type Task_gid_addDependents_body record { + # A set of dependent tasks. + ModifyDependentsRequest data?; +}; + +public type Goals_goal_gid_body record { + GoalUpdateRequest data?; +}; + +public type Task_gid_removeTag_body record { + TaskRemoveTagRequest data?; +}; + +public type CreateMembershipRequest record { + *MembershipRequest; + # The gid of the user or team. + string member?; + # The gid of the `goal` or `project` to add the member to. + string parent?; + # The role given to the member. Optional argument, will default to `commenter` for goals and the default project role for projects. Can be `editor` or `commenter` for goals. Can be `admin`,`editor` or `commenter` for projects. + string role?; +}; + +public type JobBase JobCompact; + +public type TaskBase_memberships record { + ProjectCompact project?; + SectionCompact section?; +}; + +public type AllocationRequest record { + *AllocationBase; + # Globally unique identifier for the user who is assigned to the allocation. + string assignee?; + # Globally unique identifier for the project the allocation is on. + string parent?; + EffortCompact effort?; +}; + +public type Team_gid_addUser_body record { + # A user identification object for specification with the addUser/removeUser endpoints. + TeamAddUserRequest data?; +}; + +public type StoryRequest StoryBase; + +public type ProjectStatusCompact record { + *AsanaResource; + # The title of the project status update. + string title?; +}; + +public type Project_gid_saveAsTemplate_body record { + ProjectSaveAsTemplateRequest data?; +}; + +public type GoalAddSupportingWorkRequest record { + # The project/task/portfolio gid to add as supporting work for a goal + string supporting_work; +}; + +public type Workspaces_workspace_gid_body record { + WorkspaceRequest data?; +}; + +public type PortfolioCompact record { + *AsanaResource; + # The name of the portfolio. + string name?; +}; + +public type ProjectTemplateBase record { + *ProjectTemplateCompact; + # Free-form textual information associated with the project template + string description?; + # The description of the project template with formatting as HTML. + string html_description?; + # True if the project template is public to its team. + boolean 'public?; + # The current owner of the project template, may be null. + record {*UserCompact;} owner?; + TeamCompact team?; + # Array of date variables in this project template. Calendar dates must be provided for these variables when instantiating a project. + DateVariableCompact[] requested_dates?; + # Color of the project template. + "dark-pink"|"dark-green"|"dark-blue"|"dark-red"|"dark-teal"|"dark-brown"|"dark-orange"|"dark-purple"|"dark-warm-gray"|"light-pink"|"light-green"|"light-blue"|"light-red"|"light-teal"|"light-brown"|"light-orange"|"light-purple"|"light-warm-gray"? color?; + # Array of template roles in this project template. User Ids can be provided for these variables when instantiating a project to assign template tasks to the user. + TemplateRole[] requested_roles?; +}; + +public type WorkspaceMembershipRequest WorkspaceMembershipBase; + +public type Inline_response_201 record { + CustomFieldResponse data?; +}; + +public type Inline_response_200 record { + AttachmentResponse data?; +}; + +public type TagRequest record { + *TagBase; + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string[] followers?; + # Gid of an object. + string workspace?; +}; + +# An object to represent a user's like. +public type Like record { + # Globally unique identifier of the object, as a string. + string gid?; + UserCompact user?; +}; + +public type UpdateTimeTrackingEntryRequest record { + # *Optional*. Time in minutes tracked by the entry + int duration_minutes?; + # *Optional*. The day that this entry is logged on. Defaults to today if no day specified + string entered_on?; +}; + +public type GoalRelationshipBase record { + *GoalRelationshipCompact; + record {*GoalCompact;} supported_goal?; +}; + +public type AttachmentResponse record { + *AttachmentBase; + # The time at which this resource was created. + string created_at?; + # The URL containing the content of the attachment. + # *Note:* May be null if the attachment is hosted by [Box](https://www.box.com/) and will be null if the attachment is a Video Message hosted by [Vimeo](https://vimeo.com/). If present, this URL may only be valid for two minutes from the time of retrieval. You should avoid persisting this URL somewhere and just refresh it on demand to ensure you do not keep stale URLs. + string? download_url?; + # + string? permanent_url?; + # The service hosting the attachment. Valid values are `asana`, `dropbox`, `gdrive`, `box`, and `vimeo`. + string host?; + record { + *TaskCompact; + # The resource subtype of the parent resource that the filter applies to. + "default_task"|"milestone"|"section"|"approval" resource_subtype?; + } parent?; + # The size of the attachment in bytes. Only present when the `resource_subtype` is `asana`. + int size?; + # The URL where the attachment can be viewed, which may be friendlier to users in a browser than just directing them to a raw file. May be null if no view URL exists for the service. + string? view_url?; + # Whether the attachment is connected to the app making the request for the purposes of showing an app components widget. Only present when the `resource_subtype` is `external` or `gdrive`. + boolean connected_to_app?; +}; + +public type TagCreateTagForWorkspaceRequest record { + *TagBase; + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string[] followers?; +}; + +public type WorkspaceRequest WorkspaceBase; + +public type AddMembersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string members; +}; + +public type Project_gid_addCustomFieldSetting_body record { + AddCustomFieldSettingRequest data?; +}; + +public type Section_gid_addTask_body record { + SectionTaskInsertRequest data?; +}; + +public type Project_gid_addFollowers_body record { + AddFollowersRequest data?; +}; + +public type ProjectMembershipNormalResponse record { + *ProjectMembershipBase; + UserCompact user?; + ProjectCompact project?; + # The base type of this resource. + string resource_type?; + # Whether the member has full access or comment-only access to the project. + "full_write"|"comment_only" write_access?; +}; + +public type EnumOptionBase EnumOption; + +public type Memberships_membership_gid_body record { + MembershipRequest data?; +}; + +public type TemplateRole record { + *AsanaResource; + # Name of the template role. + string name?; +}; + +public type WebhookCompact record { + *AsanaResource; + # If true, the webhook will send events - if false it is considered inactive and will not generate events. + boolean active?; + AsanaNamedResource 'resource?; + # The URL to receive the HTTP POST. + string target?; +}; + +public type Status_updates_body record { + StatusUpdateRequest data?; +}; + +public type Teams_body record { + TeamRequest data?; +}; + +public type AddFollowersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string followers; +}; + +public type TagBase record { + *TagCompact; + # Color of the tag. + "dark-pink"|"dark-green"|"dark-blue"|"dark-red"|"dark-teal"|"dark-brown"|"dark-orange"|"dark-purple"|"dark-warm-gray"|"light-pink"|"light-green"|"light-blue"|"light-red"|"light-teal"|"light-brown"|"light-orange"|"light-purple"|"light-warm-gray"? color?; + # Free-form textual information associated with the tag (i.e. its description). + string notes?; +}; + +public type Enum_options_insert_body record { + EnumOptionInsertRequest data?; +}; + +public type GoalRemoveSupportingRelationshipRequest record { + # The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio. + string supporting_resource; +}; + +# An empty object. Some endpoints do not return an object on success. The success is conveyed through a 2-- status code and returning an empty object. +public type EmptyResponse record { +}; + +public type RemoveCustomFieldSettingRequest record { + # The custom field to remove from this portfolio. + string custom_field; +}; + +public type ProjectUpdateRequest record { + *ProjectBase; + # An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values. + record {|string...;|} custom_fields?; + # *Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive "tasks added" notifications for a project. + string followers?; + # The current owner of the project, may be null. + string? owner?; + # The team that this project is shared with. + string team?; +}; + +public type TaskTemplateRecipe record { + *TaskTemplateRecipeCompact; + # Description of the task that will be created from this template. + string description?; + # HTML description of the task that will be created from this template. + string html_description?; + # Array of projects that the task created from this template will be added to + ProjectCompact[] memberships?; + # The number of days after the task has been instantiated on which that the task will start + int? relative_start_on?; + # The number of days after the task has been instantiated on which that the task will be due + int? relative_due_on?; + # The time of day that the task will be due + string? due_time?; + # Array of task templates that the task created from this template will depend on + TaskTemplateRecipeCompact[] dependencies?; + # Array of task templates that will depend on the task created from this template + TaskTemplateRecipeCompact[] dependents?; + # Array of users that will be added as followers to the task created from this template + UserCompact[] followers?; + # Array of attachments that will be added to the task created from this template + AttachmentCompact[] attachments?; + # Array of subtasks that will be added to the task created from this template + TaskTemplateRecipeCompact[] subtasks?; + # Array of custom fields that will be added to the task created from this template + CustomFieldCompact[] custom_fields?; +}; + +public type WorkspaceMembershipCompact record { + *AsanaResource; + UserCompact user?; + WorkspaceCompact workspace?; +}; + +public type GoalUpdateRequest record { + *GoalRequestBase; + # The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect "On Track", "At Risk", and "Off Track", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`. + # *Note* you can only write to this property if `metric` is set. + string? status?; +}; + +public type TaskDuplicateRequest record { + # The name of the new task. + string name?; + # A comma-separated list of fields that will be duplicated to the new task. + # ##### Fields + # - assignee + # - attachments + # - dates + # - dependencies + # - followers + # - notes + # - parent + # - projects + # - subtasks + # - tags + string include?; +}; + +public type DateVariableRequest record { + # Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date. + string gid?; + # The date with which the date variable should be replaced when instantiating a project. This takes a date with `YYYY-MM-DD` format. + string? value?; +}; + +public type Goals_body record { + GoalRequest data?; +}; + +public type ProjectDuplicateRequest record { + # The name of the new project. + string name; + # Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project. + string team?; + # A comma-separated list of elements that will be duplicated to the new project. Tasks are always included. + # ##### Fields + # - allocations + # - forms + # - members + # - notes + # - task_assignee + # - task_attachments + # - task_dates + # - task_dependencies + # - task_followers + # - task_notes + # - task_projects + # - task_subtasks + # - task_tags + string include?; + # A dictionary of options to auto-shift dates. `task_dates` must be included to use this option. Requires either `start_on` or `due_on`, but not both. + ProjectDuplicateRequest_schedule_dates schedule_dates?; +}; + +public type TagCompact record { + *AsanaResource; + # Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer. + string name?; +}; + +# A generic Asana Resource, containing a globally unique identifier. +public type AsanaResource record { + # Globally unique identifier of the resource, as a string. + string gid?; + # The base type of this resource. + string resource_type?; +}; + +public type Custom_fields_body record { + CustomFieldRequest data?; +}; + +public type Task_gid_addFollowers_body record { + TaskAddFollowersRequest data?; +}; + +public type UserTaskListResponse UserTaskListBase; + +public type CreateTimeTrackingEntryRequest record { + # Time in minutes tracked by the entry. Must be greater than 0 + int duration_minutes?; + # *Optional*. The day that this entry is logged on. Defaults to today if not specified + string entered_on?; +}; + +public type Goal_gid_addFollowers_body record { + TaskAddFollowersRequest data?; +}; + +public type Webhooks_webhook_gid_body record { + WebhookUpdateRequest data?; +}; + +public type Project_gid_addMembers_body record { + AddMembersRequest data?; +}; + +public type Workspace_gid_removeUser_body record { + # A user identification object for specification with the addUser/removeUser endpoints. + WorkspaceRemoveUserRequest data?; +}; + +public type OrganizationExportCompact record { + *AsanaResource; + # The time at which this resource was created. + string created_at?; + # Download this URL to retreive the full export of the organization + # in JSON format. It will be compressed in a gzip (.gz) container. + # + # *Note: May be null if the export is still in progress or + # failed. If present, this URL may only be valid for 1 hour from + # the time of retrieval. You should avoid persisting this URL + # somewhere and rather refresh on demand to ensure you do not keep + # stale URLs.* + string? download_url?; + # The current state of the export. + "pending"|"started"|"finished"|"error" state?; + WorkspaceCompact organization?; +}; + +public type TeamMembershipResponse TeamMembershipBase; + +public type Tasks_body record { + TaskRequest data?; +}; + +public type WorkspaceMembershipBase WorkspaceMembershipCompact; + +public type Sections_section_gid_body record { + SectionRequest data?; +}; + +public type Workspace_gid_tags_body record { + TagCreateTagForWorkspaceRequest data?; +}; + +# The primary object that was affected by this event. +public type AuditLogEventResource record { + # The type of resource. + string resource_type?; + # The subtype of resource. Most resources will not have a subtype. + string resource_subtype?; + # Globally unique identifier of the resource. + string gid?; + # The name of the resource. + string? name?; + # The email of the resource, if applicable. + string email?; +}; + +public type Inline_response_200_58 record { + UserBaseResponse data?; +}; + +public type Inline_response_200_56 record { + WorkspaceCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Error record { + # Message providing more detail about the error that occurred, if available. + string message?; + # Additional information directing developers to resources on how to address and fix the problem, if available. + string help?; + # *500 errors only*. A unique error phrase which can be used when contacting developer support to help identify the exact occurrence of the problem in Asana’s logs. + string phrase?; +}; + +# A collection of rich text that will be displayed as a preview to another app. +# +# This is read-only except for a small group of whitelisted apps. +public type Preview record { + # Some fallback text to display if unable to display the full preview. + string fallback?; + # Text to display in the footer. + string footer?; + # Text to display in the header. + string header?; + # Where the header will link to. + string header_link?; + # HTML formatted text for the body of the preview. + string html_text?; + # Text for the body of the preview. + string text?; + # Text to display as the title. + string title?; + # Where to title will link to. + string title_link?; +}; + +public type Inline_response_200_57 record { + WorkspaceResponse data?; +}; + +public type Inline_response_412 record { + Inline_response_412_errors[] errors?; + # A sync token to be used with the next call to the /events endpoint. + string sync?; +}; + +public type Inline_response_200_54 record { + WorkspaceMembershipResponse data?; +}; + +public type Inline_response_200_55 record { + WorkspaceMembershipCompact[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type TimePeriodBase record { + *TimePeriodCompact; + TimePeriodCompact parent?; +}; + +public type Team_gid_removeUser_body record { + # A user identification object for specification with the addUser/removeUser endpoints. + TeamRemoveUserRequest data?; +}; + +public type Inline_response_200_52 record { + UserCompact[] data?; +}; + +public type PortfolioMembershipBase PortfolioMembershipCompact; + +public type Inline_response_200_53 record { + WebhookResponse[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Inline_response_200_50 record { + UserResponse data?; +}; + +public type Inline_response_200_51 record { + AsanaNamedResource[] data?; + # *Conditional*. This property is only present when a limit query parameter is provided in the request. When making a paginated request, the API will return a number of results as specified by the limit parameter. If more results exist, then the response will contain a next_page attribute, which will include an offset, a relative path attribute, and a full uri attribute. If there are no more pages available, next_page will be null and no offset will be provided. Note that an offset token will expire after some time, as data may have changed. + NextPage? next_page?; +}; + +public type Time_tracking_entries_time_tracking_entry_gid_body record { + UpdateTimeTrackingEntryRequest data?; +}; + +public type Organization_exports_body record { + # An *organization_export* request starts a job to export the complete data of the given Organization. + OrganizationExportRequest data?; +}; + +# Event specific details. The schema will vary depending on the `event_type`. +public type AuditLogEventDetails record { +}; + +public type Task_gid_subtasks_body record { + TaskRequest data?; +}; + +# *Conditional* +public type StoryResponseDates record { + # The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date. + string? start_on?; + # The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`. + string? due_at?; + # The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`. + string due_on?; +}; + +public type WorkspaceCompact record { + *AsanaResource; + # The name of the workspace. + string name?; +}; + +public type EnumOptionInsertRequest record { + # The gid of the enum option to relocate. + string enum_option; + # An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option. + string before_enum_option?; + # An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option. + string after_enum_option?; +}; + +public type TaskRemoveFollowersRequest record { + # An array of strings identifying users. These can either be the string "me", an email, or the gid of a user. + string[] followers; +}; + +# Contains keys `start_on` and `end_on` for the vacation dates for the user in this workspace. If `start_on` is null, the entire `vacation_dates` object will be null. If `end_on` is before today, the entire `vacation_dates` object will be null. +public type WorkspaceMembershipResponse_vacation_dates record { + # The day on which the user's vacation in this workspace starts. This is a date with `YYYY-MM-DD` format. + string start_on?; + # The day on which the user's vacation in this workspace ends, or null if there is no end date. This is a date with `YYYY-MM-DD` format. + string? end_on?; +}; + +public type Project_gid_project_statuses_body record { + ProjectStatusRequest data?; +}; diff --git a/ballerina/utils.bal b/ballerina/utils.bal new file mode 100644 index 0000000..cf7ec15 --- /dev/null +++ b/ballerina/utils.bal @@ -0,0 +1,252 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import ballerina/mime; +import ballerina/url; + +type SimpleBasicType string|boolean|int|float|decimal; + +# Represents encoding mechanism details. +type Encoding record { + # Defines how multiple values are delimited + string style = FORM; + # Specifies whether arrays and objects should generate as separate fields + boolean explode = true; + # Specifies the custom content type + string contentType?; + # Specifies the custom headers + map headers?; +}; + +enum EncodingStyle { + DEEPOBJECT, FORM, SPACEDELIMITED, PIPEDELIMITED +} + +final Encoding & readonly defaultEncoding = {}; + +# Serialize the record according to the deepObject style. +# +# + parent - Parent record name +# + anyRecord - Record to be serialized +# + return - Serialized record as a string +isolated function getDeepObjectStyleRequest(string parent, record {} anyRecord) returns string { + string[] recordArray = []; + foreach [string, anydata] [key, value] in anyRecord.entries() { + if value is SimpleBasicType { + recordArray.push(parent + "[" + key + "]" + "=" + getEncodedUri(value.toString())); + } else if value is SimpleBasicType[] { + recordArray.push(getSerializedArray(parent + "[" + key + "]" + "[]", value, DEEPOBJECT, true)); + } else if value is record {} { + string nextParent = parent + "[" + key + "]"; + recordArray.push(getDeepObjectStyleRequest(nextParent, value)); + } else if value is record {}[] { + string nextParent = parent + "[" + key + "]"; + recordArray.push(getSerializedRecordArray(nextParent, value, DEEPOBJECT)); + } + recordArray.push("&"); + } + _ = recordArray.pop(); + return string:'join("", ...recordArray); +} + +# Serialize the record according to the form style. +# +# + parent - Parent record name +# + anyRecord - Record to be serialized +# + explode - Specifies whether arrays and objects should generate separate parameters +# + return - Serialized record as a string +isolated function getFormStyleRequest(string parent, record {} anyRecord, boolean explode = true) returns string { + string[] recordArray = []; + if explode { + foreach [string, anydata] [key, value] in anyRecord.entries() { + if (value is SimpleBasicType) { + recordArray.push(key, "=", getEncodedUri(value.toString())); + } else if (value is SimpleBasicType[]) { + recordArray.push(getSerializedArray(key, value, explode = explode)); + } else if (value is record {}) { + recordArray.push(getFormStyleRequest(parent, value, explode)); + } + recordArray.push("&"); + } + _ = recordArray.pop(); + } else { + foreach [string, anydata] [key, value] in anyRecord.entries() { + if (value is SimpleBasicType) { + recordArray.push(key, ",", getEncodedUri(value.toString())); + } else if (value is SimpleBasicType[]) { + recordArray.push(getSerializedArray(key, value, explode = false)); + } else if (value is record {}) { + recordArray.push(getFormStyleRequest(parent, value, explode)); + } + recordArray.push(","); + } + _ = recordArray.pop(); + } + return string:'join("", ...recordArray); +} + +# Serialize arrays. +# +# + arrayName - Name of the field with arrays +# + anyArray - Array to be serialized +# + style - Defines how multiple values are delimited +# + explode - Specifies whether arrays and objects should generate separate parameters +# + return - Serialized array as a string +isolated function getSerializedArray(string arrayName, anydata[] anyArray, string style = "form", boolean explode = true) returns string { + string key = arrayName; + string[] arrayValues = []; + if (anyArray.length() > 0) { + if (style == FORM && !explode) { + arrayValues.push(key, "="); + foreach anydata i in anyArray { + arrayValues.push(getEncodedUri(i.toString()), ","); + } + } else if (style == SPACEDELIMITED && !explode) { + arrayValues.push(key, "="); + foreach anydata i in anyArray { + arrayValues.push(getEncodedUri(i.toString()), "%20"); + } + } else if (style == PIPEDELIMITED && !explode) { + arrayValues.push(key, "="); + foreach anydata i in anyArray { + arrayValues.push(getEncodedUri(i.toString()), "|"); + } + } else if (style == DEEPOBJECT) { + foreach anydata i in anyArray { + arrayValues.push(key, "[]", "=", getEncodedUri(i.toString()), "&"); + } + } else { + foreach anydata i in anyArray { + arrayValues.push(key, "=", getEncodedUri(i.toString()), "&"); + } + } + _ = arrayValues.pop(); + } + return string:'join("", ...arrayValues); +} + +# Serialize the array of records according to the form style. +# +# + parent - Parent record name +# + value - Array of records to be serialized +# + style - Defines how multiple values are delimited +# + explode - Specifies whether arrays and objects should generate separate parameters +# + return - Serialized record as a string +isolated function getSerializedRecordArray(string parent, record {}[] value, string style = FORM, boolean explode = true) returns string { + string[] serializedArray = []; + if style == DEEPOBJECT { + int arayIndex = 0; + foreach var recordItem in value { + serializedArray.push(getDeepObjectStyleRequest(parent + "[" + arayIndex.toString() + "]", recordItem), "&"); + arayIndex = arayIndex + 1; + } + } else { + if (!explode) { + serializedArray.push(parent, "="); + } + foreach var recordItem in value { + serializedArray.push(getFormStyleRequest(parent, recordItem, explode), ","); + } + } + _ = serializedArray.pop(); + return string:'join("", ...serializedArray); +} + +# Get Encoded URI for a given value. +# +# + value - Value to be encoded +# + return - Encoded string +isolated function getEncodedUri(anydata value) returns string { + string|error encoded = url:encode(value.toString(), "UTF8"); + if (encoded is string) { + return encoded; + } else { + return value.toString(); + } +} + +# Generate query path with query parameter. +# +# + queryParam - Query parameter map +# + encodingMap - Details on serialization mechanism +# + return - Returns generated Path or error at failure of client initialization +isolated function getPathForQueryParam(map queryParam, map encodingMap = {}) returns string|error { + string[] param = []; + if (queryParam.length() > 0) { + param.push("?"); + foreach var [key, value] in queryParam.entries() { + if value is () { + _ = queryParam.remove(key); + continue; + } + Encoding encodingData = encodingMap.hasKey(key) ? encodingMap.get(key) : defaultEncoding; + if (value is SimpleBasicType) { + param.push(key, "=", getEncodedUri(value.toString())); + } else if (value is SimpleBasicType[]) { + param.push(getSerializedArray(key, value, encodingData.style, encodingData.explode)); + } else if (value is record {}) { + if (encodingData.style == DEEPOBJECT) { + param.push(getDeepObjectStyleRequest(key, value)); + } else { + param.push(getFormStyleRequest(key, value, encodingData.explode)); + } + } else { + param.push(key, "=", value.toString()); + } + param.push("&"); + } + _ = param.pop(); + } + string restOfPath = string:'join("", ...param); + return restOfPath; +} + +isolated function createBodyParts(record {|anydata...;|} anyRecord, map encodingMap = {}) returns mime:Entity[]|error { + mime:Entity[] entities = []; + foreach [string, anydata] [key, value] in anyRecord.entries() { + Encoding encodingData = encodingMap.hasKey(key) ? encodingMap.get(key) : {}; + mime:Entity entity = new mime:Entity(); + if value is record {byte[] fileContent; string fileName;} { + entity.setContentDisposition(mime:getContentDispositionObject(string `form-data; name=${key}; filename=${value.fileName}`)); + entity.setByteArray(value.fileContent); + } else if value is byte[] { + entity.setContentDisposition(mime:getContentDispositionObject(string `form-data; name=${key};`)); + entity.setByteArray(value); + } else if value is SimpleBasicType|SimpleBasicType[] { + entity.setContentDisposition(mime:getContentDispositionObject(string `form-data; name=${key};`)); + entity.setText(value.toString()); + } else if value is record {}|record {}[] { + entity.setContentDisposition(mime:getContentDispositionObject(string `form-data; name=${key};`)); + entity.setJson(value.toJson()); + } + if (encodingData?.contentType is string) { + check entity.setContentType(encodingData?.contentType.toString()); + } + map? headers = encodingData?.headers; + if (headers is map) { + foreach var [headerName, headerValue] in headers.entries() { + if headerValue is SimpleBasicType { + entity.setHeader(headerName, headerValue.toString()); + } + } + } + entities.push(entity); + } + return entities; +} diff --git a/docs/license.txt b/docs/license.txt new file mode 100644 index 0000000..921a7a1 --- /dev/null +++ b/docs/license.txt @@ -0,0 +1,18 @@ +// AUTO-GENERATED FILE. DO NOT MODIFY. +// This file is auto-generated by the Ballerina OpenAPI tool. + +// Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. diff --git a/docs/spec/openapi.yaml b/docs/spec/openapi.yaml new file mode 100644 index 0000000..799a177 --- /dev/null +++ b/docs/spec/openapi.yaml @@ -0,0 +1,49943 @@ +openapi: 3.0.0 +info: + description: >- + This is the interface for interacting with the [Asana + Platform](https://developers.asana.com). Our API reference + is generated from our [OpenAPI spec] + (https://raw.githubusercontent.com/Asana/openapi/master/defs/asana_oas.yaml). + x-public-description: >- + This is the interface for interacting with the [Asana + Platform](https://developers.asana.com). Our API reference + is generated from our [OpenAPI spec] + (https://raw.githubusercontent.com/Asana/openapi/master/defs/asana_oas.yaml). + title: Asana + termsOfService: https://asana.com/terms + contact: + name: Asana Support + url: https://asana.com/support + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: '1.0' + x-docs-schema-whitelist: + - AsanaResource + - AsanaNamedResource + - AuditLogEvent + - AttachmentResponse + - AttachmentCompact + - BatchResponse + - CustomFieldSettingResponse + - CustomFieldSettingCompact + - CustomFieldResponse + - CustomFieldCompact + - EnumOption + - EventResponse + - ErrorResponse + - GoalResponse + - GoalCompact + - GoalMembershipCompact + - GoalMembershipBase + - GoalMembershipResponse + - GoalRelationshipResponse + - GoalRelationshipCompact + - JobResponse + - JobCompact + - OrganizationExportResponse + - OrganizationExportCompact + - PortfolioMembershipResponse + - PortfolioMembershipCompact + - PortfolioResponse + - PortfolioCompact + - ProjectBriefResponse + - ProjectBriefCompact + - ProjectMembershipCompactResponse + - ProjectMembershipNormalResponse + - ProjectMembershipCompact + - ProjectResponse + - ProjectCompact + - ProjectStatusResponse + - ProjectStatusCompact + - ProjectTemplateCompact + - ProjectTemplateResponse + - RuleTriggerResponse + - SectionResponse + - SectionCompact + - StatusUpdateResponse + - StatusUpdateCompact + - StoryResponse + - StoryCompact + - TagResponse + - TagCompact + - TaskResponse + - TaskCompact + - TaskCountResponse + - TeamMembershipResponse + - TeamMembershipCompact + - TeamResponse + - TeamCompact + - TimePeriodResponse + - TimePeriodCompact + - UserTaskListResponse + - UserTaskListCompact + - UserResponse + - UserCompact + - WebhookFilter + - WebhookResponse + - WebhookCompact + - WorkspaceMembershipResponse + - WorkspaceMembershipCompact + - WorkspaceResponse + - WorkspaceCompact +servers: + - url: https://app.asana.com/api/1.0 + description: Main endpoint. +security: + - personalAccessToken: [] + - oauth2: [] +x-readme: + proxy-enabled: false +tags: + - name: Allocations + description: >- + An allocation object represents how much of a resource (e.g. person, team) is + dedicated to a specific work object (e.g. project, portfolio) over a specific + period of time. The effort value of an allocation object can be a percentage + or number of hours. + - name: Attachments + description: >- + An *attachment* object represents any file attached to a task in Asana, + whether it’s an uploaded file or one associated via a third-party service + such as Dropbox or Google Drive. + - name: Audit log API + description: >- + Asana's audit log is an immutable log of [important events](/docs/audit-log-events#supported-audit-log-events) + in your organization's Asana instance. + + + The audit log API allows you to monitor and act upon important security + and compliance-related changes. Organizations might use this API endpoint to: + + + * Set up proactive alerting with a Security Information and Event Management + (SIEM) tool like [Splunk](https://asana.com/guide/help/api/splunk) + + * Conduct reactive investigations when a security incident takes place + + * Visualize key domain data in aggregate to identify security trends + + + Note that since the API provides insight into what is happening in an Asana + instance, the data is [read-only](/reference/getauditlogevents). That is, there + are no "write" or "update" endpoints for audit log events. + + + Only [Service Accounts](https://asana.com/guide/help/premium/service-accounts) + in [Enterprise Domains](https://asana.com/enterprise) can access audit log API + endpoints. Authentication with a Service Account's + [personal access token](/docs/personal-access-token) is required. + + + For a full list of + supported events, see [supported AuditLogEvents](/docs/audit-log-events#supported-audit-log-events). + - name: Batch API + description: >- + There are many cases where you want to accomplish a variety of work in + the Asana API but want to minimize the number of HTTP requests you make. + For example: + + + * Modern browsers limit the number of requests that a single web page can + make at once. + * Mobile apps will use more battery life to keep the cellular radio on + when making a series of requests. + * There is an overhead cost to developing software that can make multiple + requests in parallel. + * Some cloud platforms handle parallelism poorly, or disallow it + entirely. + + + To make development easier in these use cases, Asana provides a **batch + API** that enables developers to perform multiple “actions” by making + only a single HTTP request. + + + #### Making a batch request + + + To make a batch request, send a `POST` request to `/batch`. Like other + `POST` endpoints, the body should contain a `data` envelope. Inside this + envelope should be a single `actions` field, containing a list of + “action” objects. Each action represents a standard request to an + existing endpoint in the Asana API. + + + **The maximum number of actions allowed in a single batch request is 10**. + Making a batch request with no actions in it will result in a `400 Bad + Request`. + + + When the batch API receives the list of actions to execute, it will + dispatch those actions to the already-implemented endpoints specified by + the `relative_path` and `method` for each action. This happens in + parallel, so all actions in the request will be processed simultaneously. + There is no guarantee of the execution order for these actions, nor is + there a way to use the output of one action as the input of another + action (such as creating a task and then commenting on it). + + + The response to the batch request will contain (within the `data` + envelope) a list of result objects, one for each action. The results are + guaranteed to be in the same order as the actions in the request (e.g., + the first result in the response corresponds to the first action in the + request) + + + The batch API will always attempt to return a `200 Success` response with + individual result objects for each individual action in the request. Only + in certain cases (such as missing authorization or malformed JSON in the + body) will the entire request fail with another status code. Even if + every individual action in the request fails, the batch API will still + return a `200 Success` response, and each result object in the response + will contain the errors encountered with each action. + + + #### Rate limiting + + + The batch API fully respects all of our rate limiting. This means that a + batch request counts against *both* the standard rate limiter and the + concurrent request limiter as though you had made a separate HTTP request + for every individual action. For example, a batch request with five + actions counts as five separate requests in the standard rate limiter, + and counts as five concurrent requests in the concurrent request limiter. + The batch request itself incurs no cost. + + + If any of the actions in a batch request would exceed any of the enforced + limits, the *entire* request will fail with a `429 Too Many Requests` + error. This is to prevent the unpredictability of which actions might + succeed if not all of them could succeed. + + + #### Restrictions + + + Not every endpoint can be accessed through the batch API. + Specifically, the following actions cannot be taken and will result in a + `400 Bad Request` for that action: + + + * Uploading attachments + + * Creating, getting, or deleting organization exports + + * Any SCIM operations + + * Nested calls to the batch API + - name: Custom fields + description: >- + _Note: Custom fields are a premium feature. Integrations which work + with custom fields need to handle an assortment of use cases for free and + premium users in context of free and premium organizations. For a detailed + examination of which data users will have access in different + circumstances, review the section below on access control._ + + + In the Asana application, tasks, projects, and portfolios can hold + user-specified [custom fields](https://asana.com/guide/help/premium/custom-fields) + which provide extra information (e.g., a "priority" property with an associated + value, or a number representing the time required to complete a task). This + lets + a user define the type of information that each item within a project or portfolio + can contain in addition to the built-in fields that Asana provides. + + `display_value` is a read-only field that will always be a string. For apps + that use custom fields, this is a great way to safely display/export the + value of a custom field, regardless of its type. We suggest apps use + this field in order to future-proof for changes to custom fields. + + + #### Characteristics of custom fields + + + * There is metadata that defines the custom field. This metadata can be + shared across an entire workspace, or be specific to a project or portfolio. + + * Creating a custom field setting on a project or portfolio means each direct + child will have the custom field. This is conceptually akin to adding + columns in a database or a spreadsheet: + every task (row) in the project (table) can contain information for that + field, including "blank" values (i.e., `null` data). For portfolio custom + fields, every project (row) in the portfolio (table) will contain + information for the custom field. + + * Custom field settings only go one child deep. This means that a custom field + setting on a portfolio will give each project the custom field, but not + each task within those projects. + + * Tasks have custom field _values_ assigned to them. + + + #### Types of custom fields + + + Integrations using custom fields need to be aware of the six basic types that + a custom field can adopt. These types are: + + + * `text` - an arbitrary, relatively short string of text + + * `number` - a number with a defined level of precision + + * `enum` - a selection of a single option from a defined list of options (i.e., + mutually exclusive selections) + + * `multi_enum` - a selection of one or more options from a defined list of options + (i.e., mutually inclusive selections) + + * `date` - a reference date with an optional time value + + * `people` - a list of active contributors (i.e., where their relationship to + the work is defined in the custom field title) + + + #### Example use case + + + Consider an organization that has defined a custom field for "Priority". + This field is of `enum` type and can have user-defined values of + `Low`, `Medium`, or `High`. This is the field metadata, and it is + visible within, and shared across, the entire organization. + + + A project is then created in the organization, called "Bugs", and the + "Priority" custom field is associated with that project. This will allow + all tasks within the "Bugs" project to have an associated "Priority". + + + A new task is created within "Bugs". This task, then, has a field named + "Priority" which can take on the custom field value of one of `[null]`, + `Low`, `Medium`, and `High`. + + + #### Custom fields in the API + + + These custom fields are accessible via the API through a number of + endpoints at the top level (e.g. `/custom_fields` and + `/custom_field_settings`) and through requests on workspaces, portfolios, + projects, and tasks resources. The API also provides a way to fetch both the + metadata and data which define each particular custom field, so that a client + application may render proper UI to display or edit the values. + + + Text fields are currently limited to 1024 characters. On tasks, their + custom field value will have a `text_value` property to represent this + field. + + + Number fields can have an arbitrary `precision` associated with them; for + example, a precision of `2` would round its value to the second + (hundredths) place (e.g., `1.2345` would round to `1.23`). On tasks, the custom + field value will have a `number_value` property to represent this field. + + + #### Enum fields + + + Enum fields represent a selection from a list of options. On the metadata, + they will contain all of the options in an array. Each option has 4 + properties: + + + * `gid` - the GID of this enum option. Note that this is the GID of the individual + _option_. The custom field itself has a separate `gid`. + + * `name` - the name of the option (e.g., "Choice #1") + + * `enabled` - whether this field is enabled. Disabled fields are not + available to choose from when disabled, and are visually hidden in the + Asana application, but they remain in the metadata for custom field values + which were set to the option before the option was disabled. + + * `color` - a color associated with this choice. + + + On the task's custom field value, the enum will have an `enum_value` + property which will be the same as one of the choices from the list + defined in the custom field metadata. + + + #### Querying an organization for its custom fields + + + For custom fields shared across the workspace or organization, the + workspace [can be queried](/reference/getcustomfieldsforworkspace) + for its list of defined custom fields. Like other collection queries, the + fields will be returned as a compact record; slightly different from most + other compact records is the fact that the compact record for custom fields + includes `type` as well as `gid` and `name`. + + + #### Accessing custom field definitions + + + The [custom fields](/reference/getcustomfield) reference + describes how the metadata which defines a custom field is accessed. A + GET request with a `gid` can be issued on the `/custom_fields` endpoint + to fetch the full definition of a single custom field given its `gid` + from (for instance) listing all custom fields on a workspace, or getting + the `gid` from a custom field settings object or a task. + + + #### Associating custom fields with a project or portfolio + + + A mapping between a custom field and a project or portfolio is handled with + a + [custom field settings](/reference/custom-field-settings) object. This object + contains a reference for each + of the custom fields and the project or portfolio, as well as additional information + about the status of that particular custom field (e.g., `is_important`, which + defines + whether or not the custom field will appear in the list/grid on the Asana application). + + + #### Accessing custom field values on tasks or projects + + + The [tasks](/reference/gettask) reference has information on how custom fields + look on tasks. custom fields will return as an array on the + property `custom_fields`, and each entry will contain, side-by-side, the + compact representation of the custom field metadata and a + `{typename}_value` property that stores the value set for the + custom field. + + + Of particular note is that the top-level `gid` of each entry in the + `custom_fields` array is the `gid` of the custom field metadata, as it is + the compact representation of this metadata. This can be used to refer to + the full metadata by making a request to the + `/custom_fields/{custom_fields_id}` endpoint as described above. + + + Custom fields can be set just as in the Asana-defined fields on a task via + `POST` or `PUT` requests. You can see an example in the + [update a task](/reference/updatetask) endpoint. + + + Custom fields on projects follow this same pattern. + + + #### Warning: Program defensively with regards to custom field definitions + + + Asana application users have the ability to change the definitions of + custom field metadata. This means that as you write scripts or + applications to work with them, it is possible for the definitions to + change at any time, which may cause an application using them to break or + malfunction if it makes assumptions about the metadata for a particular + custom field. When using custom fields, it is a good idea to program + *defensively*, meaning you your application should double-check that + the custom field metadata are what it expects. + + + Storing the state of the custom field metadata for too long if you + dynamically create a model for it can cause your model to become + out of sync with the model stored in Asana. For example, if you encounter + an `enum` value on a task that does not match any option + in your metadata model, your metadata model has become out of date with + the custom field metadata. + + + #### Enabled and disabled values + + + When information that is contained in a custom field value loses a + logical association with its metadata definition, the value becomes + disabled. This can happen in a couple of simple ways, for example, if + you remove the custom field metadata from a project, or move a task with + a custom field to a different project which does not have the custom + field metadata associated with it. The value remains on the task, and + the custom field metadata can still be found and examined, but as the + context in which the custom field makes sense is gone, the custom field + cannot change its value; it can only be cleared. + + + _Note: Tasks that are associated with multiple projects do not become + disabled, so long as at least one of the projects is still associated + with the custom field metadata. In other words, tasks with multiple + projects will retain logically associated to the set of custom field + metadata represented by all of their projects._ + + + Moving the task back under a project with that custom field applied to it + or applying the custom field metadata to the current project will return + the custom field value to an enabled state. In this scenario, the custom + field will be re-enabled and editable again. + + + In the Asana application, disabled fields are grayed out and not allowed + to change, other than to be discarded. In the API, we return a property + `enabled: false` to inform the external application that the value has + been disabled. + + + Note that the API enforces the same operations on disabled custom field + values as hold in the Asana application: they may not have their values + changed, since the lack of context for the values of a custom field in + general doesn't provide enough information to know what new values should + be. Setting the custom field value to `null` will clear and remove the + custom field value from the task. + + + #### Custom field access control + + + Custom fields are a complex feature of the Asana platform, and their + access in the Asana application and in the API vary based on the status + of the user and project. When building your application, it is best to be + defensive and not assume the given user will have read or write access + to a custom field, and fail gracefully when this occurs. + - name: Custom field settings + description: >- + Custom fields are attached to a particular project with the custom + field settings resource. This resource both represents the + many-to-many join of the custom field and project as well as stores + information that is relevant to that particular pairing. For instance, + the `is_important` property determines some possible + application-specific handling of that custom field. + - name: Events + description: >- + An event is an object representing a change to a resource that was + observed by an event subscription. Event streams rely on the same infrastructure + as webhooks, which ensures events are delivered within a minute (on average). + This + system is designed for at most once delivery, meaning in exceptional circumstances + a small number of events may be missing from the stream. For this reason, if + your use + case requires strong guarantees about processing all changes on a resource and + cannot + tolerate any missing events, regardless of how rare that might be, we recommend + building + a fallback polling system that fetches the resource periodically as well. Note + that while + webhooks cannot be replayed once delivered, events are retrievable from the + event stream + for 24 hours after being processed. + + + In general, requesting events on a resource is faster and subject to + higher rate limits than requesting the resource itself. Additionally, + change events "bubble up" (e.g., listening to events on a project would include + when stories are added to tasks in the project, and even to subtasks). + + + Establish an initial sync token by making a request with no sync token. + The response will be a `412 Precondition Failed` error - the same as if + the sync token had expired. + + + Subsequent requests should always provide the sync token from the + immediately preceding call. + + + Sync tokens may not be valid if you attempt to go "backward" in the + history by requesting previous tokens, though re-requesting the current + sync token is generally safe, and will always return the same results. + + + When you receive a `412 Precondition Failed` error, it means that the + sync token is either invalid or expired. If you are attempting to keep a + set of data in sync, this signals you may need to re-crawl the data. + + + Sync tokens always expire after 24 hours, but may expire sooner, + depending on load on the service. + - name: Goals + description: >- + A goal is an object in the goal-tracking system that helps your organization + drive measurable results. + - name: Goal relationships + description: >- + A goal relationship is an object representing the relationship between a goal + and another goal, a project, a task, or a portfolio. + - name: Jobs + description: >- + Jobs represent processes that handle asynchronous work. A job created when an + endpoint requests an action + that will be handled asynchronously, such as project or task duplication. + + + Only the creator of the duplication process can access the duplication + status of the new object. + + + *Note*: With any work that is handled asynchronously + (e.g., [project instantation from a template](/reference/instantiateproject), + duplicating a [task](/reference/duplicatetask) or [project](/reference/duplicateproject), + etc.), + the *intermittent states* of newly-created objects may not be consistent. That + is, object properties may + return different values each time when polled until the job `status` has returned + a `succeeded` value. + - name: Organization exports + description: >- + An `organization_export` object represents a request to export the + complete data of an organization in JSON format. + + + To export an organization using this API: + + + * Create an `organization_export` + [request](/reference/createorganizationexport) + and store the ID that is returned. + * Request the `organization_export` every few minutes, until the + `state` field contains ‘finished’. + * Download the file located at the URL in the `download_url` field. + * Exports can take a long time, from several minutes to a few hours + for large organizations. + + + *Note: These endpoints are only available to [Service + Accounts](https://asana.com/guide/help/premium/service-accounts) of an + [Enterprise](https://asana.com/enterprise) organization.* + - name: Portfolios + description: >- + A portfolio gives a high-level overview of the status of multiple + initiatives in Asana. Portfolios provide a dashboard overview of the + state of multiple projects, including a progress report and the most + recent [status update](/reference/status-updates). + + Portfolios have some restrictions on size. Each portfolio has a max of 500 + items and, like projects, a maximum of 20 custom fields. + - name: Portfolio memberships + description: >- + This object determines if a user is a member of a portfolio. + - name: Projects + description: >- + A project represents a prioritized list of tasks in Asana or a board + with columns of tasks represented as cards. A project exists in a single + workspace or organization and is accessible to a subset of users in that + workspace or organization, depending on its permissions. + + + Projects in organizations are shared with a single team. Currently, the team + of a project cannot be changed via the API. Non-organization + workspaces do not have teams and so you should not specify the team of + project in a regular workspace. + + + Followers of a project are a subset of the members of that project. + Followers of a project will receive all updates including tasks + created, added and removed from that project. Members of the project + have access to and will receive status updates of the project. Adding + followers to a project will add them as members if they are not + already, removing followers from a project will not affect membership. + + + **Note:** You can use certain project endpoints to operate on + [user task lists](/reference/user-task-lists) ([My Tasks](https://asana.com/guide/help/fundamentals/my-tasks)) + by substituting the `{project_gid}` with the `{user_task_list_gid}`. For example, + you can perform + operations on the custom fields of a user task list by using the following + projects endpoints: [Add a custom field to a project](/reference/addcustomfieldsettingforproject), + [Remove a custom field from a project](/reference/removecustomfieldsettingforproject) + and + [Get a project's custom fields](/reference/getcustomfieldsettingsforproject) + - name: Project briefs + description: >- + A project brief object represents a rich text document that describes + a project. + + + Please note that this API is in *preview*, and is expected to change. + This API is to be used for development and testing only as an advance + view into the upcoming rich text format experience in the task description. + For more information, see [this post](https://forum.asana.com/t/project-brief-api-now-available-as-a-preview/150885) + in the developer forum. + - name: Project memberships + description: >- + With the introduction of “comment-only” projects in Asana, a user’s + membership in a project comes with associated permissions. These + permissions (i.e., whether a user has full access to the project or + comment-only access) are accessible through the project memberships + endpoints described here. + - name: Project statuses + description: |- + *Deprecated: new integrations should prefer using [status updates](/reference/status-updates)* + + A project status is an update on the progress of a particular project, + and is sent out to all project followers when created. These updates + include both text describing the update and a color code intended to + represent the overall state of the project: "green" for projects that + are on track, "yellow" for projects at risk, "red" for projects that + are behind, and "blue" for projects on hold. + + Project statuses can be created and deleted, but not modified. + - name: Project templates + description: |- + A project template is an object that allows new projects to be created + with a predefined setup, which may include tasks, sections, rules, etc. + It simplifies the process of running a workflow that involves a similar + set of work every time. + + + Project templates in organizations are shared with a single team. Currently, the + team of a project template cannot be changed via the API. + - name: Sections + description: >- + A section is a subdivision of a project that groups tasks together. + It can either be a header above a list of tasks in a list view or a + column in a board view of a project. + + + Sections are largely a shared idiom in Asana’s API for both list and + board views of a project regardless of the project’s layout. + + + The ‘memberships’ property when [getting a task](/reference/gettask) + will return the information for the section or the column under + ‘section’ in the response. + - name: Status updates + description: |- + A status update is an update on the progress of a particular object, + and is sent out to all followers when created. These updates + include both text describing the update and a `status_type` intended to + represent the overall state of the project. These include: `on_track` for projects that + are on track, `at_risk` for projects at risk, `off_track` for projects that + are behind, and `on_hold` for projects on hold. + + Status updates can be created and deleted, but not modified. + - name: Stories + description: >- + *See [our forum post](https://forum.asana.com/t/no-more-parsing-story-text-new-fields-on-stories/42924) + for more info on when conditional fields are returned.* + + + A story represents an activity associated with an object in the + Asana system. Stories are generated by the system whenever users take + actions such as creating or assigning tasks, or moving tasks between + projects. "Comments" are also a form of user-generated story. + - name: Tags + description: >- + A tag is a label that can be attached to any task in Asana. It exists in + a single workspace or organization. + + + Tags have some metadata associated with them, but it is possible that + we will simplify them in the future so it is not encouraged to rely + too heavily on it. Unlike projects, tags do not provide any ordering + on the tasks they are associated with. + - name: Tasks + description: >- + The task is the basic object around which many operations in Asana are + centered. In the Asana application, multiple tasks populate the + middle pane according to some view parameters, and the set of selected + tasks determines the more detailed information presented in the + details pane. + + + Sections are unique in that they will be included in the `memberships` + field of task objects returned in the API when the task is within a + section. They can also be used to manipulate the ordering of a task + within a project. + + + [Queries](/reference/gettasks) + return a [compact representation of each task object](/reference/tasks). To + retrieve *all* fields or *specific set* of the fields, use + [field selectors](/docs/inputoutput-options) to manipulate what data is included + in a response. + - name: Task templates + description: >- + A task template is an object that allows new tasks to be created + with a predefined setup, which may include followers, dependencies, custom fields, + etc. + It simplifies the process of running a workflow that involves a similar + set of work every time. + + Task templates are contained within a single project. + - name: Teams + description: >- + A team is used to group related projects and people together within an + organization. Each project in an organization is associated with a team. + - name: Team memberships + description: >- + This object determines if a user is a member of a team. + - name: Time periods + description: >- + A time period is an object that represents a domain-scoped date range that can + be set on [goals](/reference/goals). + - name: Typeahead + description: >- + The typeahead search API provides search for objects from a single + workspace. + - name: Users + description: >- + A user object represents an account in Asana that can be given access to + various workspaces, projects, and tasks. + + + Like other objects in the system, users are referred to by numerical + IDs. However, the special string identifier `me` can be used anywhere + a user ID is accepted, to refer to the current authenticated user + (e.g, `GET /users/me`). + - name: User task lists + description: >- + A user task list represents the tasks assigned to a particular user. + This list is the user's [My Tasks](https://asana.com/guide/help/fundamentals/my-tasks) + list. + - name: Webhooks + description: >- + Webhooks allow you to subscribe to notifications about events that occur on + Asana resources (e.g., tasks, projects, stories, etc.). + + + For a more detailed explanation of webhooks see the [overview of webhooks](/docs/webhooks-guide). + - name: Workspaces + description: >- + A *workspace* is the highest-level organizational unit in Asana. All + projects and tasks have an associated workspace. + + + An *organization* is a special kind of workspace that represents a + company. In an organization, you can group your projects into teams. + You can read more about how organizations work on the Asana Guide. To + tell if your workspace is an organization or not, check its + `is_organization` property. + + + Over time, we intend to migrate most workspaces into organizations and + to release more organization-specific functionality. We may eventually + deprecate using workspace-based APIs for organizations. Currently, and + until after some reasonable grace period following any further + announcements, you can still reference organizations in any + `workspace` parameter. + - name: Workspace memberships + description: >- + This object determines if a user is a member of a workspace. +components: + parameters: + fields: + name: opt_fields + in: query + description: >- + Defines fields to return. + + Some requests return *compact* representations of objects in order to + conserve resources and complete the request more efficiently. Other times + requests return more information than you may need. This option allows + you to list the exact set of fields that the API should be sure to + return for the objects. The field names should be provided as paths, + described below. + + The id of included objects will always be returned, regardless of the + field options. + example: + - followers + - assignee + required: false + schema: + type: array + items: + type: string + style: form + explode: false + pretty: + name: opt_pretty + in: query + description: >- + Provides “pretty” output. + + Provides the response in a “pretty” format. In the case of JSON this + means doing proper line breaking and indentation to make it readable. + This will take extra time and increase the response size so it is + advisable only to use this during debugging. + required: false + allowEmptyValue: true + schema: + type: boolean + style: form + example: true + limit: + name: limit + in: query + description: >- + Results per page. + + The number of objects to return per page. The value must be between 1 + and 100. + example: 50 + schema: + type: integer + minimum: 1 + maximum: 100 + offset: + name: offset + in: query + description: >- + 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.' + example: eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9 + schema: + type: string + archived_query_param: + name: archived + in: query + description: >- + Only return projects whose `archived` field takes on the value of + this parameter. + schema: + type: boolean + example: false + attachment_path_gid: + name: attachment_gid + in: path + description: >- + Globally unique identifier for the attachment. + required: true + schema: + type: string + example: '12345' + x-env-variable: attachment + custom_field_path_gid: + name: custom_field_gid + in: path + description: >- + Globally unique identifier for the custom field. + required: true + schema: + type: string + example: '12345' + x-env-variable: custom_field + custom_id: + name: custom_id + in: path + description: >- + Generated custom ID for a task. + required: true + schema: + type: string + example: EX-1 + goal_path_gid: + name: goal_gid + in: path + description: >- + Globally unique identifier for the goal. + required: true + schema: + type: string + example: '12345' + x-env-variable: goal + goal_relationship_path_gid: + name: goal_relationship_gid + in: path + description: >- + Globally unique identifier for the goal relationship. + required: true + schema: + type: string + example: '12345' + x-env-variable: goal_relationship + job_path_gid: + name: job_gid + in: path + description: >- + Globally unique identifier for the job. + required: true + schema: + type: string + example: '12345' + x-env-variable: job + membership_path_gid: + name: membership_gid + in: path + description: >- + Globally unique identifier for the membership. + required: true + schema: + type: string + example: '12345' + x-env-variable: membership + organization_export_path_gid: + name: organization_export_gid + in: path + description: >- + Globally unique identifier for the organization export. + required: true + schema: + type: string + example: '12345' + x-env-variable: organization_export + project_brief_path_gid: + name: project_brief_gid + in: path + description: >- + Globally unique identifier for the project brief. + required: true + schema: + type: string + example: '12345' + x-env-variable: project_brief + project_path_gid: + name: project_gid + in: path + description: >- + Globally unique identifier for the project. + required: true + schema: + type: string + example: '1331' + x-env-variable: project + project_template_path_gid: + name: project_template_gid + in: path + description: >- + Globally unique identifier for the project template. + required: true + schema: + type: string + example: '1331' + x-env-variable: project_template + project_membership_path_gid: + name: project_membership_gid + in: path + required: true + schema: + type: string + example: '1331' + x-env-variable: project_membership + project_status_path_gid: + name: project_status_gid + in: path + required: true + description: The project status update to get. + schema: + type: string + example: '321654' + x-env-variable: project_status + status_update_path_gid: + name: status_update_gid + in: path + required: true + description: The status update to get. + schema: + type: string + example: '321654' + x-env-variable: status + portfolio_path_gid: + name: portfolio_gid + in: path + description: >- + Globally unique identifier for the portfolio. + required: true + schema: + type: string + example: '12345' + x-env-variable: portfolio + portfolio_membership_path_gid: + name: portfolio_membership_gid + in: path + required: true + schema: + type: string + example: '1331' + x-env-variable: portfolio_membership + portfolio_query_param: + name: portfolio + in: query + description: The portfolio to filter results on. + schema: + type: string + example: '12345' + x-env-variable: portfolio + rule_trigger_path_gid: + name: rule_trigger_gid + in: path + required: true + description: The ID of the incoming web request trigger. This value is a path + parameter that is automatically generated for the API endpoint. + schema: + type: string + example: '12345' + x-env-variable: rule + section_path_gid: + name: section_gid + in: path + required: true + description: The globally unique identifier for the section. + schema: + type: string + example: '321654' + x-env-variable: section + story_path_gid: + name: story_gid + in: path + description: Globally unique identifier for the story. + required: true + schema: + type: string + example: '35678' + x-env-variable: story + tag_path_gid: + name: tag_gid + in: path + description: Globally unique identifier for the tag. + required: true + schema: + type: string + example: '11235' + x-env-variable: tag + task_path_gid: + name: task_gid + in: path + required: true + description: The task to operate on. + schema: + type: string + example: '321654' + x-env-variable: task + task_template_path_gid: + name: task_template_gid + in: path + description: >- + Globally unique identifier for the task template. + required: true + schema: + type: string + example: '1331' + x-env-variable: task_template + team_path_gid: + name: team_gid + in: path + description: Globally unique identifier for the team. + required: true + schema: + type: string + example: '159874' + x-env-variable: team + team_query_param: + name: team + in: query + description: The team to filter projects on. + schema: + type: string + example: '14916' + x-env-variable: team + team_membership_path_gid: + name: team_membership_gid + in: path + required: true + schema: + type: string + example: '724362' + x-env-variable: team_membership + time_period_path_gid: + name: time_period_gid + in: path + description: >- + Globally unique identifier for the time period. + required: true + schema: + type: string + example: '917392' + x-env-variable: time_period + time_tracking_entry_path_gid: + name: time_tracking_entry_gid + in: path + description: >- + Globally unique identifier for the time tracking entry. + required: true + schema: + type: string + example: '917392' + x-env-variable: time_tracking_entry + user_query_param: + name: user + in: query + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + schema: + type: string + x-env-variable: user + example: me + user_path_gid: + name: user_gid + in: path + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + required: true + schema: + type: string + x-env-variable: user + example: me + user_task_list_path_gid: + name: user_task_list_gid + in: path + description: >- + Globally unique identifier for the user task list. + required: true + schema: + type: string + example: '12345' + x-env-variable: user_task_list + webhook_path_gid: + name: webhook_gid + in: path + description: >- + Globally unique identifier for the webhook. + required: true + schema: + type: string + example: '12345' + x-env-variable: webhook + workspace_path_gid: + name: workspace_gid + in: path + description: >- + Globally unique identifier for the workspace or organization. + required: true + schema: + type: string + example: '12345' + x-env-variable: workspace + workspace_query_param: + name: workspace + in: query + description: The workspace to filter results on. + schema: + type: string + example: '12345' + x-env-variable: workspace + workspace_membership_path_gid: + name: workspace_membership_gid + in: path + required: true + schema: + type: string + example: '12345' + x-env-variable: workspace_membership + audit_log_start_at: + name: start_at + in: query + description: Filter to events created after this time (inclusive). + required: false + schema: + type: string + format: date-time + audit_log_end_at: + name: end_at + in: query + description: Filter to events created before this time (exclusive). + required: false + schema: + type: string + format: date-time + audit_log_event_type: + name: event_type + in: query + description: >- + Filter to events of this type. + + Refer to the [supported audit log events](/docs/audit-log-events#supported-audit-log-events) + for a full list of values. + required: false + schema: + type: string + audit_log_actor_type: + name: actor_type + in: query + description: >- + Filter to events with an actor of this type. + + This only needs to be included if querying for actor types without an ID. + If `actor_gid` is included, this should be excluded. + required: false + schema: + type: string + enum: + - user + - asana + - asana_support + - anonymous + - external_administrator + audit_log_actor_gid: + name: actor_gid + in: query + description: >- + Filter to events triggered by the actor with this ID. + required: false + schema: + type: string + audit_log_resource_gid: + name: resource_gid + in: query + description: Filter to events with this resource ID. + required: false + schema: + type: string + completed_since: + name: completed_since + in: query + required: false + description: > + Only return tasks that are either incomplete or that have + been completed since this time. Accepts a date-time string or + the keyword *now*. + schema: + type: string + example: '2012-02-22T02:06:58.158Z' + member: + name: member + in: query + required: false + description: > + Member object gid can be user or team. + schema: + type: string + example: '123' + message_path_gid: + name: message_gid + in: path + required: true + description: The message to get. + schema: + type: string + example: '321654' + x-env-variable: message + allocation_path_gid: + name: allocation_gid + in: path + description: >- + Globally unique identifier for the allocation. + required: true + schema: + type: string + example: '77688' + x-env-variable: allocation + responses: + GenericErrorResponse: + description: >- + Sadly, sometimes requests to the API are not successful. Failures can + occur for a wide range of reasons. In all cases, the API should return + an HTTP Status Code that indicates the nature of the failure, + with a response body in JSON format containing additional information. + In the event of a server error the response body will contain an error + phrase. These phrases are automatically generated using the + [node-asana-phrase + library](https://github.com/Asana/node-asana-phrase) and can be used by + Asana support to quickly look up the incident that caused the server + error. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + BadRequest: + description: >- + This usually occurs because of a missing or malformed parameter. Check + the documentation and the syntax of your request and try again. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + Unauthorized: + description: >- + A valid authentication token was not provided with the request, so the + API could not associate a user with the request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + PaymentRequired: + description: >- + The request was valid, but the queried object or object mutation + specified in the request is above your current premium level. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + Forbidden: + description: >- + The authentication and request syntax was valid but the server is + refusing to complete the request. This can happen if you try to read or + write to objects or properties that the user does not have access to. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + NotFound: + description: >- + Either the request method and path supplied do not specify a known + action in the API, or the object specified by the request does not + exist. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + TooManyRequests: + description: >- + You have exceeded one of the enforced rate limits in the API. See the + [documentation on rate + limiting](https://developers.asana.com/docs/#rate-limits) + for more information. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + InternalServerError: + description: >- + There was a problem on Asana’s end. + In the event of a server error the response body should contain an error + phrase. These phrases can be used by Asana support to quickly look up the + incident that caused the server error. + Some errors are due to server load, and will not supply an error phrase. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + BadGateway: + description: >- + There is an issue between the load balancers and Asana's API. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + ServiceUnavailable: + description: >- + Either the upstream service is unavailable to the API, or the API has been + intentionally shut off. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + GatewayTimeout: + description: >- + This request took too long to complete. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + schemas: + AllocationResponse: + allOf: + - $ref: '#/components/schemas/AllocationCompact' + - type: object + properties: + created_by: + $ref: '#/components/schemas/UserCompact' + type: object + description: >- + The user who created the allocation. + resource_subtype: + description: The subtype of the allocation. + type: string + example: project_allocation + AllocationRequest: + allOf: + - $ref: '#/components/schemas/AllocationBase' + - type: object + properties: + assignee: + type: string + description: >- + Globally unique identifier for the user who is assigned to the allocation. + parent: + type: string + description: >- + Globally unique identifier for the project the allocation is on. + effort: + $ref: '#/components/schemas/EffortCompact' + type: object + description: >- + The amount of time associated with the allocation, represented as + a percentage or number of hours + nullable: true + AllocationBase: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + start_date: + type: string + format: date + description: >- + The localized day on which the allocation starts. + example: '2024-02-28' + end_date: + type: string + format: date + description: >- + The localized day on which the allocation ends. + example: '2024-02-28' + AllocationCompact: + allOf: + - $ref: '#/components/schemas/AllocationBase' + - type: object + x-docs-overrides: + properties.resource_type.example: allocation + properties: + assignee: + $ref: '#/components/schemas/UserCompact' + type: object + description: >- + The user who is assigned to the allocation. + parent: + $ref: '#/components/schemas/ProjectCompact' + type: object + description: >- + The project the allocation is on. + effort: + $ref: '#/components/schemas/EffortCompact' + type: object + description: >- + The amount of time associated with the allocation, represented as + a percentage or number of hours + nullable: true + AddCustomFieldSettingRequest: + type: object + required: + - custom_field + properties: + custom_field: + description: The custom field to associate with this container. + type: string + example: '14916' + is_important: + description: >- + Whether this field should be considered important to this container + (for instance, to display in the list view of items in the container). + type: boolean + example: true + insert_before: + description: >- + A gid of a Custom Field Setting on this container, before which the new + Custom Field Setting will be added. `insert_before` and `insert_after` + parameters cannot both be specified. + type: string + example: '1331' + insert_after: + description: >- + A gid of a Custom Field Setting on this container, after which the new + Custom Field Setting will be added. `insert_before` and `insert_after` + parameters cannot both be specified. + type: string + example: '1331' + AddFollowersRequest: + type: object + required: + - followers + properties: + followers: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: string + example: 521621,621373 + AddMembersRequest: + type: object + required: + - members + properties: + members: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: string + example: 521621,621373 + AsanaNamedResource: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + name: + description: The name of the object. + type: string + example: Bug Task + AsanaResource: + description: >- + A generic Asana Resource, containing a globally unique identifier. + type: object + properties: + gid: + description: >- + Globally unique identifier of the resource, as a string. + type: string + readOnly: true + example: '12345' + x-insert-after: false + resource_type: + description: The base type of this resource. + type: string + readOnly: true + example: task + x-insert-after: gid + AttachmentBase: + $ref: '#/components/schemas/AttachmentCompact' + AttachmentCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + An *attachment* object represents any file attached to a task in + Asana, whether it’s an uploaded file or one associated via a + third-party service such as Dropbox or Google Drive. + x-docs-overrides: + properties.resource_type.example: attachment + properties: + name: + description: The name of the file. + type: string + readOnly: true + example: Screenshot.png + resource_subtype: + description: >- + The service hosting the attachment. Valid values are `asana`, + `dropbox`, `gdrive`, `onedrive`, `box`, `vimeo`, and `external`. + type: string + example: dropbox + AttachmentRequest: + type: object + required: + - parent + properties: + resource_subtype: + description: > + The type of the attachment. Must be one of the given values. + If not specified, a file attachment of type `asana` + will be assumed. Note that if the value of `resource_subtype` is `external`, + a + `parent`, `name`, and `url` must also be provided. + type: string + example: external + enum: + - asana + - dropbox + - gdrive + - onedrive + - box + - vimeo + - external + file: + description: > + Required for `asana` attachments. + type: string + format: binary + parent: + description: > + Required identifier of the parent task, project, or project_brief, as + a string. + type: string + url: + description: > + The URL of the external resource being attached. Required for + attachments of type `external`. + type: string + name: + description: > + The name of the external resource being attached. Required for + attachments of type `external`. + type: string + connect_to_app: + description: > + *Optional*. Only relevant for external attachments with a parent task. + A boolean indicating whether the current app should be connected with + the attachment for the purposes of showing an app components widget. + Requires the app to have been added to a project the parent task is in. + type: boolean + AttachmentResponse: + allOf: + - $ref: '#/components/schemas/AttachmentBase' + - type: object + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + download_url: + description: >- + The URL containing the content of the attachment. + + *Note:* May be null if the attachment is hosted by + [Box](https://www.box.com/) and will be null if the attachment + is a Video Message hosted by [Vimeo](https://vimeo.com/). If + present, this URL may only be valid for two minutes from the + time of retrieval. You should avoid persisting this URL somewhere + and just refresh it on demand to ensure you do not keep stale URLs. + type: string + format: uri + readOnly: true + nullable: true + example: https://s3.amazonaws.com/assets/123/Screenshot.png + permanent_url: + description: > + type: string + format: uri + readOnly: true + nullable: true + example: https://s3.amazonaws.com/assets/123/Screenshot.png + host: + description: >- + The service hosting the attachment. Valid values are `asana`, + `dropbox`, `gdrive`, `box`, and `vimeo`. + type: string + readOnly: true + example: dropbox + parent: + allOf: + - $ref: '#/components/schemas/TaskCompact' + - type: object + nullable: true + description: The task this attachment is attached to. + readOnly: true + properties: + resource_subtype: + description: >- + The resource subtype of the parent resource that the filter + applies to. + type: string + enum: + - default_task + - milestone + - section + - approval + example: default_task + nullable: true + size: + description: >- + The size of the attachment in bytes. Only present when the `resource_subtype` + is `asana`. + type: integer + readOnly: true + example: 12345 + view_url: + description: >- + The URL where the attachment can be viewed, which may be + friendlier to users in a browser than just directing them to a raw + file. May be null if no view URL exists for the service. + type: string + format: uri + readOnly: true + nullable: true + example: https://www.dropbox.com/s/123/Screenshot.png + connected_to_app: + description: >- + Whether the attachment is connected to the app making the request + for the purposes of + showing an app components widget. Only present when the `resource_subtype` + is + `external` or `gdrive`. + type: boolean + readOnly: true + AuditLogEvent: + description: >- + An object representing a single event within an Asana domain. + + + Every audit log event is comprised of an `event_type`, `actor`, `resource`, + and `context`. + Some events will include additional metadata about the event under `details`. + See our [currently supported list of events](/docs/audit-log-events#supported-audit-log-events) + for more details. + type: object + properties: + gid: + description: >- + Globally unique identifier of the `AuditLogEvent`, as a string. + type: string + example: '12345' + x-insert-after: false + created_at: + description: The time the event was created. + type: string + format: date-time + example: '2021-01-01T00:00:00.000Z' + event_type: + description: The type of the event. + type: string + example: task_deleted + event_category: + description: The category that this `event_type` belongs to. + type: string + example: deletion + actor: + $ref: '#/components/schemas/AuditLogEventActor' + resource: + $ref: '#/components/schemas/AuditLogEventResource' + details: + $ref: '#/components/schemas/AuditLogEventDetails' + context: + $ref: '#/components/schemas/AuditLogEventContext' + AuditLogEventActor: + description: >- + The entity that triggered the event. Will typically be a user. + type: object + properties: + actor_type: + description: >- + The type of actor. + + Can be one of `user`, `asana`, `asana_support`, `anonymous`, or `external_administrator`. + type: string + enum: + - user + - asana + - asana_support + - anonymous + - external_administrator + example: user + gid: + description: >- + Globally unique identifier of the actor, if it is a user. + type: string + example: '1111' + name: + description: The name of the actor, if it is a user. + type: string + example: Greg Sanchez + email: + description: The email of the actor, if it is a user. + type: string + example: gregsanchez@example.com + AuditLogEventContext: + description: The context from which this event originated. + type: object + properties: + context_type: + description: >- + The type of context. + + Can be one of `web`, `desktop`, `mobile`, `asana_support`, `asana`, `email`, + or `api`. + type: string + enum: + - web + - desktop + - mobile + - asana_support + - asana + - email + - api + example: web + api_authentication_method: + description: >- + The authentication method used in the context of an API request. + + Only present if the `context_type` is `api`. Can be one of `cookie`, `oauth`, + `personal_access_token`, or `service_account`. + type: string + enum: + - cookie + - oauth + - personal_access_token + - service_account + client_ip_address: + description: The IP address of the client that initiated the event, if applicable. + type: string + example: 1.1.1.1 + user_agent: + description: The user agent of the client that initiated the event, if applicable. + type: string + example: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like + Gecko) Chrome/51.0.2704.103 Safari/537.36 + oauth_app_name: + description: >- + The name of the OAuth App that initiated the event. + + Only present if the `api_authentication_method` is `oauth`. + type: string + AuditLogEventDetails: + description: Event specific details. The schema will vary depending on the `event_type`. + type: object + AuditLogEventResource: + description: The primary object that was affected by this event. + type: object + properties: + resource_type: + description: The type of resource. + type: string + example: task + resource_subtype: + description: The subtype of resource. Most resources will not have a subtype. + type: string + example: milestone + gid: + description: Globally unique identifier of the resource. + type: string + example: '1111' + name: + description: The name of the resource. + type: string + nullable: true + example: Example Task + email: + description: The email of the resource, if applicable. + type: string + BatchRequest: + description: A request object for use in a batch request. + type: object + properties: + actions: + type: array + items: + $ref: '#/components/schemas/BatchRequestAction' + BatchRequestAction: + description: An action object for use in a batch request. + type: object + properties: + relative_path: + description: >- + The path of the desired endpoint relative to the API’s base URL. Query + parameters are not accepted here; put them in `data` instead. + type: string + example: /tasks/123 + method: + description: The HTTP method you wish to emulate for the action. + type: string + enum: + - get + - post + - put + - delete + - patch + - head + example: get + data: + description: >- + For `GET` requests, this should be a map of query parameters you would + have normally passed in the URL. Options and pagination are not + accepted here; put them in `options` instead. For `POST`, `PATCH`, and + `PUT` methods, this should be the content you would have normally put + in the data field of the body. + type: object + example: + assignee: me + workspace: '1337' + options: + description: >- + Pagination (`limit` and `offset`) and output options (`fields` or + `expand`) for the action. “Pretty” JSON output is not an available + option on individual actions; if you want pretty output, specify that + option on the parent request. + type: object + properties: + limit: + description: Pagination limit for the request. + type: integer + example: 50 + offset: + description: Pagination offset for the request. + type: integer + example: eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9 + fields: + description: The fields to retrieve in the request. + type: array + items: + type: string + example: + - name + - gid + - notes + - completed + example: + limit: 3 + fields: + - name + - notes + - completed + required: + - relative_path + - method + BatchResponse: + description: A response object returned from a batch request. + type: object + properties: + status_code: + description: The HTTP status code that the invoked endpoint returned. + type: integer + example: 200 + headers: + description: >- + A map of HTTP headers specific to this result. This is primarily used + for returning a `Location` header to accompany a `201 Created` + result. The parent HTTP response will contain all common headers. + type: object + example: + location: /tasks/1234 + body: + description: The JSON body that the invoked endpoint returned. + type: object + example: + data: + gid: '1967' + completed: false + name: Hello, world! + notes: How are you today? + CustomFieldBase: + allOf: + - $ref: '#/components/schemas/CustomFieldCompact' + - type: object + properties: + description: + description: >- + [Opt + In](/docs/inputoutput-options). + The description of the custom field. + type: string + example: Development team priority + enum_options: + description: >- + *Conditional*. Only relevant for custom fields of type `enum`. + This array specifies the possible values which an `enum` custom + field can adopt. To modify the enum options, refer to [working + with enum + options](/reference/createenumoptionforcustomfield). + type: array + items: + $ref: '#/components/schemas/EnumOption' + precision: + description: >- + Only relevant for custom fields of type ‘Number’. This field + dictates the number of places after the decimal to round to, i.e. + 0 is integer values, 1 rounds to the nearest tenth, and so on. + Must be between 0 and 6, inclusive. + + For percentage format, this may be unintuitive, as a value of 0.25 + has a precision of 0, while a value of 0.251 has a precision of 1. + This is due to 0.25 being displayed as 25%. + + The identifier format will always have a precision of 0. + type: integer + example: 2 + format: + description: >- + The format of this custom field. + type: string + enum: + - currency + - identifier + - percentage + - custom + - duration + - none + example: custom + currency_code: + description: >- + ISO 4217 currency code to format this custom field. This will be + null if the `format` is not `currency`. + type: string + nullable: true + example: EUR + custom_label: + description: >- + This is the string that appears next to the custom field value. + This will be null if the `format` is not `custom`. + type: string + nullable: true + example: gold pieces + custom_label_position: + description: >- + Only relevant for custom fields with `custom` format. This depicts + where to place the custom label. This will be null if the `format` + is not `custom`. + type: string + nullable: true + enum: + - prefix + - suffix + - null + example: suffix + is_global_to_workspace: + description: >- + This flag describes whether this custom field is available to + every container in the workspace. Before project-specific custom + fields, this field was always true. + type: boolean + example: true + readOnly: true + has_notifications_enabled: + description: >- + *Conditional*. This flag describes whether a follower of a task + with this field should receive inbox notifications from changes + to this field. + type: boolean + example: true + asana_created_field: + description: >- + *Conditional*. A unique identifier to associate this field with the + template source of truth. + type: string + readOnly: true + nullable: true + enum: + - a_v_requirements + - account_name + - actionable + - align_shipping_link + - align_status + - allotted_time + - appointment + - approval_stage + - approved + - article_series + - board_committee + - browser + - campaign_audience + - campaign_project_status + - campaign_regions + - channel_primary + - client_topic_type + - complete_by + - contact + - contact_email_address + - content_channels + - content_channels_needed + - content_stage + - content_type + - contract + - contract_status + - cost + - creation_stage + - creative_channel + - creative_needed + - creative_needs + - data_sensitivity + - deal_size + - delivery_appt + - delivery_appt_date + - department + - department_responsible + - design_request_needed + - design_request_type + - discussion_category + - do_this_task + - editorial_content_status + - editorial_content_tag + - editorial_content_type + - effort + - effort_level + - est_completion_date + - estimated_time + - estimated_value + - expected_cost + - external_steps_needed + - favorite_idea + - feedback_type + - financial + - funding_amount + - grant_application_process + - hiring_candidate_status + - idea_status + - ids_link + - ids_patient_link + - implementation_stage + - insurance + - interview_area + - interview_question_score + - itero_scan_link + - job_s_applied_to + - lab + - launch_status + - lead_status + - localization_language + - localization_market_team + - localization_status + - meeting_minutes + - meeting_needed + - minutes + - mrr + - must_localize + - name_of_foundation + - need_to_follow_up + - next_appointment + - next_steps_sales + - num_people + - number_of_user_reports + - office_location + - onboarding_activity + - owner + - participants_needed + - patient_date_of_birth + - patient_email + - patient_phone + - patient_status + - phone_number + - planning_category + - point_of_contact + - position + - post_format + - prescription + - priority + - priority_level + - product + - product_stage + - progress + - project_size + - project_status + - proposed_budget + - publish_status + - reason_for_scan + - referral + - request_type + - research_status + - responsible_department + - responsible_team + - risk_assessment_status + - room_name + - sales_counterpart + - sentiment + - shipping_link + - social_channels + - stage + - status + - status_design + - status_of_initiative + - system_setup + - task_progress + - team + - team_marketing + - team_responsible + - time_it_takes_to_complete_tasks + - timeframe + - treatment_type + - type_work_requests_it + - use_agency + - user_name + - vendor_category + - vendor_type + - word_count + - null + example: priority + CustomFieldCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + Custom Fields store the metadata that is used in order to + add user-specified information to tasks in Asana. Be sure + to reference the [custom fields](/reference/custom-fields) + developer documentation for more information about how custom fields + relate to various resources in Asana. + + + Users in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), + which will make them read-only when accessed by other users. + Attempting to edit a locked custom field will return HTTP error code + `403 Forbidden`. + x-docs-overrides: + properties.resource_type.example: custom_field + properties: + name: + description: The name of the custom field. + type: string + example: Status + resource_subtype: + description: > + The type of the custom field. Must be one of the given values. + type: string + readOnly: true + example: text + enum: + - text + - enum + - multi_enum + - number + - date + - people + type: + description: > + *Deprecated: new integrations should prefer the resource_subtype + field.* The type of the custom field. Must be one of the given + values. + type: string + readOnly: true + enum: + - text + - enum + - multi_enum + - number + - date + - people + enum_options: + description: >- + *Conditional*. Only relevant for custom fields of type `enum`. + This array specifies the possible values which an `enum` custom + field can adopt. To modify the enum options, refer to [working + with enum + options](/reference/createenumoptionforcustomfield). + type: array + items: + $ref: '#/components/schemas/EnumOption' + enabled: + description: >- + *Conditional*. Determines if the custom field is enabled or not. + type: boolean + readOnly: true + example: true + representation_type: + description: >- + This field tells the type of the custom field. + type: string + example: number + readOnly: true + enum: + - text + - enum + - multi_enum + - number + - date + - people + - formula + - custom_id + id_prefix: + description: >- + This field is the unique custom ID string for the custom field. + type: string + nullable: true + example: ID + is_formula_field: + description: >- + *Conditional*. This flag describes whether a custom field is a formula + custom field. + type: boolean + example: false + date_value: + description: >- + *Conditional*. Only relevant for custom fields of type `date`. + This object reflects the chosen date (and optionally, time) value + of a `date` custom field. If no date is selected, the value of + `date_value` will be `null`. + type: object + nullable: true + properties: + date: + type: string + description: >- + A string representing the date in YYYY-MM-DD format. + example: '2024-08-23' + date_time: + type: string + description: >- + A string representing the date in ISO 8601 format. If no time + value + is selected, the value of `date-time` will be `null`. + example: '2024-08-23T22:00:00.000Z' + enum_value: + allOf: + - $ref: '#/components/schemas/EnumOption' + - type: object + nullable: true + description: >- + *Conditional*. Only relevant for custom fields of type + `enum`. This object is the chosen value of an `enum` custom + field. + multi_enum_values: + description: >- + *Conditional*. Only relevant for custom fields of type + `multi_enum`. This object is the chosen values of a `multi_enum` custom + field. + type: array + items: + $ref: '#/components/schemas/EnumOption' + number_value: + description: >- + *Conditional*. This number is the value of a `number` custom field. + type: number + nullable: true + example: 5.2 + text_value: + description: >- + *Conditional*. This string is the value of a `text` custom field. + type: string + nullable: true + example: Some Value + display_value: + description: >- + A string representation for the value of the custom field. + Integrations that don't require the underlying type should + use this field to read values. Using this field will future-proof + an app against new custom field types. + type: string + readOnly: true + example: blue + nullable: true + CustomFieldRequest: + allOf: + - $ref: '#/components/schemas/CustomFieldBase' + - type: object + required: + - workspace + properties: + workspace: + type: string + description: >- + *Create-Only* The workspace to create a custom field in. + example: '1331' + owned_by_app: + type: boolean + description: >- + *Allow-listed*. Instructs the API that this Custom Field is + app-owned. This parameter is allow-listed to specific apps at this + point in time. For apps that are not allow-listed, providing this + parameter will result in a `403 Forbidden`. + people_value: + description: >- + *Conditional*. Only relevant for custom fields of type `people`. + This array of user GIDs reflects the users to be written to a `people` + custom field. Note that *write* operations will replace existing users + (if any) in the custom field with the users specified in this array. + type: array + items: + type: string + description: >- + The GID of a user. + example: + - '12345' + CustomFieldResponse: + allOf: + - $ref: '#/components/schemas/CustomFieldBase' + - type: object + properties: + representation_type: + description: >- + This field tells the type of the custom field. + type: string + example: number + readOnly: true + enum: + - text + - enum + - multi_enum + - number + - date + - people + - formula + - custom_id + id_prefix: + description: >- + This field is the unique custom ID string for the custom field. + type: string + nullable: true + example: ID + is_formula_field: + description: >- + *Conditional*. This flag describes whether a custom field is a formula + custom field. + type: boolean + example: false + is_value_read_only: + description: >- + *Conditional*. This flag describes whether a custom field is read + only. + type: boolean + example: false + created_by: + allOf: + - $ref: '#/components/schemas/UserCompact' + - nullable: true + people_value: + description: >- + *Conditional*. Only relevant for custom fields of type `people`. + This array of [compact user](/reference/users) objects reflects the + values + of a `people` custom field. + type: array + items: + $ref: '#/components/schemas/UserCompact' + CustomFieldSettingBase: + $ref: '#/components/schemas/CustomFieldSettingCompact' + CustomFieldSettingCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + Custom Fields Settings objects represent the many-to-many join of the + Custom Field and Project as well as stores information that is + relevant to that particular pairing. + x-docs-overrides: + properties.resource_type.example: custom_field_setting + CustomFieldSettingResponse: + allOf: + - $ref: '#/components/schemas/CustomFieldSettingBase' + - type: object + properties: + project: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + description: >- + *Deprecated: new integrations should prefer the `parent` + field.* The id of the project that this custom field settings + refers to. + readOnly: true + is_important: + description: >- + `is_important` is used in the Asana web application to determine + if this custom field is displayed in the list/grid view of a project + or portfolio. + type: boolean + readOnly: true + example: false + parent: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + description: >- + The parent to which the custom field is applied. This can be a + project or portfolio and indicates that the tasks or projects + that the parent contains may be given custom field values for + this custom field. + readOnly: true + custom_field: + allOf: + - $ref: '#/components/schemas/CustomFieldResponse' + - type: object + description: >- + The custom field that is applied to the `parent`. + readOnly: true + EffortCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + x-docs-overrides: + properties.resource_type.example: effort + properties: + type: + type: string + description: >- + The units used for tracking effort on an allocation, either "hours" + or "percent". + enum: + - hours + - percent + value: + type: number + description: >- + The numeric effort value on the allocation. + example: 50 + EmptyResponse: + type: object + description: >- + An empty object. Some endpoints do not return an object on success. The + success is conveyed through a 2-- status code and returning an empty + object. + EnumOption: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + Enum options are the possible values which an enum custom field can + adopt. An enum custom field must contain at least 1 enum option but no + more than 500. + + + You can add enum options to a custom field by using the `POST + /custom_fields/custom_field_gid/enum_options` endpoint. + + + **It is not possible to remove or delete an enum option**. Instead, + enum options can be disabled by updating the `enabled` field to false + with the `PUT /enum_options/enum_option_gid` endpoint. Other + attributes can be updated similarly. + + + On creation of an enum option, `enabled` is always set to `true`, + meaning the enum option is a selectable value for the custom field. + Setting `enabled=false` is equivalent to “trashing” the enum option in + the Asana web app within the “Edit Fields” dialog. The enum option + will no longer be selectable but, if the enum option value was + previously set within a task, the task will retain the value. + + + Enum options are an ordered list and by default new enum options are + inserted at the end. Ordering in relation to existing enum options can + be specified on creation by using `insert_before` or `insert_after` to + reference an existing enum option. Only one of `insert_before` and + `insert_after` can be provided when creating a new enum option. + + + An enum options list can be reordered with the `POST + /custom_fields/custom_field_gid/enum_options/insert` endpoint. + x-docs-overrides: + properties.resource_type.example: enum_option + properties: + name: + description: The name of the enum option. + type: string + example: Low + enabled: + description: >- + Whether or not the enum option is a selectable value for the + custom field. + type: boolean + example: true + color: + description: >- + The color of the enum option. Defaults to ‘none’. + type: string + example: blue + EnumOptionBase: + $ref: '#/components/schemas/EnumOption' + EnumOptionInsertRequest: + type: object + required: + - enum_option + properties: + enum_option: + type: string + description: The gid of the enum option to relocate. + example: '97285' + before_enum_option: + type: string + description: >- + An existing enum option within this custom field + before which the new enum option should be + inserted. Cannot be provided together with + after_enum_option. + example: '12345' + after_enum_option: + type: string + description: >- + An existing enum option within this custom field + after which the new enum option should be inserted. + Cannot be provided together with + before_enum_option. + example: '12345' + EnumOptionRequest: + allOf: + - $ref: '#/components/schemas/EnumOptionBase' + - type: object + properties: + insert_before: + type: string + description: >- + An existing enum option within this custom field + before which the new enum option should be + inserted. Cannot be provided together with + after_enum_option. + example: '12345' + insert_after: + type: string + description: >- + An existing enum option within this custom field + after which the new enum option should be inserted. + Cannot be provided together with + before_enum_option. + example: '12345' + Error: + type: object + properties: + message: + type: string + readOnly: true + description: >- + Message providing more detail about the error that occurred, if + available. + example: 'project: Missing input' + help: + type: string + readOnly: true + description: >- + Additional information directing developers to resources on how + to address and fix the problem, if available. + example: >- + For more information on API status codes and how to handle them, + read the docs on errors: + https://asana.github.io/developer-docs/#errors' + phrase: + type: string + readOnly: true + description: >- + *500 errors only*. A unique error phrase which can be used + when contacting developer support to help identify the exact + occurrence of the problem in Asana’s logs. + example: 6 sad squid snuggle softly + ErrorResponse: + description: |- + Sadly, sometimes requests to the API are not successful. Failures can + occur for a wide range of reasons. In all cases, the API should return + an HTTP Status Code that indicates the nature of the failure, + with a response body in JSON format containing additional information. + + + In the event of a server error the response body will contain an error + phrase. These phrases are automatically generated using the + [node-asana-phrase + library](https://github.com/Asana/node-asana-phrase) and can be used by + Asana support to quickly look up the incident that caused the server + error. + type: object + properties: + errors: + type: array + items: + $ref: '#/components/schemas/Error' + EventResponse: + description: |- + An *event* is an object representing a change to a resource that was + observed by an event subscription or delivered asynchronously to + the target location of an active webhook. + + The event may be triggered by a different `user` than the + subscriber. For example, if user A subscribes to a task and user B + modified it, the event’s user will be user B. Note: Some events + are generated by the system, and will have `null` as the user. API + consumers should make sure to handle this case. + + The `resource` that triggered the event may be different from the one + that the events were requested for or the webhook is subscribed to. For + example, a subscription to a project will contain events for tasks + contained within the project. + + **Note:** pay close attention to the relationship between the fields + `Event.action` and `Event.change.action`. + `Event.action` represents the action taken on the resource + itself, and `Event.change.action` represents how the information + within the resource's fields have been modified. + + For instance, consider these scenarios: + + + * When at task is added to a project, `Event.action` will be + `added`, `Event.parent` will be an object with the `id` and + `type` of the project, and there will be no `change` field. + + + * When an assignee is set on the task, `Event.parent` will be + `null`, `Event.action` will be `changed`, + `Event.change.action` will be `changed`, and `new_value` will + be an object with the user's `id` and `type`. + + + * When a collaborator is added to the task, `Event.parent` will + be `null`, `Event.action` will be `changed`, + `Event.change.action` will be `added`, and `added_value` will be + an object with the user's `id` and `type`. + type: object + properties: + user: + allOf: + - $ref: '#/components/schemas/UserCompact' + - description: >- + The user who triggered the event. + resource: + allOf: + - $ref: '#/components/schemas/AsanaNamedResource' + - description: >- + The resource which has triggered the event by being modified in + some way. + type: + description: >- + *Deprecated: Refer to the resource_type of the resource.* + The type of the resource that generated the event. + type: string + readOnly: true + example: task + action: + description: >- + The type of action taken on the **resource** that triggered the + event. This can be one of `changed`, `added`, `removed`, `deleted`, + or `undeleted` depending on the nature of the event. + type: string + readOnly: true + example: changed + parent: + allOf: + - $ref: '#/components/schemas/AsanaNamedResource' + - description: >- + For added/removed events, the parent object that resource was + added to or removed from. The parent will be `null` for other + event types. + created_at: + description: The timestamp when the event occurred. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + change: + type: object + description: >- + Information about the type of change that has occurred. This field + is only present when the value of the property `action`, describing + the action taken on the **resource**, is `changed`. + readOnly: true + properties: + field: + description: The name of the field that has changed in the resource. + type: string + readOnly: true + example: assignee + action: + description: >- + The type of action taken on the **field** which has been + changed. This can be one of `changed`, `added`, or `removed` + depending on the nature of the change. + type: string + readOnly: true + example: changed + new_value: + description: >- + *Conditional.* This property is only present when the + value of the event's `change.action` is `changed` _and_ the `new_value` + is an + Asana resource. This will be only the `gid` and `resource_type` + of the resource when the events come from webhooks; this will + be the compact representation (and can have fields expanded + with [opt_fields](/docs/inputoutput-options)) when using the + [get events](/reference/getevents) endpoint. + example: + gid: '12345' + resource_type: user + added_value: + description: >- + *Conditional.* This property is only present when the + value of the event's `change.action` is `added` _and_ the `added_value` + is an + Asana resource. This will be only the `gid` and `resource_type` + of the resource when the events come from webhooks; this will + be the compact representation (and can have fields expanded + with [opt_fields](/docs/inputoutput-options)) when using the + [get events](/reference/getevents) endpoint. + example: + gid: '12345' + resource_type: user + removed_value: + description: >- + *Conditional.* This property is only present when the + value of the event's `change.action` is `removed` _and_ the `removed_value` + is an + Asana resource. This will be only the `gid` and `resource_type` + of the resource when the events come from webhooks; this will + be the compact representation (and can have fields expanded + with [opt_fields](/docs/inputoutput-options)) when using the + [get events](/reference/getevents) endpoint. + example: + gid: '12345' + resource_type: user + GoalAddSubgoalRequest: + type: object + required: + - subgoal + properties: + subgoal: + description: >- + The goal gid to add as subgoal to a parent goal + type: string + example: '1331' + insert_before: + description: >- + An id of a subgoal of this parent goal. The new + subgoal will be added before the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. + type: string + example: '1331' + insert_after: + description: >- + An id of a subgoal of this parent goal. The new + subgoal will be added after the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. + type: string + example: '1331' + GoalAddSupportingWorkRequest: + type: object + required: + - supporting_work + properties: + supporting_work: + description: >- + The project/task/portfolio gid to add as supporting work for a goal + type: string + example: '1331' + GoalBase: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + x-docs-overrides: + properties.resource_type.example: goal + properties: + name: + type: string + description: The name of the goal. + example: Grow web traffic by 30% + html_notes: + type: string + description: >- + The notes of the goal with formatting as HTML. + example: Start building brand awareness. + notes: + type: string + description: >- + Free-form textual information associated with the + goal (i.e. its description). + example: Start building brand awareness. + due_on: + type: string + description: >- + The localized day on which this goal is due. This takes a + date with format `YYYY-MM-DD`. + example: '2019-09-15' + nullable: true + start_on: + type: string + description: >- + The day on which work for this goal begins, or null if the + goal has no start date. This takes a date with `YYYY-MM-DD` + format, and cannot be set unless there is an accompanying due date. + example: '2019-09-14' + nullable: true + is_workspace_level: + type: boolean + description: >- + *Conditional*. This property is only present when the `workspace` + provided is an organization. Whether the goal belongs to the `workspace` + (and is listed as part of the workspace’s goals) or not. If it isn’t + a workspace-level goal, it is a team-level goal, and is associated + with the goal’s team. + example: true + liked: + type: boolean + description: >- + True if the goal is liked by the authorized user, false if not. + example: false + GoalCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + x-docs-overrides: + properties.resource_type.example: goal + properties: + name: + type: string + description: The name of the goal. + example: Grow web traffic by 30% + owner: + allOf: + - $ref: '#/components/schemas/UserCompact' + - type: object + nullable: true + GoalMetricBase: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + resource_subtype: + description: >- + The subtype of this resource. Different subtypes retain many of the + same fields and behavior, but may render differently in Asana or + represent resources with different semantic meaning. + type: string + readOnly: true + example: number + enum: + - number + precision: + description: >- + *Conditional*. Only relevant for goal metrics of type ‘Number’. This + field + dictates the number of places after the decimal to round to, i.e. + 0 is integer values, 1 rounds to the nearest tenth, and so on. + Must be between 0 and 6, inclusive. + + For percentage format, this may be unintuitive, as a value of 0.25 + has a precision of 0, while a value of 0.251 has a precision of 1. + This is due to 0.25 being displayed as 25%. + type: integer + example: 2 + unit: + description: >- + A supported unit of measure for the goal metric, or none. + type: string + enum: + - none + - currency + - percentage + currency_code: + description: >- + ISO 4217 currency code to format this custom field. This will be + null if the `unit` is not `currency`. + type: string + nullable: true + example: EUR + initial_number_value: + description: >- + This number is the start value of a goal metric of + type number. + type: number + example: 5.2 + target_number_value: + description: >- + This number is the end value of a goal metric of + type number. This number cannot equal `initial_number_value`. + type: number + example: 10.2 + current_number_value: + description: >- + This number is the current value of a goal metric of + type number. + type: number + example: 8.12 + current_display_value: + description: >- + This string is the current value of a goal metric of + type string. + type: string + readOnly: true + example: '8.12' + progress_source: + description: >- + This field defines how the progress value of a goal metric is being + calculated. + A goal's progress can be provided manually by the user, + calculated automatically from contributing subgoals, projects, or + tasks, + or managed by an integration with an external data source, such as + Salesforce. + type: string + enum: + - manual + - subgoal_progress + - project_task_completion + - project_milestone_completion + - task_completion + - external + example: manual + GoalRemoveSupportingRelationshipRequest: + type: object + required: + - supporting_resource + properties: + supporting_resource: + description: >- + The gid of the supporting resource to remove from the parent goal. Must + be the gid of a goal, project, task, or portfolio. + type: string + example: '12345' + GoalAddSupportingRelationshipRequest: + type: object + required: + - supporting_resource + properties: + supporting_resource: + description: >- + The gid of the supporting resource to add to the parent goal. Must be + the gid of a goal, project, task, or portfolio. + type: string + example: '12345' + insert_before: + description: >- + An id of a subgoal of this parent goal. The new + subgoal will be added before the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. Currently only supported when adding a subgoal. + type: string + example: '1331' + insert_after: + description: >- + An id of a subgoal of this parent goal. The new + subgoal will be added after the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. Currently only supported when adding a subgoal. + type: string + example: '1331' + contribution_weight: + description: The weight that the supporting resource's progress will contribute + to the supported goal's progress. This can only be 0 or 1. + type: number + example: 1.0 + GoalMetricCurrentValueRequest: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + current_number_value: + description: >- + *Conditional*. This number is the current value of a goal metric of + type number. + type: number + example: 8.12 + GoalMetricRequest: + $ref: '#/components/schemas/GoalMetricBase' + GoalRemoveSubgoalRequest: + type: object + required: + - subgoal + properties: + subgoal: + description: >- + The goal gid to remove as subgoal from the parent goal + type: string + example: '1331' + GoalRequestBase: + allOf: + - $ref: '#/components/schemas/GoalBase' + - type: object + properties: + team: + type: string + description: >- + *Conditional*. This property is only present when the `workspace` + provided is an organization. + example: '12345' + nullable: true + workspace: + type: string + description: >- + The `gid` of a workspace. + example: '12345' + time_period: + type: string + description: >- + The `gid` of a time period. + example: '12345' + nullable: true + owner: + type: string + description: >- + The `gid` of a user. + example: '12345' + nullable: true + GoalRequest: + allOf: + - $ref: '#/components/schemas/GoalRequestBase' + - type: object + properties: + followers: + type: array + items: + type: string + description: >- + The `gid` of a user. + example: + - '12345' + GoalUpdateRequest: + allOf: + - $ref: '#/components/schemas/GoalRequestBase' + - type: object + properties: + status: + type: string + description: >- + The current status of this goal. When the goal is open, its status + can be `green`, `yellow`, and `red` to reflect "On Track", "At Risk", + and "Off Track", respectively. When the goal is closed, the value + can be `missed`, `achieved`, `partial`, or `dropped`. + + *Note* you can only write to this property if `metric` is set. + example: green + nullable: true + GoalResponse: + allOf: + - $ref: '#/components/schemas/GoalBase' + - type: object + properties: + likes: + description: >- + Array of likes for users who have liked this goal. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + num_likes: + description: >- + The number of users who have liked this goal. + type: integer + readOnly: true + example: 5 + team: + allOf: + - $ref: '#/components/schemas/TeamCompact' + - type: object + nullable: true + description: >- + *Conditional*. This property is only present when the `workspace` + provided is an organization. + workspace: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + followers: + type: array + items: + $ref: '#/components/schemas/UserCompact' + description: >- + Array of users who are members of this goal. + time_period: + allOf: + - $ref: '#/components/schemas/TimePeriodCompact' + - type: object + nullable: true + metric: + allOf: + - $ref: '#/components/schemas/GoalMetricBase' + - type: object + nullable: true + properties: + can_manage: + description: >- + *Conditional*. Only relevant for `progress_source` of type + `external`. + This boolean indicates whether the requester has the ability + to update the current value of this metric. + This returns `true` if the external metric was created by + the requester, `false` otherwise. + type: boolean + readOnly: true + example: true + owner: + allOf: + - $ref: '#/components/schemas/UserCompact' + - type: object + nullable: true + current_status_update: + allOf: + - $ref: '#/components/schemas/StatusUpdateCompact' + - description: The latest `status_update` posted to this goal. + nullable: true + status: + type: string + readOnly: true + description: >- + The current status of this goal. When the goal is open, its status + can be `green`, `yellow`, and `red` to reflect "On Track", "At Risk", + and "Off Track", respectively. When the goal is closed, the value + can be `missed`, `achieved`, `partial`, or `dropped`. + + *Note* you can only write to this property if `metric` is set. + example: green + nullable: true + GoalRelationshipBase: + allOf: + - $ref: '#/components/schemas/GoalRelationshipCompact' + - type: object + properties: + supported_goal: + allOf: + - $ref: '#/components/schemas/GoalCompact' + - type: object + readOnly: true + description: >- + The goal that the supporting resource supports. + GoalRelationshipCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *goal relationship* is an object representing the relationship between + a goal and another goal, a project, a task, or a portfolio. + x-docs-overrides: + properties.resource_type.example: goal_relationship + properties: + resource_subtype: + description: >- + The subtype of this resource. Different subtypes retain many of the + same fields and behavior, but may render differently in Asana or + represent resources with different semantic meaning. + type: string + readOnly: true + example: subgoal + enum: + - subgoal + - supporting_work + supporting_resource: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + readOnly: true + description: >- + The supporting resource that supports the goal. This can be either + a project, task, portfolio, or goal. + contribution_weight: + description: The weight that the supporting resource's progress contributes + to the supported goal's progress. This can only be 0 or 1. + type: number + example: 1 + GoalRelationshipRequest: + allOf: + - $ref: '#/components/schemas/GoalRelationshipBase' + - type: object + GoalRelationshipResponse: + allOf: + - $ref: '#/components/schemas/GoalRelationshipBase' + - type: object + JobBase: + $ref: '#/components/schemas/JobCompact' + JobCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *job* is an object representing a process that handles asynchronous + work. + x-docs-overrides: + properties.resource_type.example: job + properties: + resource_subtype: + description: >- + The subtype of this resource. Different subtypes retain many of the + same fields and behavior, but may render differently in Asana or + represent resources with different semantic meaning. + type: string + readOnly: true + example: duplicate_task + status: + description: >- + The current status of this job. The value is one of: `not_started`, + `in_progress`, `succeeded`, or `failed`. + type: string + enum: + - not_started + - in_progress + - succeeded + - failed + readOnly: true + example: in_progress + new_project: + $ref: '#/components/schemas/ProjectCompact' + new_task: + allOf: + - $ref: '#/components/schemas/TaskCompact' + - type: object + nullable: true + new_project_template: + $ref: '#/components/schemas/ProjectTemplateCompact' + JobResponse: + $ref: '#/components/schemas/JobBase' + Like: + type: object + description: >- + An object to represent a user's like. + properties: + gid: + description: >- + Globally unique identifier of the object, as a string. + type: string + readOnly: true + example: '12345' + user: + $ref: '#/components/schemas/UserCompact' + MemberCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: A *member* object represents either a team or user. + x-docs-overrides: + properties.resource_type.example: member + properties: + name: + type: string + description: The name of the member + example: Greg Sanchez + resource_type: + type: string + description: The type of the member (team or user) + example: user + MembershipCompact: + anyOf: + - $ref: '#/components/schemas/GoalMembershipCompact' + - $ref: '#/components/schemas/ProjectMembershipCompactResponse' + ModifyDependenciesRequest: + type: object + properties: + dependencies: + description: An array of task gids that a task depends on. + type: array + items: + type: string + example: + dependencies: + - '133713' + - '184253' + ModifyDependentsRequest: + description: A set of dependent tasks. + type: object + properties: + dependents: + description: An array of task gids that are dependents of the given task. + type: array + items: + type: string + example: + dependents: + - '133713' + - '184253' + NextPage: + type: object + nullable: true + description: >- + *Conditional*. This property is only present when a limit query parameter + is provided in the request. + When making a paginated request, the API will return a number of results as + specified by the limit parameter. If more results exist, then the response + will + contain a next_page attribute, which will include an offset, a relative path + attribute, and a full uri attribute. If there are no more pages available, + next_page will be null and no offset will be provided. Note that an offset + token will expire after some time, as data may have changed. + properties: + offset: + type: string + readOnly: true + description: Pagination offset for the request. + example: eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9 + path: + type: string + readOnly: true + description: A relative path containing the query parameters to fetch for + next_page + example: /tasks/12345/attachments?limit=2&offset=eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9 + uri: + type: string + format: uri + readOnly: true + description: A full uri containing the query parameters to fetch for next_page + example: + https://app.asana.com/api/1.0/tasks/12345/attachments?limit=2&offset=eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9 + OrganizationExportBase: + $ref: '#/components/schemas/OrganizationExportCompact' + OrganizationExportCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + An *organization_export* object represents a request to export the + complete data of an Organization in JSON format. + x-docs-overrides: + properties.resource_type.example: organization_export + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + download_url: + description: |- + Download this URL to retreive the full export of the organization + in JSON format. It will be compressed in a gzip (.gz) container. + + *Note: May be null if the export is still in progress or + failed. If present, this URL may only be valid for 1 hour from + the time of retrieval. You should avoid persisting this URL + somewhere and rather refresh on demand to ensure you do not keep + stale URLs.* + type: string + format: uri + readOnly: true + nullable: true + example: >- + https://asana-export-us-east-1.s3.us-east-1.amazonaws.com/2563645399633793/domain_export/7588024658887731/download/ + domain_export_2563645399633793_7588024658887731_2023018-201726.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256& + X-Amz-Content-Sha256=xxxxxxxx&X-Amz-Date=xxxxxxxx&X-Amz-Expires=300&X-Amz-Security-Token=xxxxxxxx& + X-Amz-Signature=xxxxxxxx&X-Amz-SignedHeaders=host&x-id=GetObject#_=_ + state: + description: The current state of the export. + type: string + enum: + - pending + - started + - finished + - error + readOnly: true + example: started + organization: + $ref: '#/components/schemas/WorkspaceCompact' + OrganizationExportRequest: + type: object + description: >- + An *organization_export* request starts a job to export the complete + data of the given Organization. + properties: + organization: + description: >- + Globally unique identifier for the workspace or organization. + type: string + example: '1331' + OrganizationExportResponse: + $ref: '#/components/schemas/OrganizationExportBase' + PortfolioAddItemRequest: + type: object + required: + - item + properties: + item: + description: >- + The item to add to the portfolio. + type: string + example: '1331' + insert_before: + description: >- + An id of an item in this portfolio. The new + item will be added before the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. + type: string + example: '1331' + insert_after: + description: >- + An id of an item in this portfolio. The new + item will be added after the one specified here. + `insert_before` and `insert_after` parameters cannot both + be specified. + type: string + example: '1331' + PortfolioBase: + allOf: + - $ref: '#/components/schemas/PortfolioCompact' + - type: object + properties: + color: + description: Color of the portfolio. + type: string + enum: + - dark-pink + - dark-green + - dark-blue + - dark-red + - dark-teal + - dark-brown + - dark-orange + - dark-purple + - dark-warm-gray + - light-pink + - light-green + - light-blue + - light-red + - light-teal + - light-brown + - light-orange + - light-purple + - light-warm-gray + example: light-green + PortfolioCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *portfolio* gives a high-level overview of the status of multiple + initiatives in Asana. Portfolios provide a dashboard overview of + the state of multiple projects, including a progress report and the + most recent [project + status](/reference/project-statuses) + update. + + Portfolios have some restrictions on size. Each portfolio has a max of + 500 items and, like projects, a max of 20 custom fields. + x-docs-overrides: + properties.resource_type.example: portfolio + properties: + name: + description: The name of the portfolio. + type: string + example: Bug Portfolio + PortfolioMembershipBase: + $ref: '#/components/schemas/PortfolioMembershipCompact' + PortfolioMembershipCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + This object determines if a user is a member of a portfolio. + x-docs-overrides: + properties.resource_type.example: portfolio_membership + properties: + portfolio: + description: >- + [Opt In](/docs/inputoutput-options). + The portfolio the user is a member of. + $ref: '#/components/schemas/PortfolioCompact' + user: + $ref: '#/components/schemas/UserCompact' + PortfolioMembershipResponse: + $ref: '#/components/schemas/PortfolioMembershipBase' + PortfolioRemoveItemRequest: + type: object + required: + - item + properties: + item: + description: >- + The item to remove from the portfolio. + type: string + example: '1331' + PortfolioRequest: + allOf: + - $ref: '#/components/schemas/PortfolioBase' + - type: object + properties: + members: + readOnly: true + type: array + description: >- + An array of strings identifying users. These can either be the + string "me", an email, or the gid of a user. + items: + type: string + description: >- + Gid of an object. + example: + - '52164' + - '15363' + workspace: + type: string + description: >- + Gid of an object. + example: '167589' + public: + type: boolean + description: >- + True if the portfolio is public to its workspace members. + example: false + PortfolioResponse: + allOf: + - $ref: '#/components/schemas/PortfolioBase' + - type: object + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + created_by: + $ref: '#/components/schemas/UserCompact' + custom_field_settings: + description: Array of custom field settings applied to the portfolio. + type: array + items: + $ref: '#/components/schemas/CustomFieldSettingResponse' + current_status_update: + allOf: + - $ref: '#/components/schemas/StatusUpdateCompact' + - description: The latest `status_update` posted to this portfolio. + nullable: true + due_on: + description: >- + The localized day on which this portfolio is due. This takes a + date with format YYYY-MM-DD. + type: string + format: date + nullable: true + example: '2019-09-15' + custom_fields: + description: Array of Custom Fields. + type: array + items: + $ref: '#/components/schemas/CustomFieldCompact' + members: + type: array + readOnly: true + items: + $ref: '#/components/schemas/UserCompact' + owner: + $ref: '#/components/schemas/UserCompact' + start_on: + description: >- + The day on which work for this portfolio begins, or null if the + portfolio has no start date. This takes a date with `YYYY-MM-DD` + format. *Note: `due_on` must be present in the + request when setting or unsetting the `start_on` parameter. + Additionally, `start_on` and `due_on` cannot be the same date.* + type: string + format: date + nullable: true + example: '2019-09-14' + workspace: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + description: >- + *Create-only*. The workspace or organization that the + portfolio belongs to. + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/resource/123456789/list + public: + description: >- + True if the portfolio is public to its workspace members. + type: boolean + example: false + project_templates: + description: >- + Array of project templates that are in the portfolio + type: array + readOnly: true + items: + $ref: '#/components/schemas/ProjectTemplateCompact' + Preview: + type: object + description: >- + A collection of rich text that will be displayed as a preview to another + app. + + + This is read-only except for a small group of whitelisted apps. + readOnly: true + properties: + fallback: + description: Some fallback text to display if unable to display the full + preview. + type: string + example: >- + Greg: Great! I like this + idea.\n\nhttps//a_company.slack.com/archives/ABCDEFG/12345678 + footer: + description: Text to display in the footer. + type: string + example: Mar 17, 2019 1:25 PM + header: + description: Text to display in the header. + type: string + example: Asana for Slack + header_link: + description: Where the header will link to. + type: string + example: https://asana.comn/apps/slack + html_text: + description: HTML formatted text for the body of the preview. + type: string + example: Great! I like this idea. + text: + description: Text for the body of the preview. + type: string + example: Great! I like this idea. + title: + description: Text to display as the title. + type: string + example: Greg + title_link: + description: Where to title will link to. + type: string + example: https://asana.slack.com/archives/ABCDEFG/12345678 + ProjectBase: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + properties: + archived: + description: >- + True if the project is archived, false if not. Archived projects + do not show in the UI by default and may be treated differently + for queries. + type: boolean + example: false + color: + description: Color of the project. + type: string + nullable: true + enum: + - dark-pink + - dark-green + - dark-blue + - dark-red + - dark-teal + - dark-brown + - dark-orange + - dark-purple + - dark-warm-gray + - light-pink + - light-green + - light-blue + - light-red + - light-teal + - light-brown + - light-orange + - light-purple + - light-warm-gray + - none + - null + example: light-green + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + current_status: + allOf: + - $ref: '#/components/schemas/ProjectStatusResponse' + - type: object + nullable: true + description: >- + *Deprecated: new integrations should prefer the `current_status_update` + resource.* + current_status_update: + allOf: + - $ref: '#/components/schemas/StatusUpdateCompact' + - type: object + nullable: true + description: The latest `status_update` posted to this project. + custom_field_settings: + description: Array of Custom Field Settings (in compact form). + readOnly: true + type: array + items: + $ref: '#/components/schemas/CustomFieldSettingResponse' + default_view: + description: The default view (list, board, calendar, or timeline) of + a project. + type: string + enum: + - list + - board + - calendar + - timeline + example: calendar + due_date: + description: >- + *Deprecated: new integrations should prefer the `due_on` field.* + type: string + nullable: true + format: date + example: '2019-09-15' + due_on: + description: >- + The day on which this project is due. This takes a date with + format YYYY-MM-DD. + type: string + nullable: true + format: date + example: '2019-09-15' + html_notes: + description: >- + [Opt In](/docs/inputoutput-options). + The notes of the project with formatting as HTML. + type: string + example: These are things we need to purchase. + members: + description: Array of users who are members of this project. + type: array + items: + $ref: '#/components/schemas/UserCompact' + readOnly: true + modified_at: + description: >- + The time at which this project was last modified. + + *Note: This does not currently reflect any changes in + associations such as tasks or comments that may have been added or + removed from the project.* + type: string + readOnly: true + format: date-time + example: '2012-02-22T02:06:58.147Z' + notes: + description: >- + Free-form textual information associated with the + project (ie., its description). + type: string + example: These are things we need to purchase. + public: + description: >- + *Deprecated:* new integrations use `privacy_setting` instead. + type: boolean + deprecated: true + example: false + privacy_setting: + description: >- + The privacy setting of the project. *Note: Administrators in your + organization may restrict the values of `privacy_setting`.* + type: string + enum: + - public_to_workspace + - private_to_team + - private + example: public_to_workspace + start_on: + description: >- + The day on which work for this project begins, or null if the + project has no start date. This takes a date with `YYYY-MM-DD` + format. *Note: `due_on` or `due_at` must be present in the + request when setting or unsetting the `start_on` parameter. + Additionally, `start_on` and `due_on` cannot be the same date.* + type: string + nullable: true + format: date + example: '2019-09-14' + default_access_level: + description: >- + The default access for users or teams who join or are added as members + to the project. + type: string + enum: + - admin + - editor + - commenter + - viewer + example: admin + minimum_access_level_for_customization: + description: >- + The minimum access level needed for project members to modify this + project's workflow and appearance. + type: string + enum: + - admin + - editor + example: admin + minimum_access_level_for_sharing: + description: >- + The minimum access level needed for project members to share the project + and manage project memberships. + type: string + enum: + - admin + - editor + example: admin + ProjectBriefBase: + allOf: + - $ref: '#/components/schemas/ProjectBriefCompact' + - type: object + properties: + title: + description: >- + The title of the project brief. + type: string + example: Stuff to buy — Project Brief + html_text: + description: >- + HTML formatted text for the project brief. + type: string + example: This is a project brief. + ProjectBriefCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *Project Brief* allows you to explain the what and why of the project + to + your team. + x-docs-overrides: + properties.resource_type.example: project_brief + ProjectBriefRequest: + allOf: + - $ref: '#/components/schemas/ProjectBriefBase' + - type: object + properties: + text: + description: >- + The plain text of the project brief. When writing to a project + brief, you can specify either `html_text` (preferred) or `text`, + but not both. + type: string + example: This is a project brief. + ProjectBriefResponse: + allOf: + - $ref: '#/components/schemas/ProjectBriefBase' + - type: object + properties: + text: + description: >- + [Opt In](/docs/inputoutput-options). + The plain text of the project brief. + type: string + example: This is a project brief. + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/11111111/22222222 + project: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + description: >- + The project with which this project brief is associated. + ProjectCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *project* represents a prioritized list of tasks in Asana or a board + with columns of tasks represented as cards. It exists in a single + workspace or organization and is accessible to a subset of users in + that workspace or organization, depending on its permissions. + x-docs-overrides: + properties.resource_type.example: project + properties: + name: + description: >- + Name of the project. This is generally a short sentence fragment + that fits on a line in the UI for maximum readability. However, it + can be longer. + type: string + example: Stuff to buy + ProjectDuplicateRequest: + type: object + required: + - name + properties: + name: + description: The name of the new project. + type: string + example: New Project Name + team: + description: >- + Sets the team of the new project. If team is not defined, + the new project will be in the same team as the the + original project. + type: string + example: '12345' + include: + description: >- + A comma-separated list of elements that will be duplicated to the new + project. Tasks are always included. + + ##### Fields + + - allocations + + - forms + + - members + + - notes + + - task_assignee + + - task_attachments + + - task_dates + + - task_dependencies + + - task_followers + + - task_notes + + - task_projects + + - task_subtasks + + - task_tags + type: string + pattern: + ([allocations|members|notes|forms|task_notes|task_assignee|task_subtasks|task_attachments|task_dates|task_dependencies|task_followers|task_tags|task_projects])(,\1)* + example: + - allocations,members,notes,forms,task_notes,task_assignee,task_subtasks,task_attachments,task_dates,task_dependencies,task_followers,task_tags,task_projects + schedule_dates: + description: >- + A dictionary of options to auto-shift dates. + `task_dates` must be included to use this option. + Requires either `start_on` or `due_on`, but not both. + type: object + required: + - should_skip_weekends + properties: + should_skip_weekends: + description: >- + Determines if the auto-shifted dates should skip weekends. + type: boolean + example: true + due_on: + description: >- + Sets the last due date in the duplicated project to the given + date. The rest of the due dates will be offset by the same amount + as the due dates in the original project. + type: string + example: '2019-05-21' + start_on: + description: >- + Sets the first start date in the duplicated project to the given + date. The rest of the start dates will be offset by the same amount + as the start dates in the original project. + type: string + example: '2019-05-21' + ProjectMembershipBase: + $ref: '#/components/schemas/ProjectMembershipCompact' + ProjectMembershipCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + This object describes a team or a user's membership to a project + including their level of access (Admin, Editor, Commenter, or + Viewer). + x-docs-overrides: + properties.resource_type.example: project_membership + properties: + parent: + description: >- + [Opt + In](/docs/inputoutput-options). + The project the user is a member of. + $ref: '#/components/schemas/ProjectCompact' + member: + description: Member can be a user or a team. + $ref: '#/components/schemas/MemberCompact' + access_level: + description: >- + Whether the member has admin, editor, commenter, or viewer + access to the project. + type: string + enum: + - admin + - editor + - commenter + - viewer + readOnly: true + example: admin + ProjectMembershipCompactResponse: + allOf: + - $ref: '#/components/schemas/ProjectMembershipCompact' + - type: object + properties: + resource_type: + description: The base type of this resource. + type: string + example: membership + resource_subtype: + description: Type of the membership. + type: string + example: project_membership + ProjectMembershipNormalResponse: + allOf: + - $ref: '#/components/schemas/ProjectMembershipBase' + - type: object + properties: + user: + $ref: '#/components/schemas/UserCompact' + project: + description: >- + [Opt + In](/docs/inputoutput-options). + The project the user is a member of. + $ref: '#/components/schemas/ProjectCompact' + resource_type: + description: The base type of this resource. + type: string + example: project_membership + write_access: + description: >- + Whether the member has full access or comment-only + access to the project. + type: string + enum: + - full_write + - comment_only + readOnly: true + example: full_write + ProjectRequest: + allOf: + - $ref: '#/components/schemas/ProjectBase' + - type: object + properties: + custom_fields: + description: >- + An object where each key is the GID of a custom field and its corresponding + value is + either an enum GID, string, number, or object (depending on the custom + field type). + See the [custom fields guide](/docs/custom-fields-guide) for details + on creating and + updating custom field values. + type: object + additionalProperties: + type: string + description: >- + "{custom_field_gid}" => Value (can be text, a number, etc.). For + date, use format "YYYY-MM-DD" (e.g., 2019-09-15). For date-time, + use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z). + example: + '5678904321': On Hold + '4578152156': Not Started + followers: + description: >- + *Create-only*. Comma separated string of users. Followers + are a subset of members who have opted in to receive "tasks + added" notifications for a project. + type: string + example: 12345,23456 + owner: + description: >- + The current owner of the project, may be null. + nullable: true + type: string + example: '12345' + team: + description: >- + The team that this project is shared with. + type: string + example: '12345' + workspace: + type: string + description: >- + The `gid` of a workspace. + example: '12345' + ProjectUpdateRequest: + allOf: + - $ref: '#/components/schemas/ProjectBase' + - type: object + properties: + custom_fields: + description: >- + An object where each key is the GID of a custom field and its corresponding + value is + either an enum GID, string, number, or object (depending on the custom + field type). + See the [custom fields guide](/docs/custom-fields-guide) for details + on creating and + updating custom field values. + type: object + additionalProperties: + type: string + description: >- + "{custom_field_gid}" => Value (can be text, a number, etc.). For + date, use format "YYYY-MM-DD" (e.g., 2019-09-15). For date-time, + use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z). + example: + '5678904321': On Hold + '4578152156': Not Started + followers: + description: >- + *Create-only*. Comma separated string of users. Followers + are a subset of members who have opted in to receive "tasks + added" notifications for a project. + type: string + example: 12345,23456 + owner: + description: >- + The current owner of the project, may be null. + nullable: true + type: string + example: '12345' + team: + description: >- + The team that this project is shared with. + type: string + example: '12345' + ProjectResponse: + allOf: + - $ref: '#/components/schemas/ProjectBase' + - type: object + properties: + custom_fields: + description: Array of Custom Fields. + readOnly: true + type: array + items: + $ref: '#/components/schemas/CustomFieldCompact' + completed: + description: >- + True if the project is currently marked complete, false if not. + type: boolean + readOnly: true + example: false + completed_at: + description: >- + The time at which this project was completed, or null if the project + is not completed. + type: string + format: date-time + readOnly: true + nullable: true + example: '2012-02-22T02:06:58.147Z' + completed_by: + allOf: + - $ref: '#/components/schemas/UserCompact' + - description: >- + The user that marked this project complete, or null if the project + is not completed. + readOnly: true + nullable: true + followers: + description: >- + Array of users following this project. Followers are a subset + of members who have opted in to receive "tasks added" + notifications for a project. + type: array + items: + $ref: '#/components/schemas/UserCompact' + readOnly: true + owner: + description: >- + The current owner of the project, may be null. + allOf: + - $ref: '#/components/schemas/UserCompact' + - type: object + nullable: true + team: + allOf: + - $ref: '#/components/schemas/TeamCompact' + - type: object + description: >- + The team that this project is shared with. + icon: + description: >- + The icon for a project. + type: string + nullable: true + enum: + - list + - board + - timeline + - calendar + - rocket + - people + - graph + - star + - bug + - light_bulb + - globe + - gear + - notebook + - computer + - check + - target + - html + - megaphone + - chat_bubbles + - briefcase + - page_layout + - mountain_flag + - puzzle + - presentation + - line_and_symbols + - speed_dial + - ribbon + - shoe + - shopping_basket + - map + - ticket + - coins + example: chat_bubbles + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/resource/123456789/list + project_brief: + allOf: + - $ref: '#/components/schemas/ProjectBriefCompact' + - type: object + description: >- + [Opt In](/docs/inputoutput-options). + The project brief associated with this project. + nullable: true + created_from_template: + allOf: + - $ref: '#/components/schemas/ProjectTemplateCompact' + - type: object + description: >- + [Opt In](/docs/inputoutput-options). + The project template from which this project was created. If the + project was + not created from a template, this field will be null. + nullable: true + workspace: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + readOnly: true + description: >- + *Create-only*. The workspace or organization this project is + associated with. Once created, projects cannot be moved to a + different workspace. This attribute can only be specified at + creation time. If the workspace for your project is an + organization, you must also supply a `team` in the request body. + ProjectSectionInsertRequest: + type: object + properties: + section: + description: The section to reorder. + type: string + example: '321654' + before_section: + description: >- + Insert the given section immediately before the section + specified by this parameter. + type: string + example: '86420' + after_section: + description: >- + Insert the given section immediately after the section + specified by this parameter. + type: string + example: '987654' + required: + - section + ProjectStatusBase: + allOf: + - $ref: '#/components/schemas/ProjectStatusCompact' + - type: object + properties: + text: + description: The text content of the status update. + type: string + example: The project is moving forward according to plan... + html_text: + description: >- + [Opt + In](/docs/inputoutput-options). + The text content of the status update with formatting as HTML. + type: string + example: >- + The project is moving forward according to + plan... + color: + description: The color associated with the status update. + type: string + enum: + - green + - yellow + - red + - blue + - complete + ProjectStatusCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + *Deprecated: new integrations should prefer the `status_update` resource.* + + A *project status* is an update on the progress of a particular + project, and is sent out to all project followers when created. These + updates include both text describing the update and a color code + intended to represent the overall state of the project: "green" for + projects that are on track, "yellow" for projects at risk, and "red" + for projects that are behind. + x-docs-overrides: + properties.resource_type.example: project_status + properties: + title: + description: The title of the project status update. + type: string + example: Status Update - Jun 15 + ProjectStatusRequest: + $ref: '#/components/schemas/ProjectStatusBase' + ProjectStatusResponse: + allOf: + - $ref: '#/components/schemas/ProjectStatusBase' + - type: object + properties: + author: + $ref: '#/components/schemas/UserCompact' + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + created_by: + $ref: '#/components/schemas/UserCompact' + modified_at: + description: >- + The time at which this project status was last modified. + + *Note: This does not currently reflect any changes in + associations such as comments that may have been added or + removed from the project status.* + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + ProjectTemplateCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *project template* is an object that allows new projects to be created + with a predefined setup, which may include tasks, sections, Rules, etc. + It simplifies the process of running a workflow that involves a similar + set of work every time. + x-docs-overrides: + properties.resource_type.example: project_template + properties: + name: + description: >- + Name of the project template. + type: string + example: Packing list + ProjectTemplateBase: + allOf: + - $ref: '#/components/schemas/ProjectTemplateCompact' + - type: object + properties: + description: + description: >- + Free-form textual information associated with the + project template + type: string + example: These are things we need to pack for a trip. + html_description: + description: >- + The description of the project template with formatting as HTML. + type: string + example: These are things we need to pack for a trip. + public: + description: >- + True if the project template is public to its team. + type: boolean + example: false + owner: + description: >- + The current owner of the project template, may be null. + allOf: + - $ref: '#/components/schemas/UserCompact' + - type: object + nullable: true + team: + allOf: + - $ref: '#/components/schemas/TeamCompact' + requested_dates: + description: >- + Array of date variables in this project template. Calendar dates + must be provided for these variables when instantiating a project. + type: array + items: + $ref: '#/components/schemas/DateVariableCompact' + readOnly: true + color: + description: Color of the project template. + type: string + nullable: true + enum: + - dark-pink + - dark-green + - dark-blue + - dark-red + - dark-teal + - dark-brown + - dark-orange + - dark-purple + - dark-warm-gray + - light-pink + - light-green + - light-blue + - light-red + - light-teal + - light-brown + - light-orange + - light-purple + - light-warm-gray + - null + example: light-green + requested_roles: + description: >- + Array of template roles in this project template. User Ids can be + provided + for these variables when instantiating a project to assign template + tasks to + the user. + type: array + items: + $ref: '#/components/schemas/TemplateRole' + ProjectTemplateResponse: + allOf: + - $ref: '#/components/schemas/ProjectTemplateBase' + ProjectTemplateInstantiateProjectRequest: + type: object + required: + - name + properties: + name: + description: The name of the new project. + type: string + example: New Project Name + team: + description: >- + *Optional*. Sets the team of the new project. If the project template + exists in an + _organization_, you may specify a value for `team`. If no value is provided + then it + defaults to the same team as the project template. + type: string + example: '12345' + public: + description: >- + Sets the project to public to its team. + type: boolean + example: true + is_strict: + description: >- + *Optional*. If set to `true`, the endpoint returns an "Unprocessable Entity" + error + if you fail to provide a calendar date value for any date variable. If + set to + `false`, a default date is used for each unfulfilled date variable (e.g., + the + current date is used as the Start Date of a project). + type: boolean + example: true + requested_dates: + description: >- + Array of mappings of date variables to calendar dates. + type: array + items: + $ref: '#/components/schemas/DateVariableRequest' + requested_roles: + description: >- + Array of mappings of template roles to user ids + type: array + items: + $ref: '#/components/schemas/RequestedRoleRequest' + DateVariableCompact: + type: object + properties: + gid: + description: >- + Globally unique identifier of the date field in the project template. + A value of + `1` refers to the project start date, while `2` refers to the project + due date. + type: string + readOnly: true + example: '1' + name: + description: >- + The name of the date variable. + type: string + readOnly: true + example: Start Date + description: + description: >- + The description of what the date variable is used for when instantiating + a project. + type: string + readOnly: true + example: Choose a start date for your project. + DateVariableRequest: + type: object + properties: + gid: + description: >- + Globally unique identifier of the date field in the project template. + A value of + `1` refers to the project start date, while `2` refers to the project + due date. + type: string + example: '1' + value: + description: >- + The date with which the date variable should be replaced when instantiating + a project. + This takes a date with `YYYY-MM-DD` format. + type: string + nullable: true + format: date-time + example: '2022-01-01' + RequestedRoleRequest: + type: object + properties: + gid: + description: >- + Globally unique identifier of the template role in the project template. + type: string + example: '1' + value: + description: >- + The user id that should be assigned to the template role. + type: string + example: '123' + ProjectSaveAsTemplateRequest: + type: object + required: + - name + - public + properties: + name: + description: The name of the new project template. + type: string + example: New Project Template + team: + description: >- + Sets the team of the new project template. If the project exists in an + organization, specify team and not workspace. + type: string + example: '12345' + workspace: + description: >- + Sets the workspace of the new project template. Only specify workspace + if the + project exists in a workspace. + type: string + example: '12345' + public: + description: >- + Sets the project template to public to its team. + type: boolean + example: true + RuleTriggerRequest: + type: object + properties: + resource: + description: >- + The ID of the resource. For the duration of the beta, this resource is + always a task, and this task must exist in the project in which the rule + is created. + type: string + example: '12345' + action_data: + type: object + additionalProperties: true + description: >- + The dynamic keys and values of the request. These fields are intended + to be used in the action for the rule associated with this trigger. + example: + jira_ticket_name: Test + jira_ticket_id: '123' + required: + - resource + - action_data + RuleTriggerResponse: + type: object + properties: + message: + description: >- + Message providing more detail about the result + type: string + example: Successfully saved the payload and ran the rule + RemoveCustomFieldSettingRequest: + type: object + required: + - custom_field + properties: + custom_field: + description: The custom field to remove from this portfolio. + type: string + example: '14916' + RemoveFollowersRequest: + type: object + required: + - followers + properties: + followers: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: string + example: 521621,621373 + RemoveMembersRequest: + type: object + required: + - members + properties: + members: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: string + example: 521621,621373 + SectionBase: + $ref: '#/components/schemas/SectionCompact' + SectionCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *section* is a subdivision of a project that groups tasks together. + It can either be a header above a list of tasks in a list view or a + column in a board view of a project. + x-docs-overrides: + properties.resource_type.example: section + properties: + name: + description: >- + The name of the section (i.e. the text displayed as the section + header). + type: string + example: Next Actions + SectionRequest: + type: object + properties: + name: + description: >- + The text to be displayed as the section name. This cannot be + an empty string. + type: string + example: Next Actions + insert_before: + description: >- + An existing section within this project before which the added + section should be inserted. Cannot be provided together with + insert_after. + type: string + example: '86420' + insert_after: + description: >- + An existing section within this project after which the added + section should be inserted. Cannot be provided together with + insert_before. + type: string + example: '987654' + required: + - name + SectionResponse: + allOf: + - $ref: '#/components/schemas/SectionBase' + - type: object + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + project: + $ref: '#/components/schemas/ProjectCompact' + projects: + description: >- + *Deprecated - please use project instead* + type: array + readOnly: true + items: + $ref: '#/components/schemas/ProjectCompact' + SectionTaskInsertRequest: + type: object + properties: + task: + description: The task to add to this section. + type: string + example: '123456' + insert_before: + description: >- + An existing task within this section before which the added + task should be inserted. Cannot be provided together with + insert_after. + type: string + example: '86420' + insert_after: + description: >- + An existing task within this section after which the added + task should be inserted. Cannot be provided together with + insert_before. + type: string + example: '987654' + required: + - task + StatusUpdateBase: + allOf: + - $ref: '#/components/schemas/StatusUpdateCompact' + - type: object + required: + - text + - status_type + properties: + text: + description: The text content of the status update. + type: string + example: The project is moving forward according to plan... + html_text: + description: >- + [Opt + In](/docs/inputoutput-options). + The text content of the status update with formatting as HTML. + type: string + example: >- + The project is moving forward according to + plan... + status_type: + description: The type associated with the status update. This represents + the current state of the object this object is on. + type: string + enum: + - on_track + - at_risk + - off_track + - on_hold + - complete + - achieved + - partial + - missed + - dropped + StatusUpdateCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *status update* is an update on the progress of a particular + project, portfolio, or goal, and is sent out to all of its parent's + followers when created. These + updates include both text describing the update and a `status_type` + intended to represent the overall state of the project. + x-docs-overrides: + properties.resource_type.example: status_update + properties: + title: + description: The title of the status update. + type: string + example: Status Update - Jun 15 + resource_subtype: + type: string + description: >- + The subtype of this resource. Different subtypes retain many of + the same fields and behavior, but may render differently in Asana + or represent resources with different semantic meaning. + + The `resource_subtype`s for `status` objects represent the type of + their parent. + enum: + - project_status_update + - portfolio_status_update + - goal_status_update + example: project_status_update + readOnly: true + StatusUpdateRequest: + allOf: + - $ref: '#/components/schemas/StatusUpdateBase' + - type: object + required: + - parent + properties: + parent: + allOf: + - type: string + description: >- + The id of parent to send this status update to. This can be a + project, + goal or portfolio. + StatusUpdateResponse: + allOf: + - $ref: '#/components/schemas/StatusUpdateBase' + - type: object + properties: + author: + $ref: '#/components/schemas/UserCompact' + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + created_by: + $ref: '#/components/schemas/UserCompact' + hearted: + description: >- + *Deprecated - please use liked instead* True if the status is + hearted by the authorized user, false if not. + type: boolean + example: true + readOnly: true + hearts: + description: >- + *Deprecated - please use likes instead* Array of likes for users + who have hearted this status. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + liked: + description: >- + True if the status is liked by the authorized user, false if not. + type: boolean + example: true + likes: + description: Array of likes for users who have liked this status. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + modified_at: + description: >- + The time at which this project status was last modified. + + *Note: This does not currently reflect any changes in + associations such as comments that may have been added or + removed from the status.* + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + num_hearts: + description: >- + *Deprecated - please use likes instead* The number of users who + have hearted this status. + type: integer + example: 5 + readOnly: true + num_likes: + description: The number of users who have liked this status. + type: integer + example: 5 + readOnly: true + parent: + allOf: + - $ref: '#/components/schemas/ProjectCompact' + - type: object + description: >- + The parent of the status update. This can be a project, + goal or portfolio, and indicates that this status was sent + on that object. + StoryBase: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A story represents an activity associated with an object in the Asana + system. + x-docs-overrides: + properties.resource_type.example: story + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + resource_subtype: + description: >- + The subtype of this resource. Different subtypes retain many of the + same fields and behavior, but may render differently in Asana or + represent resources with different semantic meaning. + type: string + readOnly: true + example: comment_added + text: + description: The plain text of the comment to add. Cannot be used with + html_text. + type: string + example: This is a comment. + html_text: + description: >- + [Opt In](/docs/inputoutput-options). + HTML formatted text for a comment. This will not include the name + of the creator. + type: string + example: This is a comment. + is_pinned: + description: >- + *Conditional*. Whether the story should be pinned on the + resource. + type: boolean + example: false + sticker_name: + description: >- + The name of the sticker in this story. `null` if there is no sticker. + type: string + enum: + - green_checkmark + - people_dancing + - dancing_unicorn + - heart + - party_popper + - people_waving_flags + - splashing_narwhal + - trophy + - yeti_riding_unicorn + - celebrating_people + - determined_climbers + - phoenix_spreading_love + example: dancing_unicorn + StoryCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A story represents an activity associated with an object in the Asana + system. + x-docs-overrides: + properties.resource_type.example: story + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + created_by: + $ref: '#/components/schemas/UserCompact' + resource_subtype: + description: >- + The subtype of this resource. Different subtypes retain many of the + same fields and behavior, but may render differently in Asana or + represent resources with different semantic meaning. + type: string + readOnly: true + example: comment_added + text: + description: >- + *Create-only*. Human-readable text for the story or comment. + + This will not include the name of the creator. + + *Note: This is not guaranteed to be stable for a given type of + story. For example, text for a reassignment may not always say + “assigned to …” as the text for a story can both be edited and + change based on the language settings of the user making the + request.* + + Use the `resource_subtype` property to discover the action that + created the story. + type: string + example: marked today + StoryRequest: + $ref: '#/components/schemas/StoryBase' + StoryResponse: + allOf: + - $ref: '#/components/schemas/StoryBase' + - type: object + properties: + created_by: + $ref: '#/components/schemas/UserCompact' + type: + type: string + enum: + - comment + - system + readOnly: true + example: comment + is_editable: + description: >- + *Conditional*. Whether the text of the story can be edited + after creation. + type: boolean + readOnly: true + example: false + is_edited: + description: >- + *Conditional*. Whether the text of the story has been edited + after creation. + type: boolean + readOnly: true + example: false + hearted: + description: >- + *Deprecated - please use likes instead* + + *Conditional*. True if the story is hearted by the authorized + user, false if not. + type: boolean + readOnly: true + example: false + hearts: + description: |- + *Deprecated - please use likes instead* + + *Conditional*. Array of likes for users who have hearted this story. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + num_hearts: + description: |- + *Deprecated - please use likes instead* + + *Conditional*. The number of users who have hearted this story. + type: integer + readOnly: true + example: 5 + liked: + description: >- + *Conditional*. True if the story is liked by the authorized + user, false if not. + type: boolean + readOnly: true + example: false + likes: + description: >- + *Conditional*. Array of likes for users who have liked this story. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + num_likes: + description: >- + *Conditional*. The number of users who have liked this story. + type: integer + readOnly: true + example: 5 + previews: + description: >- + *Conditional*. A collection of previews to be displayed in the + story. + + + *Note: This property only exists for comment stories.* + type: array + items: + $ref: '#/components/schemas/Preview' + readOnly: true + old_name: + description: >- + *Conditional*' + type: string + example: This was the Old Name + new_name: + description: >- + *Conditional* + type: string + nullable: true + readOnly: true + example: This is the New Name + old_dates: + $ref: '#/components/schemas/StoryResponseDates' + new_dates: + $ref: '#/components/schemas/StoryResponseDates' + old_resource_subtype: + description: >- + *Conditional* + type: string + readOnly: true + example: default_task + new_resource_subtype: + description: >- + *Conditional* + type: string + readOnly: true + example: milestone + story: + description: >- + *Conditional* + $ref: '#/components/schemas/StoryCompact' + readOnly: true + assignee: + description: >- + *Conditional* + $ref: '#/components/schemas/UserCompact' + readOnly: true + follower: + description: >- + *Conditional* + $ref: '#/components/schemas/UserCompact' + readOnly: true + old_section: + description: >- + *Conditional* + $ref: '#/components/schemas/SectionCompact' + readOnly: true + new_section: + description: >- + *Conditional* + $ref: '#/components/schemas/SectionCompact' + readOnly: true + task: + description: >- + *Conditional* + $ref: '#/components/schemas/TaskCompact' + readOnly: true + project: + description: >- + *Conditional* + $ref: '#/components/schemas/ProjectCompact' + readOnly: true + tag: + description: >- + *Conditional* + $ref: '#/components/schemas/TagCompact' + readOnly: true + custom_field: + description: >- + *Conditional* + $ref: '#/components/schemas/CustomFieldCompact' + readOnly: true + old_text_value: + description: >- + *Conditional* + type: string + readOnly: true + example: This was the Old Text + new_text_value: + description: >- + *Conditional* + type: string + readOnly: true + example: This is the New Text + old_number_value: + description: >- + *Conditional* + type: integer + nullable: true + readOnly: true + example: 1 + new_number_value: + description: >- + *Conditional* + type: integer + readOnly: true + example: 2 + old_enum_value: + description: >- + *Conditional* + $ref: '#/components/schemas/EnumOption' + readOnly: true + new_enum_value: + description: >- + *Conditional* + $ref: '#/components/schemas/EnumOption' + readOnly: true + old_date_value: + allOf: + - $ref: '#/components/schemas/StoryResponseDates' + - description: >- + *Conditional*. The old value of a date custom field story. + readOnly: true + new_date_value: + allOf: + - $ref: '#/components/schemas/StoryResponseDates' + - description: >- + *Conditional* The new value of a date custom field story. + readOnly: true + old_people_value: + description: >- + *Conditional*. The old value of a people custom field story. + type: array + items: + $ref: '#/components/schemas/UserCompact' + readOnly: true + new_people_value: + description: >- + *Conditional*. The new value of a people custom field story. + type: array + items: + $ref: '#/components/schemas/UserCompact' + readOnly: true + old_multi_enum_values: + description: >- + *Conditional*. The old value of a multi-enum custom field story. + type: array + items: + $ref: '#/components/schemas/EnumOption' + readOnly: true + new_multi_enum_values: + description: >- + *Conditional*. The new value of a multi-enum custom field story. + type: array + items: + $ref: '#/components/schemas/EnumOption' + readOnly: true + new_approval_status: + description: >- + *Conditional*. The new value of approval status. + type: string + readOnly: true + example: approved + old_approval_status: + description: >- + *Conditional*. The old value of approval status. + type: string + readOnly: true + example: pending + duplicate_of: + description: >- + *Conditional* + $ref: '#/components/schemas/TaskCompact' + readOnly: true + duplicated_from: + description: >- + *Conditional* + $ref: '#/components/schemas/TaskCompact' + readOnly: true + dependency: + description: >- + *Conditional* + $ref: '#/components/schemas/TaskCompact' + readOnly: true + source: + description: >- + The component of the Asana product the user used to trigger the + story. + type: string + enum: + - web + - email + - mobile + - api + - unknown + readOnly: true + example: web + target: + allOf: + - $ref: '#/components/schemas/TaskCompact' + - type: object + readOnly: true + description: >- + The object this story is associated with. Currently may only be + a + task. + StoryResponseDates: + description: >- + *Conditional* + type: object + readOnly: true + properties: + start_on: + description: >- + The day on which work for this goal begins, or null if the + goal has no start date. This takes a date with `YYYY-MM-DD` + format, and cannot be set unless there is an accompanying due date. + type: string + format: date + example: '2019-09-14' + nullable: true + due_at: + description: >- + The UTC date and time on which this task is due, or null if the + task has no due time. This takes an ISO 8601 date string in UTC + and should not be used together with `due_on`. + type: string + format: date-time + example: '2019-09-15T02:06:58.158Z' + nullable: true + due_on: + description: >- + The localized day on which this goal is due. This takes a + date with format `YYYY-MM-DD`. + type: string + format: date + example: '2019-09-15' + TagBase: + allOf: + - $ref: '#/components/schemas/TagCompact' + - type: object + properties: + color: + type: string + description: Color of the tag. + nullable: true + enum: + - dark-pink + - dark-green + - dark-blue + - dark-red + - dark-teal + - dark-brown + - dark-orange + - dark-purple + - dark-warm-gray + - light-pink + - light-green + - light-blue + - light-red + - light-teal + - light-brown + - light-orange + - light-purple + - light-warm-gray + - null + example: light-green + notes: + description: >- + Free-form textual information associated with the + tag (i.e. its description). + type: string + example: Mittens really likes the stuff from Humboldt. + TagCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *tag* is a label that can be attached to any task in Asana. It + exists in a single workspace or organization. + x-docs-overrides: + properties.resource_type.example: tag + properties: + name: + description: >- + Name of the tag. This is generally a short sentence fragment that + fits on a line in the UI for maximum readability. However, it can + be longer. + type: string + example: Stuff to buy + TagCreateTagForWorkspaceRequest: + allOf: + - $ref: '#/components/schemas/TagBase' + - type: object + properties: + followers: + type: array + description: >- + An array of strings identifying users. These can either be the + string "me", an email, or the gid of a user. + items: + type: string + example: + - '12345' + - '42563' + TagRequest: + allOf: + - $ref: '#/components/schemas/TagBase' + - type: object + properties: + followers: + type: array + description: >- + An array of strings identifying users. These can either be the + string "me", an email, or the gid of a user. + items: + type: string + example: + - '12345' + - '42563' + workspace: + type: string + x-env-variable: true + description: >- + Gid of an object. + example: '12345' + TagResponse: + allOf: + - $ref: '#/components/schemas/TagBase' + - type: object + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + followers: + description: Array of users following this tag. + type: array + readOnly: true + items: + $ref: '#/components/schemas/UserCompact' + workspace: + $ref: '#/components/schemas/WorkspaceCompact' + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/resource/123456789/list + TaskAddFollowersRequest: + type: object + properties: + followers: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: array + items: + type: string + example: + - '13579' + - '321654' + required: + - followers + TaskAddProjectRequest: + type: object + properties: + project: + description: The project to add the task to. + type: string + example: '13579' + insert_after: + description: >- + A task in the project to insert the task after, or `null` + to insert at the beginning of the list. + type: string + nullable: true + example: '124816' + insert_before: + description: >- + A task in the project to insert the task before, or + `null` to insert at the end of the list. + type: string + nullable: true + example: '432134' + section: + description: >- + A section in the project to insert the task into. The + task will be inserted at the bottom of the section. + type: string + nullable: true + example: '987654' + required: + - project + TaskAddTagRequest: + type: object + properties: + tag: + description: The tag's gid to add to the task. + type: string + example: '13579' + required: + - tag + TaskBase: + allOf: + - $ref: '#/components/schemas/TaskCompact' + - type: object + properties: + approval_status: + type: string + description: >- + *Conditional* Reflects the approval status of this task. This + field is kept in sync with `completed`, meaning `pending` + translates to false while `approved`, `rejected`, and + `changes_requested` translate to true. If you set completed + to true, this field will be set to `approved`. + enum: + - pending + - approved + - rejected + - changes_requested + example: pending + assignee_status: + description: >- + *Deprecated* Scheduling status of this task for the user it is assigned + to. + This field can only be set if the assignee is non-null. + Setting this field to "inbox" or "upcoming" inserts it at the top + of the section, while the other options will insert at the bottom. + type: string + enum: + - today + - upcoming + - later + - new + - inbox + example: upcoming + completed: + description: >- + True if the task is currently marked complete, false if not. + type: boolean + example: false + completed_at: + description: >- + The time at which this task was completed, or null if the task is + incomplete. + type: string + format: date-time + readOnly: true + nullable: true + example: '2012-02-22T02:06:58.147Z' + completed_by: + allOf: + - $ref: '#/components/schemas/UserCompact' + - readOnly: true + nullable: true + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + dependencies: + description: >- + [Opt + In](/docs/inputoutput-options). + Array of resources referencing tasks that this task depends on. + The objects contain only the gid of the dependency. + type: array + items: + $ref: '#/components/schemas/AsanaResource' + readOnly: true + dependents: + description: >- + [Opt + In](/docs/inputoutput-options). + Array of resources referencing tasks that depend on this task. The + objects contain only the ID of the dependent. + type: array + items: + $ref: '#/components/schemas/AsanaResource' + readOnly: true + due_at: + description: >- + The UTC date and time on which this task is due, or null if the + task has no due time. This takes an ISO 8601 date string in UTC + and should not be used together with `due_on`. + type: string + format: date-time + example: '2019-09-15T02:06:58.147Z' + nullable: true + due_on: + description: >- + The localized date on which this task is due, or null if the task + has no due date. This takes a date with `YYYY-MM-DD` format and + should not be used together with `due_at`. + type: string + format: date + example: '2019-09-15' + nullable: true + external: + description: >- + *OAuth Required*. *Conditional*. This field is returned only + if external values are set or included by using [Opt In] + (/docs/inputoutput-options). + + The external field allows you to store app-specific metadata on + tasks, including a gid that can be used to retrieve tasks and a + data blob that can store app-specific character strings. Note that + you will need to authenticate with Oauth to access or modify this + data. Once an external gid is set, you can use the notation + `external:custom_gid` to reference your object anywhere in the API + where you may use the original object gid. See the page on Custom + External Data for more details. + type: object + properties: + gid: + type: string + example: '1234' + data: + type: string + example: A blob of information. + example: + gid: my_gid + data: A blob of information + html_notes: + description: >- + [Opt + In](/docs/inputoutput-options). + The notes of the text with formatting as HTML. + type: string + example: >- + Mittens really likes the stuff from + Humboldt. + hearted: + description: >- + *Deprecated - please use liked instead* True if the task is + hearted by the authorized user, false if not. + type: boolean + example: true + readOnly: true + hearts: + description: >- + *Deprecated - please use likes instead* Array of likes for users + who have hearted this task. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + is_rendered_as_separator: + description: >- + [Opt In](/docs/inputoutput-options). + In some contexts tasks can be rendered as a visual separator; + for instance, subtasks can appear similar to + [sections](/reference/sections) without being true + `section` objects. If a `task` object is rendered this way in any + context it will have the property `is_rendered_as_separator` set + to `true`. + type: boolean + example: false + readOnly: true + liked: + description: >- + True if the task is liked by the authorized user, false if not. + type: boolean + example: true + likes: + description: Array of likes for users who have liked this task. + type: array + items: + $ref: '#/components/schemas/Like' + readOnly: true + memberships: + description: >- + *Create-only*. Array of projects this task is associated with + and the section it is in. At task creation time, this array can be + used to add the task to specific sections. After task creation, + these associations can be modified using the `addProject` and + `removeProject` endpoints. Note that over time, more types of + memberships may be added to this property. + type: array + readOnly: true + items: + type: object + properties: + project: + $ref: '#/components/schemas/ProjectCompact' + section: + $ref: '#/components/schemas/SectionCompact' + modified_at: + description: |- + The time at which this task was last modified. + + The following conditions will change `modified_at`: + + - story is created on a task + - story is trashed on a task + - attachment is trashed on a task + - task is assigned or unassigned + - custom field value is changed + - the task itself is trashed + - Or if any of the following fields are updated: + - completed + - name + - due_date + - description + - attachments + - items + - schedule_status + + The following conditions will _not_ change `modified_at`: + + - moving to a new container (project, portfolio, etc) + - comments being added to the task (but the stories they generate + _will_ affect `modified_at`) + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + name: + description: >- + Name of the task. This is generally a short sentence fragment that + fits on a line in the UI for maximum readability. However, it can + be longer. + type: string + example: Buy catnip + notes: + description: >- + Free-form textual information associated with the + task (i.e. its description). + type: string + example: Mittens really likes the stuff from Humboldt. + num_hearts: + description: >- + *Deprecated - please use likes instead* The number of users who + have hearted this task. + type: integer + example: 5 + readOnly: true + num_likes: + description: The number of users who have liked this task. + type: integer + example: 5 + readOnly: true + num_subtasks: + description: > + [Opt + In](/docs/inputoutput-options). + The number of subtasks on this task. + type: integer + example: 3 + readOnly: true + start_at: + description: >- + Date and time on which work begins for the task, or null if the task + has no start time. This takes an ISO 8601 date string in UTC + and should not be used together with `start_on`. + + *Note: `due_at` must be present in the request when + setting or unsetting the `start_at` parameter.* + type: string + nullable: true + format: date-time + example: '2019-09-14T02:06:58.147Z' + start_on: + description: >- + The day on which work begins for the task , or null if the task + has no start date. This takes a date with `YYYY-MM-DD` format and + should not be used together with `start_at`. + + *Note: `due_on` or `due_at` must be present in the request when + setting or unsetting the `start_on` parameter.* + type: string + nullable: true + format: date + example: '2019-09-14' + actual_time_minutes: + description: >- + This value represents the sum of all the Time Tracking entries in + the Actual Time field on a given Task. It is represented as a nullable + long value. + type: number + example: 200 + readOnly: true + nullable: true + TaskCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + The *task* is the basic object around which many operations in Asana + are centered. + x-docs-overrides: + properties.resource_type.example: task + properties: + name: + description: The name of the task. + type: string + example: Bug Task + resource_subtype: + type: string + description: >- + The subtype of this resource. Different subtypes retain many of + the same fields and behavior, but may render differently in Asana + or represent resources with different semantic meaning. + + The resource_subtype `milestone` represent a single moment in + time. This means tasks with this subtype cannot have a start_date. + enum: + - default_task + - milestone + - section + - approval + example: default_task + created_by: + type: object + readOnly: true + description: >- + [Opt In](/docs/inputoutput-options). + A *user* object represents an account in Asana that can be given + access to various workspaces, projects, and tasks. + properties: + gid: + description: Globally unique identifier of the resource. + type: string + example: '1111' + resource_type: + description: The type of resource. + type: string + example: user + TaskTemplateCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *task template* is an object that allows new tasks to be created + with a predefined setup. + x-docs-overrides: + properties.resource_type.example: task_template + properties: + name: + description: >- + Name of the task template. + type: string + example: Packing list + TaskTemplateBase: + allOf: + - $ref: '#/components/schemas/TaskTemplateCompact' + TaskTemplateRecipeCompact: + allOf: + - type: object + properties: + name: + description: >- + Name of the task that will be created from this template. + type: string + example: Bug Report + task_resource_subtype: + type: string + description: >- + The subtype of the task that will be created from this template. + enum: + - default_task + - milestone_task + - approval_task + example: default_task + TaskTemplateRecipe: + allOf: + - $ref: '#/components/schemas/TaskTemplateRecipeCompact' + - type: object + properties: + description: + description: >- + Description of the task that will be created from this template. + type: string + example: >- + Please describe the bug you found and how to reproduce it. + html_description: + description: >- + HTML description of the task that will be created from this template. + type: string + example: >- + Please describe the bug you found and how to reproduce it. + memberships: + description: >- + Array of projects that the task created from this template will be + added to + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + relative_start_on: + nullable: true + description: >- + The number of days after the task has been instantiated on which that + the task will start + type: integer + example: 1 + relative_due_on: + nullable: true + description: >- + The number of days after the task has been instantiated on which that + the task will be due + type: integer + example: 2 + due_time: + nullable: true + description: >- + The time of day that the task will be due + type: string + example: 13:15:00.000Z + dependencies: + description: >- + Array of task templates that the task created from this template will + depend on + type: array + items: + $ref: '#/components/schemas/TaskTemplateRecipeCompact' + dependents: + description: >- + Array of task templates that will depend on the task created from + this template + type: array + items: + $ref: '#/components/schemas/TaskTemplateRecipeCompact' + followers: + description: >- + Array of users that will be added as followers to the task created + from this template + type: array + items: + $ref: '#/components/schemas/UserCompact' + attachments: + description: >- + Array of attachments that will be added to the task created from this + template + type: array + items: + $ref: '#/components/schemas/AttachmentCompact' + subtasks: + description: >- + Array of subtasks that will be added to the task created from this + template + type: array + items: + $ref: '#/components/schemas/TaskTemplateRecipeCompact' + custom_fields: + description: >- + Array of custom fields that will be added to the task created from + this template + type: array + items: + $ref: '#/components/schemas/CustomFieldCompact' + TaskTemplateResponse: + allOf: + - $ref: '#/components/schemas/TaskTemplateBase' + - type: object + properties: + name: + description: >- + Name of the task template. + type: string + example: Bug Report Template + project: + description: >- + The project that this task template belongs to. + nullable: true + allOf: + - $ref: '#/components/schemas/ProjectCompact' + template: + description: >- + The configuration for the task that will be created from this template. + allOf: + - $ref: '#/components/schemas/TaskTemplateRecipe' + created_by: + description: >- + The user who created this task template. + allOf: + - $ref: '#/components/schemas/UserCompact' + created_at: + description: >- + The time at which this task template was created. + type: string + format: date-time + example: '2019-01-01T00:00:00.000Z' + TaskCountResponse: + description: A response object returned from the task count endpoint. + type: object + properties: + num_tasks: + description: The number of tasks in a project. + type: integer + example: 200 + num_incomplete_tasks: + description: The number of incomplete tasks in a project. + type: integer + example: 50 + num_completed_tasks: + description: The number of completed tasks in a project. + type: integer + example: 150 + num_milestones: + description: The number of milestones in a project. + type: integer + example: 10 + num_incomplete_milestones: + description: The number of incomplete milestones in a project. + type: integer + example: 7 + num_completed_milestones: + description: The number of completed milestones in a project. + type: integer + example: 3 + TaskDuplicateRequest: + type: object + properties: + name: + description: The name of the new task. + type: string + example: New Task Name + include: + description: >- + A comma-separated list of fields that will be duplicated to the new + task. + + ##### Fields + + - assignee + + - attachments + + - dates + + - dependencies + + - followers + + - notes + + - parent + + - projects + + - subtasks + + - tags + type: string + pattern: + ([notes|assignee|subtasks|attachments|tags|followers|projects|dates|dependencies|parent])(,\1)* + example: + - notes,assignee,subtasks,attachments,tags,followers,projects,dates,dependencies,parent + TaskRemoveFollowersRequest: + type: object + properties: + followers: + description: >- + An array of strings identifying users. These can either be the string + "me", an email, or the gid of a user. + type: array + items: + type: string + example: + - '13579' + - '321654' + required: + - followers + TaskRemoveProjectRequest: + type: object + properties: + project: + description: The project to remove the task from. + type: string + example: '13579' + required: + - project + TaskRemoveTagRequest: + type: object + properties: + tag: + description: The tag's gid to remove from the task. + type: string + example: '13579' + required: + - tag + TaskTemplateInstantiateTaskRequest: + type: object + properties: + name: + description: The name of the new task. If not provided, the name of the + task template will be used. + type: string + example: New Task + TaskRequest: + allOf: + - $ref: '#/components/schemas/TaskBase' + - type: object + properties: + assignee: + type: string + readOnly: false + x-env-variable: true + description: >- + Gid of a user. + example: '12345' + nullable: true + assignee_section: + nullable: true + type: string + description: >- + The *assignee section* is a subdivision of a project that groups + tasks together in the assignee's "My Tasks" list. It can either be + a + header above a list of tasks in a list view or a column in a board + view of "My Tasks." + + The `assignee_section` property will be returned in the response only + if the request was sent by the user who is the assignee of the task. + Note that you can only write to `assignee_section` with the gid of + an + existing section visible in the user's "My Tasks" list. + example: '12345' + custom_fields: + description: >- + An object where each key is the GID of a custom field and its corresponding + value is + either an enum GID, string, number, object, or array (depending on + the custom field type). + See the [custom fields guide](/docs/custom-fields-guide) for details + on creating and + updating custom field values. + type: object + additionalProperties: + type: string + description: >- + "{custom_field_gid}" => Value (can be text, a number, etc.). For + date, use format "YYYY-MM-DD" (e.g., 2019-09-15). For date-time, + use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z). + example: + '5678904321': On Hold + '4578152156': Not Started + followers: + type: array + description: >- + *Create-Only* An array of strings identifying users. These can + either be the string "me", an email, or the gid of a user. In + order to change followers on an existing task use `addFollowers` + and `removeFollowers`. + items: + type: string + description: >- + Gid of a user. + example: + - '12345' + parent: + type: string + readOnly: false + x-env-variable: true + description: >- + Gid of a task. + example: '12345' + nullable: true + projects: + type: array + description: >- + *Create-Only* Array of project gids. In order to change projects on + an + existing task use `addProject` and `removeProject`. + items: + type: string + description: >- + Gid of a project. + example: + - '12345' + tags: + type: array + description: >- + *Create-Only* Array of tag gids. In order to change tags on an + existing task use `addTag` and `removeTag`. + items: + type: string + description: >- + Gid of a tag. + example: + - '12345' + workspace: + type: string + readOnly: false + x-env-variable: true + description: >- + Gid of a workspace. + example: '12345' + TaskResponse: + allOf: + - $ref: '#/components/schemas/TaskBase' + - type: object + properties: + assignee: + allOf: + - $ref: '#/components/schemas/UserCompact' + - nullable: true + assignee_section: + allOf: + - $ref: '#/components/schemas/SectionCompact' + - type: object + nullable: true + description: >- + The *assignee section* is a subdivision of a project that groups + tasks together in the assignee's "My Tasks" list. It can either + be a + header above a list of tasks in a list view or a column in a board + view of "My Tasks." + + The `assignee_section` property will be returned in the response + only + if the request was sent by the user who is the assignee of the + task. + Note that you can only write to `assignee_section` with the gid + of an + existing section visible in the user's "My Tasks" list. + custom_fields: + description: >- + Array of custom field values applied to the task. These + represent the custom field values recorded on this project for a + particular custom field. For example, these custom field values + will contain an `enum_value` property for custom fields of type + `enum`, a `text_value` property for custom fields of type + `text`, and so on. Please note that the `gid` returned on each + custom field value *is identical* to the `gid` of the custom field, + which allows referencing the custom field metadata through the + `/custom_fields/custom_field-gid` endpoint. + type: array + items: + $ref: '#/components/schemas/CustomFieldResponse' + readOnly: true + followers: + description: Array of users following this task. + type: array + readOnly: true + items: + $ref: '#/components/schemas/UserCompact' + parent: + allOf: + - $ref: '#/components/schemas/TaskCompact' + - type: object + readOnly: true + description: >- + The parent of this task, or `null` if this is not a subtask. + This property cannot be modified using a PUT request but you + can change it with the `setParent` endpoint. You can create + subtasks by using the subtasks endpoint. + nullable: true + projects: + description: >- + *Create-only.* Array of projects this task is associated with. + At task creation time, this array can be used to add the task to + many projects at once. After task creation, these associations can + be modified using the addProject and removeProject endpoints. + type: array + readOnly: true + items: + $ref: '#/components/schemas/ProjectCompact' + tags: + description: >- + Array of tags associated with this task. In order to change tags on + an + existing task use `addTag` and `removeTag`. + type: array + readOnly: true + items: + $ref: '#/components/schemas/TagCompact' + example: + - gid: '59746' + name: Grade A + workspace: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + readOnly: true + description: >- + *Create-only*. The workspace this task is associated with. + Once created, task cannot be moved to a different workspace. + This attribute can only be specified at creation time. + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/resource/123456789/list + TaskSetParentRequest: + type: object + properties: + parent: + description: >- + The new parent of the task, or `null` for no parent. + type: string + example: '987654' + insert_after: + description: >- + A subtask of the parent to insert the task after, or `null` to + insert at the beginning of the list. + type: string + example: 'null' + insert_before: + description: >- + A subtask of the parent to insert the task before, or `null` to + insert at the end of the list. + type: string + example: '124816' + required: + - parent + TeamAddUserRequest: + type: object + description: A user identification object for specification with the addUser/removeUser + endpoints. + properties: + user: + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + type: string + example: '12345' + TeamBase: + $ref: '#/components/schemas/TeamCompact' + TeamCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *team* is used to group related projects and people together within + an organization. Each project in an organization is associated with a + team. + x-docs-overrides: + properties.resource_type.example: team + properties: + name: + description: The name of the team. + type: string + example: Marketing + TeamMembershipBase: + $ref: '#/components/schemas/TeamMembershipCompact' + TeamMembershipCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + This object represents a user's connection to a team. + x-docs-overrides: + properties.resource_type.example: team_membership + properties: + user: + $ref: '#/components/schemas/UserCompact' + team: + $ref: '#/components/schemas/TeamCompact' + is_guest: + type: boolean + description: >- + Describes if the user is a guest in the team. + example: false + is_limited_access: + type: boolean + readOnly: true + description: >- + Describes if the user has limited access to the team. + example: false + is_admin: + type: boolean + description: >- + Describes if the user is a team admin. + example: false + TeamMembershipResponse: + $ref: '#/components/schemas/TeamMembershipBase' + TeamRemoveUserRequest: + type: object + description: A user identification object for specification with the addUser/removeUser + endpoints. + properties: + user: + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + type: string + example: '12345' + TeamRequest: + allOf: + - $ref: '#/components/schemas/TeamBase' + - type: object + properties: + description: + description: > + The description of the team. + type: string + example: All developers should be members of this team. + html_description: + description: > + The description of the team with formatting as HTML. + type: string + example: >- + All developers should be members of this + team. + organization: + type: string + description: > + The organization/workspace the team belongs to. This must be the same + organization you are in and cannot be changed once set. + example: '123456789' + visibility: + description: > + The visibility of the team to users in the same organization + type: string + enum: + - secret + - request_to_join + - public + edit_team_name_or_description_access_level: + description: > + Controls who can edit team name and description + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + edit_team_visibility_or_trash_team_access_level: + description: > + Controls who can edit team visibility and trash teams + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + member_invite_management_access_level: + description: > + Controls who can accept or deny member invites for a given team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + guest_invite_management_access_level: + description: > + Controls who can accept or deny guest invites for a given team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + join_request_management_access_level: + description: > + Controls who can accept or deny join team requests for a Membership + by Request team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + team_member_removal_access_level: + description: > + Controls who can remove team members + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + TeamResponse: + allOf: + - $ref: '#/components/schemas/TeamBase' + - type: object + properties: + description: + description: > + [Opt + In](/docs/inputoutput-options). + The description of the team. + type: string + example: All developers should be members of this team. + html_description: + description: > + [Opt + In](/docs/inputoutput-options). + The description of the team with formatting as HTML. + type: string + example: >- + All developers should be members of this + team. + organization: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + description: | + The organization/workspace the team belongs to. + permalink_url: + type: string + readOnly: true + description: >- + A url that points directly to the object within Asana. + example: https://app.asana.com/0/resource/123456789/list + visibility: + description: > + The visibility of the team to users in the same organization + type: string + enum: + - secret + - request_to_join + - public + edit_team_name_or_description_access_level: + description: > + Controls who can edit team name and description + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + edit_team_visibility_or_trash_team_access_level: + description: > + Controls who can edit team visibility and trash teams + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + member_invite_management_access_level: + description: > + Controls who can accept or deny member invites for a given team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + guest_invite_management_access_level: + description: > + Controls who can accept or deny guest invites for a given team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + join_request_management_access_level: + description: > + Controls who can accept or deny join team requests for a Membership + by Request team + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + team_member_removal_access_level: + description: > + Controls who can remove team members + type: string + readOnly: true + enum: + - all_team_members + - only_team_admins + TemplateRole: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + name: + type: string + description: >- + Name of the template role. + example: Designer + TimePeriodBase: + allOf: + - $ref: '#/components/schemas/TimePeriodCompact' + - type: object + properties: + parent: + allOf: + - $ref: '#/components/schemas/TimePeriodCompact' + - nullable: true + TimePeriodCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + x-docs-overrides: + properties.resource_type.example: time_period + properties: + end_on: + type: string + description: >- + The localized end date of the time period in `YYYY-MM-DD` format. + example: '2019-09-14' + start_on: + type: string + description: >- + The localized start date of the time period in `YYYY-MM-DD` format. + example: '2019-09-13' + period: + type: string + description: >- + The cadence and index of the time period. The value is one of: `FY`, + `H1`, `H2`, `Q1`, `Q2`, `Q3`, or `Q4`. + enum: + - FY + - H1 + - H2 + - Q1 + - Q2 + - Q3 + - Q4 + example: Q1 + display_name: + type: string + description: >- + A string representing the cadence code and the fiscal year. + example: Q1 FY22 + TimePeriodResponse: + $ref: '#/components/schemas/TimePeriodBase' + UserBase: + $ref: '#/components/schemas/UserCompact' + UserCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *user* object represents an account in Asana that can be given + access to various workspaces, projects, and tasks. + x-docs-overrides: + properties.resource_type.example: user + properties: + name: + type: string + description: >- + *Read-only except when same user as requester*. The user’s name. + example: Greg Sanchez + UserRequest: + $ref: '#/components/schemas/UserBase' + UserBaseResponse: + allOf: + - $ref: '#/components/schemas/UserBase' + - type: object + properties: + email: + type: string + format: email + readOnly: true + description: The user's email address. + example: gsanchez@example.com + photo: + type: object + nullable: true + properties: + image_21x21: + type: string + format: uri + image_27x27: + type: string + format: uri + image_36x36: + type: string + format: uri + image_60x60: + type: string + format: uri + image_128x128: + type: string + format: uri + image_1024x1024: + type: string + format: uri + readOnly: true + description: >- + A map of the user’s profile photo in various sizes, or null if no + photo is set. Sizes provided are 21, 27, 36, 60, 128, and 1024. All + images + are in PNG format, except for 1024 (which is in JPEG format). + example: + image_21x21: https://... + image_27x27: https://... + image_36x36: https://... + image_60x60: https://... + image_128x128: https://... + image_1024x1024: https://... + UserResponse: + allOf: + - $ref: '#/components/schemas/UserBaseResponse' + - type: object + properties: + workspaces: + description: >- + Workspaces and organizations this user may access. + + Note\: The API will only return workspaces and organizations that + also contain the authenticated user. + readOnly: true + type: array + items: + $ref: '#/components/schemas/WorkspaceCompact' + UserTaskListBase: + $ref: '#/components/schemas/UserTaskListCompact' + UserTaskListCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A user task list represents the tasks assigned to a particular user. + It provides API access to a user’s [My Tasks](https://asana.com/guide/help/fundamentals/my-tasks) + view in Asana. + x-docs-overrides: + properties.resource_type.example: user_task_list + properties: + name: + description: The name of the user task list. + type: string + example: My Tasks in My Workspace + owner: + description: >- + The owner of the user task list, i.e. the person whose My + Tasks is represented by this resource. + readOnly: true + allOf: + - $ref: '#/components/schemas/UserCompact' + workspace: + description: The workspace in which the user task list is located. + readOnly: true + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + UserTaskListRequest: + $ref: '#/components/schemas/UserTaskListBase' + UserTaskListResponse: + $ref: '#/components/schemas/UserTaskListBase' + WebhookCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + Webhook objects represent the state of an active subscription for a + server to be updated with information from Asana. This schema + represents the subscription itself, not the objects that are sent to + the server. For information on those please refer to the + [event](/reference/events) schema. + x-docs-overrides: + properties.resource_type.example: webhook + properties: + active: + description: >- + If true, the webhook will send events - if false it is considered + inactive and will not generate events. + type: boolean + readOnly: true + example: false + resource: + $ref: '#/components/schemas/AsanaNamedResource' + target: + description: The URL to receive the HTTP POST. + type: string + format: uri + readOnly: true + example: https://example.com/receive-webhook/7654 + WebhookFilter: + type: object + description: >- + A WebhookFilter can be passed on creation of a webhook in order to filter + the types of actions that trigger delivery of an + [event](/reference/events) + properties: + resource_type: + type: string + description: >- + The type of the resource which created the event when modified; for + example, to filter to changes on regular tasks this field should be + set to `task`. + example: task + resource_subtype: + description: >- + The resource subtype of the resource that the filter applies to. This + should be set to the same value as is returned on the + `resource_subtype` field on the resources themselves. + type: string + example: milestone + action: + type: string + description: >- + The type of change on the **resource** to pass through the filter. + For more information refer to `Event.action` in the + [event](/reference/events) schema. This can be one of + `changed`, `added`, `removed`, `deleted`, and `undeleted` depending + on the nature of what has occurred on the resource. + example: changed + fields: + type: array + description: >- + *Conditional.* A whitelist of fields for events which will pass the + filter when the resource is changed. These can be any combination of + the fields on the resources themselves. This field is only valid for + `action` of type `changed` + items: + type: string + example: + - due_at + - due_on + - dependencies + WebhookRequest: + type: object + properties: + resource: + description: >- + A resource ID to subscribe to. Many Asana resources are valid to + create webhooks on, but higher-level resources require filters. + type: string + example: '12345' + target: + description: >- + The URL to receive the HTTP POST. The full URL will be used to + deliver events from this webhook (including parameters) which allows + encoding of application-specific state when the webhook is created. + type: string + format: uri + example: >- + https://example.com/receive-webhook/7654?app_specific_param=app_specific_value + filters: + type: array + description: >- + An array of WebhookFilter objects to specify a whitelist of filters + to apply to events from this webhook. If a webhook event passes any + of the filters the event will be delivered; otherwise no event will + be sent to the receiving server. + items: + allOf: + - $ref: '#/components/schemas/WebhookFilter' + - description: >- + A set of filters to specify a whitelist for what types of + events will be delivered. + - type: object + required: + - resource + - target + WebhookResponse: + allOf: + - $ref: '#/components/schemas/WebhookCompact' + - type: object + properties: + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + last_failure_at: + description: >- + The timestamp when the webhook last received an error when sending + an event to the target. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + last_failure_content: + description: >- + The contents of the last error response sent to the webhook when + attempting to deliver events to the target. + type: string + readOnly: true + example: 500 Server Error\n\nCould not complete the request + last_success_at: + description: >- + The timestamp when the webhook last successfully sent an event to + the target. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + filters: + description: >- + Whitelist of filters to apply to events from this webhook. If a + webhook event passes any of the filters the event will be + delivered; otherwise no event will be sent to the receiving server. + type: array + items: + allOf: + - $ref: '#/components/schemas/WebhookFilter' + - description: A set of filters to specify a whitelist for what + types of events will be delivered. + - type: object + WebhookUpdateRequest: + type: object + properties: + filters: + type: array + description: >- + An array of WebhookFilter objects to specify a whitelist of filters + to apply to events from this webhook. If a webhook event passes any + of the filters the event will be delivered; otherwise no event will + be sent to the receiving server. + items: + allOf: + - $ref: '#/components/schemas/WebhookFilter' + - description: >- + A set of filters to specify a whitelist for what types of + events will be delivered. + - type: object + WorkspaceAddUserRequest: + type: object + description: A user identification object for specification with the addUser/removeUser + endpoints. + properties: + user: + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + type: string + example: '12345' + WorkspaceBase: + $ref: '#/components/schemas/WorkspaceCompact' + WorkspaceCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + A *workspace* is the highest-level organizational unit in Asana. All + projects and tasks have an associated workspace. + x-docs-overrides: + properties.resource_type.example: workspace + properties: + name: + description: The name of the workspace. + type: string + example: My Company Workspace + WorkspaceMembershipBase: + $ref: '#/components/schemas/WorkspaceMembershipCompact' + WorkspaceMembershipCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: >- + This object determines if a user is a member of a workspace. + x-docs-overrides: + properties.resource_type.example: workspace_membership + properties: + user: + $ref: '#/components/schemas/UserCompact' + workspace: + $ref: '#/components/schemas/WorkspaceCompact' + WorkspaceMembershipRequest: + $ref: '#/components/schemas/WorkspaceMembershipBase' + WorkspaceMembershipResponse: + allOf: + - $ref: '#/components/schemas/WorkspaceMembershipBase' + - type: object + properties: + user_task_list: + $ref: '#/components/schemas/UserTaskListResponse' + description: >- + The user's "My Tasks" in the workspace. + readOnly: true + is_active: + type: boolean + readOnly: true + description: >- + Reflects if this user still a member of the workspace. + is_admin: + type: boolean + readOnly: true + description: >- + Reflects if this user is an admin of the workspace. + is_guest: + type: boolean + readOnly: true + description: >- + Reflects if this user is a guest of the workspace. + vacation_dates: + type: object + readOnly: true + nullable: true + description: >- + Contains keys `start_on` and `end_on` for the vacation dates for the + user in this workspace. + If `start_on` is null, the entire `vacation_dates` object will be + null. + If `end_on` is before today, the entire `vacation_dates` object will + be null. + properties: + start_on: + description: The day on which the user's vacation in this workspace + starts. This is a date with `YYYY-MM-DD` format. + type: string + example: '2022-11-05' + end_on: + description: The day on which the user's vacation in this workspace + ends, or null if there is no end date. This is a date with `YYYY-MM-DD` + format. + nullable: true + type: string + example: '2022-11-07' + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + WorkspaceRemoveUserRequest: + type: object + description: A user identification object for specification with the addUser/removeUser + endpoints. + properties: + user: + description: >- + A string identifying a user. This can either be the string "me", an email, + or the gid of a user. + type: string + example: '12345' + WorkspaceRequest: + $ref: '#/components/schemas/WorkspaceBase' + WorkspaceResponse: + allOf: + - $ref: '#/components/schemas/WorkspaceBase' + - type: object + properties: + email_domains: + description: The email domains that are associated with this workspace. + type: array + items: + type: string + format: uri + example: + - asana.com + is_organization: + description: Whether the workspace is an *organization*. + type: boolean + example: false + GoalMembershipBase: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + description: This object represents a user's connection to a goal. + x-docs-overrides: + properties.resource_type.example: membership + properties: + resource_type: + description: The base type of this resource. + type: string + example: membership + resource_subtype: + type: string + readOnly: true + description: The type of membership. + example: goal_membership + member: + $ref: '#/components/schemas/MemberCompact' + parent: + allOf: + - $ref: '#/components/schemas/GoalCompact' + - type: object + readOnly: true + role: + type: string + description: >- + *Deprecated: Describes if the member is a commenter or editor in goal.* + enum: + - commenter + - editor + example: editor + access_level: + type: string + description: Describes if member is commenter or editor in goal. This + is preferred over role + enum: + - commenter + - editor + example: editor + goal: + allOf: + - $ref: '#/components/schemas/GoalCompact' + - type: object + readOnly: true + deprecated: true + description: >- + *Deprecated: new integrations should prefer the `parent` + field.* A *Goal* is an object in the goal-tracking system + that helps your organization drive measurable results. + GoalMembershipCompact: + allOf: + - $ref: '#/components/schemas/GoalMembershipBase' + - type: object + properties: + is_commenter: + type: boolean + deprecated: true + readOnly: true + description: >- + *Deprecated: new integrations should prefer the `role` field.* + Describes if the member is comment only in goal. + example: false + is_editor: + type: boolean + deprecated: true + readOnly: true + description: >- + *Deprecated: new integrations should prefer the `role` field.* + Describes if the member is editor in goal. + example: false + GoalMembershipResponse: + allOf: + - $ref: '#/components/schemas/GoalMembershipBase' + - type: object + properties: + user: + allOf: + - $ref: '#/components/schemas/UserCompact' + - type: object + deprecated: true + readOnly: true + description: >- + *Deprecated: new integrations should prefer the `member` + field.* A *user* object represents an account in Asana that can + be given + access to various workspaces, projects, and tasks. + workspace: + allOf: + - $ref: '#/components/schemas/WorkspaceCompact' + - type: object + deprecated: true + readOnly: true + description: >- + *Deprecated:* A *workspace* is the highest-level organizational + unit in Asana. All + projects and tasks have an associated workspace. + MembershipUpdateRequest: + type: object + properties: + access_level: + description: The role given to the member. Can be `editor` or `commenter`. + type: string + example: editor + MembershipRequest: + type: object + properties: + is_active: + description: >- + *Optional*. Denotes if a member is active. Applies to all memberships + type: boolean + example: true + CreateMembershipRequest: + allOf: + - $ref: '#/components/schemas/MembershipRequest' + - type: object + properties: + member: + description: The gid of the user or team. + type: string + example: 12345 + parent: + description: The gid of the `goal` or `project` to add the member to. + type: string + example: '987654' + role: + description: >- + The role given to the member. Optional argument, will default to `commenter` + for goals and the default project role for projects. + Can be `editor` or `commenter` for goals. Can be `admin`,`editor` + or `commenter` for projects. + type: string + example: editor + MembershipResponse: + anyOf: + - $ref: '#/components/schemas/GoalMembershipResponse' + - $ref: '#/components/schemas/ProjectMembershipCompactResponse' + UpdateTimeTrackingEntryRequest: + type: object + properties: + duration_minutes: + description: >- + *Optional*. Time in minutes tracked by the entry + type: integer + example: 12 + entered_on: + description: >- + *Optional*. The day that this entry is logged on. Defaults to today if + no day specified + type: string + format: date + example: '2023-03-19' + CreateTimeTrackingEntryRequest: + type: object + properties: + duration_minutes: + description: >- + Time in minutes tracked by the entry. Must be greater than 0 + type: integer + example: 12 + entered_on: + description: >- + *Optional*. The day that this entry is logged on. Defaults to today if + not specified + type: string + format: date + example: '2023-03-19' + TimeTrackingEntryCompact: + allOf: + - $ref: '#/components/schemas/AsanaResource' + - type: object + properties: + duration_minutes: + description: >- + Time in minutes tracked by the entry. + type: integer + example: 12 + entered_on: + description: >- + The day that this entry is logged on. + type: string + format: date + example: '2015-03-14' + created_by: + $ref: '#/components/schemas/UserCompact' + readOnly: true + TimeTrackingEntryBase: + allOf: + - $ref: '#/components/schemas/TimeTrackingEntryCompact' + - type: object + properties: + task: + $ref: '#/components/schemas/TaskCompact' + readOnly: true + created_at: + description: The time at which this resource was created. + type: string + format: date-time + readOnly: true + example: '2012-02-22T02:06:58.147Z' + securitySchemes: + personalAccessToken: + type: http + description: >- + A personal access token allows access to the api for the user who + created it. This should be kept a secret and be treated like a + password. + scheme: bearer + oauth2: + type: oauth2 + description: >- + We require that applications designed to access the Asana API on behalf + of multiple users implement OAuth 2.0. + + Asana supports the Authorization Code Grant flow. + flows: + authorizationCode: + authorizationUrl: https://app.asana.com/-/oauth_authorize + tokenUrl: https://app.asana.com/-/oauth_token + refreshUrl: https://app.asana.com/-/oauth_token + scopes: + default: >- + Provides access to all endpoints documented in our API reference. + If no scopes are requested, this scope is assumed by default. + openid: >- + Provides access to OpenID Connect ID tokens and the OpenID Connect + user info endpoint. + email: >- + Provides access to the user’s email through the OpenID Connect + user info endpoint. + profile: >- + Provides access to the user’s name and profile photo through the + OpenID Connect user info endpoint. +paths: + /attachments/{attachment_gid}: + parameters: + - $ref: '#/components/parameters/attachment_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get an attachment + description: Get the full record for a single attachment. + tags: + - Attachments + operationId: getAttachment + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - connected_to_app + - created_at + - download_url + - host + - name + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permanent_url + - resource_subtype + - size + - view_url + schema: + type: array + items: + type: string + enum: + - connected_to_app + - created_at + - download_url + - host + - name + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permanent_url + - resource_subtype + - size + - view_url + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for a single attachment. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AttachmentResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 424: + $ref: '#/components/responses/TooManyRequests' + 500: + $ref: '#/components/responses/InternalServerError' + 501: + $ref: '#/components/responses/BadGateway' + 503: + $ref: '#/components/responses/ServiceUnavailable' + 504: + $ref: '#/components/responses/GatewayTimeout' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Attachment result = client.attachments.getAttachment(attachmentGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let attachmentsApiInstance = new Asana.AttachmentsApi(); + let attachment_gid = "12345"; // String | Globally unique identifier for the attachment. + let opts = { + 'opt_fields': "connected_to_app,created_at,download_url,host,name,parent,parent.created_by,parent.name,parent.resource_subtype,permanent_url,resource_subtype,size,view_url" + }; + attachmentsApiInstance.getAttachment(attachment_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.attachments.getAttachment(attachmentGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + attachments_api_instance = asana.AttachmentsApi(api_client) + attachment_gid = "12345" # str | Globally unique identifier for the attachment. + opts = { + 'opt_fields': "connected_to_app,created_at,download_url,host,name,parent,parent.created_by,parent.name,parent.resource_subtype,permanent_url,resource_subtype,size,view_url", # 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: + # Get an attachment + api_response = attachments_api_instance.get_attachment(attachment_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling AttachmentsApi->get_attachment: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.attachments.get_attachment(attachment_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + attachments->getAttachment($attachment_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.attachments.get_attachment(attachment_gid: 'attachment_gid', + param: "value", param: "value", options: {pretty: true}) + delete: + summary: Delete an attachment + description: |- + Deletes a specific, existing attachment. + + Returns an empty data record. + tags: + - Attachments + operationId: deleteAttachment + responses: + 200: + description: Successfully deleted the specified attachment. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.attachments.deleteAttachment(attachmentGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let attachmentsApiInstance = new Asana.AttachmentsApi(); + let attachment_gid = "12345"; // String | Globally unique identifier for the attachment. + + attachmentsApiInstance.deleteAttachment(attachment_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.attachments.deleteAttachment(attachmentGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + attachments_api_instance = asana.AttachmentsApi(api_client) + attachment_gid = "12345" # str | Globally unique identifier for the attachment. + + + try: + # Delete an attachment + api_response = attachments_api_instance.delete_attachment(attachment_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling AttachmentsApi->delete_attachment: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.attachments.delete_attachment(attachment_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + attachments->deleteAttachment($attachment_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.attachments.delete_attachment(attachment_gid: 'attachment_gid', + options: {pretty: true}) + /attachments: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get attachments from an object + description: >- + Returns the compact records for all attachments on the object. + + + There are three possible `parent` values for this request: `project`, `project_brief`, + and `task`. + For a project, an attachment refers to a file uploaded to the "Key resources" + section in the project + Overview. For a project brief, an attachment refers to inline files in the + project brief itself. For + a task, an attachment refers to a file directly associated to that task. + + + Note that within the Asana app, inline images in the task description do not + appear in the index of image + thumbnails nor as stories in the task. However, requests made to `GET /attachments` + for a task will return + all of the images in the task, including inline images. + tags: + - Attachments + operationId: getAttachmentsForObject + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: parent + required: true + in: query + description: >- + Globally unique identifier for object to fetch statuses from. Must be + a GID + for a `project`, `project_brief`, or `task`. + schema: + type: string + example: '159874' + - name: opt_fields + in: query + description: 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. + required: false + example: + - connected_to_app + - created_at + - download_url + - host + - name + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permanent_url + - resource_subtype + - size + - uri + - view_url + schema: + type: array + items: + type: string + enum: + - connected_to_app + - created_at + - download_url + - host + - name + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permanent_url + - resource_subtype + - size + - uri + - view_url + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the specified object's attachments. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/AttachmentCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.attachments.getAttachmentsForObject(parent) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let attachmentsApiInstance = new Asana.AttachmentsApi(); + let parent = "159874"; // String | Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "connected_to_app,created_at,download_url,host,name,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permanent_url,resource_subtype,size,uri,view_url" + }; + attachmentsApiInstance.getAttachmentsForObject(parent, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.attachments.getAttachmentsForObject({param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + attachments_api_instance = asana.AttachmentsApi(api_client) + parent = "159874" # str | Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`. + 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': "connected_to_app,created_at,download_url,host,name,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permanent_url,resource_subtype,size,uri,view_url", # 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: + # Get attachments from an object + api_response = attachments_api_instance.get_attachments_for_object(parent, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling AttachmentsApi->get_attachments_for_object: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.attachments.get_attachments_for_object({'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + attachments->getAttachmentsForObject(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.attachments.get_attachments_for_object(parent: ''parent_example'', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Upload an attachment + description: |- + Upload an attachment. + + This method uploads an attachment on an object and returns the compact + record for the created attachment object. This is possible by either: + + - Providing the URL of the external resource being attached, or + - Downloading the file content first and then uploading it as any other attachment. Note that it is not possible to attach + files from third party services such as Dropbox, Box, Vimeo & Google Drive via the API + + The 100MB size limit on attachments in Asana is enforced on this endpoint. + + This endpoint expects a multipart/form-data encoded request containing the full contents of the file to be uploaded. + + Requests made should follow the HTTP/1.1 specification that line + terminators are of the form `CRLF` or `\r\n` outlined + [here](http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01#Basic-Rules) in order for the server to reliably and properly handle the request. + tags: + - Attachments + operationId: createAttachmentForObject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - connected_to_app + - created_at + - download_url + - host + - name + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permanent_url + - resource_subtype + - size + - view_url + schema: + type: array + items: + type: string + enum: + - connected_to_app + - created_at + - download_url + - host + - name + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permanent_url + - resource_subtype + - size + - view_url + style: form + explode: false + requestBody: + description: |- + The file you want to upload. + + *Note when using curl:* + + Be sure to add an `‘@’` before the file path, and use the `--form` + option instead of the `-d` option. + + When uploading PDFs with curl, force the content-type to be pdf by + appending the content type to the file path: `--form + "file=@file.pdf;type=application/pdf"`. + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AttachmentRequest' + responses: + 200: + description: Successfully uploaded the attachment to the parent object. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AttachmentResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Attachment result = client.attachments.createAttachmentForObject(file, + parent, url, name) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + const fs = require("fs"); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let attachmentsApiInstance = new Asana.AttachmentsApi(); + let opts = { + 'resource_subtype': "external", + 'file': fs.createReadStream("file_example"), + 'parent': "parent_example", + 'url': "url_example", + 'name': "name_example", + 'connect_to_app': true, + 'opt_fields': "connected_to_app,created_at,download_url,host,name,parent,parent.created_by,parent.name,parent.resource_subtype,permanent_url,resource_subtype,size,view_url" + }; + attachmentsApiInstance.createAttachmentForObject(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + attachments_api_instance = asana.AttachmentsApi(api_client) + opts = { + 'resource_subtype': "external", # str | + 'file': "file_example", # str | + 'parent': "parent_example", # str | + 'url': "url_example", # str | + 'name': "name_example", # str | + 'connect_to_app': True, # bool | + 'opt_fields': "connected_to_app,created_at,download_url,host,name,parent,parent.created_by,parent.name,parent.resource_subtype,permanent_url,resource_subtype,size,view_url", # 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: + # Upload an attachment + api_response = attachments_api_instance.create_attachment_for_object(opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling AttachmentsApi->create_attachment_for_object: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.attachments.create_attachment_for_object({'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + attachments->createAttachmentForObject(array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.attachments.create_attachment_for_object(field: "value", + field: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/audit_log_events: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/audit_log_start_at' + - $ref: '#/components/parameters/audit_log_end_at' + - $ref: '#/components/parameters/audit_log_event_type' + - $ref: '#/components/parameters/audit_log_actor_type' + - $ref: '#/components/parameters/audit_log_actor_gid' + - $ref: '#/components/parameters/audit_log_resource_gid' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get audit log events + description: >- + Retrieve the audit log events that have been captured in your domain. + + + This endpoint will return a list of [AuditLogEvent](/reference/audit-log-api) + objects, + sorted by creation time in ascending order. Note that the Audit Log API captures + events + from October 8th, 2021 and later. Queries for events before this date will + not return + results. + + + There are a number of query parameters (below) that can be used to filter + the set of + [AuditLogEvent](/reference/audit-log-api) objects that are returned in the + response. Any + combination of query parameters is valid. When no filters are provided, all + of the events + that have been captured in your domain will match. + + + The list of events will always be [paginated](/docs/pagination). The default + limit + is 1000 events. The next set of events can be retrieved using the `offset` + from the + previous response. If there are no events that match the provided filters + in your domain, the endpoint will return `null` for the `next_page` field. + Querying + again with the same filters may return new events if they were captured after + the + last request. Once a response includes a `next_page` with an `offset`, subsequent + requests can be made with the latest `offset` to poll for new events that + match + the provided filters. + + + *Note: If the filters you provided match events in your domain and `next_page` + is + present in the response, we will continue to send `next_page` on subsequent + requests + even when there are no more events that match the filters. This was put in + place so + that you can implement an audit log stream that will return future events + that match + these filters. If you are not interested in future events that match the filters + you + have defined, you can rely on checking empty `data` response for the end of + current + events that match your filters.* + + + When no `offset` is provided, the response will begin with the oldest events + that match the provided filters. It is important to note that + [AuditLogEvent](/reference/audit-log-api) objects will be permanently deleted + from our systems + after 90 days. If you wish to keep a permanent record of these events, we + recommend using a + SIEM tool to ingest and store these logs. + tags: + - Audit log API + operationId: getAuditLogEvents + responses: + 200: + description: >- + AuditLogEvents were successfully retrieved. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/AuditLogEvent' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.auditlogapi.getAuditLogEvents(workspaceGid, + resourceGid, actorGid, actorType, eventType, endAt, startAt) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let auditLogApiApiInstance = new Asana.AuditLogAPIApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'start_at': "2013-10-20T19:20:30+01:00", + 'end_at': "2013-10-20T19:20:30+01:00", + 'event_type': "event_type_example", + 'actor_type': "actor_type_example", + 'actor_gid': "actor_gid_example", + 'resource_gid': "resource_gid_example", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9" + }; + auditLogApiApiInstance.getAuditLogEvents(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.auditlogapi.getAuditLogEvents(workspaceGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + audit_log_api_api_instance = asana.AuditLogAPIApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'start_at': '2013-10-20T19:20:30+01:00', # datetime | Filter to events created after this time (inclusive). + 'end_at': '2013-10-20T19:20:30+01:00', # datetime | Filter to events created before this time (exclusive). + 'event_type': "event_type_example", # str | Filter to events of this type. Refer to the [supported audit log events](/docs/audit-log-events#supported-audit-log-events) for a full list of values. + 'actor_type': "actor_type_example", # str | Filter to events with an actor of this type. This only needs to be included if querying for actor types without an ID. If `actor_gid` is included, this should be excluded. + 'actor_gid': "actor_gid_example", # str | Filter to events triggered by the actor with this ID. + 'resource_gid': "resource_gid_example", # str | Filter to events with this resource ID. + '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.' + } + + try: + # Get audit log events + api_response = audit_log_api_api_instance.get_audit_log_events(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling AuditLogAPIApi->get_audit_log_events: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.audit_log_api.get_audit_log_events(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + auditlogapi->getAuditLogEvents($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.audit_log_api.get_audit_log_events(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + /batch: + parameters: + - $ref: '#/components/parameters/pretty' + post: + summary: Submit parallel requests + description: |- + Make multiple requests in parallel to Asana's API. + tags: + - Batch API + operationId: createBatchRequest + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - body + - headers + - status_code + schema: + type: array + items: + type: string + enum: + - body + - headers + - status_code + style: form + explode: false + requestBody: + description: >- + The requests to batch together via the Batch API. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/BatchRequest' + responses: + 200: + description: Successfully completed the requested batch API operations. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/BatchResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.batchapi.createBatchRequest() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let batchApiApiInstance = new Asana.BatchAPIApi(); + let body = {"data": {"": "", "": "",}}; // Object | The requests to batch together via the Batch API. + let opts = { + 'opt_fields': "body,headers,status_code" + }; + batchApiApiInstance.createBatchRequest(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.batchapi.createBatchRequest({field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + batch_api_api_instance = asana.BatchAPIApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The requests to batch together via the Batch API. + opts = { + 'opt_fields': "body,headers,status_code", # 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: + # Submit parallel requests + api_response = batch_api_api_instance.create_batch_request(body, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling BatchAPIApi->create_batch_request: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.batch_api.create_batch_request({'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + batchapi->createBatchRequest(array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.batch_api.create_batch_request(field: "value", field: + "value", options: {pretty: true}) + /projects/{project_gid}/custom_field_settings: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get a project's custom fields + description: >- + Returns a list of all of the custom fields settings on a project, in + compact form. Note that, as in all queries to collections which return + compact representation, `opt_fields` can be used to + include more data than is returned in the compact representation. See the + [documentation for input/output + options](https://developers.asana.com/docs/inputoutput-options) + for more information. + tags: + - Custom field settings + operationId: getCustomFieldSettingsForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - offset + - parent + - parent.name + - path + - project + - project.name + - uri + schema: + type: array + items: + type: string + enum: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - offset + - parent + - parent.name + - path + - project + - project.name + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved custom field settings objects for a project. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/CustomFieldSettingResponse' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.customfieldsettings.getCustomFieldSettingsForProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldSettingsApiInstance = new Asana.CustomFieldSettingsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,offset,parent,parent.name,path,project,project.name,uri" + }; + customFieldSettingsApiInstance.getCustomFieldSettingsForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfieldsettings.getCustomFieldSettingsForProject(projectGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_field_settings_api_instance = asana.CustomFieldSettingsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + 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': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.id_prefix,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,offset,parent,parent.name,path,project,project.name,uri", # 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: + # Get a project's custom fields + api_response = custom_field_settings_api_instance.get_custom_field_settings_for_project(project_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling CustomFieldSettingsApi->get_custom_field_settings_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_field_settings.get_custom_field_settings_for_project(project_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfieldsettings->getCustomFieldSettingsForProject($project_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_field_settings.get_custom_field_settings_for_project(project_gid: + 'project_gid', param: "value", param: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/custom_field_settings: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get a portfolio's custom fields + description: >- + Returns a list of all of the custom fields settings on a portfolio, in + compact form. + tags: + - Custom field settings + operationId: getCustomFieldSettingsForPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - offset + - parent + - parent.name + - path + - project + - project.name + - uri + schema: + type: array + items: + type: string + enum: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - offset + - parent + - parent.name + - path + - project + - project.name + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved custom field settings objects for a portfolio. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/CustomFieldSettingResponse' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.customfieldsettings.getCustomFieldSettingsForPortfolio(portfolioGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldSettingsApiInstance = new Asana.CustomFieldSettingsApi(); + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,offset,parent,parent.name,path,project,project.name,uri" + }; + customFieldSettingsApiInstance.getCustomFieldSettingsForPortfolio(portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfieldsettings.getCustomFieldSettingsForPortfolio(portfolioGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_field_settings_api_instance = asana.CustomFieldSettingsApi(api_client) + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + 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': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.id_prefix,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,offset,parent,parent.name,path,project,project.name,uri", # 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: + # Get a portfolio's custom fields + api_response = custom_field_settings_api_instance.get_custom_field_settings_for_portfolio(portfolio_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling CustomFieldSettingsApi->get_custom_field_settings_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_field_settings.get_custom_field_settings_for_portfolio(portfolio_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfieldsettings->getCustomFieldSettingsForPortfolio($portfolio_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_field_settings.get_custom_field_settings_for_portfolio(portfolio_gid: + 'portfolio_gid', param: "value", param: "value", options: {pretty: true}) + /custom_fields: + parameters: + - $ref: '#/components/parameters/pretty' + post: + summary: Create a custom field + description: |- + Creates a new custom field in a workspace. Every custom field is required + to be created in a specific workspace, and this workspace cannot be + changed once set. + + A custom field’s name must be unique within a workspace and not conflict + with names of existing task properties such as `Due Date` or `Assignee`. + A custom field’s type must be one of `text`, `enum`, `multi_enum`, `number`, + `date`, or `people`. + + Returns the full record of the newly created custom field. + tags: + - Custom fields + operationId: createCustomField + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + schema: + type: array + items: + type: string + enum: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + style: form + explode: false + requestBody: + description: The custom field object to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldRequest' + responses: + 201: + description: Custom field successfully created. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + CustomField result = client.customfields.createCustomField() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The custom field object to create. + let opts = { + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,resource_subtype,text_value,type" + }; + customFieldsApiInstance.createCustomField(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.createCustomField({field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The custom field object to create. + opts = { + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,id_prefix,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,representation_type,resource_subtype,text_value,type", # 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: + # Create a custom field + api_response = custom_fields_api_instance.create_custom_field(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->create_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.create_custom_field({'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->createCustomField(array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.create_custom_field(field: "value", field: + "value", options: {pretty: true}) + /custom_fields/{custom_field_gid}: + parameters: + - $ref: '#/components/parameters/custom_field_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a custom field + description: |- + Get the complete definition of a custom field’s metadata. + + Since custom fields can be defined for one of a number of types, and + these types have different data and behaviors, there are fields that are + relevant to a particular type. For instance, as noted above, enum_options + is only relevant for the enum type and defines the set of choices that + the enum could represent. The examples below show some of these + type-specific custom field definitions. + tags: + - Custom fields + operationId: getCustomField + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + schema: + type: array + items: + type: string + enum: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the complete definition of a custom field’s + metadata. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + CustomField result = client.customfields.getCustomField(customFieldGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let custom_field_gid = "12345"; // String | Globally unique identifier for the custom field. + let opts = { + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,resource_subtype,text_value,type" + }; + customFieldsApiInstance.getCustomField(custom_field_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.getCustomField(customFieldGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + custom_field_gid = "12345" # str | Globally unique identifier for the custom field. + opts = { + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,id_prefix,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,representation_type,resource_subtype,text_value,type", # 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: + # Get a custom field + api_response = custom_fields_api_instance.get_custom_field(custom_field_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->get_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.get_custom_field(custom_field_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->getCustomField($custom_field_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.get_custom_field(custom_field_gid: 'custom_field_gid', + param: "value", param: "value", options: {pretty: true}) + put: + summary: Update a custom field + description: >- + A specific, existing custom field can be updated by making a PUT request + on the URL for that custom field. Only the fields provided in the `data` + block will be updated; any unspecified fields will remain unchanged + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the custom field. + + A custom field’s `type` cannot be updated. + + An enum custom field’s `enum_options` cannot be updated with this + endpoint. + Instead see “Work With Enum Options” for information on how to update + `enum_options`. + + Locked custom fields can only be updated by the user who locked the field. + + Returns the complete updated custom field record. + tags: + - Custom fields + operationId: updateCustomField + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + schema: + type: array + items: + type: string + enum: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + style: form + explode: false + requestBody: + description: The custom field object with all updated properties. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldRequest' + responses: + 200: + description: The custom field was successfully updated. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + CustomField result = client.customfields.updateCustomField(customFieldGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let custom_field_gid = "12345"; // String | Globally unique identifier for the custom field. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,resource_subtype,text_value,type" + }; + customFieldsApiInstance.updateCustomField(custom_field_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.updateCustomField(customFieldGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + custom_field_gid = "12345" # str | Globally unique identifier for the custom field. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The custom field object with all updated properties. + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,id_prefix,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,people_value,people_value.name,precision,representation_type,resource_subtype,text_value,type", # 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: + # Update a custom field + api_response = custom_fields_api_instance.update_custom_field(custom_field_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->update_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.update_custom_field(custom_field_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->updateCustomField($custom_field_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.update_custom_field(custom_field_gid: + 'custom_field_gid', field: "value", field: "value", options: {pretty: + true}) + delete: + summary: Delete a custom field + description: >- + A specific, existing custom field can be deleted by making a DELETE + request on the URL for that custom field. + + Locked custom fields can only be deleted by the user who locked the field. + + Returns an empty data record. + tags: + - Custom fields + operationId: deleteCustomField + responses: + 200: + description: The custom field was successfully deleted. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.customfields.deleteCustomField(customFieldGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let custom_field_gid = "12345"; // String | Globally unique identifier for the custom field. + + customFieldsApiInstance.deleteCustomField(custom_field_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.deleteCustomField(customFieldGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + custom_field_gid = "12345" # str | Globally unique identifier for the custom field. + + + try: + # Delete a custom field + api_response = custom_fields_api_instance.delete_custom_field(custom_field_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->delete_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.delete_custom_field(custom_field_gid, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->deleteCustomField($custom_field_gid, + array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.delete_custom_field(custom_field_gid: + 'custom_field_gid', options: {pretty: true}) + /workspaces/{workspace_gid}/custom_fields: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get a workspace's custom fields + description: >- + Returns a list of the compact representation of all of the custom fields + in a workspace. + tags: + - Custom fields + operationId: getCustomFieldsForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - offset + - path + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + - uri + schema: + type: array + items: + type: string + enum: + - asana_created_field + - created_by + - created_by.name + - currency_code + - custom_label + - custom_label_position + - date_value + - date_value.date + - date_value.date_time + - description + - display_value + - enabled + - enum_options + - enum_options.color + - enum_options.enabled + - enum_options.name + - enum_value + - enum_value.color + - enum_value.enabled + - enum_value.name + - format + - has_notifications_enabled + - id_prefix + - is_formula_field + - is_global_to_workspace + - is_value_read_only + - multi_enum_values + - multi_enum_values.color + - multi_enum_values.enabled + - multi_enum_values.name + - name + - number_value + - offset + - path + - people_value + - people_value.name + - precision + - representation_type + - resource_subtype + - text_value + - type + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved all custom fields for the given workspace. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/CustomFieldResponse' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.customfields.getCustomFieldsForWorkspace(workspaceGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,offset,path,people_value,people_value.name,precision,resource_subtype,text_value,type,uri" + }; + customFieldsApiInstance.getCustomFieldsForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.getCustomFieldsForWorkspace(workspaceGid, {param: + "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + 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': "asana_created_field,created_by,created_by.name,currency_code,custom_label,custom_label_position,date_value,date_value.date,date_value.date_time,description,display_value,enabled,enum_options,enum_options.color,enum_options.enabled,enum_options.name,enum_value,enum_value.color,enum_value.enabled,enum_value.name,format,has_notifications_enabled,id_prefix,is_formula_field,is_global_to_workspace,is_value_read_only,multi_enum_values,multi_enum_values.color,multi_enum_values.enabled,multi_enum_values.name,name,number_value,offset,path,people_value,people_value.name,precision,representation_type,resource_subtype,text_value,type,uri", # 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: + # Get a workspace's custom fields + api_response = custom_fields_api_instance.get_custom_fields_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling CustomFieldsApi->get_custom_fields_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.get_custom_fields_for_workspace(workspace_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->getCustomFieldsForWorkspace($workspace_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.get_custom_fields_for_workspace(workspace_gid: + 'workspace_gid', param: "value", param: "value", options: {pretty: true}) + /custom_fields/{custom_field_gid}/enum_options: + parameters: + - $ref: '#/components/parameters/custom_field_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Create an enum option + description: >- + Creates an enum option and adds it to this custom field’s list of enum + options. A custom field can have at most 500 enum options (including + disabled options). By default new enum options are inserted at the end of + a custom field’s list. + + Locked custom fields can only have enum options added by the user who locked + the field. + + Returns the full record of the newly created enum option. + tags: + - Custom fields + operationId: createEnumOptionForCustomField + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - enabled + - name + schema: + type: array + items: + type: string + enum: + - color + - enabled + - name + style: form + explode: false + requestBody: + description: The enum option object to create. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOptionRequest' + responses: + 201: + description: Custom field enum option successfully created. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOption' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.customfields.createEnumOptionForCustomField(customFieldGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let custom_field_gid = "12345"; // String | Globally unique identifier for the custom field. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "color,enabled,name" + }; + customFieldsApiInstance.createEnumOptionForCustomField(custom_field_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.createEnumOptionForCustomField(customFieldGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + custom_field_gid = "12345" # str | Globally unique identifier for the custom field. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The enum option object to create. + 'opt_fields': "color,enabled,name", # 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: + # Create an enum option + api_response = custom_fields_api_instance.create_enum_option_for_custom_field(custom_field_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->create_enum_option_for_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.create_enum_option_for_custom_field(custom_field_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->createEnumOptionForCustomField($custom_field_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.create_enum_option_for_custom_field(custom_field_gid: + 'custom_field_gid', field: "value", field: "value", options: {pretty: + true}) + /custom_fields/{custom_field_gid}/enum_options/insert: + parameters: + - $ref: '#/components/parameters/custom_field_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Reorder a custom field's enum + description: >- + Moves a particular enum option to be either before or after another + specified enum option in the custom field. + + Locked custom fields can only be reordered by the user who locked the field. + tags: + - Custom fields + operationId: insertEnumOptionForCustomField + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - enabled + - name + schema: + type: array + items: + type: string + enum: + - color + - enabled + - name + style: form + explode: false + requestBody: + description: The enum option object to create. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOptionInsertRequest' + responses: + 200: + description: Custom field enum option successfully reordered. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOption' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.customfields.insertEnumOptionForCustomField(customFieldGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let custom_field_gid = "12345"; // String | Globally unique identifier for the custom field. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "color,enabled,name" + }; + customFieldsApiInstance.insertEnumOptionForCustomField(custom_field_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.insertEnumOptionForCustomField(customFieldGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + custom_field_gid = "12345" # str | Globally unique identifier for the custom field. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The enum option object to create. + 'opt_fields': "color,enabled,name", # 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: + # Reorder a custom field's enum + api_response = custom_fields_api_instance.insert_enum_option_for_custom_field(custom_field_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->insert_enum_option_for_custom_field: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.insert_enum_option_for_custom_field(custom_field_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->insertEnumOptionForCustomField($custom_field_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.insert_enum_option_for_custom_field(custom_field_gid: + 'custom_field_gid', field: "value", field: "value", options: {pretty: + true}) + /enum_options/{enum_option_gid}: + parameters: + - name: enum_option_gid + in: path + required: true + description: >- + Globally unique identifier for the enum option. + schema: + type: string + example: '124578' + - $ref: '#/components/parameters/pretty' + put: + summary: Update an enum option + description: >- + Updates an existing enum option. Enum custom fields require at least one + enabled enum option. + + Locked custom fields can only be updated by the user who locked the field. + + Returns the full record of the updated enum option. + tags: + - Custom fields + operationId: updateEnumOption + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - enabled + - name + schema: + type: array + items: + type: string + enum: + - color + - enabled + - name + style: form + explode: false + requestBody: + description: The enum option object to update + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOptionBase' + responses: + 200: + description: Successfully updated the specified custom field enum. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EnumOption' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.customfields.updateEnumOption(enumOptionGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let customFieldsApiInstance = new Asana.CustomFieldsApi(); + let enum_option_gid = "124578"; // String | Globally unique identifier for the enum option. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "color,enabled,name" + }; + customFieldsApiInstance.updateEnumOption(enum_option_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.customfields.updateEnumOption(enumOptionGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + custom_fields_api_instance = asana.CustomFieldsApi(api_client) + enum_option_gid = "124578" # str | Globally unique identifier for the enum option. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The enum option object to update + 'opt_fields': "color,enabled,name", # 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: + # Update an enum option + api_response = custom_fields_api_instance.update_enum_option(enum_option_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling CustomFieldsApi->update_enum_option: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.custom_fields.update_enum_option(enum_option_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + customfields->updateEnumOption($enum_option_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.custom_fields.update_enum_option(enum_option_gid: 'enum_option_gid', + field: "value", field: "value", options: {pretty: true}) + /events: + parameters: + - name: resource + in: query + required: true + description: >- + A resource ID to subscribe to. The resource can be a task, project, or goal. + schema: + type: string + example: '12345' + - name: sync + in: query + required: false + description: >- + A sync token received from the last request, or none on first sync. + Events will be returned from the point in time that the sync token was + generated. + + *Note: On your first request, omit the sync token. The response will + be the same as for an expired sync token, and will include a new valid + sync token.If the sync token is too old (which may happen from time to + time) the API will return a `412 Precondition Failed` error, and + include a fresh sync token in the response.* + schema: + type: string + example: de4774f6915eae04714ca93bb2f5ee81 + - $ref: '#/components/parameters/pretty' + get: + summary: Get events on a resource + description: |- + Returns the full record for all events that have occurred since the sync + token was created. + + A `GET` request to the endpoint `/[path_to_resource]/events` can be made in + lieu of including the resource ID in the data for the request. + + Asana limits a single sync token to 100 events. If more than 100 events exist + for a given resource, `has_more: true` will be returned in the response, indicating + that there are more events to pull. + + *Note: The resource returned will be the resource that triggered the + event. This may be different from the one that the events were requested + for. For example, a subscription to a project will contain events for + tasks contained within the project.* + tags: + - Events + operationId: getEvents + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - action + - change + - change.action + - change.added_value + - change.field + - change.new_value + - change.removed_value + - created_at + - parent + - parent.name + - resource + - resource.name + - type + - user + - user.name + schema: + type: array + items: + type: string + enum: + - action + - change + - change.action + - change.added_value + - change.field + - change.new_value + - change.removed_value + - created_at + - parent + - parent.name + - resource + - resource.name + - type + - user + - user.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved events. + content: + application/json: + schema: + type: object + description: >- + The full record for all events that have occurred since the sync + token was + created. + properties: + data: + type: array + items: + $ref: '#/components/schemas/EventResponse' + sync: + description: A sync token to be used with the next call to the + /events endpoint. + type: string + example: de4774f6915eae04714ca93bb2f5ee81 + has_more: + description: Indicates whether there are more events to pull. + type: boolean + example: true + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 412: + description: >- + The request is missing or has an expired sync token. + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + message: + type: string + readOnly: true + description: >- + Message providing more detail about the error + that occurred, if available. + example: Sync token invalid or too old. If you are attempting + to keep resources in sync, you must fetch the full dataset + for this query now and use the new sync token for the + next sync. + sync: + type: string + readOnly: true + description: A sync token to be used with the next call to the + /events endpoint. + example: de4774f6915eae04714ca93bb2f5ee81 + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.events.getEvents(sync, resource) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let eventsApiInstance = new Asana.EventsApi(); + let resource = "12345"; // String | A resource ID to subscribe to. The resource can be a task or project. + let opts = { + 'sync': "de4774f6915eae04714ca93bb2f5ee81", + 'opt_fields': "action,change,change.action,change.added_value,change.field,change.new_value,change.removed_value,created_at,parent,parent.name,resource,resource.name,type,user,user.name" + }; + eventsApiInstance.getEvents(resource, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.events.getEvents({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + events_api_instance = asana.EventsApi(api_client) + resource = "12345" # str | A resource ID to subscribe to. The resource can be a task, project, or goal. + opts = { + 'sync': "de4774f6915eae04714ca93bb2f5ee81", # str | A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated. *Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token.If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.* + 'opt_fields': "action,change,change.action,change.added_value,change.field,change.new_value,change.removed_value,created_at,parent,parent.name,resource,resource.name,type,user,user.name", # 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: + # Get events on a resource + api_response = events_api_instance.get_events(resource, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling EventsApi->get_events: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.events.get_events({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + events->getEvents(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.events.get_events(resource: ''resource_example'', + param: "value", param: "value", options: {pretty: true}) + /goal_relationships/{goal_relationship_gid}: + parameters: + - $ref: '#/components/parameters/goal_relationship_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a goal relationship + description: |- + Returns the complete updated goal relationship record for a single goal relationship. + tags: + - Goal relationships + operationId: getGoalRelationship + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + schema: + type: array + items: + type: string + enum: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for the goal relationship. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRelationshipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goalrelationships.getGoalRelationship(goalRelationshipGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalRelationshipsApiInstance = new Asana.GoalRelationshipsApi(); + let goal_relationship_gid = "12345"; // String | Globally unique identifier for the goal relationship. + let opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name" + }; + goalRelationshipsApiInstance.getGoalRelationship(goal_relationship_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goal_relationships_api_instance = asana.GoalRelationshipsApi(api_client) + goal_relationship_gid = "12345" # str | Globally unique identifier for the goal relationship. + opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name", # 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: + # Get a goal relationship + api_response = goal_relationships_api_instance.get_goal_relationship(goal_relationship_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalRelationshipsApi->get_goal_relationship: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goal_relationships.get_goal_relationship(goal_relationship_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goalrelationships->getGoalRelationship($goal_relationship_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goal_relationships.get_goal_relationship(goal_relationship_gid: + 'goal_relationship_gid', param: "value", param: "value", options: {pretty: + true}) + put: + summary: Update a goal relationship + description: |- + An existing goal relationship can be updated by making a PUT request on the URL for + that goal relationship. Only the fields provided in the `data` block will be updated; + any unspecified fields will remain unchanged. + + Returns the complete updated goal relationship record. + tags: + - Goal relationships + operationId: updateGoalRelationship + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + schema: + type: array + items: + type: string + enum: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + style: form + explode: false + requestBody: + description: The updated fields for the goal relationship. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRelationshipRequest' + responses: + 200: + description: Successfully updated the goal relationship. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRelationshipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goalrelationships.updateGoalRelationship(goalRelationshipGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalRelationshipsApiInstance = new Asana.GoalRelationshipsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the goal relationship. + let goal_relationship_gid = "12345"; // String | Globally unique identifier for the goal relationship. + let opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name" + }; + goalRelationshipsApiInstance.updateGoalRelationship(body, goal_relationship_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goal_relationships_api_instance = asana.GoalRelationshipsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the goal relationship. + goal_relationship_gid = "12345" # str | Globally unique identifier for the goal relationship. + opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name", # 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: + # Update a goal relationship + api_response = goal_relationships_api_instance.update_goal_relationship(body, goal_relationship_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalRelationshipsApi->update_goal_relationship: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goal_relationships.update_goal_relationship(goal_relationship_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goalrelationships->updateGoalRelationship($goal_relationship_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goal_relationships.update_goal_relationship(goal_relationship_gid: + 'goal_relationship_gid', field: "value", field: "value", options: {pretty: + true}) + /goal_relationships: + get: + summary: Get goal relationships + description: |- + Returns compact goal relationship records. + tags: + - Goal relationships + operationId: getGoalRelationships + parameters: + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: supported_goal + required: true + in: query + description: Globally unique identifier for the supported goal in the goal + relationship. + schema: + type: string + example: '12345' + - name: resource_subtype + in: query + description: If provided, filter to goal relationships with a given resource_subtype. + schema: + type: string + example: subgoal + - name: opt_fields + in: query + description: 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. + required: false + example: + - contribution_weight + - offset + - path + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + - uri + schema: + type: array + items: + type: string + enum: + - contribution_weight + - offset + - path + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested goal relationships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/GoalRelationshipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.goalrelationships.getGoalRelationships(resourceSubtype, + supportedGoal) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalRelationshipsApiInstance = new Asana.GoalRelationshipsApi(); + let supported_goal = "12345"; // String | Globally unique identifier for the supported goal in the goal relationship. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'resource_subtype': "subgoal", + 'opt_fields': "contribution_weight,offset,path,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name,uri" + }; + goalRelationshipsApiInstance.getGoalRelationships(supported_goal, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goal_relationships_api_instance = asana.GoalRelationshipsApi(api_client) + supported_goal = "12345" # str | Globally unique identifier for the supported goal in the goal relationship. + 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.' + 'resource_subtype': "subgoal", # str | If provided, filter to goal relationships with a given resource_subtype. + 'opt_fields': "contribution_weight,offset,path,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name,uri", # 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: + # Get goal relationships + api_response = goal_relationships_api_instance.get_goal_relationships(supported_goal, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling GoalRelationshipsApi->get_goal_relationships: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goal_relationships.get_goal_relationships({'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goalrelationships->getGoalRelationships(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goal_relationships.get_goal_relationships(supported_goal: + ''supported_goal_example'', param: "value", param: "value", + options: {pretty: true}) + /goals/{goal_gid}/addSupportingRelationship: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a supporting goal relationship + description: |- + Creates a goal relationship by adding a supporting resource to a given goal. + + Returns the newly created goal relationship record. + tags: + - Goal relationships + operationId: addSupportingRelationship + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + schema: + type: array + items: + type: string + enum: + - contribution_weight + - resource_subtype + - supported_goal + - supported_goal.name + - supported_goal.owner + - supported_goal.owner.name + - supporting_resource + - supporting_resource.name + style: form + explode: false + requestBody: + description: The supporting resource to be added to the goal + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalAddSupportingRelationshipRequest' + responses: + 200: + description: Successfully created the goal relationship. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRelationshipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goalrelationships.addSupportingRelationship(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalRelationshipsApiInstance = new Asana.GoalRelationshipsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The supporting resource to be added to the goal + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name" + }; + goalRelationshipsApiInstance.addSupportingRelationship(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goal_relationships_api_instance = asana.GoalRelationshipsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The supporting resource to be added to the goal + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "contribution_weight,resource_subtype,supported_goal,supported_goal.name,supported_goal.owner,supported_goal.owner.name,supporting_resource,supporting_resource.name", # 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: + # Add a supporting goal relationship + api_response = goal_relationships_api_instance.add_supporting_relationship(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalRelationshipsApi->add_supporting_relationship: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goal_relationships.add_supporting_relationship(goal_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goalrelationships->addSupportingRelationship($goal_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goal_relationships.add_supporting_relationship(goal_gid: + 'goal_gid', field: "value", field: "value", options: {pretty: true}) + /goals/{goal_gid}/removeSupportingRelationship: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Removes a supporting goal relationship + description: |- + Removes a goal relationship for a given parent goal. + tags: + - Goal relationships + operationId: removeSupportingRelationship + requestBody: + description: The supporting resource to be removed from the goal + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRemoveSupportingRelationshipRequest' + responses: + 200: + description: Successfully removed the goal relationship. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goalrelationships.removeSupportingRelationship(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalRelationshipsApiInstance = new Asana.GoalRelationshipsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The supporting resource to be removed from the goal + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + + goalRelationshipsApiInstance.removeSupportingRelationship(body, goal_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goal_relationships_api_instance = asana.GoalRelationshipsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The supporting resource to be removed from the goal + goal_gid = "12345" # str | Globally unique identifier for the goal. + + + try: + # Removes a supporting goal relationship + api_response = goal_relationships_api_instance.remove_supporting_relationship(body, goal_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalRelationshipsApi->remove_supporting_relationship: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goal_relationships.remove_supporting_relationship(goal_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goalrelationships->removeSupportingRelationship($goal_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goal_relationships.remove_supporting_relationship(goal_gid: + 'goal_gid', field: "value", field: "value", options: {pretty: true}) + /goals/{goal_gid}: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a goal + description: Returns the complete goal record for a single goal. + tags: + - Goals + operationId: getGoal + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for a single goal. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.getGoal(goalGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.getGoal(goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.getGoal(goalGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Get a goal + api_response = goals_api_instance.get_goal(goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->get_goal: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.get_goal(goal_gid, {'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->getGoal($goal_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.get_goal(goal_gid: 'goal_gid', param: "value", + param: "value", options: {pretty: true}) + put: + summary: Update a goal + description: |- + An existing goal can be updated by making a PUT request on the URL for + that goal. Only the fields provided in the `data` block will be updated; + any unspecified fields will remain unchanged. + + Returns the complete updated goal record. + tags: + - Goals + operationId: updateGoal + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The updated fields for the goal. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalUpdateRequest' + responses: + 200: + description: Successfully updated the goal. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.updateGoal(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the goal. + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.updateGoal(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.updateGoal(goalGid, {field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the goal. + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Update a goal + api_response = goals_api_instance.update_goal(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->update_goal: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.update_goal(goal_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->updateGoal($goal_gid, array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.update_goal(goal_gid: 'goal_gid', field: "value", + field: "value", options: {pretty: true}) + delete: + summary: Delete a goal + description: |- + A specific, existing goal can be deleted by making a DELETE request on the URL for that goal. + + Returns an empty data record. + tags: + - Goals + operationId: deleteGoal + responses: + 200: + description: Successfully deleted the specified goal. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.deleteGoal(goalGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + + goalsApiInstance.deleteGoal(goal_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.deleteGoal(goalGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + goal_gid = "12345" # str | Globally unique identifier for the goal. + + + try: + # Delete a goal + api_response = goals_api_instance.delete_goal(goal_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->delete_goal: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.delete_goal(goal_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->deleteGoal($goal_gid, array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.delete_goal(goal_gid: 'goal_gid', options: {pretty: + true}) + /goals: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get goals + description: >- + Returns compact goal records. + tags: + - Goals + operationId: getGoals + parameters: + - name: portfolio + in: query + description: Globally unique identifier for supporting portfolio. + schema: + type: string + example: '159874' + - name: project + in: query + description: Globally unique identifier for supporting project. + schema: + type: string + example: '512241' + - name: task + in: query + description: Globally unique identifier for supporting task. + schema: + type: string + example: '78424' + - name: is_workspace_level + in: query + description: Filter to goals with is_workspace_level set to query value. + Must be used with the workspace parameter. + schema: + type: boolean + example: false + - name: team + in: query + description: Globally unique identifier for the team. + schema: + type: string + example: '31326' + - name: workspace + in: query + description: Globally unique identifier for the workspace. + schema: + type: string + example: '31326' + - name: time_periods + in: query + description: Globally unique identifiers for the time periods. + schema: + type: array + items: + type: string + example: 221693,506165 + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - offset + - owner + - owner.name + - path + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - offset + - owner + - owner.name + - path + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested goals. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/GoalCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.goals.getGoals(timePeriods, workspace, + team, isWorkspaceLevel, project, portfolio) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let opts = { + 'portfolio': "159874", + 'project': "512241", + 'task': "78424", + 'is_workspace_level': false, + 'team': "31326", + 'workspace': "31326", + 'time_periods': "221693,506165", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,offset,owner,owner.name,path,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,uri,workspace,workspace.name" + }; + goalsApiInstance.getGoals(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.getGoals({param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + opts = { + 'portfolio': "159874", # str | Globally unique identifier for supporting portfolio. + 'project': "512241", # str | Globally unique identifier for supporting project. + 'task': "78424", # str | Globally unique identifier for supporting task. + 'is_workspace_level': False, # bool | Filter to goals with is_workspace_level set to query value. Must be used with the workspace parameter. + 'team': "31326", # str | Globally unique identifier for the team. + 'workspace': "31326", # str | Globally unique identifier for the workspace. + 'time_periods': "221693,506165", # list[str] | Globally unique identifiers for the time periods. + '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': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,offset,owner,owner.name,path,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,uri,workspace,workspace.name", # 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: + # Get goals + api_response = goals_api_instance.get_goals(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling GoalsApi->get_goals: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.get_goals({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->getGoals(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.get_goals(param: "value", param: "value", options: + {pretty: true}) + post: + summary: Create a goal + description: |- + Creates a new goal in a workspace or team. + + Returns the full record of the newly created goal. + tags: + - Goals + operationId: createGoal + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The goal to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalRequest' + responses: + 201: + description: Successfully created a new goal. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.createGoal() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The goal to create. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.createGoal(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.createGoal({field: "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The goal to create. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Create a goal + api_response = goals_api_instance.create_goal(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->create_goal: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.create_goal({'field': 'value', 'field': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->createGoal(array('field' => 'value', 'field' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.create_goal(field: "value", field: "value", options: + {pretty: true}) + /goals/{goal_gid}/setMetric: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Create a goal metric + description: >- + Creates and adds a goal metric to a specified goal. Note that this replaces + an existing goal metric if one already exists. + tags: + - Goals + operationId: createGoalMetric + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The goal metric to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalMetricRequest' + responses: + 200: + description: Successfully created a new goal metric. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.createGoalMetric(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The goal metric to create. + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.createGoalMetric(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.createGoalMetric(goalGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The goal metric to create. + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Create a goal metric + api_response = goals_api_instance.create_goal_metric(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->create_goal_metric: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.create_goal_metric(goal_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->createGoalMetric($goal_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.create_goal_metric(goal_gid: 'goal_gid', field: + "value", field: "value", options: {pretty: true}) + /goals/{goal_gid}/setMetricCurrentValue: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Update a goal metric + description: |- + Updates a goal's existing metric's `current_number_value` if one exists, + otherwise responds with a 400 status code. + + Returns the complete updated goal metric record. + tags: + - Goals + operationId: updateGoalMetric + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The updated fields for the goal metric. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalMetricCurrentValueRequest' + responses: + 200: + description: Successfully updated the goal metric. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.updateGoalMetric(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the goal metric. + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.updateGoalMetric(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.updateGoalMetric(goalGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the goal metric. + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Update a goal metric + api_response = goals_api_instance.update_goal_metric(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->update_goal_metric: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.update_goal_metric(goal_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->updateGoalMetric($goal_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.update_goal_metric(goal_gid: 'goal_gid', field: + "value", field: "value", options: {pretty: true}) + /goals/{goal_gid}/addFollowers: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a collaborator to a goal + description: >- + Adds followers to a goal. Returns the goal the followers were added to. + + Each goal can be associated with zero or more followers in the system. + + Requests to add/remove followers, if successful, will return the complete + updated goal record, described above. + tags: + - Goals + operationId: addFollowers + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The followers to be added as collaborators + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskAddFollowersRequest' + responses: + 200: + description: Successfully added users as collaborators. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.addFollowers(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The followers to be added as collaborators + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.addFollowers(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.addFollowers(goalGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The followers to be added as collaborators + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Add a collaborator to a goal + api_response = goals_api_instance.add_followers(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->add_followers: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.add_followers(goal_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->addFollowers($goal_gid, array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.add_followers(goal_gid: 'goal_gid', field: "value", + field: "value", options: {pretty: true}) + /goals/{goal_gid}/removeFollowers: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a collaborator from a goal + description: "Removes followers from a goal. Returns the goal the followers + were removed from.\nEach goal can be associated with zero or more followers + in the system.\nRequests to add/remove followers, if successful, will return + the complete updated goal record, described above." + tags: + - Goals + operationId: removeFollowers + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The followers to be removed as collaborators + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskAddFollowersRequest' + responses: + 200: + description: Successfully removed users as collaborators. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/GoalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.goals.removeFollowers(goalGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The followers to be removed as collaborators + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.removeFollowers(body, goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.removeFollowers(goalGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The followers to be removed as collaborators + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Remove a collaborator from a goal + api_response = goals_api_instance.remove_followers(body, goal_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling GoalsApi->remove_followers: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.remove_followers(goal_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->removeFollowers($goal_gid, array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.remove_followers(goal_gid: 'goal_gid', field: + "value", field: "value", options: {pretty: true}) + /goals/{goal_gid}/parentGoals: + parameters: + - $ref: '#/components/parameters/goal_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get parent goals from a goal + description: Returns a compact representation of all of the parent goals of + a goal. + tags: + - Goals + operationId: getParentGoalsForGoal + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - due_on + - followers + - followers.name + - html_notes + - is_workspace_level + - liked + - likes + - likes.user + - likes.user.name + - metric + - metric.can_manage + - metric.currency_code + - metric.current_display_value + - metric.current_number_value + - metric.initial_number_value + - metric.precision + - metric.progress_source + - metric.resource_subtype + - metric.target_number_value + - metric.unit + - name + - notes + - num_likes + - owner + - owner.name + - start_on + - status + - team + - team.name + - time_period + - time_period.display_name + - time_period.end_on + - time_period.period + - time_period.start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified goal's parent goals. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/GoalCompact' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.goals.getParentGoalsForGoal(goalGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let goalsApiInstance = new Asana.GoalsApi(); + let goal_gid = "12345"; // String | Globally unique identifier for the goal. + let opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name" + }; + goalsApiInstance.getParentGoalsForGoal(goal_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.goals.getParentGoalsForGoal(goalGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + goals_api_instance = asana.GoalsApi(api_client) + goal_gid = "12345" # str | Globally unique identifier for the goal. + opts = { + 'opt_fields': "current_status_update,current_status_update.resource_subtype,current_status_update.title,due_on,followers,followers.name,html_notes,is_workspace_level,liked,likes,likes.user,likes.user.name,metric,metric.can_manage,metric.currency_code,metric.current_display_value,metric.current_number_value,metric.initial_number_value,metric.precision,metric.progress_source,metric.resource_subtype,metric.target_number_value,metric.unit,name,notes,num_likes,owner,owner.name,start_on,status,team,team.name,time_period,time_period.display_name,time_period.end_on,time_period.period,time_period.start_on,workspace,workspace.name", # 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: + # Get parent goals from a goal + api_response = goals_api_instance.get_parent_goals_for_goal(goal_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling GoalsApi->get_parent_goals_for_goal: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.goals.get_parent_goals_for_goal(goal_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + goals->getParentGoalsForGoal($goal_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.goals.get_parent_goals_for_goal(goal_gid: 'goal_gid', + param: "value", param: "value", options: {pretty: true}) + /jobs/{job_gid}: + parameters: + - $ref: '#/components/parameters/job_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a job by id + description: |- + Returns the full record for a job. + tags: + - Jobs + operationId: getJob + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + responses: + 200: + description: Successfully retrieved Job. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Job result = client.jobs.getJob(jobGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let jobsApiInstance = new Asana.JobsApi(); + let job_gid = "12345"; // String | Globally unique identifier for the job. + let opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + jobsApiInstance.getJob(job_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.jobs.getJob(jobGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + jobs_api_instance = asana.JobsApi(api_client) + job_gid = "12345" # str | Globally unique identifier for the job. + opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Get a job by id + api_response = jobs_api_instance.get_job(job_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling JobsApi->get_job: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.jobs.get_job(job_gid, {'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + jobs->getJob($job_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.jobs.get_job(job_gid: 'job_gid', param: "value", param: + "value", options: {pretty: true}) + /memberships: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple memberships + description: >- + Returns compact `goal_membership` or `project_membership` records. The possible + types + for `parent` in this request are `goal` or `project`. An additional member + (user GID or + team GID) can be passed in to filter to a specific membership. + tags: + - Memberships + operationId: getMemberships + parameters: + - name: parent + in: query + description: >- + Globally unique identifier for `goal` or `project`. + schema: + type: string + example: '159874' + - name: member + in: query + description: Globally unique identifier for `team` or `user`. + schema: + type: string + example: '1061493' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - offset + - path + - uri + schema: + type: array + items: + type: string + enum: + - offset + - path + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested membership. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/MembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let membershipsApiInstance = new Asana.MembershipsApi(); + let opts = { + 'parent': "159874", + 'member': "1061493", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "offset,path,uri" + }; + membershipsApiInstance.getMemberships(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + memberships_api_instance = asana.MembershipsApi(api_client) + opts = { + 'parent': "159874", # str | Globally unique identifier for `goal` or `project`. + 'member': "1061493", # str | Globally unique identifier for `team` or `user`. + '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': "offset,path,uri", # 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: + # Get multiple memberships + api_response = memberships_api_instance.get_memberships(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling MembershipsApi->get_memberships: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.memberships.get_memberships({'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + memberships->getMemberships(array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.memberships.get_memberships(parent: ''parent_example'', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a membership + description: |- + Creates a new membership in a `goal` or `project`. `Teams` or `users` can be a member + of `goals` or `projects`. + + Returns the full record of the newly created membership. + tags: + - Memberships + operationId: createMembership + requestBody: + description: The updated fields for the membership. + required: false + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CreateMembershipRequest' + responses: + 201: + description: >- + Successfully created the requested membership. + content: + application/json: + schema: + type: object + properties: + data: + type: object + $ref: '#/components/schemas/MembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let membershipsApiInstance = new Asana.MembershipsApi(); + let opts = { + 'body': {"data": {"": "", "": "",}} + }; + membershipsApiInstance.createMembership(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + memberships_api_instance = asana.MembershipsApi(api_client) + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The updated fields for the membership. + } + + try: + # Create a membership + api_response = memberships_api_instance.create_membership(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling MembershipsApi->create_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.memberships.create_membership({'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + memberships->createMembership(array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.memberships.create_membership(field: "value", field: + "value", options: {pretty: true}) + /memberships/{membership_gid}: + parameters: + - $ref: '#/components/parameters/membership_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a membership + description: >- + Returns compact `project_membership` record for a single membership. `GET` + only supports project memberships currently + tags: + - Memberships + operationId: getMembership + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - access_level + - member + - member.name + - parent + - parent.name + - resource_subtype + schema: + type: array + items: + type: string + enum: + - access_level + - member + - member.name + - parent + - parent.name + - resource_subtype + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the record for a single membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectMembershipCompactResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let membershipsApiInstance = new Asana.MembershipsApi(); + let membership_gid = "12345"; // String | Globally unique identifier for the membership. + let opts = { + 'opt_fields': "access_level,member,member.name,parent,parent.name,resource_subtype" + }; + membershipsApiInstance.getMembership(membership_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + memberships_api_instance = asana.MembershipsApi(api_client) + membership_gid = "12345" # str | Globally unique identifier for the membership. + opts = { + 'opt_fields': "access_level,member,member.name,parent,parent.name,resource_subtype", # 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: + # Get a membership + api_response = memberships_api_instance.get_membership(membership_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling MembershipsApi->get_membership: %s\n" % e) + name: python-sdk-v5 + put: + summary: Update a membership + description: |- + An existing membership can be updated by making a `PUT` request on the URL for + that goal. Only the fields provided in the `data` block will be updated; + any unspecified fields will remain unchanged. Memberships on `goals` and `projects` can be updated. + + Returns the full record of the updated membership. + tags: + - Memberships + operationId: updateMembership + requestBody: + description: The membership to update. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/MembershipRequest' + responses: + 200: + description: >- + Successfully updated the requested membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/MembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.memberships.update_membership(membership_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + memberships->updateMembership($membership_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.memberships.update_membership(membership_gid: 'membership_gid', + field: "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a membership + description: |- + A specific, existing membership for a `goal` or `project` can be deleted by making a `DELETE` request + on the URL for that membership. + + Returns an empty data record. + tags: + - Memberships + operationId: deleteMembership + responses: + 200: + description: >- + Successfully deleted the requested membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let membershipsApiInstance = new Asana.MembershipsApi(); + let membership_gid = "12345"; // String | Globally unique identifier for the membership. + + membershipsApiInstance.deleteMembership(membership_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + memberships_api_instance = asana.MembershipsApi(api_client) + membership_gid = "12345" # str | Globally unique identifier for the membership. + + + try: + # Delete a membership + api_response = memberships_api_instance.delete_membership(membership_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling MembershipsApi->delete_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.memberships.delete_membership(membership_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + memberships->deleteMembership($membership_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.memberships.delete_membership(membership_gid: 'membership_gid', + options: {pretty: true}) + /organization_exports: + parameters: + - $ref: '#/components/parameters/pretty' + post: + summary: Create an organization export request + description: >- + This method creates a request to export an Organization. Asana will + complete the export at some point after you create the request. + tags: + - Organization exports + operationId: createOrganizationExport + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - download_url + - organization + - organization.name + - state + schema: + type: array + items: + type: string + enum: + - created_at + - download_url + - organization + - organization.name + - state + style: form + explode: false + requestBody: + description: The organization to export. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/OrganizationExportRequest' + responses: + 201: + description: Successfully created organization export request. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/OrganizationExportResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + OrganizationExport result = client.organizationexports.createOrganizationExport() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let organizationExportsApiInstance = new Asana.OrganizationExportsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The organization to export. + let opts = { + 'opt_fields': "created_at,download_url,organization,organization.name,state" + }; + organizationExportsApiInstance.createOrganizationExport(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.organizationexports.createOrganizationExport({field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + organization_exports_api_instance = asana.OrganizationExportsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The organization to export. + opts = { + 'opt_fields': "created_at,download_url,organization,organization.name,state", # 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: + # Create an organization export request + api_response = organization_exports_api_instance.create_organization_export(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling OrganizationExportsApi->create_organization_export: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.organization_exports.create_organization_export({'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + organizationexports->createOrganizationExport(array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.organization_exports.create_organization_export(field: + "value", field: "value", options: {pretty: true}) + /organization_exports/{organization_export_gid}: + parameters: + - $ref: '#/components/parameters/organization_export_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get details on an org export request + description: >- + Returns details of a previously-requested Organization export. + tags: + - Organization exports + operationId: getOrganizationExport + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - download_url + - organization + - organization.name + - state + schema: + type: array + items: + type: string + enum: + - created_at + - download_url + - organization + - organization.name + - state + style: form + explode: false + responses: + 200: + description: Successfully retrieved organization export object. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/OrganizationExportResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + OrganizationExport result = client.organizationexports.getOrganizationExport(organizationExportGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let organizationExportsApiInstance = new Asana.OrganizationExportsApi(); + let organization_export_gid = "12345"; // String | Globally unique identifier for the organization export. + let opts = { + 'opt_fields': "created_at,download_url,organization,organization.name,state" + }; + organizationExportsApiInstance.getOrganizationExport(organization_export_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.organizationexports.getOrganizationExport(organizationExportGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + organization_exports_api_instance = asana.OrganizationExportsApi(api_client) + organization_export_gid = "12345" # str | Globally unique identifier for the organization export. + opts = { + 'opt_fields': "created_at,download_url,organization,organization.name,state", # 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: + # Get details on an org export request + api_response = organization_exports_api_instance.get_organization_export(organization_export_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling OrganizationExportsApi->get_organization_export: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.organization_exports.get_organization_export(organization_export_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + organizationexports->getOrganizationExport($organization_export_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.organization_exports.get_organization_export(organization_export_gid: + 'organization_export_gid', param: "value", param: "value", options: + {pretty: true}) + /portfolio_memberships: + parameters: + - $ref: '#/components/parameters/portfolio_query_param' + - $ref: '#/components/parameters/workspace_query_param' + - $ref: '#/components/parameters/user_query_param' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get multiple portfolio memberships + description: >- + Returns a list of portfolio memberships in compact representation. You must + specify `portfolio`, `portfolio` and `user`, or `workspace` and `user`. + tags: + - Portfolio memberships + operationId: getPortfolioMemberships + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - offset + - path + - portfolio + - portfolio.name + - uri + - user + - user.name + schema: + type: array + items: + type: string + enum: + - offset + - path + - portfolio + - portfolio.name + - uri + - user + - user.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved portfolio memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PortfolioMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.portfoliomemberships.getPortfolioMemberships(user, + workspace, portfolio) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfolioMembershipsApiInstance = new Asana.PortfolioMembershipsApi(); + let opts = { + 'portfolio': "12345", + 'workspace': "12345", + 'user': "me", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "offset,path,portfolio,portfolio.name,uri,user,user.name" + }; + portfolioMembershipsApiInstance.getPortfolioMemberships(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfoliomemberships.getPortfolioMemberships({param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolio_memberships_api_instance = asana.PortfolioMembershipsApi(api_client) + opts = { + 'portfolio': "12345", # str | The portfolio to filter results on. + 'workspace': "12345", # str | The workspace to filter results on. + 'user': "me", # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + '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': "offset,path,portfolio,portfolio.name,uri,user,user.name", # 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: + # Get multiple portfolio memberships + api_response = portfolio_memberships_api_instance.get_portfolio_memberships(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling PortfolioMembershipsApi->get_portfolio_memberships: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolio_memberships.get_portfolio_memberships({'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfoliomemberships->getPortfolioMemberships(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolio_memberships.get_portfolio_memberships(param: + "value", param: "value", options: {pretty: true}) + /portfolio_memberships/{portfolio_membership_gid}: + parameters: + - $ref: '#/components/parameters/portfolio_membership_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a portfolio membership + description: >- + Returns the complete portfolio record for a single portfolio membership. + tags: + - Portfolio memberships + operationId: getPortfolioMembership + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - portfolio + - portfolio.name + - user + - user.name + schema: + type: array + items: + type: string + enum: + - portfolio + - portfolio.name + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested portfolio membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioMembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + PortfolioMembership result = client.portfoliomemberships.getPortfolioMembership(portfolioMembershipGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfolioMembershipsApiInstance = new Asana.PortfolioMembershipsApi(); + let portfolio_membership_gid = "1331"; // String | + let opts = { + 'opt_fields': "portfolio,portfolio.name,user,user.name" + }; + portfolioMembershipsApiInstance.getPortfolioMembership(portfolio_membership_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfoliomemberships.getPortfolioMembership(portfolioMembershipGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolio_memberships_api_instance = asana.PortfolioMembershipsApi(api_client) + portfolio_membership_gid = "1331" # str | + opts = { + 'opt_fields': "portfolio,portfolio.name,user,user.name", # 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: + # Get a portfolio membership + api_response = portfolio_memberships_api_instance.get_portfolio_membership(portfolio_membership_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfolioMembershipsApi->get_portfolio_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolio_memberships.get_portfolio_membership(portfolio_membership_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfoliomemberships->getPortfolioMembership($portfolio_membership_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolio_memberships.get_portfolio_membership(portfolio_membership_gid: + 'portfolio_membership_gid', param: "value", param: "value", options: + {pretty: true}) + /portfolios/{portfolio_gid}/portfolio_memberships: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/user_query_param' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get memberships from a portfolio + description: >- + Returns the compact portfolio membership records for the portfolio. + tags: + - Portfolio memberships + operationId: getPortfolioMembershipsForPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - offset + - path + - portfolio + - portfolio.name + - uri + - user + - user.name + schema: + type: array + items: + type: string + enum: + - offset + - path + - portfolio + - portfolio.name + - uri + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested portfolio's memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PortfolioMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.portfoliomemberships.getPortfolioMembershipsForPortfolio(portfolioGid, + user) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfolioMembershipsApiInstance = new Asana.PortfolioMembershipsApi(); + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'user': "me", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "offset,path,portfolio,portfolio.name,uri,user,user.name" + }; + portfolioMembershipsApiInstance.getPortfolioMembershipsForPortfolio(portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfoliomemberships.getPortfolioMembershipsForPortfolio(portfolioGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolio_memberships_api_instance = asana.PortfolioMembershipsApi(api_client) + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + opts = { + 'user': "me", # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + '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': "offset,path,portfolio,portfolio.name,uri,user,user.name", # 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: + # Get memberships from a portfolio + api_response = portfolio_memberships_api_instance.get_portfolio_memberships_for_portfolio(portfolio_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling PortfolioMembershipsApi->get_portfolio_memberships_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolio_memberships.get_portfolio_memberships_for_portfolio(portfolio_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfoliomemberships->getPortfolioMembershipsForPortfolio($portfolio_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolio_memberships.get_portfolio_memberships_for_portfolio(portfolio_gid: + 'portfolio_gid', param: "value", param: "value", options: {pretty: true}) + /portfolios: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple portfolios + description: >- + Returns a list of the portfolios in compact representation that are + owned by the current API user. + tags: + - Portfolios + operationId: getPortfolios + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: workspace + in: query + required: true + description: >- + The workspace or organization to filter portfolios on. + schema: + type: string + example: '1331' + - name: owner + in: query + required: false + description: >- + The user who owns the portfolio. Currently, API users can + only get a list of portfolios that they themselves own, unless + the request is made from a Service Account. In the case of a + Service Account, if this parameter is specified, then all + portfolios owned by this parameter are returned. + Otherwise, all portfolios across the workspace are returned. + schema: + type: string + example: '14916' + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - offset + - owner + - owner.name + - path + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - offset + - owner + - owner.name + - path + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved portfolios. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/PortfolioCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.portfolios.getPortfolios(owner, workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let workspace = "1331"; // String | The workspace or organization to filter portfolios on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'owner': "14916", + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,offset,owner,owner.name,path,permalink_url,project_templates,project_templates.name,public,start_on,uri,workspace,workspace.name" + }; + portfoliosApiInstance.getPortfolios(workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.getPortfolios({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + workspace = "1331" # str | The workspace or organization to filter portfolios 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.' + 'owner': "14916", # str | The user who owns the portfolio. Currently, API users can only get a list of portfolios that they themselves own, unless the request is made from a Service Account. In the case of a Service Account, if this parameter is specified, then all portfolios owned by this parameter are returned. Otherwise, all portfolios across the workspace are returned. + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,offset,owner,owner.name,path,permalink_url,project_templates,project_templates.name,public,start_on,uri,workspace,workspace.name", # 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: + # Get multiple portfolios + api_response = portfolios_api_instance.get_portfolios(workspace, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling PortfoliosApi->get_portfolios: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.get_portfolios({'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->getPortfolios(array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.get_portfolios(workspace: ''workspace_example'', + owner: ''owner_example'', param: "value", param: "value", + options: {pretty: true}) + post: + summary: Create a portfolio + description: |- + Creates a new portfolio in the given workspace with the supplied name. + + Note that portfolios created in the Asana UI may have some state + (like the “Priority” custom field) which is automatically added + to the portfolio when it is created. Portfolios created via our + API will *not* be created with the same initial state to allow + integrations to create their own starting state on a portfolio. + tags: + - Portfolios + operationId: createPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The portfolio to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioRequest' + responses: + 201: + description: Successfully created portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Portfolio result = client.portfolios.createPortfolio() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | The portfolio to create. + let opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name" + }; + portfoliosApiInstance.createPortfolio(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.createPortfolio({field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The portfolio to create. + opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name", # 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: + # Create a portfolio + api_response = portfolios_api_instance.create_portfolio(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->create_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.create_portfolio({'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->createPortfolio(array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.create_portfolio(field: "value", field: "value", + options: {pretty: true}) + /portfolios/{portfolio_gid}: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a portfolio + description: Returns the complete portfolio record for a single portfolio. + tags: + - Portfolios + operationId: getPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Portfolio result = client.portfolios.getPortfolio(portfolioGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name" + }; + portfoliosApiInstance.getPortfolio(portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.getPortfolio(portfolioGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name", # 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: + # Get a portfolio + api_response = portfolios_api_instance.get_portfolio(portfolio_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->get_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.get_portfolio(portfolio_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->getPortfolio($portfolio_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.get_portfolio(portfolio_gid: 'portfolio_gid', + param: "value", param: "value", options: {pretty: true}) + put: + summary: Update a portfolio + description: |- + An existing portfolio can be updated by making a PUT request on the URL for + that portfolio. Only the fields provided in the `data` block will be updated; + any unspecified fields will remain unchanged. + + Returns the complete updated portfolio record. + tags: + - Portfolios + operationId: updatePortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The updated fields for the portfolio. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioRequest' + responses: + 200: + description: Successfully updated the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Portfolio result = client.portfolios.updatePortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the portfolio. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name" + }; + portfoliosApiInstance.updatePortfolio(body, portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.updatePortfolio(portfolioGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the portfolio. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name", # 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: + # Update a portfolio + api_response = portfolios_api_instance.update_portfolio(body, portfolio_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->update_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.update_portfolio(portfolio_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->updatePortfolio($portfolio_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.update_portfolio(portfolio_gid: 'portfolio_gid', + field: "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a portfolio + description: |- + An existing portfolio can be deleted by making a DELETE request on + the URL for that portfolio. + + Returns an empty data record. + tags: + - Portfolios + operationId: deletePortfolio + responses: + 200: + description: Successfully deleted the specified portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.portfolios.deletePortfolio(portfolioGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + + portfoliosApiInstance.deletePortfolio(portfolio_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.deletePortfolio(portfolioGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + + + try: + # Delete a portfolio + api_response = portfolios_api_instance.delete_portfolio(portfolio_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->delete_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.delete_portfolio(portfolio_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->deletePortfolio($portfolio_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.delete_portfolio(portfolio_gid: 'portfolio_gid', + options: {pretty: true}) + /portfolios/{portfolio_gid}/items: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get portfolio items + description: >- + Get a list of the items in compact form in a portfolio. + tags: + - Portfolios + operationId: getItemsForPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested portfolio's items. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.portfolios.getItemsForPortfolio(portfolioGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name" + }; + portfoliosApiInstance.getItemsForPortfolio(portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.getItemsForPortfolio(portfolioGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + 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': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name", # 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: + # Get portfolio items + api_response = portfolios_api_instance.get_items_for_portfolio(portfolio_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling PortfoliosApi->get_items_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.get_items_for_portfolio(portfolio_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->getItemsForPortfolio($portfolio_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.get_items_for_portfolio(portfolio_gid: 'portfolio_gid', + param: "value", param: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/addItem: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a portfolio item + description: >- + Add an item to a portfolio. + + Returns an empty data block. + tags: + - Portfolios + operationId: addItemForPortfolio + requestBody: + description: Information about the item being inserted. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioAddItemRequest' + responses: + 200: + description: Successfully added the item to the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.portfolios.addItemForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the item being inserted. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + + portfoliosApiInstance.addItemForPortfolio(body, portfolio_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.addItemForPortfolio(portfolioGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the item being inserted. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + + + try: + # Add a portfolio item + api_response = portfolios_api_instance.add_item_for_portfolio(body, portfolio_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->add_item_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.add_item_for_portfolio(portfolio_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->addItemForPortfolio($portfolio_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.add_item_for_portfolio(portfolio_gid: 'portfolio_gid', + field: "value", field: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/removeItem: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a portfolio item + description: >- + Remove an item from a portfolio. + + Returns an empty data block. + tags: + - Portfolios + operationId: removeItemForPortfolio + requestBody: + description: Information about the item being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioRemoveItemRequest' + responses: + 200: + description: Successfully removed the item from the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.portfolios.removeItemForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the item being removed. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + + portfoliosApiInstance.removeItemForPortfolio(body, portfolio_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.removeItemForPortfolio(portfolioGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the item being removed. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + + + try: + # Remove a portfolio item + api_response = portfolios_api_instance.remove_item_for_portfolio(body, portfolio_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->remove_item_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.remove_item_for_portfolio(portfolio_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->removeItemForPortfolio($portfolio_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.remove_item_for_portfolio(portfolio_gid: + 'portfolio_gid', field: "value", field: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/addCustomFieldSetting: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a custom field to a portfolio + description: >- + Custom fields are associated with portfolios by way of custom field + settings. This method creates a setting for the portfolio. + tags: + - Portfolios + operationId: addCustomFieldSettingForPortfolio + requestBody: + description: Information about the custom field setting. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AddCustomFieldSettingRequest' + responses: + 200: + description: Successfully added the custom field to the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldSettingResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + CustomFieldSetting result = client.portfolios.addCustomFieldSettingForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the custom field setting. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + + portfoliosApiInstance.addCustomFieldSettingForPortfolio(body, portfolio_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.addCustomFieldSettingForPortfolio(portfolioGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the custom field setting. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + + + try: + # Add a custom field to a portfolio + api_response = portfolios_api_instance.add_custom_field_setting_for_portfolio(body, portfolio_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->add_custom_field_setting_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.add_custom_field_setting_for_portfolio(portfolio_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->addCustomFieldSettingForPortfolio($portfolio_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.add_custom_field_setting_for_portfolio(portfolio_gid: + 'portfolio_gid', field: "value", field: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/removeCustomFieldSetting: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a custom field from a portfolio + description: >- + Removes a custom field setting from a portfolio. + tags: + - Portfolios + operationId: removeCustomFieldSettingForPortfolio + requestBody: + description: Information about the custom field setting being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RemoveCustomFieldSettingRequest' + responses: + 200: + description: Successfully removed the custom field from the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.portfolios.removeCustomFieldSettingForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the custom field setting being removed. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + + portfoliosApiInstance.removeCustomFieldSettingForPortfolio(body, portfolio_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.removeCustomFieldSettingForPortfolio(portfolioGid, + {field: "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the custom field setting being removed. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + + + try: + # Remove a custom field from a portfolio + api_response = portfolios_api_instance.remove_custom_field_setting_for_portfolio(body, portfolio_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->remove_custom_field_setting_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.remove_custom_field_setting_for_portfolio(portfolio_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->removeCustomFieldSettingForPortfolio($portfolio_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.remove_custom_field_setting_for_portfolio(portfolio_gid: + 'portfolio_gid', field: "value", field: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/addMembers: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add users to a portfolio + description: >- + Adds the specified list of users as members of the portfolio. + + Returns the updated portfolio record. + tags: + - Portfolios + operationId: addMembersForPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the members being added. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AddMembersRequest' + responses: + 200: + description: Successfully added members to the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Portfolio result = client.portfolios.addMembersForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the members being added. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name" + }; + portfoliosApiInstance.addMembersForPortfolio(body, portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.addMembersForPortfolio(portfolioGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the members being added. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name", # 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: + # Add users to a portfolio + api_response = portfolios_api_instance.add_members_for_portfolio(body, portfolio_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->add_members_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.add_members_for_portfolio(portfolio_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->addMembersForPortfolio($portfolio_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.add_members_for_portfolio(portfolio_gid: + 'portfolio_gid', field: "value", field: "value", options: {pretty: true}) + /portfolios/{portfolio_gid}/removeMembers: + parameters: + - $ref: '#/components/parameters/portfolio_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove users from a portfolio + description: >- + Removes the specified list of users from members of the portfolio. + + Returns the updated portfolio record. + tags: + - Portfolios + operationId: removeMembersForPortfolio + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - created_by + - created_by.name + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - due_on + - members + - members.name + - name + - owner + - owner.name + - permalink_url + - project_templates + - project_templates.name + - public + - start_on + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the members being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RemoveMembersRequest' + responses: + 200: + description: Successfully removed the members from the portfolio. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/PortfolioResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Portfolio result = client.portfolios.removeMembersForPortfolio(portfolioGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let portfoliosApiInstance = new Asana.PortfoliosApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the members being removed. + let portfolio_gid = "12345"; // String | Globally unique identifier for the portfolio. + let opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name" + }; + portfoliosApiInstance.removeMembersForPortfolio(body, portfolio_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.portfolios.removeMembersForPortfolio(portfolioGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + portfolios_api_instance = asana.PortfoliosApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the members being removed. + portfolio_gid = "12345" # str | Globally unique identifier for the portfolio. + opts = { + 'opt_fields': "color,created_at,created_by,created_by.name,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,due_on,members,members.name,name,owner,owner.name,permalink_url,project_templates,project_templates.name,public,start_on,workspace,workspace.name", # 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: + # Remove users from a portfolio + api_response = portfolios_api_instance.remove_members_for_portfolio(body, portfolio_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling PortfoliosApi->remove_members_for_portfolio: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.portfolios.remove_members_for_portfolio(portfolio_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + portfolios->removeMembersForPortfolio($portfolio_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.portfolios.remove_members_for_portfolio(portfolio_gid: + 'portfolio_gid', field: "value", field: "value", options: {pretty: true}) + /project_briefs/{project_brief_gid}: + parameters: + - $ref: '#/components/parameters/project_brief_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a project brief + description: Get the full record for a project brief. + tags: + - Project briefs + operationId: getProjectBrief + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - html_text + - permalink_url + - project + - project.name + - text + - title + schema: + type: array + items: + type: string + enum: + - html_text + - permalink_url + - project + - project.name + - text + - title + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for a project brief. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectBriefResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 424: + $ref: '#/components/responses/TooManyRequests' + 500: + $ref: '#/components/responses/InternalServerError' + 501: + $ref: '#/components/responses/BadGateway' + 503: + $ref: '#/components/responses/ServiceUnavailable' + 504: + $ref: '#/components/responses/GatewayTimeout' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projectbriefs.getProjectBrief(projectBriefGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectBriefsApiInstance = new Asana.ProjectBriefsApi(); + let project_brief_gid = "12345"; // String | Globally unique identifier for the project brief. + let opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title" + }; + projectBriefsApiInstance.getProjectBrief(project_brief_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectbriefs.getProjectBrief(projectBriefGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_briefs_api_instance = asana.ProjectBriefsApi(api_client) + project_brief_gid = "12345" # str | Globally unique identifier for the project brief. + opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title", # 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: + # Get a project brief + api_response = project_briefs_api_instance.get_project_brief(project_brief_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectBriefsApi->get_project_brief: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_briefs.get_project_brief(project_brief_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectbriefs->getProjectBrief($project_brief_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_briefs.get_project_brief(project_brief_gid: + 'project_brief_gid', param: "value", param: "value", options: {pretty: + true}) + put: + summary: Update a project brief + description: |- + An existing project brief can be updated by making a PUT request on the URL for + that project brief. Only the fields provided in the `data` block will be updated; + any unspecified fields will remain unchanged. + + Returns the complete updated project brief record. + tags: + - Project briefs + operationId: updateProjectBrief + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - html_text + - permalink_url + - project + - project.name + - text + - title + schema: + type: array + items: + type: string + enum: + - html_text + - permalink_url + - project + - project.name + - text + - title + style: form + explode: false + requestBody: + description: The updated fields for the project brief. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectBriefRequest' + responses: + 200: + description: Successfully updated the project brief. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectBriefResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projectbriefs.updateProjectBrief(projectBriefGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectBriefsApiInstance = new Asana.ProjectBriefsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the project brief. + let project_brief_gid = "12345"; // String | Globally unique identifier for the project brief. + let opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title" + }; + projectBriefsApiInstance.updateProjectBrief(body, project_brief_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectbriefs.updateProjectBrief(projectBriefGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_briefs_api_instance = asana.ProjectBriefsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the project brief. + project_brief_gid = "12345" # str | Globally unique identifier for the project brief. + opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title", # 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: + # Update a project brief + api_response = project_briefs_api_instance.update_project_brief(body, project_brief_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectBriefsApi->update_project_brief: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_briefs.update_project_brief(project_brief_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectbriefs->updateProjectBrief($project_brief_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_briefs.update_project_brief(project_brief_gid: + 'project_brief_gid', field: "value", field: "value", options: {pretty: + true}) + delete: + summary: Delete a project brief + description: |- + Deletes a specific, existing project brief. + + Returns an empty data record. + tags: + - Project briefs + operationId: deleteProjectBrief + responses: + 200: + description: Successfully deleted the specified project brief. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projectbriefs.deleteProjectBrief(projectBriefGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectBriefsApiInstance = new Asana.ProjectBriefsApi(); + let project_brief_gid = "12345"; // String | Globally unique identifier for the project brief. + + projectBriefsApiInstance.deleteProjectBrief(project_brief_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectbriefs.deleteProjectBrief(projectBriefGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_briefs_api_instance = asana.ProjectBriefsApi(api_client) + project_brief_gid = "12345" # str | Globally unique identifier for the project brief. + + + try: + # Delete a project brief + api_response = project_briefs_api_instance.delete_project_brief(project_brief_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectBriefsApi->delete_project_brief: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_briefs.delete_project_brief(project_brief_gid, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectbriefs->deleteProjectBrief($project_brief_gid, + array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_briefs.delete_project_brief(project_brief_gid: + 'project_brief_gid', options: {pretty: true}) + /projects/{project_gid}/project_briefs: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Create a project brief + description: |- + Creates a new project brief. + + Returns the full record of the newly created project brief. + tags: + - Project briefs + operationId: createProjectBrief + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - html_text + - permalink_url + - project + - project.name + - text + - title + schema: + type: array + items: + type: string + enum: + - html_text + - permalink_url + - project + - project.name + - text + - title + style: form + explode: false + requestBody: + description: The project brief to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectBriefRequest' + responses: + 201: + description: Successfully created a new project brief. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectBriefResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projectbriefs.createProjectBrief(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectBriefsApiInstance = new Asana.ProjectBriefsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The project brief to create. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title" + }; + projectBriefsApiInstance.createProjectBrief(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectbriefs.createProjectBrief(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_briefs_api_instance = asana.ProjectBriefsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The project brief to create. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "html_text,permalink_url,project,project.name,text,title", # 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: + # Create a project brief + api_response = project_briefs_api_instance.create_project_brief(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectBriefsApi->create_project_brief: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_briefs.create_project_brief(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectbriefs->createProjectBrief($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_briefs.create_project_brief(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /project_memberships/{project_membership_gid}: + parameters: + - $ref: '#/components/parameters/project_membership_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a project membership + description: >- + Returns the complete project record for a single project membership. + tags: + - Project memberships + operationId: getProjectMembership + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - access_level + - member + - member.name + - parent + - parent.name + - project + - project.name + - user + - user.name + - write_access + schema: + type: array + items: + type: string + enum: + - access_level + - member + - member.name + - parent + - parent.name + - project + - project.name + - user + - user.name + - write_access + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested project membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectMembershipNormalResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + ProjectMembership result = client.projectmemberships.getProjectMembership(projectMembershipGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectMembershipsApiInstance = new Asana.ProjectMembershipsApi(); + let project_membership_gid = "1331"; // String | + let opts = { + 'opt_fields': "access_level,member,member.name,parent,parent.name,project,project.name,user,user.name,write_access" + }; + projectMembershipsApiInstance.getProjectMembership(project_membership_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectmemberships.getProjectMembership(projectMembershipGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_memberships_api_instance = asana.ProjectMembershipsApi(api_client) + project_membership_gid = "1331" # str | + opts = { + 'opt_fields': "access_level,member,member.name,parent,parent.name,project,project.name,user,user.name,write_access", # 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: + # Get a project membership + api_response = project_memberships_api_instance.get_project_membership(project_membership_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectMembershipsApi->get_project_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_memberships.get_project_membership(project_membership_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectmemberships->getProjectMembership($project_membership_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_memberships.get_project_membership(project_membership_gid: + 'project_membership_gid', param: "value", param: "value", options: {pretty: + true}) + /projects/{project_gid}/project_memberships: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/user_query_param' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get memberships from a project + description: >- + Returns the compact project membership records for the project. + tags: + - Project memberships + operationId: getProjectMembershipsForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - access_level + - member + - member.name + - offset + - parent + - parent.name + - path + - uri + schema: + type: array + items: + type: string + enum: + - access_level + - member + - member.name + - offset + - parent + - parent.name + - path + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested project's memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projectmemberships.getProjectMembershipsForProject(projectGid, + user) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectMembershipsApiInstance = new Asana.ProjectMembershipsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'user': "me", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "access_level,member,member.name,offset,parent,parent.name,path,uri" + }; + projectMembershipsApiInstance.getProjectMembershipsForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectmemberships.getProjectMembershipsForProject(projectGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_memberships_api_instance = asana.ProjectMembershipsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'user': "me", # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + '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': "access_level,member,member.name,offset,parent,parent.name,path,uri", # 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: + # Get memberships from a project + api_response = project_memberships_api_instance.get_project_memberships_for_project(project_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectMembershipsApi->get_project_memberships_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_memberships.get_project_memberships_for_project(project_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectmemberships->getProjectMembershipsForProject($project_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_memberships.get_project_memberships_for_project(project_gid: + 'project_gid', param: "value", param: "value", options: {pretty: true}) + /project_statuses/{project_status_gid}: + parameters: + - $ref: '#/components/parameters/project_status_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a project status + description: |- + *Deprecated: new integrations should prefer the `/status_updates/{status_gid}` route.* + + Returns the complete record for a single status update. + tags: + - Project statuses + operationId: getProjectStatus + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - text + - title + schema: + type: array + items: + type: string + enum: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - text + - title + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified project's status updates. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectStatusResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + ProjectStatus result = client.projectstatuses.getProjectStatus(projectStatusGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectStatusesApiInstance = new Asana.ProjectStatusesApi(); + let project_status_gid = "321654"; // String | The project status update to get. + let opts = { + 'opt_fields': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,text,title" + }; + projectStatusesApiInstance.getProjectStatus(project_status_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectstatuses.getProjectStatus(projectStatusGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_statuses_api_instance = asana.ProjectStatusesApi(api_client) + project_status_gid = "321654" # str | The project status update to get. + opts = { + 'opt_fields': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,text,title", # 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: + # Get a project status + api_response = project_statuses_api_instance.get_project_status(project_status_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectStatusesApi->get_project_status: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_statuses.get_project_status(project_status_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectstatuses->getProjectStatus($project_status_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_statuses.get_project_status(project_status_gid: + 'project_status_gid', param: "value", param: "value", options: {pretty: + true}) + delete: + summary: Delete a project status + description: |- + *Deprecated: new integrations should prefer the `/status_updates/{status_gid}` route.* + + Deletes a specific, existing project status update. + + Returns an empty data record. + tags: + - Project statuses + operationId: deleteProjectStatus + responses: + 200: + description: Successfully deleted the specified project status. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projectstatuses.deleteProjectStatus(projectStatusGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectStatusesApiInstance = new Asana.ProjectStatusesApi(); + let project_status_gid = "321654"; // String | The project status update to get. + + projectStatusesApiInstance.deleteProjectStatus(project_status_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectstatuses.deleteProjectStatus(projectStatusGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_statuses_api_instance = asana.ProjectStatusesApi(api_client) + project_status_gid = "321654" # str | The project status update to get. + + + try: + # Delete a project status + api_response = project_statuses_api_instance.delete_project_status(project_status_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectStatusesApi->delete_project_status: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_statuses.delete_project_status(project_status_gid, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectstatuses->deleteProjectStatus($project_status_gid, + array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_statuses.delete_project_status(project_status_gid: + 'project_status_gid', options: {pretty: true}) + /projects/{project_gid}/project_statuses: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get statuses from a project + description: |- + *Deprecated: new integrations should prefer the `/status_updates` route.* + + Returns the compact project status update records for all updates on the project. + tags: + - Project statuses + operationId: getProjectStatusesForProject + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - offset + - path + - text + - title + - uri + schema: + type: array + items: + type: string + enum: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - offset + - path + - text + - title + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified project's status updates. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectStatusCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projectstatuses.getProjectStatusesForProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectStatusesApiInstance = new Asana.ProjectStatusesApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,offset,path,text,title,uri" + }; + projectStatusesApiInstance.getProjectStatusesForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectstatuses.getProjectStatusesForProject(projectGid, {param: + "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_statuses_api_instance = asana.ProjectStatusesApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + 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': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,offset,path,text,title,uri", # 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: + # Get statuses from a project + api_response = project_statuses_api_instance.get_project_statuses_for_project(project_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectStatusesApi->get_project_statuses_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_statuses.get_project_statuses_for_project(project_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectstatuses->getProjectStatusesForProject($project_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_statuses.get_project_statuses_for_project(project_gid: + 'project_gid', param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a project status + description: |- + *Deprecated: new integrations should prefer the `/status_updates` route.* + + Creates a new status update on the project. + + Returns the full record of the newly created project status update. + tags: + - Project statuses + operationId: createProjectStatusForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - text + - title + schema: + type: array + items: + type: string + enum: + - author + - author.name + - color + - created_at + - created_by + - created_by.name + - html_text + - modified_at + - text + - title + style: form + explode: false + requestBody: + description: The project status to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectStatusRequest' + responses: + 201: + description: Successfully created a new story. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectStatusResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + ProjectStatus result = client.projectstatuses.createProjectStatusForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectStatusesApiInstance = new Asana.ProjectStatusesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The project status to create. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,text,title" + }; + projectStatusesApiInstance.createProjectStatusForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projectstatuses.createProjectStatusForProject(projectGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_statuses_api_instance = asana.ProjectStatusesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The project status to create. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "author,author.name,color,created_at,created_by,created_by.name,html_text,modified_at,text,title", # 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: + # Create a project status + api_response = project_statuses_api_instance.create_project_status_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectStatusesApi->create_project_status_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_statuses.create_project_status_for_project(project_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projectstatuses->createProjectStatusForProject($project_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_statuses.create_project_status_for_project(project_gid: + 'project_gid', field: "value", field: "value", options: {pretty: true}) + /project_templates/{project_template_gid}: + parameters: + - $ref: '#/components/parameters/project_template_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a project template + description: Returns the complete project template record for a single project + template. + tags: + - Project templates + operationId: getProjectTemplate + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - description + - html_description + - name + - owner + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + schema: + type: array + items: + type: string + enum: + - color + - description + - html_description + - name + - owner + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested project template. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectTemplateResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projecttemplates.getProjectTemplate(projectTemplateGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectTemplatesApiInstance = new Asana.ProjectTemplatesApi(); + let project_template_gid = "1331"; // String | Globally unique identifier for the project template. + let opts = { + 'opt_fields': "color,description,html_description,name,owner,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name" + }; + projectTemplatesApiInstance.getProjectTemplate(project_template_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projecttemplates.getProjectTemplate(projectTemplateGid, {param: + "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_templates_api_instance = asana.ProjectTemplatesApi(api_client) + project_template_gid = "1331" # str | Globally unique identifier for the project template. + opts = { + 'opt_fields': "color,description,html_description,name,owner,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name", # 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: + # Get a project template + api_response = project_templates_api_instance.get_project_template(project_template_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectTemplatesApi->get_project_template: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_templates.get_project_template(project_template_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projecttemplates->getProjectTemplate($project_template_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_templates.get_project_template(project_template_gid: + 'project_template_gid', param: "value", param: "value", options: {pretty: + true}) + delete: + summary: Delete a project template + description: |- + A specific, existing project template can be deleted by making a DELETE request on the URL for that project template. + + Returns an empty data record. + tags: + - Project templates + operationId: deleteProjectTemplate + responses: + 200: + description: Successfully deleted the specified project template. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectTemplatesApiInstance = new Asana.ProjectTemplatesApi(); + let project_template_gid = "1331"; // String | Globally unique identifier for the project template. + + projectTemplatesApiInstance.deleteProjectTemplate(project_template_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_templates_api_instance = asana.ProjectTemplatesApi(api_client) + project_template_gid = "1331" # str | Globally unique identifier for the project template. + + + try: + # Delete a project template + api_response = project_templates_api_instance.delete_project_template(project_template_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectTemplatesApi->delete_project_template: %s\n" % e) + name: python-sdk-v5 + /project_templates: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple project templates + description: >- + Returns the compact project template records for all project templates in + the given team or workspace. + tags: + - Project templates + operationId: getProjectTemplates + parameters: + - $ref: '#/components/parameters/workspace_query_param' + - $ref: '#/components/parameters/team_query_param' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - description + - html_description + - name + - offset + - owner + - path + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + - uri + schema: + type: array + items: + type: string + enum: + - color + - description + - html_description + - name + - offset + - owner + - path + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested team's or workspace's + project templates. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectTemplateCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projecttemplates.getProjectTemplates(team, + workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectTemplatesApiInstance = new Asana.ProjectTemplatesApi(); + let opts = { + 'workspace': "12345", + 'team': "14916", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "color,description,html_description,name,offset,owner,path,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name,uri" + }; + projectTemplatesApiInstance.getProjectTemplates(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projecttemplates.getProjectTemplates({param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_templates_api_instance = asana.ProjectTemplatesApi(api_client) + opts = { + 'workspace': "12345", # str | The workspace to filter results on. + 'team': "14916", # str | The team to filter projects on. + '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': "color,description,html_description,name,offset,owner,path,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name,uri", # 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: + # Get multiple project templates + api_response = project_templates_api_instance.get_project_templates(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectTemplatesApi->get_project_templates: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_templates.get_project_templates({'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projecttemplates->getProjectTemplates(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_templates.get_project_templates(param: "value", + param: "value", options: {pretty: true}) + /teams/{team_gid}/project_templates: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a team's project templates + description: >- + Returns the compact project template records for all project templates in + the team. + tags: + - Project templates + operationId: getProjectTemplatesForTeam + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - description + - html_description + - name + - offset + - owner + - path + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + - uri + schema: + type: array + items: + type: string + enum: + - color + - description + - html_description + - name + - offset + - owner + - path + - public + - requested_dates + - requested_dates.description + - requested_dates.name + - requested_roles + - requested_roles.name + - team + - team.name + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested team's project templates. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectTemplateCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projecttemplates.getProjectTemplatesForTeam(teamGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectTemplatesApiInstance = new Asana.ProjectTemplatesApi(); + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "color,description,html_description,name,offset,owner,path,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name,uri" + }; + projectTemplatesApiInstance.getProjectTemplatesForTeam(team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projecttemplates.getProjectTemplatesForTeam(teamGid, {param: + "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_templates_api_instance = asana.ProjectTemplatesApi(api_client) + team_gid = "159874" # str | Globally unique identifier for the team. + 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': "color,description,html_description,name,offset,owner,path,public,requested_dates,requested_dates.description,requested_dates.name,requested_roles,requested_roles.name,team,team.name,uri", # 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: + # Get a team's project templates + api_response = project_templates_api_instance.get_project_templates_for_team(team_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectTemplatesApi->get_project_templates_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_templates.get_project_templates_for_team(team_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projecttemplates->getProjectTemplatesForTeam($team_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_templates.get_project_templates_for_team(team_gid: + 'team_gid', param: "value", param: "value", options: {pretty: true}) + /project_templates/{project_template_gid}/instantiateProject: + parameters: + - $ref: '#/components/parameters/project_template_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Instantiate a project from a project template + description: >- + Creates and returns a job that will asynchronously handle the project instantiation. + + + To form this request, it is recommended to first make a request to + [get a project template](/reference/getprojecttemplate). Then, from the response, + copy the + `gid` from the object in the `requested_dates` array. This `gid` should be + used in + `requested_dates` to instantiate a project. + + + _Note: The body of this request will differ if your workspace is an organization. + To determine if your workspace is an organization, use the + [is_organization](/reference/workspaces) parameter._ + tags: + - Project templates + operationId: instantiateProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + requestBody: + description: >- + Describes the inputs used for instantiating a project, such as the resulting + project's name, + which team it should be created in, and values for date variables. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectTemplateInstantiateProjectRequest' + responses: + 201: + description: Successfully created the job to handle project instantiation. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Job result = client.projecttemplates.instantiateProject(projectTemplateGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectTemplatesApiInstance = new Asana.ProjectTemplatesApi(); + let project_template_gid = "1331"; // String | Globally unique identifier for the project template. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + projectTemplatesApiInstance.instantiateProject(project_template_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projecttemplates.instantiateProject(projectTemplateGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + project_templates_api_instance = asana.ProjectTemplatesApi(api_client) + project_template_gid = "1331" # str | Globally unique identifier for the project template. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | Describes the inputs used for instantiating a project, such as the resulting project's name, which team it should be created in, and values for date variables. + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Instantiate a project from a project template + api_response = project_templates_api_instance.instantiate_project(project_template_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectTemplatesApi->instantiate_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.project_templates.instantiate_project(project_template_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projecttemplates->instantiateProject($project_template_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.project_templates.instantiate_project(project_template_gid: + 'project_template_gid', field: "value", field: "value", options: {pretty: + true}) + /projects: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple projects + description: >- + Returns the compact project records for some filtered set of projects. + Use one or more of the parameters provided to filter the projects + returned. + + *Note: This endpoint may timeout for large domains. Try filtering by team!* + tags: + - Projects + operationId: getProjects + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: workspace + in: query + description: >- + The workspace or organization to filter projects on. + schema: + type: string + example: '1331' + - name: team + in: query + description: The team to filter projects on. + schema: + type: string + example: '14916' + - $ref: '#/components/parameters/archived_query_param' + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved projects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projects.getProjects(archived, team, workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'workspace': "1331", + 'team': "14916", + 'archived': false, + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name" + }; + projectsApiInstance.getProjects(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getProjects({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + 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.' + 'workspace': "1331", # str | The workspace or organization to filter projects on. + 'team': "14916", # str | The team to filter projects on. + 'archived': False, # bool | Only return projects whose `archived` field takes on the value of this parameter. + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name", # 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: + # Get multiple projects + api_response = projects_api_instance.get_projects(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectsApi->get_projects: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_projects({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getProjects(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_projects(param: "value", param: "value", + options: {pretty: true}) + post: + summary: Create a project + description: |- + Create a new project in a workspace or team. + + Every project is required to be created in a specific workspace or + organization, and this cannot be changed once set. Note that you can use + the `workspace` parameter regardless of whether or not it is an + organization. + + If the workspace for your project is an organization, you must also + supply a `team` to share the project with. + + Returns the full record of the newly created project. + tags: + - Projects + operationId: createProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The project to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectRequest' + responses: + 201: + description: Successfully retrieved projects. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.createProject() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The project to create. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.createProject(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.createProject({field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The project to create. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Create a project + api_response = projects_api_instance.create_project(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->create_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.create_project({'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->createProject(array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.create_project(field: "value", field: "value", + options: {pretty: true}) + /projects/{project_gid}: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a project + description: Returns the complete project record for a single project. + tags: + - Projects + operationId: getProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.getProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.getProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getProject(projectGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Get a project + api_response = projects_api_instance.get_project(project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->get_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_project(project_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getProject($project_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_project(project_gid: 'project_gid', param: + "value", param: "value", options: {pretty: true}) + put: + summary: Update a project + description: |- + A specific, existing project can be updated by making a PUT request on + the URL for that project. Only the fields provided in the `data` block + will be updated; any unspecified fields will remain unchanged. + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the task. + + Returns the complete updated project record. + tags: + - Projects + operationId: updateProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The updated fields for the project. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectUpdateRequest' + responses: + 200: + description: Successfully updated the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.updateProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the project. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.updateProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.updateProject(projectGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the project. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Update a project + api_response = projects_api_instance.update_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->update_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.update_project(project_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->updateProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.update_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a project + description: |- + A specific, existing project can be deleted by making a DELETE request on + the URL for that project. + + Returns an empty data record. + tags: + - Projects + operationId: deleteProject + responses: + 200: + description: Successfully deleted the specified project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projects.deleteProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + + projectsApiInstance.deleteProject(project_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.deleteProject(projectGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + + + try: + # Delete a project + api_response = projects_api_instance.delete_project(project_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->delete_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.delete_project(project_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->deleteProject($project_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.delete_project(project_gid: 'project_gid', + options: {pretty: true}) + /projects/{project_gid}/duplicate: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Duplicate a project + description: >- + Creates and returns a job that will asynchronously handle the duplication. + tags: + - Projects + operationId: duplicateProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + requestBody: + description: >- + Describes the duplicate's name and the elements that will be duplicated. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectDuplicateRequest' + responses: + 201: + description: Successfully created the job to handle duplication. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Job result = client.projects.duplicateProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + projectsApiInstance.duplicateProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.duplicateProject(projectGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | Describes the duplicate's name and the elements that will be duplicated. + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Duplicate a project + api_response = projects_api_instance.duplicate_project(project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->duplicate_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.duplicate_project(project_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->duplicateProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.duplicate_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/projects: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get projects a task is in + description: >- + Returns a compact representation of all of the projects the task is in. + tags: + - Projects + operationId: getProjectsForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the projects for the given task. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projects.getProjectsForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name" + }; + projectsApiInstance.getProjectsForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getProjectsForTask(taskGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + task_gid = "321654" # str | The task to operate 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': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name", # 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: + # Get projects a task is in + api_response = projects_api_instance.get_projects_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectsApi->get_projects_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_projects_for_task(task_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getProjectsForTask($task_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_projects_for_task(task_gid: 'task_gid', + param: "value", param: "value", options: {pretty: true}) + /teams/{team_gid}/projects: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a team's projects + description: >- + Returns the compact project records for all projects in the team. + tags: + - Projects + operationId: getProjectsForTeam + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/archived_query_param' + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested team's projects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projects.getProjectsForTeam(teamGid, archived) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'archived': false, + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name" + }; + projectsApiInstance.getProjectsForTeam(team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getProjectsForTeam(teamGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + team_gid = "159874" # str | Globally unique identifier for the team. + 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.' + 'archived': False, # bool | Only return projects whose `archived` field takes on the value of this parameter. + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name", # 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: + # Get a team's projects + api_response = projects_api_instance.get_projects_for_team(team_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectsApi->get_projects_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_projects_for_team(team_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getProjectsForTeam($team_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_projects_for_team(team_gid: 'team_gid', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a project in a team + description: |- + Creates a project shared with the given team. + + Returns the full record of the newly created project. + tags: + - Projects + operationId: createProjectForTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The new project to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectRequest' + responses: + 201: + description: Successfully created the specified project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.createProjectForTeam(teamGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The new project to create. + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.createProjectForTeam(body, team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.createProjectForTeam(teamGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The new project to create. + team_gid = "159874" # str | Globally unique identifier for the team. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Create a project in a team + api_response = projects_api_instance.create_project_for_team(body, team_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->create_project_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.create_project_for_team(team_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->createProjectForTeam($team_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.create_project_for_team(team_gid: 'team_gid', + field: "value", field: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/projects: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get all projects in a workspace + description: >- + Returns the compact project records for all projects in the workspace. + + *Note: This endpoint may timeout for large domains. Prefer the + `/teams/{team_gid}/projects` endpoint.* + tags: + - Projects + operationId: getProjectsForWorkspace + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/archived_query_param' + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - offset + - owner + - path + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested workspace's projects. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/ProjectCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.projects.getProjectsForWorkspace(workspaceGid, + archived) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'archived': false, + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name" + }; + projectsApiInstance.getProjectsForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getProjectsForWorkspace(workspaceGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + 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.' + 'archived': False, # bool | Only return projects whose `archived` field takes on the value of this parameter. + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,offset,owner,path,permalink_url,project_brief,public,start_on,team,team.name,uri,workspace,workspace.name", # 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: + # Get all projects in a workspace + api_response = projects_api_instance.get_projects_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling ProjectsApi->get_projects_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_projects_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getProjectsForWorkspace($workspace_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_projects_for_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a project in a workspace + description: |- + Creates a project in the workspace. + + If the workspace for your project is an organization, you must also + supply a team to share the project with. + + Returns the full record of the newly created project. + tags: + - Projects + operationId: createProjectForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The new project to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectRequest' + responses: + 201: + description: >- + Successfully created a new project in the specified workspace. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.createProjectForWorkspace(workspaceGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The new project to create. + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.createProjectForWorkspace(body, workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.createProjectForWorkspace(workspaceGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The new project to create. + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Create a project in a workspace + api_response = projects_api_instance.create_project_for_workspace(body, workspace_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->create_project_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.create_project_for_workspace(workspace_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->createProjectForWorkspace($workspace_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.create_project_for_workspace(workspace_gid: + 'workspace_gid', field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/addCustomFieldSetting: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a custom field to a project + description: >- + Custom fields are associated with projects by way of custom field + settings. This method creates a setting for the project. + tags: + - Projects + operationId: addCustomFieldSettingForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - parent + - parent.name + - project + - project.name + schema: + type: array + items: + type: string + enum: + - custom_field + - custom_field.asana_created_field + - custom_field.created_by + - custom_field.created_by.name + - custom_field.currency_code + - custom_field.custom_label + - custom_field.custom_label_position + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.description + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.format + - custom_field.has_notifications_enabled + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.is_global_to_workspace + - custom_field.is_value_read_only + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.people_value + - custom_field.people_value.name + - custom_field.precision + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - is_important + - parent + - parent.name + - project + - project.name + style: form + explode: false + requestBody: + description: Information about the custom field setting. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AddCustomFieldSettingRequest' + responses: + 200: + description: Successfully added the custom field to the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CustomFieldSettingResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + CustomFieldSetting result = client.projects.addCustomFieldSettingForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the custom field setting. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,parent,parent.name,project,project.name" + }; + projectsApiInstance.addCustomFieldSettingForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.addCustomFieldSettingForProject(projectGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the custom field setting. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "custom_field,custom_field.asana_created_field,custom_field.created_by,custom_field.created_by.name,custom_field.currency_code,custom_field.custom_label,custom_field.custom_label_position,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.description,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.format,custom_field.has_notifications_enabled,custom_field.id_prefix,custom_field.is_formula_field,custom_field.is_global_to_workspace,custom_field.is_value_read_only,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.people_value,custom_field.people_value.name,custom_field.precision,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,is_important,parent,parent.name,project,project.name", # 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: + # Add a custom field to a project + api_response = projects_api_instance.add_custom_field_setting_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->add_custom_field_setting_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.add_custom_field_setting_for_project(project_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->addCustomFieldSettingForProject($project_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.add_custom_field_setting_for_project(project_gid: + 'project_gid', field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/removeCustomFieldSetting: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a custom field from a project + description: >- + Removes a custom field setting from a project. + tags: + - Projects + operationId: removeCustomFieldSettingForProject + requestBody: + description: Information about the custom field setting being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RemoveCustomFieldSettingRequest' + responses: + 200: + description: Successfully removed the custom field from the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projects.removeCustomFieldSettingForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the custom field setting being removed. + let project_gid = "1331"; // String | Globally unique identifier for the project. + + projectsApiInstance.removeCustomFieldSettingForProject(body, project_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.removeCustomFieldSettingForProject(projectGid, {field: + "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the custom field setting being removed. + project_gid = "1331" # str | Globally unique identifier for the project. + + + try: + # Remove a custom field from a project + api_response = projects_api_instance.remove_custom_field_setting_for_project(body, project_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->remove_custom_field_setting_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.remove_custom_field_setting_for_project(project_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->removeCustomFieldSettingForProject($project_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.remove_custom_field_setting_for_project(project_gid: + 'project_gid', field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/task_counts: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get task count of a project + description: >- + Get an object that holds task count fields. **All fields are excluded by default**. + You must + [opt in](/docs/inputoutput-options) using `opt_fields` to get any information + from this endpoint. + + + This endpoint has an additional [rate limit](/docs/rate-limits) and each field + counts especially high + against our [cost limits](/docs/rate-limits#cost-limits). + + + Milestones are just tasks, so they are included in the `num_tasks`, `num_incomplete_tasks`, + and + `num_completed_tasks` counts. + tags: + - Projects + operationId: getTaskCountsForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - num_completed_milestones + - num_completed_tasks + - num_incomplete_milestones + - num_incomplete_tasks + - num_milestones + - num_tasks + schema: + type: array + items: + type: string + enum: + - num_completed_milestones + - num_completed_tasks + - num_incomplete_milestones + - num_incomplete_tasks + - num_milestones + - num_tasks + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested project's task counts. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskCountResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.projects.getTaskCountsForProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "num_completed_milestones,num_completed_tasks,num_incomplete_milestones,num_incomplete_tasks,num_milestones,num_tasks" + }; + projectsApiInstance.getTaskCountsForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.getTaskCountsForProject(projectGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "num_completed_milestones,num_completed_tasks,num_incomplete_milestones,num_incomplete_tasks,num_milestones,num_tasks", # 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: + # Get task count of a project + api_response = projects_api_instance.get_task_counts_for_project(project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->get_task_counts_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.get_task_counts_for_project(project_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->getTaskCountsForProject($project_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.get_task_counts_for_project(project_gid: 'project_gid', + param: "value", param: "value", options: {pretty: true}) + /projects/{project_gid}/addMembers: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add users to a project + description: >- + Adds the specified list of users as members of the project. Note that + a user being added as a member may also be added as a *follower* as a + result of this operation. This is because the user's default notification + settings (i.e., in the "Notifcations" tab of "My Profile Settings") will + override this endpoint's default behavior of setting "Tasks added" + notifications to `false`. + + Returns the updated project record. + tags: + - Projects + operationId: addMembersForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the members being added. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AddMembersRequest' + responses: + 200: + description: Successfully added members to the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.addMembersForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the members being added. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.addMembersForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.addMembersForProject(projectGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the members being added. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Add users to a project + api_response = projects_api_instance.add_members_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->add_members_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.add_members_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->addMembersForProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.add_members_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/removeMembers: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove users from a project + description: >- + Removes the specified list of users from members of the project. + + Returns the updated project record. + tags: + - Projects + operationId: removeMembersForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the members being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RemoveMembersRequest' + responses: + 200: + description: Successfully removed the members from the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.removeMembersForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the members being removed. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.removeMembersForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.removeMembersForProject(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the members being removed. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Remove users from a project + api_response = projects_api_instance.remove_members_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->remove_members_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.remove_members_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->removeMembersForProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.remove_members_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/addFollowers: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add followers to a project + description: >- + Adds the specified list of users as followers to the project. Followers + are a subset of members who have opted in to receive "tasks added" + notifications for a project. Therefore, if the users are not already + members of the project, they will also become members as a result of + this operation. + + Returns the updated project record. + tags: + - Projects + operationId: addFollowersForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the followers being added. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/AddFollowersRequest' + responses: + 200: + description: Successfully added followers to the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.addFollowersForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the followers being added. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.addFollowersForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.addFollowersForProject(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the followers being added. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Add followers to a project + api_response = projects_api_instance.add_followers_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->add_followers_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.add_followers_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->addFollowersForProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.add_followers_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/removeFollowers: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove followers from a project + description: >- + Removes the specified list of users from following the project, this will + not affect project membership status. + + Returns the updated project record. + tags: + - Projects + operationId: removeFollowersForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - archived + - color + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_from_template + - created_from_template.name + - current_status + - current_status.author + - current_status.author.name + - current_status.color + - current_status.created_at + - current_status.created_by + - current_status.created_by.name + - current_status.html_text + - current_status.modified_at + - current_status.text + - current_status.title + - current_status_update + - current_status_update.resource_subtype + - current_status_update.title + - custom_field_settings + - custom_field_settings.custom_field + - custom_field_settings.custom_field.asana_created_field + - custom_field_settings.custom_field.created_by + - custom_field_settings.custom_field.created_by.name + - custom_field_settings.custom_field.currency_code + - custom_field_settings.custom_field.custom_label + - custom_field_settings.custom_field.custom_label_position + - custom_field_settings.custom_field.date_value + - custom_field_settings.custom_field.date_value.date + - custom_field_settings.custom_field.date_value.date_time + - custom_field_settings.custom_field.description + - custom_field_settings.custom_field.display_value + - custom_field_settings.custom_field.enabled + - custom_field_settings.custom_field.enum_options + - custom_field_settings.custom_field.enum_options.color + - custom_field_settings.custom_field.enum_options.enabled + - custom_field_settings.custom_field.enum_options.name + - custom_field_settings.custom_field.enum_value + - custom_field_settings.custom_field.enum_value.color + - custom_field_settings.custom_field.enum_value.enabled + - custom_field_settings.custom_field.enum_value.name + - custom_field_settings.custom_field.format + - custom_field_settings.custom_field.has_notifications_enabled + - custom_field_settings.custom_field.id_prefix + - custom_field_settings.custom_field.is_formula_field + - custom_field_settings.custom_field.is_global_to_workspace + - custom_field_settings.custom_field.is_value_read_only + - custom_field_settings.custom_field.multi_enum_values + - custom_field_settings.custom_field.multi_enum_values.color + - custom_field_settings.custom_field.multi_enum_values.enabled + - custom_field_settings.custom_field.multi_enum_values.name + - custom_field_settings.custom_field.name + - custom_field_settings.custom_field.number_value + - custom_field_settings.custom_field.people_value + - custom_field_settings.custom_field.people_value.name + - custom_field_settings.custom_field.precision + - custom_field_settings.custom_field.representation_type + - custom_field_settings.custom_field.resource_subtype + - custom_field_settings.custom_field.text_value + - custom_field_settings.custom_field.type + - custom_field_settings.is_important + - custom_field_settings.parent + - custom_field_settings.parent.name + - custom_field_settings.project + - custom_field_settings.project.name + - custom_fields + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - default_access_level + - default_view + - due_date + - due_on + - followers + - followers.name + - html_notes + - icon + - members + - members.name + - minimum_access_level_for_customization + - minimum_access_level_for_sharing + - modified_at + - name + - notes + - owner + - permalink_url + - privacy_setting + - project_brief + - public + - start_on + - team + - team.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: Information about the followers being removed. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RemoveFollowersRequest' + responses: + 200: + description: Successfully removed followers from the project. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Project result = client.projects.removeFollowersForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the followers being removed. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name" + }; + projectsApiInstance.removeFollowersForProject(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.removeFollowersForProject(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the followers being removed. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "archived,color,completed,completed_at,completed_by,completed_by.name,created_at,created_from_template,created_from_template.name,current_status,current_status.author,current_status.author.name,current_status.color,current_status.created_at,current_status.created_by,current_status.created_by.name,current_status.html_text,current_status.modified_at,current_status.text,current_status.title,current_status_update,current_status_update.resource_subtype,current_status_update.title,custom_field_settings,custom_field_settings.custom_field,custom_field_settings.custom_field.asana_created_field,custom_field_settings.custom_field.created_by,custom_field_settings.custom_field.created_by.name,custom_field_settings.custom_field.currency_code,custom_field_settings.custom_field.custom_label,custom_field_settings.custom_field.custom_label_position,custom_field_settings.custom_field.date_value,custom_field_settings.custom_field.date_value.date,custom_field_settings.custom_field.date_value.date_time,custom_field_settings.custom_field.description,custom_field_settings.custom_field.display_value,custom_field_settings.custom_field.enabled,custom_field_settings.custom_field.enum_options,custom_field_settings.custom_field.enum_options.color,custom_field_settings.custom_field.enum_options.enabled,custom_field_settings.custom_field.enum_options.name,custom_field_settings.custom_field.enum_value,custom_field_settings.custom_field.enum_value.color,custom_field_settings.custom_field.enum_value.enabled,custom_field_settings.custom_field.enum_value.name,custom_field_settings.custom_field.format,custom_field_settings.custom_field.has_notifications_enabled,custom_field_settings.custom_field.id_prefix,custom_field_settings.custom_field.is_formula_field,custom_field_settings.custom_field.is_global_to_workspace,custom_field_settings.custom_field.is_value_read_only,custom_field_settings.custom_field.multi_enum_values,custom_field_settings.custom_field.multi_enum_values.color,custom_field_settings.custom_field.multi_enum_values.enabled,custom_field_settings.custom_field.multi_enum_values.name,custom_field_settings.custom_field.name,custom_field_settings.custom_field.number_value,custom_field_settings.custom_field.people_value,custom_field_settings.custom_field.people_value.name,custom_field_settings.custom_field.precision,custom_field_settings.custom_field.representation_type,custom_field_settings.custom_field.resource_subtype,custom_field_settings.custom_field.text_value,custom_field_settings.custom_field.type,custom_field_settings.is_important,custom_field_settings.parent,custom_field_settings.parent.name,custom_field_settings.project,custom_field_settings.project.name,custom_fields,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,default_access_level,default_view,due_date,due_on,followers,followers.name,html_notes,icon,members,members.name,minimum_access_level_for_customization,minimum_access_level_for_sharing,modified_at,name,notes,owner,permalink_url,project_brief,public,start_on,team,team.name,workspace,workspace.name", # 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: + # Remove followers from a project + api_response = projects_api_instance.remove_followers_for_project(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->remove_followers_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.remove_followers_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->removeFollowersForProject($project_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.remove_followers_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/saveAsTemplate: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Create a project template from a project + description: |- + Creates and returns a job that will asynchronously handle the project template creation. Note that + while the resulting project template can be accessed with the API, it won't be visible in the Asana + UI until Project Templates 2.0 is launched in the app. See more in [this forum post](https://forum.asana.com/t/a-new-api-for-project-templates/156432). + tags: + - Projects + operationId: projectSaveAsTemplate + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + requestBody: + description: >- + Describes the inputs used for creating a project template, such as the resulting + project template's name, + which team it should be created in. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectSaveAsTemplateRequest' + responses: + 201: + description: Successfully created the job to handle project template creation. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Job result = client.projects.projectSaveAsTemplate(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let projectsApiInstance = new Asana.ProjectsApi(); + let body = {"data": {"": "", "": "",}}; // Object | Describes the inputs used for creating a project template, such as the resulting project template's name, which team it should be created in. + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + projectsApiInstance.projectSaveAsTemplate(body, project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.projects.projectSaveAsTemplate(projectGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + projects_api_instance = asana.ProjectsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Describes the inputs used for creating a project template, such as the resulting project template's name, which team it should be created in. + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Create a project template from a project + api_response = projects_api_instance.project_save_as_template(body, project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling ProjectsApi->project_save_as_template: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.projects.project_save_as_template(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + projects->projectSaveAsTemplate($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.projects.project_save_as_template(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /rule_triggers/{rule_trigger_gid}/run: + parameters: + - $ref: '#/components/parameters/rule_trigger_path_gid' + post: + summary: Trigger a rule + description: |- + Trigger a rule which uses an ["incoming web request"](/docs/incoming-web-requests) trigger. + tags: + - Rules + operationId: triggerRule + requestBody: + description: A dictionary of variables accessible from within the rule. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RuleTriggerRequest' + responses: + 200: + description: Successfully triggered a rule. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/RuleTriggerResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let rulesApiInstance = new Asana.RulesApi(); + let body = {"data": {"": "", "": "",}}; // Object | A dictionary of variables accessible from within the rule. + let rule_trigger_gid = "12345"; // String | The ID of the incoming web request trigger. This value is a path parameter that is automatically generated for the API endpoint. + + rulesApiInstance.triggerRule(body, rule_trigger_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + rules_api_instance = asana.RulesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | A dictionary of variables accessible from within the rule. + rule_trigger_gid = "12345" # str | The ID of the incoming web request trigger. This value is a path parameter that is automatically generated for the API endpoint. + + + try: + # Trigger a rule + api_response = rules_api_instance.trigger_rule(body, rule_trigger_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling RulesApi->trigger_rule: %s\n" % e) + name: python-sdk-v5 + /sections/{section_gid}: + parameters: + - $ref: '#/components/parameters/section_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a section + description: >- + Returns the complete record for a single section. + tags: + - Sections + operationId: getSection + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - name + - project + - project.name + - projects + - projects.name + schema: + type: array + items: + type: string + enum: + - created_at + - name + - project + - project.name + - projects + - projects.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved section. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Section result = client.sections.getSection(sectionGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let section_gid = "321654"; // String | The globally unique identifier for the section. + let opts = { + 'opt_fields': "created_at,name,project,project.name,projects,projects.name" + }; + sectionsApiInstance.getSection(section_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.getSection(sectionGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + section_gid = "321654" # str | The globally unique identifier for the section. + opts = { + 'opt_fields': "created_at,name,project,project.name,projects,projects.name", # 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: + # Get a section + api_response = sections_api_instance.get_section(section_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->get_section: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.get_section(section_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->getSection($section_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.get_section(section_gid: 'section_gid', param: + "value", param: "value", options: {pretty: true}) + put: + summary: Update a section + description: |- + A specific, existing section can be updated by making a PUT request on + the URL for that project. Only the fields provided in the `data` block + will be updated; any unspecified fields will remain unchanged. (note that + at this time, the only field that can be updated is the `name` field.) + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the task. + + Returns the complete updated section record. + tags: + - Sections + operationId: updateSection + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - name + - project + - project.name + - projects + - projects.name + schema: + type: array + items: + type: string + enum: + - created_at + - name + - project + - project.name + - projects + - projects.name + style: form + explode: false + requestBody: + description: The section to create. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionRequest' + responses: + 200: + description: Successfully updated the specified section. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Section result = client.sections.updateSection(sectionGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let section_gid = "321654"; // String | The globally unique identifier for the section. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "created_at,name,project,project.name,projects,projects.name" + }; + sectionsApiInstance.updateSection(section_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.updateSection(sectionGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + section_gid = "321654" # str | The globally unique identifier for the section. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The section to create. + 'opt_fields': "created_at,name,project,project.name,projects,projects.name", # 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: + # Update a section + api_response = sections_api_instance.update_section(section_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->update_section: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.update_section(section_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->updateSection($section_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.update_section(section_gid: 'section_gid', + field: "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a section + description: |- + A specific, existing section can be deleted by making a DELETE request on + the URL for that section. + + Note that sections must be empty to be deleted. + + The last remaining section cannot be deleted. + + Returns an empty data block. + tags: + - Sections + operationId: deleteSection + responses: + 200: + description: Successfully deleted the specified section. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.sections.deleteSection(sectionGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let section_gid = "321654"; // String | The globally unique identifier for the section. + + sectionsApiInstance.deleteSection(section_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.deleteSection(sectionGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + section_gid = "321654" # str | The globally unique identifier for the section. + + + try: + # Delete a section + api_response = sections_api_instance.delete_section(section_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->delete_section: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.delete_section(section_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->deleteSection($section_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.delete_section(section_gid: 'section_gid', + options: {pretty: true}) + /projects/{project_gid}/sections: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get sections in a project + description: >- + Returns the compact records for all sections in the specified project. + tags: + - Sections + operationId: getSectionsForProject + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - name + - offset + - path + - project + - project.name + - projects + - projects.name + - uri + schema: + type: array + items: + type: string + enum: + - created_at + - name + - offset + - path + - project + - project.name + - projects + - projects.name + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved sections in project. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/SectionCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List
result = client.sections.getSectionsForProject(projectGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "created_at,name,offset,path,project,project.name,projects,projects.name,uri" + }; + sectionsApiInstance.getSectionsForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.getSectionsForProject(projectGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + 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': "created_at,name,offset,path,project,project.name,projects,projects.name,uri", # 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: + # Get sections in a project + api_response = sections_api_instance.get_sections_for_project(project_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling SectionsApi->get_sections_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.get_sections_for_project(project_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->getSectionsForProject($project_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.get_sections_for_project(project_gid: 'project_gid', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a section in a project + description: >- + Creates a new section in a project. + + Returns the full record of the newly created section. + tags: + - Sections + operationId: createSectionForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - name + - project + - project.name + - projects + - projects.name + schema: + type: array + items: + type: string + enum: + - created_at + - name + - project + - project.name + - projects + - projects.name + style: form + explode: false + requestBody: + description: The section to create. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionRequest' + responses: + 201: + description: Successfully created the specified section. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Section result = client.sections.createSectionForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "created_at,name,project,project.name,projects,projects.name" + }; + sectionsApiInstance.createSectionForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.createSectionForProject(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The section to create. + 'opt_fields': "created_at,name,project,project.name,projects,projects.name", # 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: + # Create a section in a project + api_response = sections_api_instance.create_section_for_project(project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->create_section_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.create_section_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->createSectionForProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.create_section_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /sections/{section_gid}/addTask: + parameters: + - $ref: '#/components/parameters/section_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add task to section + description: |- + Add a task to a specific, existing section. This will remove the task from other sections of the project. + + The task will be inserted at the top of a section unless an insert_before or insert_after parameter is declared. + + This does not work for separators (tasks with the resource_subtype of section). + tags: + - Sections + operationId: addTaskForSection + requestBody: + description: The task and optionally the insert location. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/SectionTaskInsertRequest' + responses: + 200: + description: Successfully added the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.sections.addTaskForSection(sectionGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let section_gid = "321654"; // String | The globally unique identifier for the section. + let opts = { + 'body': {"data": {"": "", "": "",}} + }; + sectionsApiInstance.addTaskForSection(section_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.addTaskForSection(sectionGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + section_gid = "321654" # str | The globally unique identifier for the section. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The task and optionally the insert location. + } + + try: + # Add task to section + api_response = sections_api_instance.add_task_for_section(section_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->add_task_for_section: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.add_task_for_section(section_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->addTaskForSection($section_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.add_task_for_section(section_gid: 'section_gid', + field: "value", field: "value", options: {pretty: true}) + /projects/{project_gid}/sections/insert: + parameters: + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Move or Insert sections + description: |- + Move sections relative to each other. One of + `before_section` or `after_section` is required. + + Sections cannot be moved between projects. + + Returns an empty data block. + tags: + - Sections + operationId: insertSectionForProject + requestBody: + description: The section's move action. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ProjectSectionInsertRequest' + responses: + 200: + description: Successfully moved the specified section. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.sections.insertSectionForProject(projectGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let sectionsApiInstance = new Asana.SectionsApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'body': {"data": {"": "", "": "",}} + }; + sectionsApiInstance.insertSectionForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.sections.insertSectionForProject(projectGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + sections_api_instance = asana.SectionsApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | The section's move action. + } + + try: + # Move or Insert sections + api_response = sections_api_instance.insert_section_for_project(project_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling SectionsApi->insert_section_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.sections.insert_section_for_project(project_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + sections->insertSectionForProject($project_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.sections.insert_section_for_project(project_gid: 'project_gid', + field: "value", field: "value", options: {pretty: true}) + /status_updates/{status_update_gid}: + parameters: + - $ref: '#/components/parameters/status_update_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a status update + description: >- + Returns the complete record for a single status update. + tags: + - Status updates + operationId: getStatus + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - parent + - parent.name + - resource_subtype + - status_type + - text + - title + schema: + type: array + items: + type: string + enum: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - parent + - parent.name + - resource_subtype + - status_type + - text + - title + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified object's status updates. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StatusUpdateResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.statusupdates.getStatus(statusGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let statusUpdatesApiInstance = new Asana.StatusUpdatesApi(); + let status_update_gid = "321654"; // String | The status update to get. + let opts = { + 'opt_fields': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,parent,parent.name,resource_subtype,status_type,text,title" + }; + statusUpdatesApiInstance.getStatus(status_update_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.statusupdates.getStatus(statusGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + status_updates_api_instance = asana.StatusUpdatesApi(api_client) + status_update_gid = "321654" # str | The status update to get. + opts = { + 'opt_fields': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,parent,parent.name,resource_subtype,status_type,text,title", # 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: + # Get a status update + api_response = status_updates_api_instance.get_status(status_update_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling StatusUpdatesApi->get_status: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.status_updates.get_status(status_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + statusupdates->getStatus($status_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.status_updates.get_status(status_gid: 'status_gid', + param: "value", param: "value", options: {pretty: true}) + delete: + summary: Delete a status update + description: |- + Deletes a specific, existing status update. + + Returns an empty data record. + tags: + - Status updates + operationId: deleteStatus + responses: + 200: + description: Successfully deleted the specified status. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.statusupdates.deleteStatus(statusGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let statusUpdatesApiInstance = new Asana.StatusUpdatesApi(); + let status_update_gid = "321654"; // String | The status update to get. + + statusUpdatesApiInstance.deleteStatus(status_update_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.statusupdates.deleteStatus(statusGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + status_updates_api_instance = asana.StatusUpdatesApi(api_client) + status_update_gid = "321654" # str | The status update to get. + + + try: + # Delete a status update + api_response = status_updates_api_instance.delete_status(status_update_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling StatusUpdatesApi->delete_status: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.status_updates.delete_status(status_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + statusupdates->deleteStatus($status_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.status_updates.delete_status(status_gid: 'status_gid', + options: {pretty: true}) + /status_updates: + parameters: + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get status updates from an object + description: >- + Returns the compact status update records for all updates on the object. + tags: + - Status updates + operationId: getStatusesForObject + parameters: + - name: parent + required: true + in: query + description: >- + Globally unique identifier for object to fetch statuses from. Must be + a GID + for a project, portfolio, or goal. + schema: + type: string + example: '159874' + - name: created_since + in: query + description: |- + Only return statuses that have been created since the given time. + schema: + type: string + format: date-time + example: '2012-02-22T02:06:58.158Z' + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - offset + - parent + - parent.name + - path + - resource_subtype + - status_type + - text + - title + - uri + schema: + type: array + items: + type: string + enum: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - offset + - parent + - parent.name + - path + - resource_subtype + - status_type + - text + - title + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified object's status updates. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/StatusUpdateCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.statusupdates.getStatusesForObject(createdSince, + parent) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let statusUpdatesApiInstance = new Asana.StatusUpdatesApi(); + let parent = "159874"; // String | Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'created_since': "2012-02-22T02:06:58.158Z", + 'opt_fields': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,offset,parent,parent.name,path,resource_subtype,status_type,text,title,uri" + }; + statusUpdatesApiInstance.getStatusesForObject(parent, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.statusupdates.getStatusesForObject({param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + status_updates_api_instance = asana.StatusUpdatesApi(api_client) + parent = "159874" # str | Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal. + 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.' + 'created_since': '2012-02-22T02:06:58.158Z', # datetime | Only return statuses that have been created since the given time. + 'opt_fields': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,offset,parent,parent.name,path,resource_subtype,status_type,text,title,uri", # 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: + # Get status updates from an object + api_response = status_updates_api_instance.get_statuses_for_object(parent, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling StatusUpdatesApi->get_statuses_for_object: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.status_updates.get_statuses_for_object({'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + statusupdates->getStatusesForObject(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.status_updates.get_statuses_for_object(parent: ''parent_example'', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a status update + description: >- + Creates a new status update on an object. + + Returns the full record of the newly created status update. + tags: + - Status updates + operationId: createStatusForObject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - parent + - parent.name + - resource_subtype + - status_type + - text + - title + schema: + type: array + items: + type: string + enum: + - author + - author.name + - created_at + - created_by + - created_by.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - liked + - likes + - likes.user + - likes.user.name + - modified_at + - num_hearts + - num_likes + - parent + - parent.name + - resource_subtype + - status_type + - text + - title + style: form + explode: false + requestBody: + description: The status update to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StatusUpdateRequest' + responses: + 201: + description: Successfully created a new status update. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StatusUpdateResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.statusupdates.createStatusForObject() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let statusUpdatesApiInstance = new Asana.StatusUpdatesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The status update to create. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,parent,parent.name,resource_subtype,status_type,text,title" + }; + statusUpdatesApiInstance.createStatusForObject(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.statusupdates.createStatusForObject({field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + status_updates_api_instance = asana.StatusUpdatesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The status update to create. + 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': "author,author.name,created_at,created_by,created_by.name,hearted,hearts,hearts.user,hearts.user.name,html_text,liked,likes,likes.user,likes.user.name,modified_at,num_hearts,num_likes,parent,parent.name,resource_subtype,status_type,text,title", # 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: + # Create a status update + api_response = status_updates_api_instance.create_status_for_object(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling StatusUpdatesApi->create_status_for_object: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.status_updates.create_status_for_object({'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + statusupdates->createStatusForObject(array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.status_updates.create_status_for_object(field: "value", + field: "value", options: {pretty: true}) + /stories/{story_gid}: + parameters: + - $ref: '#/components/parameters/story_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a story + description: Returns the full record for a single story. + tags: + - Stories + operationId: getStory + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + schema: + type: array + items: + type: string + enum: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified story. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StoryResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Story result = client.stories.getStory(storyGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let storiesApiInstance = new Asana.StoriesApi(); + let story_gid = "35678"; // String | Globally unique identifier for the story. + let opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type" + }; + storiesApiInstance.getStory(story_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.stories.getStory(storyGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + stories_api_instance = asana.StoriesApi(api_client) + story_gid = "35678" # str | Globally unique identifier for the story. + opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.id_prefix,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type", # 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: + # Get a story + api_response = stories_api_instance.get_story(story_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling StoriesApi->get_story: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.stories.get_story(story_gid, {'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + stories->getStory($story_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.stories.get_story(story_gid: 'story_gid', param: "value", + param: "value", options: {pretty: true}) + put: + summary: Update a story + description: >- + Updates the story and returns the full record for the updated story. Only + comment stories can have their text updated, and only comment stories and + attachment stories can be pinned. Only one of `text` and `html_text` can be + specified. + tags: + - Stories + operationId: updateStory + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + schema: + type: array + items: + type: string + enum: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + style: form + explode: false + requestBody: + description: The comment story to update. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StoryRequest' + responses: + 200: + description: Successfully retrieved the specified story. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StoryResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Story result = client.stories.updateStory(storyGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let storiesApiInstance = new Asana.StoriesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The comment story to update. + let story_gid = "35678"; // String | Globally unique identifier for the story. + let opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type" + }; + storiesApiInstance.updateStory(body, story_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.stories.updateStory(storyGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + stories_api_instance = asana.StoriesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The comment story to update. + story_gid = "35678" # str | Globally unique identifier for the story. + opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.id_prefix,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type", # 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: + # Update a story + api_response = stories_api_instance.update_story(body, story_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling StoriesApi->update_story: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.stories.update_story(story_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + stories->updateStory($story_gid, array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.stories.update_story(story_gid: 'story_gid', field: + "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a story + description: |- + Deletes a story. A user can only delete stories they have created. + + Returns an empty data record. + tags: + - Stories + operationId: deleteStory + responses: + 200: + description: Successfully deleted the specified story. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.stories.deleteStory(storyGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let storiesApiInstance = new Asana.StoriesApi(); + let story_gid = "35678"; // String | Globally unique identifier for the story. + + storiesApiInstance.deleteStory(story_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.stories.deleteStory(storyGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + stories_api_instance = asana.StoriesApi(api_client) + story_gid = "35678" # str | Globally unique identifier for the story. + + + try: + # Delete a story + api_response = stories_api_instance.delete_story(story_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling StoriesApi->delete_story: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.stories.delete_story(story_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + stories->deleteStory($story_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.stories.delete_story(story_gid: 'story_gid', options: + {pretty: true}) + /tasks/{task_gid}/stories: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get stories from a task + description: >- + Returns the compact records for all stories on the task. + tags: + - Stories + operationId: getStoriesForTask + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - offset + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - path + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + - uri + schema: + type: array + items: + type: string + enum: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - offset + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - path + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified task's stories. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/StoryCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.stories.getStoriesForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let storiesApiInstance = new Asana.StoriesApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,offset,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,path,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type,uri" + }; + storiesApiInstance.getStoriesForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.stories.getStoriesForTask(taskGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + stories_api_instance = asana.StoriesApi(api_client) + task_gid = "321654" # str | The task to operate 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': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.id_prefix,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,offset,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,path,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type,uri", # 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: + # Get stories from a task + api_response = stories_api_instance.get_stories_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling StoriesApi->get_stories_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.stories.get_stories_for_task(task_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + stories->getStoriesForTask($task_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.stories.get_stories_for_task(task_gid: 'task_gid', param: + "value", param: "value", options: {pretty: true}) + post: + summary: Create a story on a task + description: |- + Adds a story to a task. This endpoint currently only allows for comment + stories to be created. The comment will be authored by the currently + authenticated user, and timestamped when the server receives the request. + + Returns the full record for the new story added to the task. + tags: + - Stories + operationId: createStoryForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + schema: + type: array + items: + type: string + enum: + - assignee + - assignee.name + - created_at + - created_by + - created_by.name + - custom_field + - custom_field.date_value + - custom_field.date_value.date + - custom_field.date_value.date_time + - custom_field.display_value + - custom_field.enabled + - custom_field.enum_options + - custom_field.enum_options.color + - custom_field.enum_options.enabled + - custom_field.enum_options.name + - custom_field.enum_value + - custom_field.enum_value.color + - custom_field.enum_value.enabled + - custom_field.enum_value.name + - custom_field.id_prefix + - custom_field.is_formula_field + - custom_field.multi_enum_values + - custom_field.multi_enum_values.color + - custom_field.multi_enum_values.enabled + - custom_field.multi_enum_values.name + - custom_field.name + - custom_field.number_value + - custom_field.representation_type + - custom_field.resource_subtype + - custom_field.text_value + - custom_field.type + - dependency + - dependency.created_by + - dependency.name + - dependency.resource_subtype + - duplicate_of + - duplicate_of.created_by + - duplicate_of.name + - duplicate_of.resource_subtype + - duplicated_from + - duplicated_from.created_by + - duplicated_from.name + - duplicated_from.resource_subtype + - follower + - follower.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_text + - is_editable + - is_edited + - is_pinned + - liked + - likes + - likes.user + - likes.user.name + - new_approval_status + - new_date_value + - new_dates + - new_dates.due_at + - new_dates.due_on + - new_dates.start_on + - new_enum_value + - new_enum_value.color + - new_enum_value.enabled + - new_enum_value.name + - new_multi_enum_values + - new_multi_enum_values.color + - new_multi_enum_values.enabled + - new_multi_enum_values.name + - new_name + - new_number_value + - new_people_value + - new_people_value.name + - new_resource_subtype + - new_section + - new_section.name + - new_text_value + - num_hearts + - num_likes + - old_approval_status + - old_date_value + - old_dates + - old_dates.due_at + - old_dates.due_on + - old_dates.start_on + - old_enum_value + - old_enum_value.color + - old_enum_value.enabled + - old_enum_value.name + - old_multi_enum_values + - old_multi_enum_values.color + - old_multi_enum_values.enabled + - old_multi_enum_values.name + - old_name + - old_number_value + - old_people_value + - old_people_value.name + - old_resource_subtype + - old_section + - old_section.name + - old_text_value + - previews + - previews.fallback + - previews.footer + - previews.header + - previews.header_link + - previews.html_text + - previews.text + - previews.title + - previews.title_link + - project + - project.name + - resource_subtype + - source + - sticker_name + - story + - story.created_at + - story.created_by + - story.created_by.name + - story.resource_subtype + - story.text + - tag + - tag.name + - target + - target.created_by + - target.name + - target.resource_subtype + - task + - task.created_by + - task.name + - task.resource_subtype + - text + - type + style: form + explode: false + requestBody: + description: The story to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StoryRequest' + responses: + 201: + description: Successfully created a new story. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/StoryResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Story result = client.stories.createStoryForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let storiesApiInstance = new Asana.StoriesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The story to create. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type" + }; + storiesApiInstance.createStoryForTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.stories.createStoryForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + stories_api_instance = asana.StoriesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The story to create. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "assignee,assignee.name,created_at,created_by,created_by.name,custom_field,custom_field.date_value,custom_field.date_value.date,custom_field.date_value.date_time,custom_field.display_value,custom_field.enabled,custom_field.enum_options,custom_field.enum_options.color,custom_field.enum_options.enabled,custom_field.enum_options.name,custom_field.enum_value,custom_field.enum_value.color,custom_field.enum_value.enabled,custom_field.enum_value.name,custom_field.id_prefix,custom_field.is_formula_field,custom_field.multi_enum_values,custom_field.multi_enum_values.color,custom_field.multi_enum_values.enabled,custom_field.multi_enum_values.name,custom_field.name,custom_field.number_value,custom_field.representation_type,custom_field.resource_subtype,custom_field.text_value,custom_field.type,dependency,dependency.created_by,dependency.name,dependency.resource_subtype,duplicate_of,duplicate_of.created_by,duplicate_of.name,duplicate_of.resource_subtype,duplicated_from,duplicated_from.created_by,duplicated_from.name,duplicated_from.resource_subtype,follower,follower.name,hearted,hearts,hearts.user,hearts.user.name,html_text,is_editable,is_edited,is_pinned,liked,likes,likes.user,likes.user.name,new_approval_status,new_date_value,new_dates,new_dates.due_at,new_dates.due_on,new_dates.start_on,new_enum_value,new_enum_value.color,new_enum_value.enabled,new_enum_value.name,new_multi_enum_values,new_multi_enum_values.color,new_multi_enum_values.enabled,new_multi_enum_values.name,new_name,new_number_value,new_people_value,new_people_value.name,new_resource_subtype,new_section,new_section.name,new_text_value,num_hearts,num_likes,old_approval_status,old_date_value,old_dates,old_dates.due_at,old_dates.due_on,old_dates.start_on,old_enum_value,old_enum_value.color,old_enum_value.enabled,old_enum_value.name,old_multi_enum_values,old_multi_enum_values.color,old_multi_enum_values.enabled,old_multi_enum_values.name,old_name,old_number_value,old_people_value,old_people_value.name,old_resource_subtype,old_section,old_section.name,old_text_value,previews,previews.fallback,previews.footer,previews.header,previews.header_link,previews.html_text,previews.text,previews.title,previews.title_link,project,project.name,resource_subtype,source,sticker_name,story,story.created_at,story.created_by,story.created_by.name,story.resource_subtype,story.text,tag,tag.name,target,target.created_by,target.name,target.resource_subtype,task,task.created_by,task.name,task.resource_subtype,text,type", # 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: + # Create a story on a task + api_response = stories_api_instance.create_story_for_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling StoriesApi->create_story_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.stories.create_story_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + stories->createStoryForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.stories.create_story_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tags: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple tags + description: >- + Returns the compact tag records for some filtered set of tags. + Use one or more of the parameters provided to filter the tags returned. + tags: + - Tags + operationId: getTags + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: workspace + in: query + description: >- + The workspace to filter tags on. + schema: + type: string + example: '1331' + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified set of tags. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TagCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tags.getTags(workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'workspace': "1331", + 'opt_fields': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name" + }; + tagsApiInstance.getTags(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.getTags({param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + 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.' + 'workspace': "1331", # str | The workspace to filter tags on. + 'opt_fields': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name", # 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: + # Get multiple tags + api_response = tags_api_instance.get_tags(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TagsApi->get_tags: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.get_tags({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->getTags(array('param' => 'value', 'param' => + 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.get_tags(param: "value", param: "value", options: + {pretty: true}) + post: + summary: Create a tag + description: |- + Creates a new tag in a workspace or organization. + + Every tag is required to be created in a specific workspace or + organization, and this cannot be changed once set. Note that you can use + the workspace parameter regardless of whether or not it is an + organization. + + Returns the full record of the newly created tag. + tags: + - Tags + operationId: createTag + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The tag to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagRequest' + responses: + 201: + description: Successfully created the newly specified tag. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Tag result = client.tags.createTag() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The tag to create. + let opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name" + }; + tagsApiInstance.createTag(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.createTag({field: "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The tag to create. + opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name", # 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: + # Create a tag + api_response = tags_api_instance.create_tag(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TagsApi->create_tag: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.create_tag({'field': 'value', 'field': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->createTag(array('field' => 'value', 'field' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.create_tag(field: "value", field: "value", options: + {pretty: true}) + /tags/{tag_gid}: + parameters: + - $ref: '#/components/parameters/tag_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a tag + description: Returns the complete tag record for a single tag. + tags: + - Tags + operationId: getTag + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified tag. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Tag result = client.tags.getTag(tagGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let tag_gid = "11235"; // String | Globally unique identifier for the tag. + let opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name" + }; + tagsApiInstance.getTag(tag_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.getTag(tagGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + tag_gid = "11235" # str | Globally unique identifier for the tag. + opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name", # 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: + # Get a tag + api_response = tags_api_instance.get_tag(tag_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TagsApi->get_tag: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.get_tag(tag_gid, {'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->getTag($tag_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.get_tag(tag_gid: 'tag_gid', param: "value", param: + "value", options: {pretty: true}) + put: + summary: Update a tag + description: |- + Updates the properties of a tag. Only the fields provided in the `data` + block will be updated; any unspecified fields will remain unchanged. + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the tag. + + Returns the complete updated tag record. + tags: + - Tags + operationId: updateTag + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully updated the specified tag. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Tag result = client.tags.updateTag(tagGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let tag_gid = "11235"; // String | Globally unique identifier for the tag. + let opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name" + }; + tagsApiInstance.updateTag(tag_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.updateTag(tagGid, {field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + tag_gid = "11235" # str | Globally unique identifier for the tag. + opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name", # 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: + # Update a tag + api_response = tags_api_instance.update_tag(tag_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TagsApi->update_tag: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.update_tag(tag_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->updateTag($tag_gid, array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.update_tag(tag_gid: 'tag_gid', field: "value", + field: "value", options: {pretty: true}) + delete: + summary: Delete a tag + description: |- + A specific, existing tag can be deleted by making a DELETE request on + the URL for that tag. + + Returns an empty data record. + tags: + - Tags + operationId: deleteTag + responses: + 200: + description: Successfully deleted the specified tag. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tags.deleteTag(tagGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let tag_gid = "11235"; // String | Globally unique identifier for the tag. + + tagsApiInstance.deleteTag(tag_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.deleteTag(tagGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + tag_gid = "11235" # str | Globally unique identifier for the tag. + + + try: + # Delete a tag + api_response = tags_api_instance.delete_tag(tag_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TagsApi->delete_tag: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.delete_tag(tag_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->deleteTag($tag_gid, array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.delete_tag(tag_gid: 'tag_gid', options: {pretty: + true}) + /tasks/{task_gid}/tags: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get a task's tags + description: >- + Get a compact representation of all of the tags the task has. + tags: + - Tags + operationId: getTagsForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the tags for the given task. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TagCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tags.getTagsForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name" + }; + tagsApiInstance.getTagsForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.getTagsForTask(taskGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + task_gid = "321654" # str | The task to operate 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': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name", # 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: + # Get a task's tags + api_response = tags_api_instance.get_tags_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TagsApi->get_tags_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.get_tags_for_task(task_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->getTagsForTask($task_gid, array('param' => + 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.get_tags_for_task(task_gid: 'task_gid', param: + "value", param: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/tags: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get tags in a workspace + description: >- + Returns the compact tag records for some filtered set of tags. + Use one or more of the parameters provided to filter the tags returned. + tags: + - Tags + operationId: getTagsForWorkspace + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - offset + - path + - permalink_url + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified set of tags. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TagCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tags.getTagsForWorkspace(workspaceGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name" + }; + tagsApiInstance.getTagsForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.getTagsForWorkspace(workspaceGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + 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': "color,created_at,followers,followers.name,name,notes,offset,path,permalink_url,uri,workspace,workspace.name", # 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: + # Get tags in a workspace + api_response = tags_api_instance.get_tags_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TagsApi->get_tags_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.get_tags_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->getTagsForWorkspace($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.get_tags_for_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + post: + summary: Create a tag in a workspace + description: |- + Creates a new tag in a workspace or organization. + + Every tag is required to be created in a specific workspace or + organization, and this cannot be changed once set. Note that you can use + the workspace parameter regardless of whether or not it is an + organization. + + Returns the full record of the newly created tag. + tags: + - Tags + operationId: createTagForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - color + - created_at + - followers + - followers.name + - name + - notes + - permalink_url + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The tag to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagCreateTagForWorkspaceRequest' + responses: + 201: + description: Successfully created the newly specified tag. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TagResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Tag result = client.tags.createTagForWorkspace(workspaceGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tagsApiInstance = new Asana.TagsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The tag to create. + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name" + }; + tagsApiInstance.createTagForWorkspace(body, workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tags.createTagForWorkspace(workspaceGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tags_api_instance = asana.TagsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The tag to create. + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'opt_fields': "color,created_at,followers,followers.name,name,notes,permalink_url,workspace,workspace.name", # 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: + # Create a tag in a workspace + api_response = tags_api_instance.create_tag_for_workspace(body, workspace_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TagsApi->create_tag_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tags.create_tag_for_workspace(workspace_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tags->createTagForWorkspace($workspace_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tags.create_tag_for_workspace(workspace_gid: 'workspace_gid', + field: "value", field: "value", options: {pretty: true}) + /task_templates: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple task templates + description: >- + Returns the compact task template records for some filtered set of task templates. + You must specify a `project` + tags: + - Task templates + operationId: getTaskTemplates + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: project + in: query + description: >- + The project to filter task templates on. + schema: + type: string + example: '321654' + x-env-variable: project + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - created_by + - name + - project + - template + schema: + type: array + items: + type: string + enum: + - created_at + - created_by + - name + - project + - template + style: form + explode: false + responses: + 200: + description: Successfully retrieved requested task templates + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskTemplateCompact' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let taskTemplatesApiInstance = new Asana.TaskTemplatesApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'project': "321654", + 'opt_fields': "created_at,created_by,name,project,template" + }; + taskTemplatesApiInstance.getTaskTemplates(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + task_templates_api_instance = asana.TaskTemplatesApi(api_client) + 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.' + 'project': "321654", # str | The project to filter task templates on. + 'opt_fields': "created_at,created_by,name,project,template", # 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: + # Get multiple task templates + api_response = task_templates_api_instance.get_task_templates(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TaskTemplatesApi->get_task_templates: %s\n" % e) + name: python-sdk-v5 + /task_templates/{task_template_gid}: + parameters: + - $ref: '#/components/parameters/task_template_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a task template + description: >- + Returns the complete task template record for a single task template. + tags: + - Task templates + operationId: getTaskTemplate + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - created_by + - name + - project + - template + schema: + type: array + items: + type: string + enum: + - created_at + - created_by + - name + - project + - template + style: form + explode: false + responses: + 200: + description: Successfully retrieved requested task template + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskTemplateResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let taskTemplatesApiInstance = new Asana.TaskTemplatesApi(); + let task_template_gid = "1331"; // String | Globally unique identifier for the task template. + let opts = { + 'opt_fields': "created_at,created_by,name,project,template" + }; + taskTemplatesApiInstance.getTaskTemplate(task_template_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + task_templates_api_instance = asana.TaskTemplatesApi(api_client) + task_template_gid = "1331" # str | Globally unique identifier for the task template. + opts = { + 'opt_fields': "created_at,created_by,name,project,template", # 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: + # Get a task template + api_response = task_templates_api_instance.get_task_template(task_template_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TaskTemplatesApi->get_task_template: %s\n" % e) + name: python-sdk-v5 + delete: + summary: Delete a task template + description: >- + A specific, existing task template can be deleted by making a DELETE request + on the URL for that task template. + Returns an empty data record. + tags: + - Task templates + operationId: deleteTaskTemplate + responses: + 200: + description: Successfully deleted the specified task template. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + task_templates_api_instance = asana.TaskTemplatesApi(api_client) + task_template_gid = "1331" # str | Globally unique identifier for the task template. + + + try: + # Delete a task template + api_response = task_templates_api_instance.delete_task_template(task_template_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TaskTemplatesApi->delete_task_template: %s\n" % e) + name: python-sdk-v5 + /task_templates/{task_template_gid}/instantiateTask: + parameters: + - $ref: '#/components/parameters/task_template_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Instantiate a task from a task template + description: >- + Creates and returns a job that will asynchronously handle the task instantiation. + tags: + - Task templates + operationId: instantiateTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + requestBody: + description: >- + Describes the inputs used for instantiating a task - the task's name. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskTemplateInstantiateTaskRequest' + responses: + 201: + description: >- + Successfully created the job to handle task instantiation. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let taskTemplatesApiInstance = new Asana.TaskTemplatesApi(); + let task_template_gid = "1331"; // String | Globally unique identifier for the task template. + let opts = { + 'body': {"data": {"": "", "": "",}}, + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + taskTemplatesApiInstance.instantiateTask(task_template_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + task_templates_api_instance = asana.TaskTemplatesApi(api_client) + task_template_gid = "1331" # str | Globally unique identifier for the task template. + opts = { + 'body': {"data": {"": "", "": "",}}, # dict | Describes the inputs used for instantiating a task - the task's name. + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Instantiate a task from a task template + api_response = task_templates_api_instance.instantiate_task(task_template_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TaskTemplatesApi->instantiate_task: %s\n" % e) + name: python-sdk-v5 + /tasks: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: Get multiple tasks + description: >- + Returns the compact task records for some filtered set of tasks. Use one + or more of the parameters provided to filter the tasks returned. You must + specify a `project` or `tag` if you do not specify `assignee` and + `workspace`. + + + For more complex task retrieval, use + [workspaces/{workspace_gid}/tasks/search](/reference/searchtasksforworkspace). + tags: + - Tasks + operationId: getTasks + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: assignee + in: query + description: >- + The assignee to filter tasks on. If searching for unassigned tasks, assignee.any + = null can be specified. + + *Note: If you specify `assignee`, you must also specify the + `workspace` to filter on.* + schema: + type: string + x-env-variable: assignee + example: '14641' + - name: project + in: query + description: >- + The project to filter tasks on. + schema: + type: string + example: '321654' + x-env-variable: project + - name: section + in: query + description: >- + The section to filter tasks on. + schema: + type: string + example: '321654' + x-env-variable: section + - name: workspace + in: query + description: >- + The workspace to filter tasks on. + + *Note: If you specify `workspace`, you must also specify the + `assignee` to filter on.* + schema: + type: string + example: '321654' + x-env-variable: workspace + - name: completed_since + in: query + description: >- + Only return tasks that are either incomplete or that have been + completed since this time. + schema: + type: string + format: date-time + example: '2012-02-22T02:06:58.158Z' + - name: modified_since + in: query + description: |- + Only return tasks that have been modified since the given time. + + *Note: A task is considered “modified” if any of its properties + change, or associations between it and other objects are modified + (e.g. a task being added to a project). A task is not considered + modified just because another object it is associated with (e.g. a + subtask) is modified. Actions that count as modifying the task + include assigning, renaming, completing, and adding stories.* + schema: + type: string + format: date-time + example: '2012-02-22T02:06:58.158Z' + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved requested tasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getTasks(modifiedSince, completedSince, + workspace, section, project, assignee) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'assignee': "14641", + 'project': "321654", + 'section': "321654", + 'workspace': "321654", + 'completed_since': "2012-02-22T02:06:58.158Z", + 'modified_since': "2012-02-22T02:06:58.158Z", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getTasks(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTasks({param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + 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.' + 'assignee': "14641", # str | The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified. *Note: If you specify `assignee`, you must also specify the `workspace` to filter on.* + 'project': "321654", # str | The project to filter tasks on. + 'section': "321654", # str | The section to filter tasks on. + 'workspace': "321654", # str | The workspace to filter tasks on. *Note: If you specify `workspace`, you must also specify the `assignee` to filter on.* + 'completed_since': '2012-02-22T02:06:58.158Z', # datetime | Only return tasks that are either incomplete or that have been completed since this time. + 'modified_since': '2012-02-22T02:06:58.158Z', # datetime | Only return tasks that have been modified since the given time. *Note: A task is considered “modified” if any of its properties change, or associations between it and other objects are modified (e.g. a task being added to a project). A task is not considered modified just because another object it is associated with (e.g. a subtask) is modified. Actions that count as modifying the task include assigning, renaming, completing, and adding stories.* + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get multiple tasks + api_response = tasks_api_instance.get_tasks(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_tasks: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_tasks({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTasks(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_tasks(param: "value", param: "value", options: + {pretty: true}) + post: + summary: Create a task + description: |- + Creating a new task is as easy as POSTing to the `/tasks` endpoint with a + data block containing the fields you’d like to set on the task. Any + unspecified fields will take on default values. + + Every task is required to be created in a specific workspace, and this + workspace cannot be changed once set. The workspace need not be set + explicitly if you specify `projects` or a `parent` task instead. + tags: + - Tasks + operationId: createTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The task to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRequest' + responses: + 201: + description: Successfully created a new task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.createTask() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The task to create. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.createTask(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.createTask({field: "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The task to create. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Create a task + api_response = tasks_api_instance.create_task(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->create_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.create_task({'field': 'value', 'field': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->createTask(array('field' => 'value', 'field' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.create_task(field: "value", field: "value", options: + {pretty: true}) + /tasks/{task_gid}: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a task + description: Returns the complete task record for a single task. + tags: + - Tasks + operationId: getTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.getTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.getTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTask(taskGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Get a task + api_response = tasks_api_instance.get_task(task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->get_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_task(task_gid, {'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTask($task_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_task(task_gid: 'task_gid', param: "value", + param: "value", options: {pretty: true}) + put: + summary: Update a task + description: |- + A specific, existing task can be updated by making a PUT request on the + URL for that task. Only the fields provided in the `data` block will be + updated; any unspecified fields will remain unchanged. + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the task. + + Returns the complete updated task record. + tags: + - Tasks + operationId: updateTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The task to update. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRequest' + responses: + 200: + description: Successfully updated the specified task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.updateTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The task to update. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.updateTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.updateTask(taskGid, {field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The task to update. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Update a task + api_response = tasks_api_instance.update_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->update_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.update_task(task_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->updateTask($task_gid, array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.update_task(task_gid: 'task_gid', field: "value", + field: "value", options: {pretty: true}) + delete: + summary: Delete a task + description: |- + A specific, existing task can be deleted by making a DELETE request on + the URL for that task. Deleted tasks go into the “trash” of the user + making the delete request. Tasks can be recovered from the trash within a + period of 30 days; afterward they are completely removed from the system. + + Returns an empty data record. + tags: + - Tasks + operationId: deleteTask + responses: + 200: + description: Successfully deleted the specified task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.deleteTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.deleteTask(task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.deleteTask(taskGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + task_gid = "321654" # str | The task to operate on. + + + try: + # Delete a task + api_response = tasks_api_instance.delete_task(task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->delete_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.delete_task(task_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->deleteTask($task_gid, array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.delete_task(task_gid: 'task_gid', options: {pretty: + true}) + /tasks/{task_gid}/duplicate: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Duplicate a task + description: >- + Creates and returns a job that will asynchronously handle the duplication. + tags: + - Tasks + operationId: duplicateTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + schema: + type: array + items: + type: string + enum: + - new_project + - new_project.name + - new_project_template + - new_project_template.name + - new_task + - new_task.created_by + - new_task.name + - new_task.resource_subtype + - new_task_template + - new_task_template.name + - resource_subtype + - status + style: form + explode: false + requestBody: + description: >- + Describes the duplicate's name and the fields that will be duplicated. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskDuplicateRequest' + responses: + 201: + description: Successfully created the job to handle duplication. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/JobResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Job result = client.tasks.duplicateTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | Describes the duplicate's name and the fields that will be duplicated. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status" + }; + tasksApiInstance.duplicateTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.duplicateTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Describes the duplicate's name and the fields that will be duplicated. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "new_project,new_project.name,new_project_template,new_project_template.name,new_task,new_task.created_by,new_task.name,new_task.resource_subtype,resource_subtype,status", # 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: + # Duplicate a task + api_response = tasks_api_instance.duplicate_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->duplicate_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.duplicate_task(task_gid, {'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->duplicateTask($task_gid, array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.duplicate_task(task_gid: 'task_gid', field: "value", + field: "value", options: {pretty: true}) + /projects/{project_gid}/tasks: + parameters: + - $ref: '#/components/parameters/completed_since' + - $ref: '#/components/parameters/project_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get tasks from a project + description: >- + Returns the compact task records for all tasks within the given project, + ordered by their priority within the project. Tasks can exist in more + than one project at a time. + tags: + - Tasks + operationId: getTasksForProject + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested project's tasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getTasksForProject(projectGid, completedSince) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let project_gid = "1331"; // String | Globally unique identifier for the project. + let opts = { + 'completed_since': "2012-02-22T02:06:58.158Z", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getTasksForProject(project_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTasksForProject(projectGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + project_gid = "1331" # str | Globally unique identifier for the project. + opts = { + 'completed_since': "2012-02-22T02:06:58.158Z", # str | Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + '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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get tasks from a project + api_response = tasks_api_instance.get_tasks_for_project(project_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_tasks_for_project: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_tasks_for_project(project_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTasksForProject($project_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_tasks_for_project(project_gid: 'project_gid', + param: "value", param: "value", options: {pretty: true}) + /sections/{section_gid}/tasks: + parameters: + - $ref: '#/components/parameters/section_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/completed_since' + get: + summary: Get tasks from a section + description: >- + *Board view only*: Returns the compact section records for all tasks + within the given section. + tags: + - Tasks + operationId: getTasksForSection + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the section's tasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getTasksForSection(sectionGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let section_gid = "321654"; // String | The globally unique identifier for the section. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'completed_since': "2012-02-22T02:06:58.158Z", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getTasksForSection(section_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTasksForSection(sectionGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + section_gid = "321654" # str | The globally unique identifier for the section. + 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.' + 'completed_since': "2012-02-22T02:06:58.158Z", # str | Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get tasks from a section + api_response = tasks_api_instance.get_tasks_for_section(section_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_tasks_for_section: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_tasks_for_section(section_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTasksForSection($section_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_tasks_for_section(section_gid: 'section_gid', + param: "value", param: "value", options: {pretty: true}) + /tags/{tag_gid}/tasks: + parameters: + - $ref: '#/components/parameters/tag_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get tasks from a tag + description: >- + Returns the compact task records for all tasks with the given tag. Tasks + can have more than one tag at a time. + tags: + - Tasks + operationId: getTasksForTag + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the tasks associated with the specified tag. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getTasksForTag(tagGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let tag_gid = "11235"; // String | Globally unique identifier for the tag. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getTasksForTag(tag_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTasksForTag(tagGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + tag_gid = "11235" # str | Globally unique identifier for the tag. + 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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get tasks from a tag + api_response = tasks_api_instance.get_tasks_for_tag(tag_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_tasks_for_tag: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_tasks_for_tag(tag_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTasksForTag($tag_gid, array('param' => + 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_tasks_for_tag(tag_gid: 'tag_gid', param: "value", + param: "value", options: {pretty: true}) + /user_task_lists/{user_task_list_gid}/tasks: + parameters: + - $ref: '#/components/parameters/completed_since' + - $ref: '#/components/parameters/user_task_list_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get tasks from a user task list + description: >- + Returns the compact list of tasks in a user’s My Tasks list. + + *Note: Access control is enforced for this endpoint as with + all Asana API endpoints, meaning a user’s private tasks will be + filtered out if the API-authenticated user does not have access + to them.* + + *Note: Both complete and incomplete tasks are returned by + default unless they are filtered out (for example, setting + `completed_since=now` will return only incomplete tasks, which + is the default view for “My Tasks” in Asana.)* + tags: + - Tasks + operationId: getTasksForUserTaskList + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the user task list's tasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getTasksForUserTaskList(userTaskListGid, + completedSince) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let user_task_list_gid = "12345"; // String | Globally unique identifier for the user task list. + let opts = { + 'completed_since': "2012-02-22T02:06:58.158Z", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getTasksForUserTaskList(user_task_list_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getTasksForUserTaskList(userTaskListGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + user_task_list_gid = "12345" # str | Globally unique identifier for the user task list. + opts = { + 'completed_since': "2012-02-22T02:06:58.158Z", # str | Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*. + '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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get tasks from a user task list + api_response = tasks_api_instance.get_tasks_for_user_task_list(user_task_list_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_tasks_for_user_task_list: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_tasks_for_user_task_list(user_task_list_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getTasksForUserTaskList($user_task_list_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_tasks_for_user_task_list(user_task_list_gid: + 'user_task_list_gid', param: "value", param: "value", options: {pretty: + true}) + /tasks/{task_gid}/subtasks: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get subtasks from a task + description: >- + Returns a compact representation of all of the subtasks of a task. + tags: + - Tasks + operationId: getSubtasksForTask + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified task's subtasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getSubtasksForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getSubtasksForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getSubtasksForTask(taskGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + task_gid = "321654" # str | The task to operate 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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get subtasks from a task + api_response = tasks_api_instance.get_subtasks_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_subtasks_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_subtasks_for_task(task_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getSubtasksForTask($task_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_subtasks_for_task(task_gid: 'task_gid', param: + "value", param: "value", options: {pretty: true}) + post: + summary: Create a subtask + description: >- + Creates a new subtask and adds it to the parent task. Returns the full + record for the newly created subtask. + tags: + - Tasks + operationId: createSubtaskForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The new subtask to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRequest' + responses: + 201: + description: Successfully created the specified subtask. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.createSubtaskForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The new subtask to create. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.createSubtaskForTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.createSubtaskForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The new subtask to create. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Create a subtask + api_response = tasks_api_instance.create_subtask_for_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->create_subtask_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.create_subtask_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->createSubtaskForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.create_subtask_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/setParent: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Set the parent of a task + description: >- + parent, or no parent task at all. Returns an empty data block. When using + `insert_before` and `insert_after`, at most one of those two options can + be specified, and they must already be subtasks of the parent. + tags: + - Tasks + operationId: setParentForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The new parent of the subtask. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskSetParentRequest' + responses: + 200: + description: Successfully changed the parent of the specified subtask. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.setParentForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The new parent of the subtask. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.setParentForTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.setParentForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The new parent of the subtask. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Set the parent of a task + api_response = tasks_api_instance.set_parent_for_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->set_parent_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.set_parent_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->setParentForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.set_parent_for_task(task_gid: 'task_gid', field: + "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/dependencies: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get dependencies from a task + description: >- + Returns the compact representations of all of the dependencies of a task. + tags: + - Tasks + operationId: getDependenciesForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: Successfully retrieved the specified task's dependencies. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getDependenciesForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getDependenciesForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getDependenciesForTask(taskGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + task_gid = "321654" # str | The task to operate 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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get dependencies from a task + api_response = tasks_api_instance.get_dependencies_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_dependencies_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_dependencies_for_task(task_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getDependenciesForTask($task_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_dependencies_for_task(task_gid: 'task_gid', + param: "value", param: "value", options: {pretty: true}) + /tasks/{task_gid}/addDependencies: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Set dependencies for a task + description: >- + Marks a set of tasks as dependencies of this task, if they are not + already dependencies. *A task can have at most 30 dependents and dependencies + combined*. + tags: + - Tasks + operationId: addDependenciesForTask + requestBody: + description: The list of tasks to set as dependencies. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ModifyDependenciesRequest' + responses: + 200: + description: Successfully set the specified dependencies on the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.addDependenciesForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The list of tasks to set as dependencies. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.addDependenciesForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.addDependenciesForTask(taskGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The list of tasks to set as dependencies. + task_gid = "321654" # str | The task to operate on. + + + try: + # Set dependencies for a task + api_response = tasks_api_instance.add_dependencies_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->add_dependencies_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.add_dependencies_for_task(task_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->addDependenciesForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.add_dependencies_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/removeDependencies: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Unlink dependencies from a task + description: Unlinks a set of dependencies from this task. + tags: + - Tasks + operationId: removeDependenciesForTask + requestBody: + description: The list of tasks to unlink as dependencies. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ModifyDependenciesRequest' + responses: + 200: + description: >- + Successfully unlinked the dependencies from the specified task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.removeDependenciesForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The list of tasks to unlink as dependencies. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.removeDependenciesForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.removeDependenciesForTask(taskGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The list of tasks to unlink as dependencies. + task_gid = "321654" # str | The task to operate on. + + + try: + # Unlink dependencies from a task + api_response = tasks_api_instance.remove_dependencies_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->remove_dependencies_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.remove_dependencies_for_task(task_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->removeDependenciesForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.remove_dependencies_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/dependents: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get dependents from a task + description: >- + Returns the compact representations of all of the dependents of a task. + tags: + - Tasks + operationId: getDependentsForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - offset + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - path + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - uri + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the specified dependents of the task. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.getDependentsForTask(taskGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name" + }; + tasksApiInstance.getDependentsForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.getDependentsForTask(taskGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + task_gid = "321654" # str | The task to operate 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': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,offset,parent,parent.created_by,parent.name,parent.resource_subtype,path,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,uri,workspace,workspace.name", # 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: + # Get dependents from a task + api_response = tasks_api_instance.get_dependents_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->get_dependents_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.get_dependents_for_task(task_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->getDependentsForTask($task_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.get_dependents_for_task(task_gid: 'task_gid', + param: "value", param: "value", options: {pretty: true}) + /tasks/{task_gid}/addDependents: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Set dependents for a task + description: >- + Marks a set of tasks as dependents of this task, if they are not already + dependents. *A task can have at most 30 dependents and dependencies combined*. + tags: + - Tasks + operationId: addDependentsForTask + requestBody: + description: The list of tasks to add as dependents. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ModifyDependentsRequest' + responses: + 200: + description: >- + Successfully set the specified dependents on the given task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.addDependentsForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The list of tasks to add as dependents. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.addDependentsForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.addDependentsForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The list of tasks to add as dependents. + task_gid = "321654" # str | The task to operate on. + + + try: + # Set dependents for a task + api_response = tasks_api_instance.add_dependents_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->add_dependents_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.add_dependents_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->addDependentsForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.add_dependents_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/removeDependents: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Unlink dependents from a task + description: >- + Unlinks a set of dependents from this task. + tags: + - Tasks + operationId: removeDependentsForTask + requestBody: + description: The list of tasks to remove as dependents. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/ModifyDependentsRequest' + responses: + 200: + description: >- + Successfully unlinked the specified tasks as dependents. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 402: + $ref: '#/components/responses/PaymentRequired' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.removeDependentsForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The list of tasks to remove as dependents. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.removeDependentsForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.removeDependentsForTask(taskGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The list of tasks to remove as dependents. + task_gid = "321654" # str | The task to operate on. + + + try: + # Unlink dependents from a task + api_response = tasks_api_instance.remove_dependents_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->remove_dependents_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.remove_dependents_for_task(task_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->removeDependentsForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.remove_dependents_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/addProject: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a project to a task + description: |- + Adds the task to the specified project, in the optional location + specified. If no location arguments are given, the task will be added to + the end of the project. + + `addProject` can also be used to reorder a task within a project or + section that already contains it. + + At most one of `insert_before`, `insert_after`, or `section` should be + specified. Inserting into a section in an non-order-dependent way can be + done by specifying section, otherwise, to insert within a section in a + particular place, specify `insert_before` or `insert_after` and a task + within the section to anchor the position of this task. + + Returns an empty data block. + tags: + - Tasks + operationId: addProjectForTask + requestBody: + description: The project to add the task to. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskAddProjectRequest' + responses: + 200: + description: >- + Successfully added the specified project to the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.addProjectForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The project to add the task to. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.addProjectForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.addProjectForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The project to add the task to. + task_gid = "321654" # str | The task to operate on. + + + try: + # Add a project to a task + api_response = tasks_api_instance.add_project_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->add_project_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.add_project_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->addProjectForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.add_project_for_task(task_gid: 'task_gid', field: + "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/removeProject: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a project from a task + description: |- + Removes the task from the specified project. The task will still exist in + the system, but it will not be in the project anymore. + + Returns an empty data block. + tags: + - Tasks + operationId: removeProjectForTask + requestBody: + description: The project to remove the task from. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRemoveProjectRequest' + responses: + 200: + description: >- + Successfully removed the specified project from the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.removeProjectForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The project to remove the task from. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.removeProjectForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.removeProjectForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The project to remove the task from. + task_gid = "321654" # str | The task to operate on. + + + try: + # Remove a project from a task + api_response = tasks_api_instance.remove_project_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->remove_project_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.remove_project_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->removeProjectForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.remove_project_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/addTag: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a tag to a task + description: >- + Adds a tag to a task. Returns an empty data block. + tags: + - Tasks + operationId: addTagForTask + requestBody: + description: The tag to add to the task. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskAddTagRequest' + responses: + 200: + description: >- + Successfully added the specified tag to the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.addTagForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The tag to add to the task. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.addTagForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.addTagForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The tag to add to the task. + task_gid = "321654" # str | The task to operate on. + + + try: + # Add a tag to a task + api_response = tasks_api_instance.add_tag_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->add_tag_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.add_tag_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->addTagForTask($task_gid, array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.add_tag_for_task(task_gid: 'task_gid', field: + "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/removeTag: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a tag from a task + description: >- + Removes a tag from a task. Returns an empty data block. + tags: + - Tasks + operationId: removeTagForTask + requestBody: + description: The tag to remove from the task. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRemoveTagRequest' + responses: + 200: + description: >- + Successfully removed the specified tag from the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.tasks.removeTagForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The tag to remove from the task. + let task_gid = "321654"; // String | The task to operate on. + + tasksApiInstance.removeTagForTask(body, task_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.removeTagForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The tag to remove from the task. + task_gid = "321654" # str | The task to operate on. + + + try: + # Remove a tag from a task + api_response = tasks_api_instance.remove_tag_for_task(body, task_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->remove_tag_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.remove_tag_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->removeTagForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.remove_tag_for_task(task_gid: 'task_gid', field: + "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/addFollowers: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add followers to a task + description: >- + Adds followers to a task. Returns an empty data block. + + Each task can be associated with zero or more followers in the system. + + Requests to add/remove followers, if successful, will return the complete + updated task record, described above. + tags: + - Tasks + operationId: addFollowersForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The followers to add to the task. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskAddFollowersRequest' + responses: + 200: + description: >- + Successfully added the specified followers to the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.addFollowersForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The followers to add to the task. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.addFollowersForTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.addFollowersForTask(taskGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The followers to add to the task. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Add followers to a task + api_response = tasks_api_instance.add_followers_for_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->add_followers_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.add_followers_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->addFollowersForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.add_followers_for_task(task_gid: 'task_gid', field: + "value", field: "value", options: {pretty: true}) + /tasks/{task_gid}/removeFollowers: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove followers from a task + description: >- + Removes each of the specified followers from the task if they are + following. Returns the complete, updated record for the affected task. + tags: + - Tasks + operationId: removeFollowerForTask + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + requestBody: + description: The followers to remove from the task. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskRemoveFollowersRequest' + responses: + 200: + description: >- + Successfully removed the specified followers from the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Task result = client.tasks.removeFollowerForTask(taskGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The followers to remove from the task. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + tasksApiInstance.removeFollowerForTask(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.removeFollowerForTask(taskGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The followers to remove from the task. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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: + # Remove followers from a task + api_response = tasks_api_instance.remove_follower_for_task(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TasksApi->remove_follower_for_task: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.remove_follower_for_task(task_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->removeFollowerForTask($task_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.remove_follower_for_task(task_gid: 'task_gid', + field: "value", field: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/custom_id' + get: + summary: Get a task for a given custom ID + description: >- + Returns a task given a custom ID shortcode. + tags: + - Tasks + operationId: getTaskForCustomID + responses: + 200: + description: >- + Successfully retrieved task for given custom ID. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TaskResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + /workspaces/{workspace_gid}/tasks/search: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + - name: text + in: query + description: >- + Performs full-text search on both task name and description + schema: + type: string + example: Bug + - name: resource_subtype + in: query + description: >- + Filters results by the task's resource_subtype + schema: + type: string + enum: + - default_task + - milestone + default: milestone + - name: assignee.any + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: assignee.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: portfolios.any + in: query + description: >- + Comma-separated list of portfolio IDs + schema: + type: string + example: 12345,23456,34567 + - name: projects.any + in: query + description: >- + Comma-separated list of project IDs + schema: + type: string + example: 12345,23456,34567 + - name: projects.not + in: query + description: >- + Comma-separated list of project IDs + schema: + type: string + example: 12345,23456,34567 + - name: projects.all + in: query + description: >- + Comma-separated list of project IDs + schema: + type: string + example: 12345,23456,34567 + - name: sections.any + in: query + description: >- + Comma-separated list of section or column IDs + schema: + type: string + example: 12345,23456,34567 + - name: sections.not + in: query + description: >- + Comma-separated list of section or column IDs + schema: + type: string + example: 12345,23456,34567 + - name: sections.all + in: query + description: >- + Comma-separated list of section or column IDs + schema: + type: string + example: 12345,23456,34567 + - name: tags.any + in: query + description: >- + Comma-separated list of tag IDs + schema: + type: string + example: 12345,23456,34567 + - name: tags.not + in: query + description: >- + Comma-separated list of tag IDs + schema: + type: string + example: 12345,23456,34567 + - name: tags.all + in: query + description: >- + Comma-separated list of tag IDs + schema: + type: string + example: 12345,23456,34567 + - name: teams.any + in: query + description: >- + Comma-separated list of team IDs + schema: + type: string + example: 12345,23456,34567 + - name: followers.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: created_by.any + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: created_by.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: assigned_by.any + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: assigned_by.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: liked_by.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: commented_on_by.not + in: query + description: >- + Comma-separated list of user identifiers + schema: + type: string + example: 12345,23456,34567 + - name: due_on.before + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: due_on.after + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: due_on + in: query + description: >- + ISO 8601 date string or `null` + schema: + type: string + format: date + nullable: true + example: '2019-09-15' + - name: due_at.before + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: due_at.after + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: start_on.before + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: start_on.after + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: start_on + in: query + description: >- + ISO 8601 date string or `null` + schema: + type: string + format: date + nullable: true + example: '2019-09-15' + - name: created_on.before + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: created_on.after + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: created_on + in: query + description: >- + ISO 8601 date string or `null` + schema: + type: string + format: date + nullable: true + example: '2019-09-15' + - name: created_at.before + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: created_at.after + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: completed_on.before + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: completed_on.after + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: completed_on + in: query + description: >- + ISO 8601 date string or `null` + schema: + type: string + format: date + nullable: true + example: '2019-09-15' + - name: completed_at.before + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: completed_at.after + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: modified_on.before + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: modified_on.after + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: modified_on + in: query + description: >- + ISO 8601 date string or `null` + schema: + type: string + format: date + nullable: true + example: '2019-09-15' + - name: modified_at.before + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: modified_at.after + in: query + description: >- + ISO 8601 datetime string + schema: + type: string + format: date-time + example: '2019-04-15T01:01:46.055Z' + - name: is_blocking + in: query + description: >- + Filter to incomplete tasks with dependents + schema: + type: boolean + example: false + - name: is_blocked + in: query + description: >- + Filter to tasks with incomplete dependencies + schema: + type: boolean + example: false + - name: has_attachment + in: query + description: >- + Filter to tasks with attachments + schema: + type: boolean + example: false + - name: completed + in: query + description: >- + Filter to completed tasks + schema: + type: boolean + example: false + - name: is_subtask + in: query + description: >- + Filter to subtasks + schema: + type: boolean + example: false + - name: sort_by + in: query + description: >- + One of `due_date`, `created_at`, `completed_at`, `likes`, or + `modified_at`, defaults to `modified_at` + schema: + type: string + enum: + - due_date + - created_at + - completed_at + - likes + - modified_at + default: modified_at + example: likes + - name: sort_ascending + in: query + description: >- + Default `false` + schema: + type: boolean + default: false + example: true + get: + summary: Search tasks in a workspace + description: >- + To mirror the functionality of the Asana web app's advanced search feature, + the Asana API has a task search endpoint that allows you to build complex + filters to find and retrieve the exact data you need. + + #### Premium access + + Like the Asana web product's advance search feature, this search endpoint + will + only be available to premium Asana users. A user is premium if any of the + following is true: + + + - The workspace in which the search is being performed is a premium workspace + - The user is a member of a premium team inside the workspace + + + Even if a user is only a member of a premium team inside a non-premium + workspace, search will allow them to find data anywhere in the workspace, + not just inside the premium team. Making a search request using credentials + of a non-premium user will result in a `402 Payment Required` error. + + #### Pagination + + Search results are not stable; repeating the same query multiple times may + return the data in a different order, even if the data do not change. Because + of this, the traditional [pagination](https://developers.asana.com/docs/#pagination) + available elsewhere in the Asana API is not available here. However, you can + paginate manually by sorting the search results by their creation time and + then + modifying each subsequent query to exclude data you have already seen. Page + sizes + are limited to a maximum of 100 items, and can be specified by the `limit` + query parameter. + + #### Eventual consistency + + Changes in Asana (regardless of whether they’re made though the web product + or the API) are forwarded to our search infrastructure to be indexed. This + process can take between 10 and 60 seconds to complete under normal operation, + and longer during some production incidents. Making a change to a task that + would alter its presence in a particular search query will not be reflected + immediately. This is also true of the advanced search feature in the web product. + + #### Rate limits + + You may receive a `429 Too Many Requests` response if you hit any of our + [rate limits](https://developers.asana.com/docs/#rate-limits). + + #### Custom field parameters + + | Parameter name | Custom field type | Accepted type | + + |---|---|---| + + | custom_fields.{gid}.is_set | All | Boolean | + + | custom_fields.{gid}.value | Text | String | + + | custom_fields.{gid}.value | Number | Number | + + | custom_fields.{gid}.value | Enum | Enum option ID | + + | custom_fields.{gid}.starts_with | Text only | String | + + | custom_fields.{gid}.ends_with | Text only | String | + + | custom_fields.{gid}.contains | Text only | String | + + | custom_fields.{gid}.less_than | Number only | Number | + + | custom_fields.{gid}.greater_than | Number only | Number | + + + + For example, if the gid of the custom field is 12345, these query parameter + to + find tasks where it is set would be `custom_fields.12345.is_set=true`. To + match + an exact value for an enum custom field, use the gid of the desired enum option + and not the name of the enum option: `custom_fields.12345.value=67890`. + + + **Not Supported**: searching for multiple exact matches of a custom field, + searching for multi-enum custom field + + + *Note: If you specify `projects.any` and `sections.any`, you will receive + tasks for the project **and** tasks for the section. If you're looking for + only tasks in a section, omit the `projects.any` from the request.* + tags: + - Tasks + operationId: searchTasksForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - actual_time_minutes + - approval_status + - assignee + - assignee.name + - assignee_section + - assignee_section.name + - assignee_status + - completed + - completed_at + - completed_by + - completed_by.name + - created_at + - created_by + - custom_fields + - custom_fields.asana_created_field + - custom_fields.created_by + - custom_fields.created_by.name + - custom_fields.currency_code + - custom_fields.custom_label + - custom_fields.custom_label_position + - custom_fields.date_value + - custom_fields.date_value.date + - custom_fields.date_value.date_time + - custom_fields.description + - custom_fields.display_value + - custom_fields.enabled + - custom_fields.enum_options + - custom_fields.enum_options.color + - custom_fields.enum_options.enabled + - custom_fields.enum_options.name + - custom_fields.enum_value + - custom_fields.enum_value.color + - custom_fields.enum_value.enabled + - custom_fields.enum_value.name + - custom_fields.format + - custom_fields.has_notifications_enabled + - custom_fields.id_prefix + - custom_fields.is_formula_field + - custom_fields.is_global_to_workspace + - custom_fields.is_value_read_only + - custom_fields.multi_enum_values + - custom_fields.multi_enum_values.color + - custom_fields.multi_enum_values.enabled + - custom_fields.multi_enum_values.name + - custom_fields.name + - custom_fields.number_value + - custom_fields.people_value + - custom_fields.people_value.name + - custom_fields.precision + - custom_fields.representation_type + - custom_fields.resource_subtype + - custom_fields.text_value + - custom_fields.type + - dependencies + - dependents + - due_at + - due_on + - external + - external.data + - followers + - followers.name + - hearted + - hearts + - hearts.user + - hearts.user.name + - html_notes + - is_rendered_as_separator + - liked + - likes + - likes.user + - likes.user.name + - memberships + - memberships.project + - memberships.project.name + - memberships.section + - memberships.section.name + - modified_at + - name + - notes + - num_hearts + - num_likes + - num_subtasks + - parent + - parent.created_by + - parent.name + - parent.resource_subtype + - permalink_url + - projects + - projects.name + - resource_subtype + - start_at + - start_on + - tags + - tags.name + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the section's tasks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TaskCompact' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.tasks.searchTasksForWorkspace(workspaceGid, + sortAscending, sortBy, isSubtask, completed, hasAttachment, isBlocked, + isBlocking, modifiedAtAfter, modifiedAtBefore, dueOn, modifiedOn, modifiedOnAfter, + modifiedOnBefore, completedAtAfter, completedAtBefore, completedOn, + completedOnAfter, completedOnBefore, createdAtAfter, dueOnAfter, createdAtBefore, + createdOn, createdOnAfter, createdOnBefore, startOn, startOnAfter, startOnBefore, + dueAtAfter, dueAtBefore, dueOnBefore, commentedOnByNot, likedByNot, + assignedByNot, assignedByAny, createdByNot, createdByAny, followersNot, + teamsAny, tagsAll, tagsNot, tagsAny, sectionsAll, sectionsNot, sectionsAny, + projectsAll, projectsNot, projectsAny, portfoliosAny, assigneeNot, assigneeAny, + resourceSubtype, text) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let tasksApiInstance = new Asana.TasksApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'text': "Bug", + 'resource_subtype': "milestone", + 'assignee.any': "12345,23456,34567", + 'assignee.not': "12345,23456,34567", + 'portfolios.any': "12345,23456,34567", + 'projects.any': "12345,23456,34567", + 'projects.not': "12345,23456,34567", + 'projects.all': "12345,23456,34567", + 'sections.any': "12345,23456,34567", + 'sections.not': "12345,23456,34567", + 'sections.all': "12345,23456,34567", + 'tags.any': "12345,23456,34567", + 'tags.not': "12345,23456,34567", + 'tags.all': "12345,23456,34567", + 'teams.any': "12345,23456,34567", + 'followers.not': "12345,23456,34567", + 'created_by.any': "12345,23456,34567", + 'created_by.not': "12345,23456,34567", + 'assigned_by.any': "12345,23456,34567", + 'assigned_by.not': "12345,23456,34567", + 'liked_by.not': "12345,23456,34567", + 'commented_on_by.not': "12345,23456,34567", + 'due_on.before': "2019-09-15", + 'due_on.after': "2019-09-15", + 'due_on': "2019-09-15", + 'due_at.before': "2019-04-15T01:01:46.055Z", + 'due_at.after': "2019-04-15T01:01:46.055Z", + 'start_on.before': "2019-09-15", + 'start_on.after': "2019-09-15", + 'start_on': "2019-09-15", + 'created_on.before': "2019-09-15", + 'created_on.after': "2019-09-15", + 'created_on': "2019-09-15", + 'created_at.before': "2019-04-15T01:01:46.055Z", + 'created_at.after': "2019-04-15T01:01:46.055Z", + 'completed_on.before': "2019-09-15", + 'completed_on.after': "2019-09-15", + 'completed_on': "2019-09-15", + 'completed_at.before': "2019-04-15T01:01:46.055Z", + 'completed_at.after': "2019-04-15T01:01:46.055Z", + 'modified_on.before': "2019-09-15", + 'modified_on.after': "2019-09-15", + 'modified_on': "2019-09-15", + 'modified_at.before': "2019-04-15T01:01:46.055Z", + 'modified_at.after': "2019-04-15T01:01:46.055Z", + 'is_blocking': false, + 'is_blocked': false, + 'has_attachment': false, + 'completed': false, + 'is_subtask': false, + 'sort_by': "modified_at", + 'sort_ascending': false, + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name" + }; + // Custom fields query + opts['custom_fields.123.is_set'] = true; // Boolean | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.value'] = '456'; // String, Number, Enum option ID | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.starts_with'] = 'start'; // String | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.ends_with'] = 'end'; // String | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.contains'] = 'first'; // String | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.less_than'] = 10; // Number | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.greater_than'] = 100; // Number | Replace "123" with . NOTE: searching for multiple exact matches of a custom field, searching for multi-enum custom field + tasksApiInstance.searchTasksForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.tasks.searchTasksForWorkspace(workspaceGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + tasks_api_instance = asana.TasksApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'text': "Bug", # str | Performs full-text search on both task name and description + 'resource_subtype': "milestone", # str | Filters results by the task's resource_subtype + 'assignee.any': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'assignee.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'portfolios.any': "12345,23456,34567", # str | Comma-separated list of portfolio IDs + 'projects.any': "12345,23456,34567", # str | Comma-separated list of project IDs + 'projects.not': "12345,23456,34567", # str | Comma-separated list of project IDs + 'projects.all': "12345,23456,34567", # str | Comma-separated list of project IDs + 'sections.any': "12345,23456,34567", # str | Comma-separated list of section or column IDs + 'sections.not': "12345,23456,34567", # str | Comma-separated list of section or column IDs + 'sections.all': "12345,23456,34567", # str | Comma-separated list of section or column IDs + 'tags.any': "12345,23456,34567", # str | Comma-separated list of tag IDs + 'tags.not': "12345,23456,34567", # str | Comma-separated list of tag IDs + 'tags.all': "12345,23456,34567", # str | Comma-separated list of tag IDs + 'teams.any': "12345,23456,34567", # str | Comma-separated list of team IDs + 'followers.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'created_by.any': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'created_by.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'assigned_by.any': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'assigned_by.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'liked_by.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'commented_on_by.not': "12345,23456,34567", # str | Comma-separated list of user identifiers + 'due_on.before': '2019-09-15', # date | ISO 8601 date string + 'due_on.after': '2019-09-15', # date | ISO 8601 date string + 'due_on': '2019-09-15', # date | ISO 8601 date string or `null` + 'due_at.before': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'due_at.after': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'start_on.before': '2019-09-15', # date | ISO 8601 date string + 'start_on.after': '2019-09-15', # date | ISO 8601 date string + 'start_on': '2019-09-15', # date | ISO 8601 date string or `null` + 'created_on.before': '2019-09-15', # date | ISO 8601 date string + 'created_on.after': '2019-09-15', # date | ISO 8601 date string + 'created_on': '2019-09-15', # date | ISO 8601 date string or `null` + 'created_at.before': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'created_at.after': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'completed_on.before': '2019-09-15', # date | ISO 8601 date string + 'completed_on.after': '2019-09-15', # date | ISO 8601 date string + 'completed_on': '2019-09-15', # date | ISO 8601 date string or `null` + 'completed_at.before': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'completed_at.after': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'modified_on.before': '2019-09-15', # date | ISO 8601 date string + 'modified_on.after': '2019-09-15', # date | ISO 8601 date string + 'modified_on': '2019-09-15', # date | ISO 8601 date string or `null` + 'modified_at.before': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'modified_at.after': '2019-04-15T01:01:46.055Z', # datetime | ISO 8601 datetime string + 'is_blocking': False, # bool | Filter to incomplete tasks with dependents + 'is_blocked': False, # bool | Filter to tasks with incomplete dependencies + 'has_attachment': False, # bool | Filter to tasks with attachments + 'completed': False, # bool | Filter to completed tasks + 'is_subtask': False, # bool | Filter to subtasks + 'sort_by': "modified_at", # str | One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at` + 'sort_ascending': True, # bool | Default `false` + 'opt_fields': "actual_time_minutes,approval_status,assignee,assignee.name,assignee_section,assignee_section.name,assignee_status,completed,completed_at,completed_by,completed_by.name,created_at,created_by,custom_fields,custom_fields.asana_created_field,custom_fields.created_by,custom_fields.created_by.name,custom_fields.currency_code,custom_fields.custom_label,custom_fields.custom_label_position,custom_fields.date_value,custom_fields.date_value.date,custom_fields.date_value.date_time,custom_fields.description,custom_fields.display_value,custom_fields.enabled,custom_fields.enum_options,custom_fields.enum_options.color,custom_fields.enum_options.enabled,custom_fields.enum_options.name,custom_fields.enum_value,custom_fields.enum_value.color,custom_fields.enum_value.enabled,custom_fields.enum_value.name,custom_fields.format,custom_fields.has_notifications_enabled,custom_fields.id_prefix,custom_fields.is_formula_field,custom_fields.is_global_to_workspace,custom_fields.is_value_read_only,custom_fields.multi_enum_values,custom_fields.multi_enum_values.color,custom_fields.multi_enum_values.enabled,custom_fields.multi_enum_values.name,custom_fields.name,custom_fields.number_value,custom_fields.people_value,custom_fields.people_value.name,custom_fields.precision,custom_fields.representation_type,custom_fields.resource_subtype,custom_fields.text_value,custom_fields.type,dependencies,dependents,due_at,due_on,external,external.data,followers,followers.name,hearted,hearts,hearts.user,hearts.user.name,html_notes,is_rendered_as_separator,liked,likes,likes.user,likes.user.name,memberships,memberships.project,memberships.project.name,memberships.section,memberships.section.name,modified_at,name,notes,num_hearts,num_likes,num_subtasks,parent,parent.created_by,parent.name,parent.resource_subtype,permalink_url,projects,projects.name,resource_subtype,start_at,start_on,tags,tags.name,workspace,workspace.name", # 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. + } + opts['custom_fields.123.is_set'] = True # bool | Filiter to tasks with custom field set or unset. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.value'] = '456' # str or bool or Enum option ID | Filter to tasks with custom field that matches the provided value. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.starts_with'] = 'start' # string | Filter to tasks with custom field that starts with provided string. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.ends_with'] = 'end' # string | Filter to tasks with custom field that ends in provided string. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.contains'] = 'first' # string | Filter to tasks with custom field that contains the provided string. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.less_than'] = 10 # number | Filter to tasks with custom field with number value less than the provided number. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + opts['custom_fields.123.greater_than'] = 100 # number | Filter to tasks with custom field with number value greater than the provided number. Note: searching for multiple exact matches of a custom field, searching for multi-enum custom field + + try: + # Search tasks in a workspace + api_response = tasks_api_instance.search_tasks_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TasksApi->search_tasks_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.tasks.search_tasks_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + tasks->searchTasksForWorkspace($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.tasks.search_tasks_for_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + /team_memberships/{team_membership_gid}: + parameters: + - $ref: '#/components/parameters/team_membership_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a team membership + description: >- + Returns the complete team membership record for a single team membership. + tags: + - Team memberships + operationId: getTeamMembership + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - is_admin + - is_guest + - is_limited_access + - team + - team.name + - user + - user.name + schema: + type: array + items: + type: string + enum: + - is_admin + - is_guest + - is_limited_access + - team + - team.name + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested team membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamMembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.teammemberships.getTeamMembership(teamMembershipGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamMembershipsApiInstance = new Asana.TeamMembershipsApi(); + let team_membership_gid = "724362"; // String | + let opts = { + 'opt_fields': "is_admin,is_guest,is_limited_access,team,team.name,user,user.name" + }; + teamMembershipsApiInstance.getTeamMembership(team_membership_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teammemberships.getTeamMembership(teamMembershipGid, {param: + "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + team_memberships_api_instance = asana.TeamMembershipsApi(api_client) + team_membership_gid = "724362" # str | + opts = { + 'opt_fields': "is_admin,is_guest,is_limited_access,team,team.name,user,user.name", # 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: + # Get a team membership + api_response = team_memberships_api_instance.get_team_membership(team_membership_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamMembershipsApi->get_team_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.team_memberships.get_team_membership(team_membership_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teammemberships->getTeamMembership($team_membership_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.team_memberships.get_team_membership(team_membership_gid: + 'team_membership_gid', param: "value", param: "value", options: {pretty: + true}) + /team_memberships: + parameters: + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get team memberships + description: >- + Returns compact team membership records. + tags: + - Team memberships + operationId: getTeamMemberships + parameters: + - name: team + in: query + description: Globally unique identifier for the team. + schema: + type: string + example: '159874' + - name: user + in: query + description: >- + A string identifying a user. This can either be the string "me", an + email, or the gid of a user. + This parameter must be used with the workspace parameter. + schema: + type: string + example: '512241' + - name: workspace + in: query + description: >- + Globally unique identifier for the workspace. This parameter must be + used with the user parameter. + schema: + type: string + example: '31326' + - name: opt_fields + in: query + description: 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. + required: false + example: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + schema: + type: array + items: + type: string + enum: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested team memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.teammemberships.getTeamMemberships(workspace, + user, team) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamMembershipsApiInstance = new Asana.TeamMembershipsApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'team': "159874", + 'user': "512241", + 'workspace': "31326", + 'opt_fields': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name" + }; + teamMembershipsApiInstance.getTeamMemberships(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teammemberships.getTeamMemberships({param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + team_memberships_api_instance = asana.TeamMembershipsApi(api_client) + 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.' + 'team': "159874", # str | Globally unique identifier for the team. + 'user': "512241", # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. This parameter must be used with the workspace parameter. + 'workspace': "31326", # str | Globally unique identifier for the workspace. This parameter must be used with the user parameter. + 'opt_fields': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name", # 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: + # Get team memberships + api_response = team_memberships_api_instance.get_team_memberships(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TeamMembershipsApi->get_team_memberships: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.team_memberships.get_team_memberships({'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teammemberships->getTeamMemberships(array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.team_memberships.get_team_memberships(param: "value", + param: "value", options: {pretty: true}) + /teams/{team_gid}/team_memberships: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get memberships from a team + description: >- + Returns the compact team memberships for the team. + tags: + - Team memberships + operationId: getTeamMembershipsForTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + schema: + type: array + items: + type: string + enum: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested team's memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.teammemberships.getTeamMembershipsForTeam(teamGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamMembershipsApiInstance = new Asana.TeamMembershipsApi(); + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name" + }; + teamMembershipsApiInstance.getTeamMembershipsForTeam(team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teammemberships.getTeamMembershipsForTeam(teamGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + team_memberships_api_instance = asana.TeamMembershipsApi(api_client) + team_gid = "159874" # str | Globally unique identifier for the team. + 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': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name", # 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: + # Get memberships from a team + api_response = team_memberships_api_instance.get_team_memberships_for_team(team_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TeamMembershipsApi->get_team_memberships_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.team_memberships.get_team_memberships_for_team(team_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teammemberships->getTeamMembershipsForTeam($team_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.team_memberships.get_team_memberships_for_team(team_gid: + 'team_gid', param: "value", param: "value", options: {pretty: true}) + /users/{user_gid}/team_memberships: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get memberships from a user + description: >- + Returns the compact team membership records for the user. + tags: + - Team memberships + operationId: getTeamMembershipsForUser + parameters: + - name: workspace + description: >- + Globally unique identifier for the workspace. + in: query + schema: + type: string + example: '31326' + required: true + - name: opt_fields + in: query + description: 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. + required: false + example: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + schema: + type: array + items: + type: string + enum: + - is_admin + - is_guest + - is_limited_access + - offset + - path + - team + - team.name + - uri + - user + - user.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested users's memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.teammemberships.getTeamMembershipsForUser(userGid, + workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamMembershipsApiInstance = new Asana.TeamMembershipsApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let workspace = "31326"; // String | Globally unique identifier for the workspace. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name" + }; + teamMembershipsApiInstance.getTeamMembershipsForUser(user_gid, workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teammemberships.getTeamMembershipsForUser(userGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + team_memberships_api_instance = asana.TeamMembershipsApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + workspace = "31326" # str | Globally unique identifier for the workspace. + 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': "is_admin,is_guest,is_limited_access,offset,path,team,team.name,uri,user,user.name", # 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: + # Get memberships from a user + api_response = team_memberships_api_instance.get_team_memberships_for_user(user_gid, workspace, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TeamMembershipsApi->get_team_memberships_for_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.team_memberships.get_team_memberships_for_user(user_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teammemberships->getTeamMembershipsForUser($user_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.team_memberships.get_team_memberships_for_user(user_gid: + 'user_gid', workspace: ''workspace_example'', param: "value", + param: "value", options: {pretty: true}) + /teams: + parameters: + - $ref: '#/components/parameters/pretty' + post: + summary: Create a team + description: |- + Creates a team within the current workspace. + tags: + - Teams + operationId: createTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - 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 + schema: + type: array + items: + type: string + enum: + - 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 + style: form + explode: false + requestBody: + description: The team to create. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamRequest' + responses: + 201: + description: Successfully created a new team. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Team result = client.teams.createTeam() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The team to create. + let 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" + }; + teamsApiInstance.createTeam(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.createTeam({field: "value", field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + 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. + } + + try: + # Create a team + api_response = teams_api_instance.create_team(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamsApi->create_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.create_team({'field': 'value', 'field': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->createTeam(array('field' => 'value', 'field' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.create_team(field: "value", field: "value", options: + {pretty: true}) + /teams/{team_gid}: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a team + description: Returns the full record for a single team. + tags: + - Teams + operationId: getTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - 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 + schema: + type: array + items: + type: string + enum: + - 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 + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for a single team. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Team result = client.teams.getTeam(teamGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let team_gid = "159874"; // String | Globally unique identifier for the team. + let 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" + }; + teamsApiInstance.getTeam(team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.getTeam(teamGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + 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. + } + + try: + # Get a team + api_response = teams_api_instance.get_team(team_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamsApi->get_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.get_team(team_gid, {'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->getTeam($team_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.get_team(team_gid: 'team_gid', param: "value", + param: "value", options: {pretty: true}) + put: + summary: Update a team + description: |- + Updates a team within the current workspace. + tags: + - Teams + operationId: updateTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - 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 + schema: + type: array + items: + type: string + enum: + - 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 + style: form + explode: false + requestBody: + description: The team to update. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamRequest' + responses: + 200: + description: Successfully updated the team. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Team result = client.teams.updateTeam() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The team to update. + let team_gid = "159874"; // String | Globally unique identifier for the team. + let 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" + }; + teamsApiInstance.updateTeam(body, team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + 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. + } + + try: + # Update a team + api_response = teams_api_instance.update_team(body, team_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamsApi->update_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.update_team({'field': 'value', 'field': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->updateTeam(array('field' => 'value', 'field' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.update_team(field: "value", field: "value", options: + {pretty: true}) + /workspaces/{workspace_gid}/teams: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get teams in a workspace + description: >- + Returns the compact records for all teams in the workspace visible to + the authorized user. + tags: + - Teams + operationId: getTeamsForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - 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 + schema: + type: array + items: + type: string + enum: + - 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 + style: form + explode: false + responses: + 200: + description: >- + Returns the team records for all teams in the organization or + workspace accessible to the authenticated user. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.teams.getTeamsForWorkspace(workspaceGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + '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" + }; + teamsApiInstance.getTeamsForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.getTeamsForWorkspace(workspaceGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + teams_api_instance = asana.TeamsApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + 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. + } + + try: + # Get teams in a workspace + api_response = teams_api_instance.get_teams_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TeamsApi->get_teams_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.get_teams_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->getTeamsForWorkspace($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.get_teams_for_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + /users/{user_gid}/teams: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: organization + in: query + description: The workspace or organization to filter teams on. + required: true + schema: + type: string + example: '1331' + get: + summary: Get teams for a user + description: >- + Returns the compact records for all teams to which the given user is assigned. + tags: + - Teams + operationId: getTeamsForUser + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - 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 + schema: + type: array + items: + type: string + enum: + - 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 + style: form + explode: false + responses: + 200: + description: >- + Returns the team records for all teams in the organization or + workspace to which the given user is assigned. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TeamCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.teams.getTeamsForUser(userGid, organization) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let organization = "1331"; // String | The workspace or organization to filter teams on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + '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" + }; + teamsApiInstance.getTeamsForUser(user_gid, organization, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.getTeamsForUser(userGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + teams_api_instance = asana.TeamsApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + 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. + } + + try: + # Get teams for a user + api_response = teams_api_instance.get_teams_for_user(user_gid, organization, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TeamsApi->get_teams_for_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.get_teams_for_user(user_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->getTeamsForUser($user_gid, array('param' => + 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.get_teams_for_user(user_gid: 'user_gid', organization: + ''organization_example'', param: "value", param: "value", + options: {pretty: true}) + /teams/{team_gid}/addUser: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a user to a team + description: >- + The user making this call must be a member of the team in order to add + others. The user being added must exist in the same organization as the + team. + + + Returns the complete team membership record for the newly added user. + tags: + - Teams + operationId: addUserForTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - is_admin + - is_guest + - is_limited_access + - team + - team.name + - user + - user.name + schema: + type: array + items: + type: string + enum: + - is_admin + - is_guest + - is_limited_access + - team + - team.name + - user + - user.name + style: form + explode: false + requestBody: + description: The user to add to the team. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamAddUserRequest' + responses: + 200: + description: >- + Successfully added user to the team. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamMembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.teams.addUserForTeam(teamGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The user to add to the team. + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'opt_fields': "is_admin,is_guest,is_limited_access,team,team.name,user,user.name" + }; + teamsApiInstance.addUserForTeam(body, team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.addUserForTeam(teamGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + teams_api_instance = asana.TeamsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The user to add to the team. + team_gid = "159874" # str | Globally unique identifier for the team. + opts = { + 'opt_fields': "is_admin,is_guest,is_limited_access,team,team.name,user,user.name", # 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: + # Add a user to a team + api_response = teams_api_instance.add_user_for_team(body, team_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamsApi->add_user_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.add_user_for_team(team_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->addUserForTeam($team_gid, array('field' => + 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.add_user_for_team(team_gid: 'team_gid', field: + "value", field: "value", options: {pretty: true}) + /teams/{team_gid}/removeUser: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a user from a team + description: >- + The user making this call must be a member of the team in order to remove + themselves or others. + tags: + - Teams + operationId: removeUserForTeam + requestBody: + description: The user to remove from the team. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TeamRemoveUserRequest' + responses: + 204: + description: >- + Returns an empty data record + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.teams.removeUserForTeam(teamGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let teamsApiInstance = new Asana.TeamsApi(); + let body = {"data": {"": "", "": "",}}; // Object | The user to remove from the team. + let team_gid = "159874"; // String | Globally unique identifier for the team. + + teamsApiInstance.removeUserForTeam(body, team_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.teams.removeUserForTeam(teamGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + teams_api_instance = asana.TeamsApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The user to remove from the team. + team_gid = "159874" # str | Globally unique identifier for the team. + + + try: + # Remove a user from a team + api_response = teams_api_instance.remove_user_for_team(body, team_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TeamsApi->remove_user_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.teams.remove_user_for_team(team_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + teams->removeUserForTeam($team_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.teams.remove_user_for_team(team_gid: 'team_gid', field: + "value", field: "value", options: {pretty: true}) + /time_periods/{time_period_gid}: + parameters: + - $ref: '#/components/parameters/time_period_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a time period + description: Returns the full record for a single time period. + tags: + - Time periods + operationId: getTimePeriod + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - display_name + - end_on + - parent + - parent.display_name + - parent.end_on + - parent.period + - parent.start_on + - period + - start_on + schema: + type: array + items: + type: string + enum: + - display_name + - end_on + - parent + - parent.display_name + - parent.end_on + - parent.period + - parent.start_on + - period + - start_on + style: form + explode: false + responses: + 200: + description: Successfully retrieved the record for a single time period. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TimePeriodResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.timeperiods.getTimePeriod(timePeriodGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timePeriodsApiInstance = new Asana.TimePeriodsApi(); + let time_period_gid = "917392"; // String | Globally unique identifier for the time period. + let opts = { + 'opt_fields': "display_name,end_on,parent,parent.display_name,parent.end_on,parent.period,parent.start_on,period,start_on" + }; + timePeriodsApiInstance.getTimePeriod(time_period_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.timeperiods.getTimePeriod(timePeriodGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_periods_api_instance = asana.TimePeriodsApi(api_client) + time_period_gid = "917392" # str | Globally unique identifier for the time period. + opts = { + 'opt_fields': "display_name,end_on,parent,parent.display_name,parent.end_on,parent.period,parent.start_on,period,start_on", # 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: + # Get a time period + api_response = time_periods_api_instance.get_time_period(time_period_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TimePeriodsApi->get_time_period: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.time_periods.get_time_period(time_period_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + timeperiods->getTimePeriod($time_period_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.time_periods.get_time_period(time_period_gid: 'time_period_gid', + param: "value", param: "value", options: {pretty: true}) + /time_periods: + parameters: + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get time periods + description: >- + Returns compact time period records. + tags: + - Time periods + operationId: getTimePeriods + parameters: + - name: start_on + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: end_on + in: query + description: >- + ISO 8601 date string + schema: + type: string + format: date + example: '2019-09-15' + - name: workspace + in: query + required: true + description: Globally unique identifier for the workspace. + schema: + type: string + example: '31326' + - name: opt_fields + in: query + description: 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. + required: false + example: + - display_name + - end_on + - offset + - parent + - parent.display_name + - parent.end_on + - parent.period + - parent.start_on + - path + - period + - start_on + - uri + schema: + type: array + items: + type: string + enum: + - display_name + - end_on + - offset + - parent + - parent.display_name + - parent.end_on + - parent.period + - parent.start_on + - path + - period + - start_on + - uri + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested time periods. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TimePeriodCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.timeperiods.getTimePeriods(endOn, + startOn, workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timePeriodsApiInstance = new Asana.TimePeriodsApi(); + let workspace = "31326"; // String | Globally unique identifier for the workspace. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'start_on': "2019-09-15", + 'end_on': "2019-09-15", + 'opt_fields': "display_name,end_on,offset,parent,parent.display_name,parent.end_on,parent.period,parent.start_on,path,period,start_on,uri" + }; + timePeriodsApiInstance.getTimePeriods(workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.timeperiods.getTimePeriods({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_periods_api_instance = asana.TimePeriodsApi(api_client) + workspace = "31326" # str | Globally unique identifier for the workspace. + 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.' + 'start_on': '2019-09-15', # date | ISO 8601 date string + 'end_on': '2019-09-15', # date | ISO 8601 date string + 'opt_fields': "display_name,end_on,offset,parent,parent.display_name,parent.end_on,parent.period,parent.start_on,path,period,start_on,uri", # 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: + # Get time periods + api_response = time_periods_api_instance.get_time_periods(workspace, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TimePeriodsApi->get_time_periods: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.time_periods.get_time_periods({'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + timeperiods->getTimePeriods(array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.time_periods.get_time_periods(workspace: ''workspace_example'', + param: "value", param: "value", options: {pretty: true}) + /tasks/{task_gid}/time_tracking_entries: + parameters: + - $ref: '#/components/parameters/task_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get time tracking entries for a task + description: Returns time tracking entries for a given task. + tags: + - Time tracking entries + operationId: getTimeTrackingEntriesForTask + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_by + - created_by.name + - duration_minutes + - entered_on + - offset + - path + - uri + schema: + type: array + items: + type: string + enum: + - created_by + - created_by.name + - duration_minutes + - entered_on + - offset + - path + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested time tracking entries. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TimeTrackingEntryCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timeTrackingEntriesApiInstance = new Asana.TimeTrackingEntriesApi(); + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "created_by,created_by.name,duration_minutes,entered_on,offset,path,uri" + }; + timeTrackingEntriesApiInstance.getTimeTrackingEntriesForTask(task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_tracking_entries_api_instance = asana.TimeTrackingEntriesApi(api_client) + task_gid = "321654" # str | The task to operate 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': "created_by,created_by.name,duration_minutes,entered_on,offset,path,uri", # 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: + # Get time tracking entries for a task + api_response = time_tracking_entries_api_instance.get_time_tracking_entries_for_task(task_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TimeTrackingEntriesApi->get_time_tracking_entries_for_task: %s\n" % e) + name: python-sdk-v5 + post: + summary: Create a time tracking entry + description: |- + Creates a time tracking entry on a given task. + + Returns the record of the newly created time tracking entry. + tags: + - Time tracking entries + operationId: createTimeTrackingEntry + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + schema: + type: array + items: + type: string + enum: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + style: form + explode: false + requestBody: + description: Information about the time tracking entry. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/CreateTimeTrackingEntryRequest' + responses: + 201: + description: Successfully created a time tracking entry for the task. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TimeTrackingEntryBase' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timeTrackingEntriesApiInstance = new Asana.TimeTrackingEntriesApi(); + let body = {"data": {"": "", "": "",}}; // Object | Information about the time tracking entry. + let task_gid = "321654"; // String | The task to operate on. + let opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype" + }; + timeTrackingEntriesApiInstance.createTimeTrackingEntry(body, task_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_tracking_entries_api_instance = asana.TimeTrackingEntriesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | Information about the time tracking entry. + task_gid = "321654" # str | The task to operate on. + opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype", # 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: + # Create a time tracking entry + api_response = time_tracking_entries_api_instance.create_time_tracking_entry(body, task_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TimeTrackingEntriesApi->create_time_tracking_entry: %s\n" % e) + name: python-sdk-v5 + /time_tracking_entries/{time_tracking_entry_gid}: + parameters: + - $ref: '#/components/parameters/time_tracking_entry_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a time tracking entry + description: Returns the complete time tracking entry record for a single time + tracking entry. + tags: + - Time tracking entries + operationId: getTimeTrackingEntry + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + schema: + type: array + items: + type: string + enum: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested time tracking entry. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TimeTrackingEntryBase' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timeTrackingEntriesApiInstance = new Asana.TimeTrackingEntriesApi(); + let time_tracking_entry_gid = "917392"; // String | Globally unique identifier for the time tracking entry. + let opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype" + }; + timeTrackingEntriesApiInstance.getTimeTrackingEntry(time_tracking_entry_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_tracking_entries_api_instance = asana.TimeTrackingEntriesApi(api_client) + time_tracking_entry_gid = "917392" # str | Globally unique identifier for the time tracking entry. + opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype", # 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: + # Get a time tracking entry + api_response = time_tracking_entries_api_instance.get_time_tracking_entry(time_tracking_entry_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TimeTrackingEntriesApi->get_time_tracking_entry: %s\n" % e) + name: python-sdk-v5 + put: + summary: Update a time tracking entry + description: |- + A specific, existing time tracking entry can be updated by making a `PUT` request on + the URL for that time tracking entry. Only the fields provided in the `data` block + will be updated; any unspecified fields will remain unchanged. + + When using this method, it is best to specify only those fields you wish + to change, or else you may overwrite changes made by another user since + you last retrieved the task. + + Returns the complete updated time tracking entry record. + tags: + - Time tracking entries + operationId: updateTimeTrackingEntry + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + schema: + type: array + items: + type: string + enum: + - created_at + - created_by + - created_by.name + - duration_minutes + - entered_on + - task + - task.created_by + - task.name + - task.resource_subtype + style: form + explode: false + requestBody: + description: The updated fields for the time tracking entry. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/UpdateTimeTrackingEntryRequest' + responses: + 200: + description: Successfully updated the time tracking entry. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/TimeTrackingEntryBase' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timeTrackingEntriesApiInstance = new Asana.TimeTrackingEntriesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated fields for the time tracking entry. + let time_tracking_entry_gid = "917392"; // String | Globally unique identifier for the time tracking entry. + let opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype" + }; + timeTrackingEntriesApiInstance.updateTimeTrackingEntry(body, time_tracking_entry_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_tracking_entries_api_instance = asana.TimeTrackingEntriesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated fields for the time tracking entry. + time_tracking_entry_gid = "917392" # str | Globally unique identifier for the time tracking entry. + opts = { + 'opt_fields': "created_at,created_by,created_by.name,duration_minutes,entered_on,task,task.created_by,task.name,task.resource_subtype", # 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: + # Update a time tracking entry + api_response = time_tracking_entries_api_instance.update_time_tracking_entry(body, time_tracking_entry_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling TimeTrackingEntriesApi->update_time_tracking_entry: %s\n" % e) + name: python-sdk-v5 + delete: + summary: Delete a time tracking entry + description: |- + A specific, existing time tracking entry can be deleted by making a `DELETE` request on + the URL for that time tracking entry. + + Returns an empty data record. + tags: + - Time tracking entries + operationId: deleteTimeTrackingEntry + responses: + 200: + description: Successfully deleted the specified time tracking entry. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let timeTrackingEntriesApiInstance = new Asana.TimeTrackingEntriesApi(); + let time_tracking_entry_gid = "917392"; // String | Globally unique identifier for the time tracking entry. + + timeTrackingEntriesApiInstance.deleteTimeTrackingEntry(time_tracking_entry_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + time_tracking_entries_api_instance = asana.TimeTrackingEntriesApi(api_client) + time_tracking_entry_gid = "917392" # str | Globally unique identifier for the time tracking entry. + + + try: + # Delete a time tracking entry + api_response = time_tracking_entries_api_instance.delete_time_tracking_entry(time_tracking_entry_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling TimeTrackingEntriesApi->delete_time_tracking_entry: %s\n" % e) + name: python-sdk-v5 + /workspaces/{workspace_gid}/typeahead: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - name: resource_type + in: query + description: >- + The type of values the typeahead should return. You can choose from one + of the following: `custom_field`, `goal`, `project`, `project_template`, + `portfolio`, `tag`, `task`, `team`, and `user`. Note that unlike in the + names + of endpoints, the types listed here are in singular form (e.g. `task`). + Using multiple types is not yet supported. + required: true + schema: + type: string + enum: + - custom_field + - goal + - project + - project_template + - portfolio + - tag + - task + - team + - user + default: user + - name: type + in: query + description: >- + *Deprecated: new integrations should prefer the resource_type field.* + required: false + schema: + type: string + enum: + - custom_field + - portfolio + - project + - tag + - task + - user + default: user + - name: query + in: query + description: >- + The string that will be used to search for relevant objects. If an + empty string is passed in, the API will return results. + schema: + type: string + example: Greg + - name: count + in: query + description: >- + The number of results to return. The default is 20 if this parameter is + omitted, with a minimum of 1 and a maximum of 100. If there are fewer + results found than requested, all will be returned. + schema: + type: integer + example: 20 + - $ref: '#/components/parameters/pretty' + get: + summary: Get objects via typeahead + description: |- + Retrieves objects in the workspace based via an auto-completion/typeahead + search algorithm. This feature is meant to provide results quickly, so do + not rely on this API to provide extremely accurate search results. The + result set is limited to a single page of results with a maximum size, so + you won’t be able to fetch large numbers of results. + + The typeahead search API provides search for objects from a single + workspace. This endpoint should be used to query for objects when + creating an auto-completion/typeahead search feature. This API is meant + to provide results quickly and should not be relied upon for accurate or + exhaustive search results. The results sets are limited in size and + cannot be paginated. + + Queries return a compact representation of each object which is typically + the gid and name fields. Interested in a specific set of fields or all of + the fields?! Of course you are. Use field selectors to manipulate what + data is included in a response. + + Resources with type `user` are returned in order of most contacted to + least contacted. This is determined by task assignments, adding the user + to projects, and adding the user as a follower to tasks, messages, + etc. + + Resources with type `project` are returned in order of recency. This is + determined when the user visits the project, is added to the project, and + completes tasks in the project. + + Resources with type `task` are returned with priority placed on tasks + the user is following, but no guarantee on the order of those tasks. + + Resources with type `project_template` are returned with priority + placed on favorited project templates. + + Leaving the `query` string empty or omitted will give you results, still + following the resource ordering above. This could be used to list users or + projects that are relevant for the requesting user's api token. + tags: + - Typeahead + operationId: typeaheadForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - name + schema: + type: array + items: + type: string + enum: + - name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved objects via a typeahead search algorithm. + content: + application/json: + schema: + type: object + description: >- + A generic list of objects, such as those returned by the typeahead + search + endpoint. + properties: + data: + type: array + items: + $ref: '#/components/schemas/AsanaNamedResource' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.typeahead.typeaheadForWorkspace(workspaceGid, + count, query, type, resourceType) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let typeaheadApiInstance = new Asana.TypeaheadApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let resource_type = "user"; // String | The type of values the typeahead should return. You can choose from one of the following: `custom_field`, `project`, `project_template`, `portfolio`, `tag`, `task`, and `user`. Note that unlike in the names of endpoints, the types listed here are in singular form (e.g. `task`). Using multiple types is not yet supported. + let opts = { + 'type': "user", + 'query': "Greg", + 'count': 20, + 'opt_fields': "name" + }; + typeaheadApiInstance.typeaheadForWorkspace(workspace_gid, resource_type, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.typeahead.typeaheadForWorkspace(workspaceGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + typeahead_api_instance = asana.TypeaheadApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + resource_type = "user" # str | The type of values the typeahead should return. You can choose from one of the following: `custom_field`, `goal`, `project`, `project_template`, `portfolio`, `tag`, `task`, `team`, and `user`. Note that unlike in the names of endpoints, the types listed here are in singular form (e.g. `task`). Using multiple types is not yet supported. + opts = { + 'type': "user", # str | *Deprecated: new integrations should prefer the resource_type field.* + 'query': "Greg", # str | The string that will be used to search for relevant objects. If an empty string is passed in, the API will return results. + 'count': 20, # int | The number of results to return. The default is 20 if this parameter is omitted, with a minimum of 1 and a maximum of 100. If there are fewer results found than requested, all will be returned. + 'opt_fields': "name", # 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: + # Get objects via typeahead + api_response = typeahead_api_instance.typeahead_for_workspace(workspace_gid, resource_type, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling TypeaheadApi->typeahead_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.typeahead.typeahead_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + typeahead->typeaheadForWorkspace($workspace_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.typeahead.typeahead_for_workspace(workspace_gid: 'workspace_gid', + resource_type: ''resource_type_example'', param: "value", + param: "value", options: {pretty: true}) + /user_task_lists/{user_task_list_gid}: + parameters: + - $ref: '#/components/parameters/user_task_list_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a user task list + description: >- + Returns the full record for a user task list. + tags: + - User task lists + operationId: getUserTaskList + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - name + - owner + - workspace + schema: + type: array + items: + type: string + enum: + - name + - owner + - workspace + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the user task list. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/UserTaskListResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + UserTaskList result = client.usertasklists.getUserTaskList(userTaskListGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let userTaskListsApiInstance = new Asana.UserTaskListsApi(); + let user_task_list_gid = "12345"; // String | Globally unique identifier for the user task list. + let opts = { + 'opt_fields': "name,owner,workspace" + }; + userTaskListsApiInstance.getUserTaskList(user_task_list_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.usertasklists.getUserTaskList(userTaskListGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + user_task_lists_api_instance = asana.UserTaskListsApi(api_client) + user_task_list_gid = "12345" # str | Globally unique identifier for the user task list. + opts = { + 'opt_fields': "name,owner,workspace", # 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: + # Get a user task list + api_response = user_task_lists_api_instance.get_user_task_list(user_task_list_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling UserTaskListsApi->get_user_task_list: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.user_task_lists.get_user_task_list(user_task_list_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + usertasklists->getUserTaskList($user_task_list_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.user_task_lists.get_user_task_list(user_task_list_gid: + 'user_task_list_gid', param: "value", param: "value", options: {pretty: + true}) + /users/{user_gid}/user_task_list: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + - name: workspace + in: query + required: true + description: >- + The workspace in which to get the user task list. + schema: + type: string + example: '1234' + get: + summary: Get a user's task list + description: >- + Returns the full record for a user's task list. + tags: + - User task lists + operationId: getUserTaskListForUser + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - name + - owner + - workspace + schema: + type: array + items: + type: string + enum: + - name + - owner + - workspace + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the user's task list. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/UserTaskListResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + UserTaskList result = client.usertasklists.getUserTaskListForUser(userGid, + workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let userTaskListsApiInstance = new Asana.UserTaskListsApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let workspace = "1234"; // String | The workspace in which to get the user task list. + let opts = { + 'opt_fields': "name,owner,workspace" + }; + userTaskListsApiInstance.getUserTaskListForUser(user_gid, workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.usertasklists.getUserTaskListForUser(userGid, {param: "value", + param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + user_task_lists_api_instance = asana.UserTaskListsApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + workspace = "1234" # str | The workspace in which to get the user task list. + opts = { + 'opt_fields': "name,owner,workspace", # 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: + # Get a user's task list + api_response = user_task_lists_api_instance.get_user_task_list_for_user(user_gid, workspace, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling UserTaskListsApi->get_user_task_list_for_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.user_task_lists.get_user_task_list_for_user(user_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + usertasklists->getUserTaskListForUser($user_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.user_task_lists.get_user_task_list_for_user(user_gid: + 'user_gid', workspace: ''workspace_example'', param: "value", + param: "value", options: {pretty: true}) + /users: + parameters: + - name: workspace + in: query + description: >- + The workspace or organization ID to filter users on. + schema: + type: string + example: '1331' + - name: team + in: query + description: >- + The team ID to filter users on. + schema: + type: string + example: '15627' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get multiple users + description: >- + Returns the user records for all users in all workspaces and + organizations accessible to the authenticated user. Accepts an optional + workspace ID parameter. + + Results are sorted by user ID. + tags: + - Users + operationId: getUsers + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email + - name + - offset + - path + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - uri + - workspaces + - workspaces.name + schema: + type: array + items: + type: string + enum: + - email + - name + - offset + - path + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - uri + - workspaces + - workspaces.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested user records. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/UserCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.users.getUsers(team, workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let usersApiInstance = new Asana.UsersApi(); + let opts = { + 'workspace': "1331", + 'team': "15627", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "email,name,offset,path,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,uri,workspaces,workspaces.name" + }; + usersApiInstance.getUsers(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.users.getUsers({param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + users_api_instance = asana.UsersApi(api_client) + opts = { + 'workspace': "1331", # str | The workspace or organization ID to filter users on. + 'team': "15627", # str | The team ID to filter users on. + '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': "email,name,offset,path,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,uri,workspaces,workspaces.name", # 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: + # Get multiple users + api_response = users_api_instance.get_users(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling UsersApi->get_users: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.users.get_users({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + users->getUsers(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.users.get_users(param: "value", param: "value", options: + {pretty: true}) + /users/{user_gid}: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a user + description: >- + Returns the full user record for the single user with the provided ID. + tags: + - Users + operationId: getUser + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + schema: + type: array + items: + type: string + enum: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + style: form + explode: false + responses: + 200: + description: Returns the user specified. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/UserResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + User result = client.users.getUser(userGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let usersApiInstance = new Asana.UsersApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let opts = { + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name" + }; + usersApiInstance.getUser(user_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.users.getUser(userGid, {param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + users_api_instance = asana.UsersApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + opts = { + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name", # 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: + # Get a user + api_response = users_api_instance.get_user(user_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling UsersApi->get_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.users.get_user(user_gid, {'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + users->getUser($user_gid, array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.users.get_user(user_gid: 'user_gid', param: "value", + param: "value", options: {pretty: true}) + /users/{user_gid}/favorites: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: resource_type + in: query + required: true + description: >- + The resource type of favorites to be returned. + schema: + type: string + enum: + - portfolio + - project + - tag + - task + - user + - project_template + default: project + - name: workspace + in: query + required: true + description: >- + The workspace in which to get favorites. + schema: + type: string + example: '1234' + get: + summary: Get a user's favorites + description: >- + Returns all of a user's favorites in the given workspace, of the given type. + + Results are given in order (The same order as Asana's sidebar). + tags: + - Users + operationId: getFavoritesForUser + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - name + - offset + - path + - uri + schema: + type: array + items: + type: string + enum: + - name + - offset + - path + - uri + style: form + explode: false + responses: + 200: + description: Returns the specified user's favorites. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/AsanaNamedResource' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.users.getFavoritesForUser(userGid, + workspace, resourceType) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let usersApiInstance = new Asana.UsersApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let resource_type = "project"; // String | The resource type of favorites to be returned. + let workspace = "1234"; // String | The workspace in which to get favorites. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "name,offset,path,uri" + }; + usersApiInstance.getFavoritesForUser(user_gid, resource_type, workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.users.getFavoritesForUser(userGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + users_api_instance = asana.UsersApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + resource_type = "project" # str | The resource type of favorites to be returned. + workspace = "1234" # str | The workspace in which to get favorites. + 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': "name,offset,path,uri", # 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: + # Get a user's favorites + api_response = users_api_instance.get_favorites_for_user(user_gid, resource_type, workspace, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling UsersApi->get_favorites_for_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.users.get_favorites_for_user(user_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + users->getFavoritesForUser($user_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.users.get_favorites_for_user(user_gid: 'user_gid', resource_type: + ''resource_type_example'', workspace: ''workspace_example'', + param: "value", param: "value", options: {pretty: true}) + /teams/{team_gid}/users: + parameters: + - $ref: '#/components/parameters/team_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/offset' + get: + summary: Get users in a team + description: >- + Returns the compact records for all users that are members of the team. + + Results are sorted alphabetically and limited to 2000. For more results + use the `/users` endpoint. + tags: + - Users + operationId: getUsersForTeam + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + schema: + type: array + items: + type: string + enum: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + style: form + explode: false + responses: + 200: + description: >- + Returns the user records for all the members of the team, including + guests and limited access users + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/UserCompact' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.users.getUsersForTeam(teamGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let usersApiInstance = new Asana.UsersApi(); + let team_gid = "159874"; // String | Globally unique identifier for the team. + let opts = { + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name" + }; + usersApiInstance.getUsersForTeam(team_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.users.getUsersForTeam(teamGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + users_api_instance = asana.UsersApi(api_client) + team_gid = "159874" # str | Globally unique identifier for the team. + opts = { + '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': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name", # 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: + # Get users in a team + api_response = users_api_instance.get_users_for_team(team_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling UsersApi->get_users_for_team: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.users.get_users_for_team(team_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + users->getUsersForTeam($team_gid, array('param' => + 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.users.get_users_for_team(team_gid: 'team_gid', param: + "value", param: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/users: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/offset' + get: + summary: >- + Get users in a workspace or organization + description: >- + Returns the compact records for all users in the specified workspace or + organization. + + Results are sorted alphabetically and limited to 2000. For more results + use the `/users` endpoint. + tags: + - Users + operationId: getUsersForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + schema: + type: array + items: + type: string + enum: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + - workspaces + - workspaces.name + style: form + explode: false + responses: + 200: + description: Return the users in the specified workspace or org. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/UserCompact' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.users.getUsersForWorkspace(workspaceGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let usersApiInstance = new Asana.UsersApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name" + }; + usersApiInstance.getUsersForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.users.getUsersForWorkspace(workspaceGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + users_api_instance = asana.UsersApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + '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': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name", # 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: + # Get users in a workspace or organization + api_response = users_api_instance.get_users_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling UsersApi->get_users_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.users.get_users_for_workspace(workspace_gid, {'param': + 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + users->getUsersForWorkspace($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.users.get_users_for_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + /webhooks: + parameters: + - $ref: '#/components/parameters/pretty' + get: + summary: >- + Get multiple webhooks + description: >- + Get the compact representation of all webhooks your app has registered + for the authenticated user in the given workspace. + tags: + - Webhooks + operationId: getWebhooks + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: workspace + in: query + required: true + description: >- + The workspace to query for webhooks in. + schema: + type: string + example: '1331' + - name: resource + in: query + description: Only return webhooks for the given resource. + schema: + type: string + example: '51648' + - name: opt_fields + in: query + description: 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. + required: false + example: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - offset + - path + - resource + - resource.name + - target + - uri + schema: + type: array + items: + type: string + enum: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - offset + - path + - resource + - resource.name + - target + - uri + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested webhooks. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/WebhookResponse' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.webhooks.getWebhooks(resource, workspace) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let webhooksApiInstance = new Asana.WebhooksApi(); + let workspace = "1331"; // String | The workspace to query for webhooks in. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'resource': "51648", + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,offset,path,resource,resource.name,target,uri" + }; + webhooksApiInstance.getWebhooks(workspace, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.webhooks.getWebhooks({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + webhooks_api_instance = asana.WebhooksApi(api_client) + workspace = "1331" # str | The workspace to query for webhooks in. + 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.' + 'resource': "51648", # str | Only return webhooks for the given resource. + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,offset,path,resource,resource.name,target,uri", # 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: + # Get multiple webhooks + api_response = webhooks_api_instance.get_webhooks(workspace, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling WebhooksApi->get_webhooks: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.webhooks.get_webhooks({'param': 'value', 'param': 'value'}, + opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + webhooks->getWebhooks(array('param' => 'value', 'param' + => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.webhooks.get_webhooks(workspace: ''workspace_example'', + param: "value", param: "value", options: {pretty: true}) + post: + summary: >- + Establish a webhook + description: |- + 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 + } + } + ``` + tags: + - Webhooks + operationId: createWebhook + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + schema: + type: array + items: + type: string + enum: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + style: form + explode: false + requestBody: + description: The webhook workspace and target. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WebhookRequest' + responses: + 201: + description: Successfully created the requested webhook. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WebhookResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Webhook result = client.webhooks.createWebhook() + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let webhooksApiInstance = new Asana.WebhooksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The webhook workspace and target. + let opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target" + }; + webhooksApiInstance.createWebhook(body, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.webhooks.createWebhook({field: "value", field: "value", pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + webhooks_api_instance = asana.WebhooksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The webhook workspace and target. + opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target", # 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: + # Establish a webhook + api_response = webhooks_api_instance.create_webhook(body, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WebhooksApi->create_webhook: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.webhooks.create_webhook({'field': 'value', 'field': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + webhooks->createWebhook(array('field' => 'value', + 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.webhooks.create_webhook(field: "value", field: "value", + options: {pretty: true}) + /webhooks/{webhook_gid}: + parameters: + - $ref: '#/components/parameters/webhook_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: >- + Get a webhook + description: >- + Returns the full record for the given webhook. + tags: + - Webhooks + operationId: getWebhook + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + schema: + type: array + items: + type: string + enum: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + style: form + explode: false + responses: + 200: + description: Successfully retrieved the requested webhook. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WebhookResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Webhook result = client.webhooks.getWebhook(webhookGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let webhooksApiInstance = new Asana.WebhooksApi(); + let webhook_gid = "12345"; // String | Globally unique identifier for the webhook. + let opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target" + }; + webhooksApiInstance.getWebhook(webhook_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.webhooks.getWebhook(webhookGid, {param: "value", param: "value", + opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + webhooks_api_instance = asana.WebhooksApi(api_client) + webhook_gid = "12345" # str | Globally unique identifier for the webhook. + opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target", # 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: + # Get a webhook + api_response = webhooks_api_instance.get_webhook(webhook_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WebhooksApi->get_webhook: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.webhooks.get_webhook(webhook_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + webhooks->getWebhook($webhook_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.webhooks.get_webhook(webhook_gid: 'webhook_gid', param: + "value", param: "value", options: {pretty: true}) + put: + summary: >- + Update a webhook + description: >- + An existing webhook's filters can be updated by making a PUT request on the + URL for that webhook. Note that the webhook's previous `filters` array will + be completely overwritten by the `filters` sent in the PUT request. + tags: + - Webhooks + operationId: updateWebhook + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + schema: + type: array + items: + type: string + enum: + - active + - created_at + - filters + - filters.action + - filters.fields + - filters.resource_subtype + - last_failure_at + - last_failure_content + - last_success_at + - resource + - resource.name + - target + style: form + explode: false + requestBody: + description: The updated filters for the webhook. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WebhookUpdateRequest' + responses: + 200: + description: Successfully updated the webhook. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WebhookResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Webhook result = client.webhooks.updateWebhook(webhookGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let webhooksApiInstance = new Asana.WebhooksApi(); + let body = {"data": {"": "", "": "",}}; // Object | The updated filters for the webhook. + let webhook_gid = "12345"; // String | Globally unique identifier for the webhook. + let opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target" + }; + webhooksApiInstance.updateWebhook(body, webhook_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.webhooks.updateWebhook(webhookGid, {field: "value", field: "value", + pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + webhooks_api_instance = asana.WebhooksApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The updated filters for the webhook. + webhook_gid = "12345" # str | Globally unique identifier for the webhook. + opts = { + 'opt_fields': "active,created_at,filters,filters.action,filters.fields,filters.resource_subtype,last_failure_at,last_failure_content,last_success_at,resource,resource.name,target", # 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: + # Update a webhook + api_response = webhooks_api_instance.update_webhook(body, webhook_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WebhooksApi->update_webhook: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.webhooks.update_webhook(webhook_gid, {'field': 'value', + 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + webhooks->updateWebhook($webhook_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.webhooks.update_webhook(webhook_gid: 'webhook_gid', + field: "value", field: "value", options: {pretty: true}) + delete: + summary: Delete a webhook + description: >- + This method *permanently* removes a webhook. Note that it may be possible + to receive a request that was already in flight after deleting the + webhook, but no further requests will be issued. + tags: + - Webhooks + operationId: deleteWebhook + responses: + 200: + description: Successfully retrieved the requested webhook. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.webhooks.deleteWebhook(webhookGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let webhooksApiInstance = new Asana.WebhooksApi(); + let webhook_gid = "12345"; // String | Globally unique identifier for the webhook. + + webhooksApiInstance.deleteWebhook(webhook_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.webhooks.deleteWebhook(webhookGid) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + webhooks_api_instance = asana.WebhooksApi(api_client) + webhook_gid = "12345" # str | Globally unique identifier for the webhook. + + + try: + # Delete a webhook + api_response = webhooks_api_instance.delete_webhook(webhook_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling WebhooksApi->delete_webhook: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.webhooks.delete_webhook(webhook_gid, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + webhooks->deleteWebhook($webhook_gid, array('opt_pretty' + => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.webhooks.delete_webhook(webhook_gid: 'webhook_gid', + options: {pretty: true}) + /workspace_memberships/{workspace_membership_gid}: + parameters: + - $ref: '#/components/parameters/workspace_membership_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a workspace membership + description: >- + Returns the complete workspace record for a single workspace membership. + tags: + - Workspace memberships + operationId: getWorkspaceMembership + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - is_active + - is_admin + - is_guest + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - created_at + - is_active + - is_admin + - is_guest + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested workspace membership. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceMembershipResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.workspacememberships.getWorkspaceMembership(workspaceMembershipGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspaceMembershipsApiInstance = new Asana.WorkspaceMembershipsApi(); + let workspace_membership_gid = "12345"; // String | + let opts = { + 'opt_fields': "created_at,is_active,is_admin,is_guest,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name" + }; + workspaceMembershipsApiInstance.getWorkspaceMembership(workspace_membership_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspacememberships.getWorkspaceMembership(workspaceMembershipGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspace_memberships_api_instance = asana.WorkspaceMembershipsApi(api_client) + workspace_membership_gid = "12345" # str | + opts = { + 'opt_fields': "created_at,is_active,is_admin,is_guest,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name", # 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: + # Get a workspace membership + api_response = workspace_memberships_api_instance.get_workspace_membership(workspace_membership_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WorkspaceMembershipsApi->get_workspace_membership: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspace_memberships.get_workspace_membership(workspace_membership_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspacememberships->getWorkspaceMembership($workspace_membership_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspace_memberships.get_workspace_membership(workspace_membership_gid: + 'workspace_membership_gid', param: "value", param: "value", options: + {pretty: true}) + /users/{user_gid}/workspace_memberships: + parameters: + - $ref: '#/components/parameters/user_path_gid' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get workspace memberships for a user + description: >- + Returns the compact workspace membership records for the user. + tags: + - Workspace memberships + operationId: getWorkspaceMembershipsForUser + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - is_active + - is_admin + - is_guest + - offset + - path + - uri + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - created_at + - is_active + - is_admin + - is_guest + - offset + - path + - uri + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested user's workspace memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/WorkspaceMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.workspacememberships.getWorkspaceMembershipsForUser(userGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspaceMembershipsApiInstance = new Asana.WorkspaceMembershipsApi(); + let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "created_at,is_active,is_admin,is_guest,offset,path,uri,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name" + }; + workspaceMembershipsApiInstance.getWorkspaceMembershipsForUser(user_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspacememberships.getWorkspaceMembershipsForUser(userGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspace_memberships_api_instance = asana.WorkspaceMembershipsApi(api_client) + user_gid = "me" # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + 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': "created_at,is_active,is_admin,is_guest,offset,path,uri,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name", # 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: + # Get workspace memberships for a user + api_response = workspace_memberships_api_instance.get_workspace_memberships_for_user(user_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling WorkspaceMembershipsApi->get_workspace_memberships_for_user: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspace_memberships.get_workspace_memberships_for_user(user_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspacememberships->getWorkspaceMembershipsForUser($user_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspace_memberships.get_workspace_memberships_for_user(user_gid: + 'user_gid', param: "value", param: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/workspace_memberships: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/user_query_param' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get the workspace memberships for a workspace + description: >- + Returns the compact workspace membership records for the workspace. + tags: + - Workspace memberships + operationId: getWorkspaceMembershipsForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - created_at + - is_active + - is_admin + - is_guest + - offset + - path + - uri + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + schema: + type: array + items: + type: string + enum: + - created_at + - is_active + - is_admin + - is_guest + - offset + - path + - uri + - user + - user.name + - user_task_list + - user_task_list.name + - user_task_list.owner + - user_task_list.workspace + - vacation_dates + - vacation_dates.end_on + - vacation_dates.start_on + - workspace + - workspace.name + style: form + explode: false + responses: + 200: + description: >- + Successfully retrieved the requested workspace's memberships. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/WorkspaceMembershipCompact' + next_page: + $ref: '#/components/schemas/NextPage' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.workspacememberships.getWorkspaceMembershipsForWorkspace(workspaceGid, + user) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspaceMembershipsApiInstance = new Asana.WorkspaceMembershipsApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'user': "me", + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "created_at,is_active,is_admin,is_guest,offset,path,uri,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name" + }; + workspaceMembershipsApiInstance.getWorkspaceMembershipsForWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspacememberships.getWorkspaceMembershipsForWorkspace(workspaceGid, + {param: "value", param: "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspace_memberships_api_instance = asana.WorkspaceMembershipsApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'user': "me", # str | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. + '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': "created_at,is_active,is_admin,is_guest,offset,path,uri,user,user.name,user_task_list,user_task_list.name,user_task_list.owner,user_task_list.workspace,vacation_dates,vacation_dates.end_on,vacation_dates.start_on,workspace,workspace.name", # 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: + # Get the workspace memberships for a workspace + api_response = workspace_memberships_api_instance.get_workspace_memberships_for_workspace(workspace_gid, opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling WorkspaceMembershipsApi->get_workspace_memberships_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspace_memberships.get_workspace_memberships_for_workspace(workspace_gid, + {'param': 'value', 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspacememberships->getWorkspaceMembershipsForWorkspace($workspace_gid, + array('param' => 'value', 'param' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspace_memberships.get_workspace_memberships_for_workspace(workspace_gid: + 'workspace_gid', param: "value", param: "value", options: {pretty: true}) + /workspaces: + parameters: + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + get: + summary: Get multiple workspaces + description: >- + Returns the compact records for all workspaces visible to the + authorized user. + tags: + - Workspaces + operationId: getWorkspaces + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email_domains + - is_organization + - name + - offset + - path + - uri + schema: + type: array + items: + type: string + enum: + - email_domains + - is_organization + - name + - offset + - path + - uri + style: form + explode: false + responses: + 200: + description: Return all workspaces visible to the authorized user. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/WorkspaceCompact' + next_page: + $ref: '#/components/schemas/NextPage' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + List result = client.workspaces.getWorkspaces() + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspacesApiInstance = new Asana.WorkspacesApi(); + let opts = { + 'limit': 50, + 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", + 'opt_fields': "email_domains,is_organization,name,offset,path,uri" + }; + workspacesApiInstance.getWorkspaces(opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspaces.getWorkspaces({param: "value", param: "value", opt_pretty: + true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspaces_api_instance = asana.WorkspacesApi(api_client) + 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': "email_domains,is_organization,name,offset,path,uri", # 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: + # Get multiple workspaces + api_response = workspaces_api_instance.get_workspaces(opts) + for data in api_response: + pprint(data) + except ApiException as e: + print("Exception when calling WorkspacesApi->get_workspaces: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspaces.get_workspaces({'param': 'value', 'param': + 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspaces->getWorkspaces(array('param' => 'value', + 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspaces.get_workspaces(param: "value", param: "value", + options: {pretty: true}) + /workspaces/{workspace_gid}: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + get: + summary: Get a workspace + description: >- + Returns the full workspace record for a single workspace. + tags: + - Workspaces + operationId: getWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email_domains + - is_organization + - name + schema: + type: array + items: + type: string + enum: + - email_domains + - is_organization + - name + style: form + explode: false + responses: + 200: + description: Return the full workspace record. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Workspace result = client.workspaces.getWorkspace(workspaceGid) + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspacesApiInstance = new Asana.WorkspacesApi(); + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'opt_fields': "email_domains,is_organization,name" + }; + workspacesApiInstance.getWorkspace(workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspaces.getWorkspace(workspaceGid, {param: "value", param: + "value", opt_pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspaces_api_instance = asana.WorkspacesApi(api_client) + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'opt_fields': "email_domains,is_organization,name", # 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: + # Get a workspace + api_response = workspaces_api_instance.get_workspace(workspace_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WorkspacesApi->get_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspaces.get_workspace(workspace_gid, {'param': 'value', + 'param': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspaces->getWorkspace($workspace_gid, array('param' + => 'value', 'param' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspaces.get_workspace(workspace_gid: 'workspace_gid', + param: "value", param: "value", options: {pretty: true}) + put: + summary: Update a workspace + description: >- + A specific, existing workspace can be updated by making a PUT request + on the URL for that workspace. Only the fields provided in the data + block will be updated; any unspecified fields will remain unchanged. + + Currently the only field that can be modified for a workspace is its + name. + + Returns the complete, updated workspace record. + tags: + - Workspaces + operationId: updateWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email_domains + - is_organization + - name + schema: + type: array + items: + type: string + enum: + - email_domains + - is_organization + - name + style: form + explode: false + requestBody: + description: The workspace object with all updated properties. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceRequest' + responses: + 200: + description: Update for the workspace was successful. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + Workspace result = client.workspaces.updateWorkspace(workspaceGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspacesApiInstance = new Asana.WorkspacesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The workspace object with all updated properties. + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'opt_fields': "email_domains,is_organization,name" + }; + workspacesApiInstance.updateWorkspace(body, workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspaces.updateWorkspace(workspaceGid, {field: "value", field: + "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspaces_api_instance = asana.WorkspacesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The workspace object with all updated properties. + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'opt_fields': "email_domains,is_organization,name", # 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: + # Update a workspace + api_response = workspaces_api_instance.update_workspace(body, workspace_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WorkspacesApi->update_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspaces.update_workspace(workspace_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspaces->updateWorkspace($workspace_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspaces.update_workspace(workspace_gid: 'workspace_gid', + field: "value", field: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/addUser: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Add a user to a workspace or organization + description: >- + Add a user to a workspace or organization. + + The user can be referenced by their globally unique user ID or their + email address. Returns the full user record for the invited user. + tags: + - Workspaces + operationId: addUserForWorkspace + parameters: + - name: opt_fields + in: query + description: 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. + required: false + example: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + schema: + type: array + items: + type: string + enum: + - email + - name + - photo + - photo.image_1024x1024 + - photo.image_128x128 + - photo.image_21x21 + - photo.image_27x27 + - photo.image_36x36 + - photo.image_60x60 + style: form + explode: false + requestBody: + description: The user to add to the workspace. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceAddUserRequest' + responses: + 200: + description: >- + The user was added successfully to the workspace or organization. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/UserBaseResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.workspaces.addUserForWorkspace(workspaceGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspacesApiInstance = new Asana.WorkspacesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The user to add to the workspace. + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + let opts = { + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60" + }; + workspacesApiInstance.addUserForWorkspace(body, workspace_gid, opts).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspaces.addUserForWorkspace(workspaceGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspaces_api_instance = asana.WorkspacesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The user to add to the workspace. + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + opts = { + 'opt_fields': "email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60", # 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: + # Add a user to a workspace or organization + api_response = workspaces_api_instance.add_user_for_workspace(body, workspace_gid, opts) + pprint(api_response) + except ApiException as e: + print("Exception when calling WorkspacesApi->add_user_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspaces.add_user_for_workspace(workspace_gid, {'field': + 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspaces->addUserForWorkspace($workspace_gid, array('field' + => 'value', 'field' => 'value'), array('opt_pretty' => 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspaces.add_user_for_workspace(workspace_gid: 'workspace_gid', + field: "value", field: "value", options: {pretty: true}) + /workspaces/{workspace_gid}/removeUser: + parameters: + - $ref: '#/components/parameters/workspace_path_gid' + - $ref: '#/components/parameters/pretty' + post: + summary: Remove a user from a workspace or organization + description: >- + Remove a user from a workspace or organization. + + The user making this call must be an admin in the workspace. The user can + be referenced by their globally unique user ID or their email address. + + Returns an empty data record. + tags: + - Workspaces + operationId: removeUserForWorkspace + requestBody: + description: The user to remove from the workspace. + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/WorkspaceRemoveUserRequest' + responses: + 204: + description: >- + The user was removed successfully to the workspace or organization. + content: + application/json: + schema: + type: object + properties: + data: + $ref: '#/components/schemas/EmptyResponse' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + x-readme: + code-samples: + - language: java + install: >- + com.asanaasana1.0.0 + code: >- + import com.asana.Client; + + + Client client = Client.accessToken("PERSONAL_ACCESS_TOKEN"); + + + JsonElement result = client.workspaces.removeUserForWorkspace(workspaceGid) + .data("field", "value") + .data("field", "value") + .option("pretty", true) + .execute(); + - language: node + install: npm install asana + code: |- + const Asana = require('asana'); + + let client = Asana.ApiClient.instance; + let token = client.authentications['token']; + token.accessToken = ''; + + let workspacesApiInstance = new Asana.WorkspacesApi(); + let body = {"data": {"": "", "": "",}}; // Object | The user to remove from the workspace. + let workspace_gid = "12345"; // String | Globally unique identifier for the workspace or organization. + + workspacesApiInstance.removeUserForWorkspace(body, workspace_gid).then((result) => { + console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2)); + }, (error) => { + console.error(error.response.body); + }); + name: node-sdk-v3 + - language: node + install: npm install asana@1.0.2 + code: >- + const asana = require('asana'); + + + const client = asana.Client.create().useAccessToken('PERSONAL_ACCESS_TOKEN'); + + + client.workspaces.removeUserForWorkspace(workspaceGid, {field: "value", + field: "value", pretty: true}) + .then((result) => { + console.log(result); + }); + name: node-sdk-v1 + - language: python + install: pip install asana + code: |- + import asana + from asana.rest import ApiException + from pprint import pprint + + configuration = asana.Configuration() + configuration.access_token = '' + api_client = asana.ApiClient(configuration) + + # create an instance of the API class + workspaces_api_instance = asana.WorkspacesApi(api_client) + body = {"data": {"": "", "": "",}} # dict | The user to remove from the workspace. + workspace_gid = "12345" # str | Globally unique identifier for the workspace or organization. + + + try: + # Remove a user from a workspace or organization + api_response = workspaces_api_instance.remove_user_for_workspace(body, workspace_gid) + pprint(api_response) + except ApiException as e: + print("Exception when calling WorkspacesApi->remove_user_for_workspace: %s\n" % e) + name: python-sdk-v5 + - language: python + install: pip install asana==3.2.2 + code: >- + import asana + + + client = asana.Client.access_token('PERSONAL_ACCESS_TOKEN') + + + result = client.workspaces.remove_user_for_workspace(workspace_gid, + {'field': 'value', 'field': 'value'}, opt_pretty=True) + name: python-sdk-v3 + - language: php + install: composer require asana/asana + code: >- + workspaces->removeUserForWorkspace($workspace_gid, + array('field' => 'value', 'field' => 'value'), array('opt_pretty' => + 'true')) + - language: ruby + install: gem install asana + code: >- + require 'asana' + + + client = Asana::Client.new do |c| + c.authentication :access_token, 'PERSONAL_ACCESS_TOKEN' + end + + + result = client.workspaces.remove_user_for_workspace(workspace_gid: + 'workspace_gid', field: "value", field: "value", options: {pretty: true}) + \ No newline at end of file diff --git a/docs/spec/sanitations.md b/docs/spec/sanitations.md new file mode 100644 index 0000000..1bd57ad --- /dev/null +++ b/docs/spec/sanitations.md @@ -0,0 +1,24 @@ +_Author_: @NipunaRanasinghe \ +_Created_: 2024/03/26 \ +_Updated_: 2024/03/26 \ +_Edition_: Swan Lake + +# Sanitation for OpenAPI specification + +This document records the sanitation done on top of the official OpenAPI specification from Asana. The OpenAPI specification is obtained from the [Asana OpenAPI repository](https://github.com/Asana/openapi/). +These changes are done in order to improve the overall usability, and as workarounds for some known language limitations. + +1. Change the type of `resource_subtype` property of the `AttachmentResponse` object from `string` to an enum of `default_task`. `milestone`, `section`, `approval`. + * This change is done to address the issue where the `resource_subtype` property is incorrectly overridden by the `resource_subtype` property of the `TaskCompact` object. + +2. Fix incorrect response types of the `getUsers` operation. + * The `getUsers` operation is expected to return a list of `UserCompact` objects, but the OpenAPI specification incorrectly defines the response type as HTTP Bad Request. + +## OpenAPI cli command + +The following command was used to generate the Ballerina client from the OpenAPI specification. The command should be executed from the repository root directory. + +```bash +bal openapi -i docs/spec/openapi.yaml --mode client --license docs/license.txt -o ballerina/ +``` +Note: The license year is hardcoded to 2024, change if necessary.