Note: All BDO endpoints are only accessible to Creators and Express Administrators.
The Bulk Data Operations (BDO) API lets Creators move large volumes of submission data into and out of the Unqork platform. Four operations are available:
- Export — download submission data to a file or cloud storage
- Import — upload submission data from a file or cloud storage
- Update — update existing Data Model records in bulk
- Delete — soft-delete or permanently delete submission records
All BDO jobs are limited to 100 MB. Use Bulk Operations: Utilities to generate upload and download links, and to check job status.
Test any endpoint: Access the Unqork Services page at
https://{environment}.unqork.io/fbu/uapi/docs/documentation/#/Bulk%20Operations/. Replace{environment}with the environment name.
Export
The BDO Export endpoint downloads submission data out of Unqork to a file or cloud storage. Use the HTTP POST method:
https://{environment}.unqork.io/fbu/uapi/bulk-operations/export
Request Body
{
"cloudStorageBucketName": "string",
"cloudStorageServiceName": "string",
"cloudStorageTargetDirectory": "string",
"resourceId": "string",
"dateFieldEndToFilterOn": "string",
"dateFieldStartToFilterOn": "string",
"dateFieldToFilterOn": "created",
"exportFullRecord": true,
"fileFormat": "CSV",
"includeAttachments": true,
"name": "string",
"numberOfFilesToGenerate": 1,
"targetRecordType": "ALL"
}
Parameters
| Key | Possible Values | Description | Required |
|---|---|---|---|
resourceId |
string | The Data Model ID or Module ID containing the records to export. | Optional |
cloudStorageBucketName |
string (no spaces) | The cloud storage bucket to export data to. When using cloud storage, cloudStorageServiceName, cloudStorageBucketName, and cloudStorageTargetDirectory must all be included. |
Optional |
cloudStorageServiceName |
string (no spaces) | The Service Name configured in Services Administration. Supports Amazon S3 and Azure Blob Storage. | Optional |
cloudStorageTargetDirectory |
string (no spaces) | The within the bucket to export data to, for example userData/moduleName/submissions. |
Optional |
dateFieldEndToFilterOn |
string (YYYY-MM-DDTHH:mm:ss:sssZ) | Exports data recorded up to this date (ISO 8601 UTC). Use with dateFieldStartToFilterOn to export a time range. |
Optional |
dateFieldStartToFilterOn |
string (YYYY-MM-DDTHH:mm:ss:sssZ) | Exports data recorded after this date (ISO 8601 UTC). | Optional |
dateFieldToFilterOn |
created | modified |
Filters by record created or modified date. Must include at least one of the date filter fields. | Optional |
exportFullRecord |
Boolean | true includes all record metadata (_id, owner, and so on). false includes only the data object. Unqork recommends false. Defaults to true. |
Yes |
fileFormat |
CSV | ZIPWITHCSV | JSON | ZIPWITHJSON | ZIPWITHMULTIPLEJSON |
format. ZIPWITHMULTIPLEJSON creates one JSON file per record. Value must be uppercase. |
Yes |
includeAttachments |
Boolean | When true, includes file attachments in the export. Defaults to true. |
Optional |
name |
string | Name of the export operation. Displays in the Job Tracker File Name column. | Yes |
numberOfFilesToGenerate |
number | Preferred number of output files. If the file exceeds 100 MB, additional files are created automatically. Unqork recommends 1. |
Yes |
targetRecordType |
ALL | ACTIVE | ARCHIVED |
Record type to export. Value must be uppercase. | Yes |
dataModelOrModuleId |
string | Deprecated — use resourceId instead. |
Optional |
Example Response
{
"id": "67129acfc2f4b88db7a26b59",
"created": 1729272527398,
"data": {
"type": "EXPORT",
"name": "Example Export",
"steps": [
{
"stepType": "EXPORT",
"status": "created",
"files": [
{
"destination": {
"name": "0",
"location": "unqorkResource/export/9adf217f-5ccb-449c-9920-f1e0000597d7/0.csv",
"format": "CSV"
}
}
]
}
]
}
}
The location value contains the file's download address. Use BDO Download-Link to retrieve the file.
Large exports: Use
/fbu/uapi/bulkOperations/job/{jobId}to check job status. See Get Job Details.
Import
The BDO Import endpoint uploads submission data into Unqork from a file or cloud storage. Use the HTTP POST method:
https://{environment}.unqork.io/fbu/uapi/bulk-operations/import
Before importing, use BDO Upload-Link to upload the file and get an Unqork file address.
Request Body
{
"dataModelOrModuleId": "string",
"fallbackRecordOwner": "string",
"fileFormat": "CSV",
"fileLocation": "string",
"name": "string",
"storeInData": "false"
}
Parameters
| Key | Possible Values | Description | Required |
|---|---|---|---|
resourceId |
string | The Data Model ID or Module ID to import data into. | Optional |
fallbackRecordOwner |
string | The userId of the Unqork Service User or Express Access Credential with authorized workspace access. |
Yes |
fileFormat |
CSV | ZIPWITHCSV | JSON | ZIPWITHJSON | ZIPWITHMULTIPLEJSON |
Format of the source file. Value must be uppercase. | Yes |
fileLocation |
string | Unqork Cloud file address returned by the Upload-Link endpoint, for example unqorkResource/export/f22047aa-13d3-4070-8def-a8a1a401afff/0.json.gz. |
Yes |
name |
string | Name of the import operation. Displays in the Job Tracker File Name column. | Yes |
storeInData |
Boolean | true stores incoming records under the data property. false treats them as full submission records including Unqork metadata. Unqork recommends true. Defaults to false. |
Yes |
dataModelOrModuleId |
string | Deprecated — use resourceId instead. |
Optional |
Example Response
{
"id": "67169684ec1bf4776fa760a5",
"created": 1729533572882,
"data": {
"type": "UPDATE",
"name": "Import API Test 1",
"steps": [
{
"stepType": "UNZIP",
"status": "created"
},
{
"stepType": "UPDATE",
"status": "created"
}
]
}
}
Check job status using the Get Job Details endpoint with the response
idvalue.
Update
The BDO Update endpoint updates existing Data Model records in bulk. Only available for Data Model records. Use the HTTP method:
https://{environment}.unqork.io/fbu/uapi/bulk-operations/update
Request Body
{
"createdDateUpdateValue": "string",
"dataModelOrModuleId": "string",
"fallbackRecordOwner": "string",
"fileFormat": "CSV",
"fileLocation": "string",
"name": "string",
"storeInData": "true",
"uniqueKey": "string",
"upsert": "false"
}
Parameters
| Key | Possible Values | Description | Required |
|---|---|---|---|
resourceId |
string | The Data Model ID or Module ID containing the records to update. | Optional |
createdDateUpdateValue |
string (ISO 8601 UTC) | Updates the submission creation date to this value. | Optional |
fallbackRecordOwner |
string | The userId of the Unqork Service User or Express Access Credential with authorized workspace access. |
Yes |
fileFormat |
CSV | ZIPWITHCSV | JSON | ZIPWITHJSON | ZIPWITHMULTIPLEJSON |
Format of the source file. Value must be uppercase. | Yes |
fileLocation |
string | Unqork Cloud file address returned by the Upload-Link endpoint. | Yes |
name |
string | Name of the update operation. Displays in the Job Tracker File Name column. | Yes |
storeInData |
Boolean | true stores records under the data property. false treats them as full submission records. Unqork recommends true. Defaults to false. |
Yes |
uniqueKey |
string | A unique key for the operation. Usually _id. |
Optional |
upsert |
Boolean | true updates existing records or inserts new ones if absent. false updates existing records only. Defaults to false. |
Optional |
dataModelOrModuleId |
string | Deprecated — use resourceId instead. |
Optional |
Check job status using the Get Job Details endpoint with the response
idvalue.
Delete
The BDO Delete endpoint soft-deletes or permanently deletes submission records. BDO Delete is disabled by design. Contact an Unqork representative to enable it.
Use the HTTP POST method:
https://{environment}.unqork.io/fbu/uapi/bulk-operations/delete
BDO Delete removes a maximum of 500,000 records per operation. Larger collections require multiple runs.
Soft Delete and Hard Delete
Delete operates in two stages:
- Soft delete (first run): Archives records, removing them from Record Collections but retaining them in the database. Records can be recovered.
- Hard delete (second run with
destroy=true): Permanently and irreversibly deletes all archived records. Use for PII or sensitive data that must not be retained.
Unqork recommends exporting a copy of records before deleting. Contact an Unqork representative to recover soft-deleted records.
Query String Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
destroy |
Boolean | After soft-deleting records, add ?destroy=true and run the operation again to permanently delete all archived records. Has no effect if records have not been soft-deleted first. |
No |
Body Parameters
{
"dataModelOrModuleId": "string",
"name": "string",
"dateFieldToFilterOn": "created",
"dateFieldStartToFilterOn": "string",
"dateFieldEndToFilterOn": "string"
}
| Key | Possible Values | Description | Required |
|---|---|---|---|
name |
string | Name of the delete operation. Displays in the Job Tracker File Name column. | Yes |
resourceId |
string | The Data Model ID or Module ID containing the records to delete. | Optional |
dataSource |
MODULE | EXPORT |
The source of the query. MODULE targets records associated with a module, workflow, or data model. EXPORT targets records from a previous Export operation. |
Optional |
exportOperationId |
string | The id of the Export operation to use as the data source. Required when dataSource is EXPORT. |
Optional |
dateFieldToFilterOn |
created | modified | deleted |
Filters records by creation, modification, or deletion date. The deleted filter requires destroy=true. Must include at least one date range field. |
Optional |
dateFieldStartToFilterOn |
string (ISO 8601 UTC) | Deletes records created or modified after this date. This field is exclusive (>). |
Optional |
dateFieldEndToFilterOn |
string (ISO 8601 UTC) | Deletes records up to this date. This field is (<=). |
Optional |
targetRecordType |
ALL | ACTIVE | ARCHIVED |
Record type to delete. Value must be uppercase. | Optional |
dataModelOrModuleId |
string | Deprecated — use resourceId instead. |
Optional |
Example Response
{
"id": "6728e46499610f86e6fac431",
"created": 1730733156824,
"data": {
"type": "DELETE",
"name": "Delete Example",
"steps": [
{
"stepType": "DELETE",
"status": "created",
"options": {
"delete": {
"mode": "DELETE",
"dataSource": "MODULE",
"targetRecords": "ARCHIVED"
}
}
}
]
}
}
Check job status using the Get Job Details endpoint with the response
idvalue.
Changelog
| Date | Change |
|---|---|
| 2026-08-17 | Consolidated from separate v1 BDO Export, Import, Update, and Delete articles (EN-8036). |