Skip to content

Initiate a resource export

API Reference

Initiates a bulk export of resources for a workspace. The export will be processed asynchronously. Once the export has been requested, its progress can be monitored using the jobs endpoint.

Supported resource types

This endpoint currently supports exporting tasks, teams and messages within a workspace. Resources can be requested to be part of the export by providing the export_request_parameters parameter. The following resource types are supported:

Tasks:

Tasks are formatted for exports with some differences from their documented schema:

  • attachments are included by default and returns an array of associated attachments.
  • Attachment objects do not include download_url or view_url. The attachments endpoint should be queried for up-to-date URLs.
  • stories are included by default and returns an array of comments and other changes made to a task

Teams:

Teams are formatted for exports with these differences from their documented schema:

  • members are included by default and returns an array of Users that are members of the team
  • Filtering is not supported for teams.

Messages:

The returned schema encompasses both default messages and status updates and is similar to the status update schema. The available fields for messages are:

  • gid - The globally unique identifier for the message.
  • resource_type - The type of resource, which is always "message".
  • resource_subtype - Optional. The subtype of the message, which can be "default" or "status_update".
  • status_type - The type associated with the status update. This can be one of: “on_track”, “at_risk”, “off_track”, “on_hold”, “complete”, “achieved”, “partial”, “missed”, “dropped”
  • created_by - The user who created the message.
  • created_at - The time at which this resource was created and sent available to other users.
  • modified_at - The time at which this resource was last modified.
  • title - The title of the message.
  • text - The text content of the message.
  • html_notes - The text content of the message with formatting as HTML. Not included by default. Can be included by using “fields” in the initial request.
  • num_likes - The number of users who have liked this message.
  • likes - An array of users who have liked this message.
  • stories - Optional. Array of stories applied to the message.
  • attachments - Optional. Array of attachments added to the message.
  • followers - Optional. Array of users currently following the message. Users that were sent the message are treated as followers.
  • parents - Array of objects the message was sent to. Can be a Project, Portfolio, Team or Goal. Limited to a single object for status updates.

Export file

The final export file will be in JSON Lines format and compressed in a gzip container.

Objects are formatted according to their corresponding API schema, or limited to the fields included in the fields parameter. Exports currently include undeleted objects.

An object in the export will be up to date anywhere between the exports created_at and completed_at. There is no guaranteed ordering of objects in the export.

Access to the export file expires 30 days after its completion.

Exporting specific fields

By default, each object in an export includes a predefined set of fields based on its schema. If a more limited set of fields or fields not included by default are required, the Export API allows for specifying which fields to include in the requested export.

Fields can be specified using the fields parameter. The fields parameter conforms to the fields optional parameter available for all Asana endpoints which is documented here.

Utilizing the fields parameter is recommended if the full object is not required, especially when a large number of objects are being exported, to reduce the overall export time.

Filtering resources

A disjunction of two or more filters can be achieved by providing multiple export_request_parameters for the same resource, each with different filters. However, this approach may result in duplicate resources being returned.

Rate Limits

A workspace is currently limited to one in progress export request at a given time. The request will return with a 403 Forbidden status code if the limit is exceeded.

OpenAPI definition

json
{
  "openapi": "3.0.0",
  "info": {
    "description": "This is the interface for interacting with the Asana Platform. 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. 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",
      "CustomTypeResponse",
      "CustomTypeBase",
      "CustomTypeCompact",
      "CustomTypeStatusOptionResponse",
      "CustomTypeStatusOptionBase",
      "CustomTypeStatusOptionCompact",
      "CustomFieldResponse",
      "CustomFieldCompact",
      "CustomFieldMembershipCompact",
      "CustomFieldMembershipResponse",
      "EnumOption",
      "EventResponse",
      "ErrorResponse",
      "GoalResponse",
      "GoalCompact",
      "GoalMembershipCompact",
      "GoalMembershipBase",
      "GoalMembershipResponse",
      "GoalRelationshipResponse",
      "GoalRelationshipCompact",
      "GraphExportResponse",
      "GraphExportCompact",
      "JobResponse",
      "JobCompact",
      "OrganizationExportResponse",
      "OrganizationExportCompact",
      "PortfolioMembershipResponse",
      "PortfolioMembershipCompact",
      "PortfolioResponse",
      "PortfolioCompact",
      "ProjectBriefResponse",
      "ProjectBriefCompact",
      "ProjectMembershipCompactResponse",
      "ProjectMembershipNormalResponse",
      "ProjectMembershipCompact",
      "ProjectResponse",
      "ProjectCompact",
      "ProjectStatusResponse",
      "ProjectStatusCompact",
      "ProjectTemplateCompact",
      "ProjectTemplateResponse",
      "RuleTriggerResponse",
      "ResourceExportResponse",
      "ResourceExportCompact",
      "ResourceExportCompact",
      "RbacRoleResponse",
      "RbacRoleCompact",
      "SectionResponse",
      "SectionCompact",
      "StatusUpdateResponse",
      "StatusUpdateCompact",
      "StoryResponse",
      "StoryCompact",
      "TagResponse",
      "TagCompact",
      "TaskResponse",
      "TaskCompact",
      "TaskCountResponse",
      "TeamMembershipResponse",
      "TeamMembershipCompact",
      "TeamResponse",
      "TeamCompact",
      "TimePeriodResponse",
      "TimePeriodCompact",
      "TimeTrackingCategoryResponse",
      "TimeTrackingCategoryCompact",
      "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": "Exports",
      "description": "Exports are a way to download data from Asana. The following types of exports are available:\n* **Graph exports**: Export of data about objects starting from a parent object, such as a team, portfolio, or project.\n* **Resource exports**: Bulk exports of resources such as tasks, teams, and messages for a workspace.\n* **Organization exports**: Exports the complete data of an organization in JSON format. Please refer to [Organization exports](/reference/organization-exports/organization-exports) for more details.\n\n## Graph exports\nA `graph_export` object represents a request to export the\ndata about objects starting from a parent object. Parent object can be a team, portfolio, or project.\n\nTo create an export using this API:\n1. Create a `graph_export` [request](/reference/createGraphExport) and store the ID that is returned.\n2. Request the [jobs](/reference/jobs/getjob) endpoint every few minutes, until `status` field contains 'succeeded'.\n3. Download the file located at the URL in the `download_url` field.\n\nExports can take a long time, from several minutes to a few hours for large portfolios.\n\n*Note: Graph exports are only available to accounts of an\nEnterprise/Enterprise+ organization.*\n\n## Resource exports\nA `resource_export` object represents a request to bulk export resources for a workspace.\nTo create an export using this API:\n1. Create a `resource_export` [request](/reference/createResourceExport) and store the job ID that is returned.\n2. Request the [jobs](/reference/jobs/getjob) endpoint at some interval, until `status` field contains 'succeeded' and a `download_url` is available.\n3. Download the file located at the URL in the `download_url` field.\n\nExports can take a long time, from several minutes to a few hours for large workspaces.\n\n*Note: Resource exports are only available to Service Accounts\nfrom an Enterprise+ organization or an organization with the Compliance Management Add-on."
    }
  ],
  "components": {
    "responses": {
      "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"
            }
          }
        }
      },
      "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"
            }
          }
        }
      },
      "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"
            }
          }
        }
      }
    },
    "schemas": {
      "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\noccur for a wide range of reasons. In all cases, the API should return\nan HTTP Status Code that indicates the nature of the failure,\nwith a response body in JSON format containing additional information.\n\n\nIn the event of a server error the response body will contain an error\nphrase. These phrases are automatically generated using the\nnode-asana-phrase\nlibrary and can be used by\nAsana support to quickly look up the incident that caused the server\nerror.",
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "ResourceExportFilters": {
        "type": "object",
        "description": "Filters to apply to a resource that will be exported. These filters can be used to narrow down the resources that are included in the export.",
        "properties": {
          "assigned_by.any": {
            "description": "Filter by the users who assigned the resource. This array accepts a list of user GIDs. This is only applicable to tasks.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "assignee.any": {
            "description": "Filter by the users who are assigned to the resource. This array accepts a list of user GIDs. This is only applicable to tasks.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "commented_on_by.any": {
            "description": "Filter by the users who commented on the resource. This array accepts a list of user GIDs.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "created_at.after": {
            "description": "Filter results to resources created after a specified date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2023-01-01T00:00:00Z"
          },
          "created_at.before": {
            "description": "Filter results to resources created before a specified date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2023-01-01T00:00:00Z"
          },
          "created_by.any": {
            "description": "Filter by the users who created the resource. This array accepts a list of user GIDs.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "followers.any": {
            "description": "Filter by the users who are following the resource. This array accepts a list of user GIDs.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "liked_by.any": {
            "description": "Filter by the users who liked the resource. This array accepts a list of user GIDs.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "12345"
            }
          },
          "modified_at.after": {
            "description": "Filter results to resources modified after a specified date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2023-01-01T00:00:00Z"
          },
          "modified_at.before": {
            "description": "Filter results to resources modified before a specified date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2023-01-01T00:00:00Z"
          }
        }
      },
      "ResourceExportRequestParameter": {
        "type": "object",
        "properties": {
          "resource_type": {
            "type": "string",
            "description": "The type of the resource to be exported. This can be a task, team, or message.",
            "example": "task"
          },
          "filters": {
            "$ref": "#/components/schemas/ResourceExportFilters"
          },
          "fields": {
            "type": "array",
            "description": "An array of fields to include for the resource type. If not provided, all non-optional fields for the resource type will be included. This conforms to the fields optional parameter available for all Asana endpoints which is documented here",
            "items": {
              "type": "string",
              "example": "gid"
            }
          }
        }
      },
      "ResourceExportRequest": {
        "type": "object",
        "description": "A *resource_export* request starts a job to bulk export objects for one or more resources.",
        "properties": {
          "workspace": {
            "type": "string",
            "description": "Gid of a workspace.",
            "example": "12345"
          },
          "export_request_parameters": {
            "type": "array",
            "description": "An object containing the parameters for the export request. The keys of this object are the GIDs of the resources to be exported. The values are objects with additional parameters for each resource.",
            "items": {
              "$ref": "#/components/schemas/ResourceExportRequestParameter"
            }
          }
        }
      },
      "ResourceExportCompact": {
        "description": "A *resource_export* object represents a request to bulk export objects for one or more resources.",
        "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": "export_request",
            "x-insert-after": "gid"
          },
          "created_at": {
            "description": "The time at which the resource export object was created.",
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "example": "2012-02-22T02:06:58.147Z"
          },
          "download_url": {
            "description": "Download this URL to retrieve the full export\nin JSON Lines format. It will be compressed in a gzip (.gz) container.\n\n*Note: May be null if the export is still in progress or failed.*",
            "type": "string",
            "format": "uri",
            "readOnly": true,
            "nullable": true,
            "example": "https://asana-export-us-east-1.s3.us-east-1.amazonaws.com/2563645399633793/object_export/7588024658887731/download/ object_export_2563645399633793_7588024658887731_2023018-201726.jsonl.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256& X-Amz-Credential=xxxxxxxx&X-Amz-Date=xxxxxxxx&X-Amz-Expires=300&X-Amz-Security-Token=xxxxxxxx& X-Amz-Signature=xxxxxxxx&X-Amz-SignedHeaders=host"
          },
          "completed_at": {
            "description": "The time at which this resource was completed. This will be null if the export is still in progress.",
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "example": "2012-02-22T03:06:58.147Z"
          }
        }
      },
      "ResourceExportResponse": {
        "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": "job",
            "x-insert-after": "gid"
          },
          "resource_subtype": {
            "description": "A *resource_export* object represents a request to bulk export objects for one or more resources.",
            "type": "string",
            "readOnly": true,
            "example": "export_request"
          },
          "status": {
            "description": "The current status of this job.",
            "type": "string",
            "enum": [
              "not_started",
              "in_progress",
              "succeeded",
              "failed"
            ],
            "readOnly": true,
            "example": "succeeded"
          },
          "new_resource_export": {
            "$ref": "#/components/schemas/ResourceExportCompact"
          }
        }
      }
    },
    "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.\nAsana supports the Authorization Code Grant flow.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://app.asana.com/-/oauth_authorize",
            "tokenUrl": "https://app.asana.com/-/oauth_token",
            "refreshUrl": "https://app.asana.com/-/oauth_token",
            "scopes": {
              "default": "Provides access to all endpoints documented in our API reference. If no scopes are requested, this scope is assumed by default.",
              "openid": "Provides access to OpenID Connect ID tokens and the OpenID Connect user info endpoint.",
              "email": "Provides access to the user’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.",
              "attachments:read": "View access to attachments",
              "attachments:write": "Create and modify access to attachments",
              "attachments:delete": "Delete access to attachments",
              "custom_fields:read": "View access to custom fields",
              "custom_fields:write": "Create and modify access to custom fields",
              "goals:read": "View access to goals",
              "jobs:read": "View access to jobs",
              "ooo_entries:read": "View access to OOO entries",
              "ooo_entries:write": "Create and modify access to OOO entries",
              "ooo_entries:delete": "Delete access to OOO entries",
              "tasks:read": "View access to tasks",
              "tasks:write": "Create and modify access to tasks",
              "tasks:delete": "Delete access to tasks",
              "task_custom_types:read": "View access to task custom types",
              "task_templates:read": "View access to task templates",
              "team_memberships:read": "View access to team memberships",
              "portfolios:read": "View access to portfolios",
              "portfolios:write": "Create and modify access to portfolios",
              "project_templates:read": "View access to project templates",
              "project_portfolio_settings:read": "View access to project portfolio settings",
              "project_portfolio_settings:write": "Create and modify access to project portfolio settings",
              "projects:delete": "Delete access to projects",
              "projects:read": "View access to projects",
              "projects:write": "Create and modify access to projects",
              "roles:read": "View access to roles",
              "roles:write": "Create and modify access to roles",
              "roles:delete": "Delete access to roles",
              "users:read": "View access to users",
              "teams:read": "View access to teams",
              "time_tracking_categories:read": "View access to time tracking categories",
              "time_tracking_categories:write": "Create and modify access to time tracking categories",
              "time_tracking_categories:delete": "Delete access to time tracking categories",
              "time_tracking_entries:read": "View access to time tracking entries",
              "timesheet_approval_statuses:read": "View access to timesheet approval statuses",
              "timesheet_approval_statuses:write": "Create and modify access to timesheet approval statuses",
              "stories:read": "View access to stories",
              "stories:write": "Create and modify access to stories",
              "tags:read": "View access to tags",
              "tags:write": "Create and modify access to tags",
              "webhooks:read": "View access to webhooks",
              "webhooks:write": "Create and modify access to webhooks",
              "webhooks:delete": "Delete access to webhooks",
              "workspaces:read": "View access to workspaces"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/exports/resource": {
      "post": {
        "summary": "Initiate a resource export",
        "description": "Initiates a bulk export of resources for a workspace. The export will be processed asynchronously. Once the export has been requested, its progress can be monitored using the [jobs](/reference/jobs/getjob) endpoint.\n\n## Supported resource types\nThis endpoint currently supports exporting tasks, teams and messages within a workspace. Resources can be requested to be part of the export by providing the `export_request_parameters` parameter. The following resource types are supported:\n\n### Tasks:\nTasks are formatted for exports with some differences from their documented [schema](/reference/tasks/tasks):\n  - `attachments` are included by default and returns an array of associated attachments.\n  - Attachment objects do not include `download_url` or `view_url`. The `attachments` [endpoint](/reference/attachment) should be queried for up-to-date URLs.\n  - `stories` are included by default and returns an array of comments and other changes made to a task\n\n### Teams:\nTeams are formatted for exports with these differences from their documented [schema](/reference/teams/teams):\n  - `members` are included by default and returns an array of Users that are members of the team\n  - Filtering is not supported for teams.\n\n### Messages:\nThe returned schema encompasses both default messages and status updates and is similar to the status update schema.\nThe available fields for messages are:\n  - `gid` - The globally unique identifier for the message.\n  - `resource_type` - The type of resource, which is always \"message\".\n  - `resource_subtype` - Optional. The subtype of the message, which can be \"default\" or \"status_update\".\n  - `status_type` - The type associated with the status update. This can be one of: “on_track”, “at_risk”, “off_track”, “on_hold”, “complete”, “achieved”, “partial”, “missed”, “dropped”\n  - `created_by` - The user who created the message.\n  - `created_at` - The time at which this resource was created and sent available to other users.\n  - `modified_at` - The time at which this resource was last modified.\n  - `title` - The title of the message.\n  - `text` - The text content of the message.\n  - `html_notes` - The text content of the message with formatting as HTML. Not included by default. Can be included by using “fields” in the initial request.\n  - `num_likes` - The number of users who have liked this message.\n  - `likes` - An array of users who have liked this message.\n  - `stories` - Optional. Array of stories applied to the message.\n  - `attachments` - Optional. Array of attachments added to the message.\n  - `followers` - Optional. Array of users currently following the message. Users that were sent the message are treated as followers.\n  - `parents` - Array of objects the message was sent to. Can be a Project, Portfolio, Team or Goal. Limited to a single object for status updates.\n\n\n## Export file\nThe final export file will be in JSON Lines format and compressed in a gzip container.\n\nObjects are formatted according to their corresponding API schema, or limited to the fields\nincluded in the `fields` parameter. Exports currently include undeleted objects.\n\nAn object in the export will be up to date anywhere between the exports `created_at` and `completed_at`. There is no guaranteed ordering of objects in the export.\n\nAccess to the export file expires 30 days after its completion.\n\n## Exporting specific fields\nBy default, each object in an export includes a predefined set of fields based on its schema. If a more limited set of fields\nor fields not included by default are required, the Export API allows for specifying which fields to include in the requested export.\n\nFields can be specified using the `fields` parameter. The fields parameter conforms to the fields\noptional parameter available for all Asana endpoints which is documented here.\n\nUtilizing the `fields` parameter is recommended if the full object is not required, especially when a large number of objects are being exported, to reduce the overall export time.\n\n## Filtering resources\nA disjunction of two or more filters can be achieved by providing multiple `export_request_parameters` for the same resource, each with different filters.\nHowever, this approach may result in duplicate resources being returned.\n\n## Rate Limits\nA workspace is currently limited to *one* in progress export request at a given time. The request will return with a 403 Forbidden status code if the limit is exceeded.",
        "tags": [
          "Exports"
        ],
        "operationId": "createResourceExport",
        "requestBody": {
          "description": "A JSON payload specifying the resources to export, including filters to apply and fields to be exported.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "$ref": "#/components/schemas/ResourceExportRequest"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully created a Resource export request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ResourceExportResponse"
                    }
                  }
                }
              }
            }
          },
          "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"
          }
        },
        "security": [
          {
            "personalAccessToken": []
          },
          {
            "oauth2": []
          }
        ],
        "x-readme": {
          "code-samples": [
            {
              "language": "node",
              "install": "npm install asana",
              "code": "const Asana = require('asana');\n\nlet client = new Asana.ApiClient();\nclient.authentications.token.accessToken = '<YOUR_ACCESS_TOKEN>';\n\nlet exportsApiInstance = new Asana.ExportsApi(client);\nlet body = {\"data\": {\"<PARAM_1>\": \"<VALUE_1>\", \"<PARAM_2>\": \"<VALUE_2>\",}}; // Object | A JSON payload specifying the resources to export, including filters to apply and fields to be exported.\n\nexportsApiInstance.createResourceExport(body).then((result) => {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));\n}, (error) => {\n    console.error(error.response.body);\n});",
              "name": "node-sdk-v3"
            },
            {
              "language": "python",
              "install": "pip install asana",
              "code": "import asana\nfrom asana.rest import ApiException\nfrom pprint import pprint\n\nconfiguration = asana.Configuration()\nconfiguration.access_token = '<YOUR_ACCESS_TOKEN>'\napi_client = asana.ApiClient(configuration)\n\n# create an instance of the API class\nexports_api_instance = asana.ExportsApi(api_client)\nbody = {\"data\": {\"<PARAM_1>\": \"<VALUE_1>\", \"<PARAM_2>\": \"<VALUE_2>\",}} # dict | A JSON payload specifying the resources to export, including filters to apply and fields to be exported.\n\n\ntry:\n    # Initiate a resource export\n    api_response = exports_api_instance.create_resource_export(body)\n    pprint(api_response)\nexcept ApiException as e:\n    print(\"Exception when calling ExportsApi->create_resource_export: %s\\n\" % e)",
              "name": "python-sdk-v5"
            }
          ]
        }
      }
    }
  }
}