# Export Project

There are two types of exports: **exporting a single file** in a specific project or **exporting all files** in a project.

## The Export API

* Use the below API docs reference and follow this [step-by-step section to make the API request](https://docs.datasaur.ai/api/apis-docs).
* Please note that the project ID refers to the resource ID that can be accessed from the URL when opening a project.

### Export a File

Please note that this API will only return the latest state of the project.

* Query: [exportTextProjectDocument](https://api-docs.datasaur.ai/#query-exportTextProjectDocument)

### Export All Files

Specifically for exporting all files, there is a [Python script example](https://github.com/datasaur-ai/api-client-example/blob/master/export.py) that you can refer to or use. This API will return a zip which consist of the latest state of the project, as well as each labeler's work.

* Query: [exportTextProject](https://api-docs.datasaur.ai/#query-exportTextProject)

## Asynchronous Process

All the processes above are done asynchronously. To check the export job, you need to request the [`getExportDeliveryStatus`](https://api-docs.datasaur.ai/#query-getExportDeliveryStatus) query.

Specifically for the `FILE_STORAGE` method, the `fileUrl` response could return 404. If this happens, it means the export result hasn't been uploaded yet. Please wait or polling the query above to know when exactly the `fileUrl` is ready and can be downloaded.

## Required Request Payloads

### Document ID

See how to get the value [here](https://docs.datasaur.ai/api/get-data).

### Method

There are four different methods to obtain the export result, i.e. download, email, webhook, and external object storage. These methods are fully [explained here](https://docs.datasaur.ai/data-studio-projects/export-project#export-methods).

For the API payload reference, it can be accessed [here](https://api-docs.datasaur.ai/#definition-GqlExportMethod).

The method will be the same and applicable for both types of export. Below is the additional explanation for each method. **Ensure you fill all the required attributes**, and then follow these hints.

1. Download\
   \- For the `method` attribute, fill it with `FILE_STORAGE`.
2. Email\
   \- For the `method` attribute, fill it with `EMAIL`.
3. Webhook\
   \- For the `method` attribute, fill it with `CUSTOM_WEBHOOK`.\
   \- You also need to fill `url` and `secret` attribute.\
   \- The detailed explanation can be seen [here](https://docs.datasaur.ai/api/export-project/custom-webhook).
4. External Object Storage\
   \- For the method attribute, fill with `EXTERNAL_OBJECT_STORAGE`.\
   \- You also need to fill `externalObjectStorageParameter`.

### Format - Extension Mapping

* `DATASAUR_SCHEMA` can be used for any kinds of project.
* `XLSX`, `CSV`, `JSON_TABULAR`, and `TSV` for Row and Doc Labeling.
  * CSV will also work and is compatible for Hugging Face.
* `TSV_IOB`, `TSV_NON_IOB`, `JSON_ADVANCED` for Token Labeling.
* `CUSTOM` for export using [File Transformer](https://docs.datasaur.ai/workspace-management/file-transformer).
* `JSON` for JSON Simplified format.
* `PLAIN` for exporting only the text (without any labels) of a Token Labeling project.
* `AMAZON_COMPREHEND_CSV` can be used for both [Token Labeling](https://docs.aws.amazon.com/comprehend/latest/dg/cer-annotation-csv.html) and [Row Labeling](https://docs.aws.amazon.com/comprehend/latest/dg/prep-classifier-data-multi-label.html).
  * There is a specific scenario to consider with Token Labeling. Since Comprehend can only reference a file on S3, it is important to export the text after making any edits by doing another export with the `PLAIN` extension as explained above. This ensures that you can correctly reference the annotation data.
* `AZURE_AUTOML_CSV` can be used for both [Token Labeling (NER) and Row Labeling (Multi-label)](https://learn.microsoft.com/en-us/azure/machine-learning/how-to-auto-train-nlp-models?view=azureml-api-2\&tabs=cli).
* `GCP_VERTEX_AI_CSV` can be used for both [Token Labeling](https://cloud.google.com/vertex-ai/docs/text-data/entity-extraction/prepare-data) and [Row Labeling](https://cloud.google.com/vertex-ai/docs/text-data/classification/prepare-data#multi-label-classification).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.datasaur.ai/api/export-project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
