> For the complete documentation index, see [llms.txt](https://knowledgebase.fabricdata.com/studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://knowledgebase.fabricdata.com/studio/integrations-and-apis/origin-studio-production-api/data-deliveries.md).

# Data Deliveries

This API provides a way to manage Data Deliveries in the context of a Tenant.

## Get all data deliveries

> Get all data deliveries for the current tenant. Supports filtering by status and state, and pagination via cursor.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryFindManyResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryFindManyResponse","description":"The response for a data delivery find many request.","type":"object","additionalProperties":false,"required":["data","links"],"properties":{"data":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DataDeliveryResourceType"},{"type":"object","required":["id","type","attributes","relationships"],"additionalProperties":false,"properties":{"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributes"},"relationships":{"$ref":"#/components/schemas/DataDeliveryRelationships"},"links":{"$ref":"#/components/schemas/LinksSelf"}}}]}},"links":{"type":"object","required":["self"],"properties":{"self":{"type":"string"},"next":{"type":["string","null"]}},"additionalProperties":false},"meta":{"type":"object","properties":{"cursor":{"type":"string"},"filters":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/DataDeliveryAttributeStatus"},"exportJobStatus":{"$ref":"#/components/schemas/DataDeliveryState"},"createdAfter":{"type":"string","format":"date-time"},"createdBefore":{"type":"string","format":"date-time"}},"additionalProperties":false}},"additionalProperties":false}}},"DataDeliveryResourceType":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryResourceType","description":"JSON:API type discriminator for data delivery resources. The `type` field is always `\"dataDeliveries\"`. Used as a base to enforce correct JSON:API resource typing in request bodies.","type":"object","required":["type"],"additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["dataDeliveries"]}}},"DataDeliveryAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributes","description":"Full attributes of a data delivery. Extends the input attributes with system-managed fields: `recordCount` (number of records in the package), `status` (the delivery's lifecycle state), `exportJobStatus` (the current status of the most recent export job), and timestamps.","allOf":[{"$ref":"#/components/schemas/DataDeliveryAttributesInput"},{"$ref":"#/components/schemas/BaseResourceAttributes"},{"type":"object","required":["recordCount","status","exportJobStatus"],"additionalProperties":false,"properties":{"recordCount":{"type":"number","description":"Total number of records linked to the data delivery package."},"status":{"$ref":"#/components/schemas/DataDeliveryAttributeStatus"},"exportJobStatus":{"$ref":"#/components/schemas/DataDeliveryState"},"archiveParts":{"type":"array","description":"Ordered ZIP archive part results for the exported package.","items":{"type":"object","required":["partNumber","fileName","status"],"additionalProperties":false,"properties":{"partNumber":{"type":"number","description":"One-based archive part number."},"fileName":{"type":"string","description":"Archive file name (for example delivery_package1.zip)."},"status":{"type":"string","enum":["READY","FAILED"],"description":"Part generation status."},"url":{"type":"string","description":"Download URL for READY parts."},"expiresAt":{"type":"string","description":"ISO 8601 date-time when the archive expires (7 days after export)."},"error":{"type":"string","description":"Failure reason for FAILED parts."},"format":{"type":"string","enum":["csv","json"],"description":"Which representation this archive holds. A record-export produces one archive per format so the package can be downloaded as CSV or JSON; single-format deliveries tag their one archive. Absent for legacy/manifest archives."}}}}}}]},"DataDeliveryAttributesInput":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributesInput","description":"Editable input attributes for a data delivery. Currently only `name` is user-editable, with a maximum length enforced by the service.","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":250,"description":"Must be kept in sync with MAX_DATA_DELIVERY_NAME_LENGTH in services/data-delivery-service/src/constants/index.ts"}}},"BaseResourceAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseResourceAttributes","description":"Common timestamps present on all resource attribute objects. `created` is the ISO 8601 date-time when the resource was first created; `updated` is the date-time of the most recent modification.","type":"object","additionalProperties":false,"required":["created","updated"],"properties":{"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}},"DataDeliveryAttributeStatus":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributeStatus","description":"Data Delivery Package Status. Must be kept in sync with DataDeliveryStatusValues in services/data-delivery-service/src/constants/index.ts","type":"string","enum":["IN_PROGRESS","COMPLETED","DELETING"]},"DataDeliveryState":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryState","description":"Export/delete job status. PENDING indicates the job is ready to start. RUNNING means the job (export or delete) is in progress. SUCCEEDED, PARTIALLY_SUCCEEDED, FAILED, TIMED_OUT, and ABORTED are terminal states. PARTIALLY_SUCCEEDED means the export completed but at least one record had errors. PENDING_REDRIVE indicates the job is queued for retry.","type":"string","enum":["PENDING","RUNNING","SUCCEEDED","PARTIALLY_SUCCEEDED","FAILED","TIMED_OUT","ABORTED","PENDING_REDRIVE"]},"DataDeliveryRelationships":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryRelationships","description":"JSON:API relationship links for a data delivery resource. Contains links to the owning tenant and the collection of records included in the delivery package.","type":"object","properties":{"tenant":{"$ref":"#/components/schemas/TenantRelationship"},"records":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/data"}},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":[],"additionalProperties":false},"author":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["users"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data"],"additionalProperties":false}},"required":["tenant","records","author"],"additionalProperties":false},"TenantRelationship":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ITenantRelationship","description":"A relationship to a tenant","type":"object","properties":{"data":{"additionalProperties":false,"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["tenants"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data","links"],"additionalProperties":false},"LinksRelated":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinks","description":"A JSON:API links object with an absolute or relative 'related' link","type":"object","required":["related"],"properties":{"related":{"type":"string"}},"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"LinksSelf":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinksSelf","description":"A JSON:API links object with an absolute or relative 'self' link","type":"object","required":["self"],"properties":{"self":{"type":"string"}},"additionalProperties":false},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries":{"get":{"summary":"Get all data deliveries","operationId":"dataDeliveryFindMany","description":"Get all data deliveries for the current tenant. Supports filtering by status and state, and pagination via cursor.","tags":["Data Deliveries"],"parameters":[{"name":"filter.tenant.id","in":"query","description":"Filter by tenant ID. Only available for system users.","schema":{"type":"string","pattern":"^[a-f0-9]{16}$"}},{"name":"filter.status","in":"query","description":"Filter by status (IN_PROGRESS, COMPLETED, or DELETING)","schema":{"type":"string","enum":["IN_PROGRESS","COMPLETED","DELETING"]}},{"name":"filter.exportJobStatus","in":"query","description":"Filter by export job status (AWS Step Functions: PENDING, RUNNING, SUCCEEDED, PARTIALLY_SUCCEEDED, FAILED, TIMED_OUT, ABORTED, PENDING_REDRIVE)","schema":{"type":"string","enum":["PENDING","RUNNING","SUCCEEDED","PARTIALLY_SUCCEEDED","FAILED","TIMED_OUT","ABORTED","PENDING_REDRIVE"]}},{"name":"filter.created.after","in":"query","description":"Filter data deliveries created after this date-time (inclusive, ISO 8601 format)","schema":{"type":"string","format":"date-time"}},{"name":"filter.created.before","in":"query","description":"Filter data deliveries created before this date-time (inclusive, ISO 8601 format)","schema":{"type":"string","format":"date-time"}},{"name":"page.cursor","in":"query","description":"The cursor to use for pagination","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryFindManyResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a single data delivery

> Create a single data delivery. Tenants can create their own data deliveries.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryCreateOneRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryCreateOneRequest","description":"Request body for creating a new data delivery package. Requires a `name` for the delivery. Records can be added to the delivery after creation via the relationship endpoints.","type":"object","properties":{"meta":{"$ref":"#/components/schemas/WriteRequestMeta"},"data":{"type":"object","required":["type","attributes"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["dataDeliveries"]},"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributesInput"},"relationships":{"type":"object","additionalProperties":false,"properties":{"records":{"type":"object","required":["data"],"additionalProperties":false,"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/data"},"minItems":1,"maxItems":50000}}}}}}}},"required":["data"],"additionalProperties":false},"WriteRequestMeta":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IWriteRequestMeta","description":"Optional audit metadata for a write request. `audit.source` is the issuing surface/channel (e.g. studio-web, mcp, api, system); `audit.reason` is a free-text justification. Both are optional and length-capped.","type":"object","additionalProperties":false,"properties":{"audit":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"reason":{"type":"string","maxLength":256}}}}},"DataDeliveryAttributesInput":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributesInput","description":"Editable input attributes for a data delivery. Currently only `name` is user-editable, with a maximum length enforced by the service.","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":250,"description":"Must be kept in sync with MAX_DATA_DELIVERY_NAME_LENGTH in services/data-delivery-service/src/constants/index.ts"}}},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"DataDeliveryCreateOneResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryCreateOneResponse","description":"The response for a data delivery create one request.","type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/DataDeliveryResourceType"},{"type":"object","required":["id","type","attributes","relationships"],"additionalProperties":false,"properties":{"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributes"},"relationships":{"$ref":"#/components/schemas/DataDeliveryRelationships"},"links":{"$ref":"#/components/schemas/LinksSelf"}}}]}}},"DataDeliveryResourceType":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryResourceType","description":"JSON:API type discriminator for data delivery resources. The `type` field is always `\"dataDeliveries\"`. Used as a base to enforce correct JSON:API resource typing in request bodies.","type":"object","required":["type"],"additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["dataDeliveries"]}}},"DataDeliveryAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributes","description":"Full attributes of a data delivery. Extends the input attributes with system-managed fields: `recordCount` (number of records in the package), `status` (the delivery's lifecycle state), `exportJobStatus` (the current status of the most recent export job), and timestamps.","allOf":[{"$ref":"#/components/schemas/DataDeliveryAttributesInput"},{"$ref":"#/components/schemas/BaseResourceAttributes"},{"type":"object","required":["recordCount","status","exportJobStatus"],"additionalProperties":false,"properties":{"recordCount":{"type":"number","description":"Total number of records linked to the data delivery package."},"status":{"$ref":"#/components/schemas/DataDeliveryAttributeStatus"},"exportJobStatus":{"$ref":"#/components/schemas/DataDeliveryState"},"archiveParts":{"type":"array","description":"Ordered ZIP archive part results for the exported package.","items":{"type":"object","required":["partNumber","fileName","status"],"additionalProperties":false,"properties":{"partNumber":{"type":"number","description":"One-based archive part number."},"fileName":{"type":"string","description":"Archive file name (for example delivery_package1.zip)."},"status":{"type":"string","enum":["READY","FAILED"],"description":"Part generation status."},"url":{"type":"string","description":"Download URL for READY parts."},"expiresAt":{"type":"string","description":"ISO 8601 date-time when the archive expires (7 days after export)."},"error":{"type":"string","description":"Failure reason for FAILED parts."},"format":{"type":"string","enum":["csv","json"],"description":"Which representation this archive holds. A record-export produces one archive per format so the package can be downloaded as CSV or JSON; single-format deliveries tag their one archive. Absent for legacy/manifest archives."}}}}}}]},"BaseResourceAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseResourceAttributes","description":"Common timestamps present on all resource attribute objects. `created` is the ISO 8601 date-time when the resource was first created; `updated` is the date-time of the most recent modification.","type":"object","additionalProperties":false,"required":["created","updated"],"properties":{"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}},"DataDeliveryAttributeStatus":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributeStatus","description":"Data Delivery Package Status. Must be kept in sync with DataDeliveryStatusValues in services/data-delivery-service/src/constants/index.ts","type":"string","enum":["IN_PROGRESS","COMPLETED","DELETING"]},"DataDeliveryState":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryState","description":"Export/delete job status. PENDING indicates the job is ready to start. RUNNING means the job (export or delete) is in progress. SUCCEEDED, PARTIALLY_SUCCEEDED, FAILED, TIMED_OUT, and ABORTED are terminal states. PARTIALLY_SUCCEEDED means the export completed but at least one record had errors. PENDING_REDRIVE indicates the job is queued for retry.","type":"string","enum":["PENDING","RUNNING","SUCCEEDED","PARTIALLY_SUCCEEDED","FAILED","TIMED_OUT","ABORTED","PENDING_REDRIVE"]},"DataDeliveryRelationships":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryRelationships","description":"JSON:API relationship links for a data delivery resource. Contains links to the owning tenant and the collection of records included in the delivery package.","type":"object","properties":{"tenant":{"$ref":"#/components/schemas/TenantRelationship"},"records":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/data"}},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":[],"additionalProperties":false},"author":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["users"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data"],"additionalProperties":false}},"required":["tenant","records","author"],"additionalProperties":false},"TenantRelationship":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ITenantRelationship","description":"A relationship to a tenant","type":"object","properties":{"data":{"additionalProperties":false,"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["tenants"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data","links"],"additionalProperties":false},"LinksRelated":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinks","description":"A JSON:API links object with an absolute or relative 'related' link","type":"object","required":["related"],"properties":{"related":{"type":"string"}},"additionalProperties":false},"LinksSelf":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinksSelf","description":"A JSON:API links object with an absolute or relative 'self' link","type":"object","required":["self"],"properties":{"self":{"type":"string"}},"additionalProperties":false}}},"paths":{"/dataDeliveries":{"post":{"summary":"Create a single data delivery","operationId":"dataDeliveryCreateOne","description":"Create a single data delivery. Tenants can create their own data deliveries.","tags":["Data Deliveries"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryCreateOneRequest"}}}},"responses":{"201":{"description":"Created OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryCreateOneResponse"}}}}}}}}}
```

## Get a single data delivery

> Get a single data delivery by ID.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryFindOneResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryFindOneResponse","description":"The response for a data delivery find one request.","type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/DataDeliveryResourceType"},{"type":"object","required":["id","type","attributes","relationships"],"additionalProperties":false,"properties":{"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributes"},"relationships":{"$ref":"#/components/schemas/DataDeliveryRelationships"},"links":{"$ref":"#/components/schemas/LinksSelf"}}}]}}},"DataDeliveryResourceType":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryResourceType","description":"JSON:API type discriminator for data delivery resources. The `type` field is always `\"dataDeliveries\"`. Used as a base to enforce correct JSON:API resource typing in request bodies.","type":"object","required":["type"],"additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["dataDeliveries"]}}},"DataDeliveryAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributes","description":"Full attributes of a data delivery. Extends the input attributes with system-managed fields: `recordCount` (number of records in the package), `status` (the delivery's lifecycle state), `exportJobStatus` (the current status of the most recent export job), and timestamps.","allOf":[{"$ref":"#/components/schemas/DataDeliveryAttributesInput"},{"$ref":"#/components/schemas/BaseResourceAttributes"},{"type":"object","required":["recordCount","status","exportJobStatus"],"additionalProperties":false,"properties":{"recordCount":{"type":"number","description":"Total number of records linked to the data delivery package."},"status":{"$ref":"#/components/schemas/DataDeliveryAttributeStatus"},"exportJobStatus":{"$ref":"#/components/schemas/DataDeliveryState"},"archiveParts":{"type":"array","description":"Ordered ZIP archive part results for the exported package.","items":{"type":"object","required":["partNumber","fileName","status"],"additionalProperties":false,"properties":{"partNumber":{"type":"number","description":"One-based archive part number."},"fileName":{"type":"string","description":"Archive file name (for example delivery_package1.zip)."},"status":{"type":"string","enum":["READY","FAILED"],"description":"Part generation status."},"url":{"type":"string","description":"Download URL for READY parts."},"expiresAt":{"type":"string","description":"ISO 8601 date-time when the archive expires (7 days after export)."},"error":{"type":"string","description":"Failure reason for FAILED parts."},"format":{"type":"string","enum":["csv","json"],"description":"Which representation this archive holds. A record-export produces one archive per format so the package can be downloaded as CSV or JSON; single-format deliveries tag their one archive. Absent for legacy/manifest archives."}}}}}}]},"DataDeliveryAttributesInput":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributesInput","description":"Editable input attributes for a data delivery. Currently only `name` is user-editable, with a maximum length enforced by the service.","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":250,"description":"Must be kept in sync with MAX_DATA_DELIVERY_NAME_LENGTH in services/data-delivery-service/src/constants/index.ts"}}},"BaseResourceAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseResourceAttributes","description":"Common timestamps present on all resource attribute objects. `created` is the ISO 8601 date-time when the resource was first created; `updated` is the date-time of the most recent modification.","type":"object","additionalProperties":false,"required":["created","updated"],"properties":{"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}},"DataDeliveryAttributeStatus":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributeStatus","description":"Data Delivery Package Status. Must be kept in sync with DataDeliveryStatusValues in services/data-delivery-service/src/constants/index.ts","type":"string","enum":["IN_PROGRESS","COMPLETED","DELETING"]},"DataDeliveryState":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryState","description":"Export/delete job status. PENDING indicates the job is ready to start. RUNNING means the job (export or delete) is in progress. SUCCEEDED, PARTIALLY_SUCCEEDED, FAILED, TIMED_OUT, and ABORTED are terminal states. PARTIALLY_SUCCEEDED means the export completed but at least one record had errors. PENDING_REDRIVE indicates the job is queued for retry.","type":"string","enum":["PENDING","RUNNING","SUCCEEDED","PARTIALLY_SUCCEEDED","FAILED","TIMED_OUT","ABORTED","PENDING_REDRIVE"]},"DataDeliveryRelationships":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryRelationships","description":"JSON:API relationship links for a data delivery resource. Contains links to the owning tenant and the collection of records included in the delivery package.","type":"object","properties":{"tenant":{"$ref":"#/components/schemas/TenantRelationship"},"records":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/data"}},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":[],"additionalProperties":false},"author":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["users"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data"],"additionalProperties":false}},"required":["tenant","records","author"],"additionalProperties":false},"TenantRelationship":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ITenantRelationship","description":"A relationship to a tenant","type":"object","properties":{"data":{"additionalProperties":false,"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["tenants"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data","links"],"additionalProperties":false},"LinksRelated":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinks","description":"A JSON:API links object with an absolute or relative 'related' link","type":"object","required":["related"],"properties":{"related":{"type":"string"}},"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"LinksSelf":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinksSelf","description":"A JSON:API links object with an absolute or relative 'self' link","type":"object","required":["self"],"properties":{"self":{"type":"string"}},"additionalProperties":false}}},"paths":{"/dataDeliveries/{dataDeliveryId}":{"get":{"summary":"Get a single data delivery","operationId":"dataDeliveryFindOne","description":"Get a single data delivery by ID.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery to retrieve","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryFindOneResponse"}}}}}}}}}
```

## Update a single data delivery

> Update a single data delivery by ID. Update is allowed only if the status is IN\_PROGRESS.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryUpdateOneRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryUpdateOneRequest","description":"Request body for updating an existing data delivery. Currently supports updating the delivery `name`. The `data.id` must match the `dataDeliveryId` path parameter.","type":"object","properties":{"meta":{"$ref":"#/components/schemas/WriteRequestMeta"},"data":{"allOf":[{"$ref":"#/components/schemas/DataDeliveryResourceType"},{"type":"object","required":["attributes"],"additionalProperties":false,"properties":{"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributesInput"}}}]}},"required":["data"],"additionalProperties":false},"WriteRequestMeta":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IWriteRequestMeta","description":"Optional audit metadata for a write request. `audit.source` is the issuing surface/channel (e.g. studio-web, mcp, api, system); `audit.reason` is a free-text justification. Both are optional and length-capped.","type":"object","additionalProperties":false,"properties":{"audit":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"reason":{"type":"string","maxLength":256}}}}},"DataDeliveryResourceType":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryResourceType","description":"JSON:API type discriminator for data delivery resources. The `type` field is always `\"dataDeliveries\"`. Used as a base to enforce correct JSON:API resource typing in request bodies.","type":"object","required":["type"],"additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["dataDeliveries"]}}},"DataDeliveryAttributesInput":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributesInput","description":"Editable input attributes for a data delivery. Currently only `name` is user-editable, with a maximum length enforced by the service.","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":250,"description":"Must be kept in sync with MAX_DATA_DELIVERY_NAME_LENGTH in services/data-delivery-service/src/constants/index.ts"}}},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/{dataDeliveryId}":{"put":{"summary":"Update a single data delivery","operationId":"dataDeliveryUpdateOne","description":"Update a single data delivery by ID. Update is allowed only if the status is IN_PROGRESS.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery to update","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryUpdateOneRequest"}}}},"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Duplicate a data delivery

> Creates a new data delivery package by duplicating an existing one (same records). Allowed source packages: IN\_PROGRESS with exportJobStatus PENDING, or COMPLETED. New package name appends ' (Copy)'.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryCreateOneResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryCreateOneResponse","description":"The response for a data delivery create one request.","type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/DataDeliveryResourceType"},{"type":"object","required":["id","type","attributes","relationships"],"additionalProperties":false,"properties":{"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/DataDeliveryAttributes"},"relationships":{"$ref":"#/components/schemas/DataDeliveryRelationships"},"links":{"$ref":"#/components/schemas/LinksSelf"}}}]}}},"DataDeliveryResourceType":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryResourceType","description":"JSON:API type discriminator for data delivery resources. The `type` field is always `\"dataDeliveries\"`. Used as a base to enforce correct JSON:API resource typing in request bodies.","type":"object","required":["type"],"additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["dataDeliveries"]}}},"DataDeliveryAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributes","description":"Full attributes of a data delivery. Extends the input attributes with system-managed fields: `recordCount` (number of records in the package), `status` (the delivery's lifecycle state), `exportJobStatus` (the current status of the most recent export job), and timestamps.","allOf":[{"$ref":"#/components/schemas/DataDeliveryAttributesInput"},{"$ref":"#/components/schemas/BaseResourceAttributes"},{"type":"object","required":["recordCount","status","exportJobStatus"],"additionalProperties":false,"properties":{"recordCount":{"type":"number","description":"Total number of records linked to the data delivery package."},"status":{"$ref":"#/components/schemas/DataDeliveryAttributeStatus"},"exportJobStatus":{"$ref":"#/components/schemas/DataDeliveryState"},"archiveParts":{"type":"array","description":"Ordered ZIP archive part results for the exported package.","items":{"type":"object","required":["partNumber","fileName","status"],"additionalProperties":false,"properties":{"partNumber":{"type":"number","description":"One-based archive part number."},"fileName":{"type":"string","description":"Archive file name (for example delivery_package1.zip)."},"status":{"type":"string","enum":["READY","FAILED"],"description":"Part generation status."},"url":{"type":"string","description":"Download URL for READY parts."},"expiresAt":{"type":"string","description":"ISO 8601 date-time when the archive expires (7 days after export)."},"error":{"type":"string","description":"Failure reason for FAILED parts."},"format":{"type":"string","enum":["csv","json"],"description":"Which representation this archive holds. A record-export produces one archive per format so the package can be downloaded as CSV or JSON; single-format deliveries tag their one archive. Absent for legacy/manifest archives."}}}}}}]},"DataDeliveryAttributesInput":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributesInput","description":"Editable input attributes for a data delivery. Currently only `name` is user-editable, with a maximum length enforced by the service.","type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":250,"description":"Must be kept in sync with MAX_DATA_DELIVERY_NAME_LENGTH in services/data-delivery-service/src/constants/index.ts"}}},"BaseResourceAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseResourceAttributes","description":"Common timestamps present on all resource attribute objects. `created` is the ISO 8601 date-time when the resource was first created; `updated` is the date-time of the most recent modification.","type":"object","additionalProperties":false,"required":["created","updated"],"properties":{"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}},"DataDeliveryAttributeStatus":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAttributeStatus","description":"Data Delivery Package Status. Must be kept in sync with DataDeliveryStatusValues in services/data-delivery-service/src/constants/index.ts","type":"string","enum":["IN_PROGRESS","COMPLETED","DELETING"]},"DataDeliveryState":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryState","description":"Export/delete job status. PENDING indicates the job is ready to start. RUNNING means the job (export or delete) is in progress. SUCCEEDED, PARTIALLY_SUCCEEDED, FAILED, TIMED_OUT, and ABORTED are terminal states. PARTIALLY_SUCCEEDED means the export completed but at least one record had errors. PENDING_REDRIVE indicates the job is queued for retry.","type":"string","enum":["PENDING","RUNNING","SUCCEEDED","PARTIALLY_SUCCEEDED","FAILED","TIMED_OUT","ABORTED","PENDING_REDRIVE"]},"DataDeliveryRelationships":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryRelationships","description":"JSON:API relationship links for a data delivery resource. Contains links to the owning tenant and the collection of records included in the delivery package.","type":"object","properties":{"tenant":{"$ref":"#/components/schemas/TenantRelationship"},"records":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/data"}},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":[],"additionalProperties":false},"author":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["users"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data"],"additionalProperties":false}},"required":["tenant","records","author"],"additionalProperties":false},"TenantRelationship":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ITenantRelationship","description":"A relationship to a tenant","type":"object","properties":{"data":{"additionalProperties":false,"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["tenants"]}},"required":["id","type"]},"links":{"$ref":"#/components/schemas/LinksRelated"}},"required":["data","links"],"additionalProperties":false},"LinksRelated":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinks","description":"A JSON:API links object with an absolute or relative 'related' link","type":"object","required":["related"],"properties":{"related":{"type":"string"}},"additionalProperties":false},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"LinksSelf":{"$schema":"http://json-schema.org/draft-07/schema#","title":"ILinksSelf","description":"A JSON:API links object with an absolute or relative 'self' link","type":"object","required":["self"],"properties":{"self":{"type":"string"}},"additionalProperties":false},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/{dataDeliveryId}/duplicate":{"post":{"summary":"Duplicate a data delivery","operationId":"dataDeliveryDuplicateOne","description":"Creates a new data delivery package by duplicating an existing one (same records). Allowed source packages: IN_PROGRESS with exportJobStatus PENDING, or COMPLETED. New package name appends ' (Copy)'.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery to duplicate","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryCreateOneResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get records relationship (linkage)

> Returns all linkage records for the data delivery package as JSON:API resource identifiers (type + id). Supports optional pagination via page.size and page.number.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryFindRecordsRelationshipResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryFindRecordsRelationshipResponse","description":"JSON:API response for GET dataDeliveries/:id/relationships/records - linkage record resource identifiers","type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","description":"Resource identifier objects for each record in the relationship","items":{"type":"object","required":["type","id"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["records"]},"id":{"type":"string"}}}},"links":{"type":"object","description":"JSON:API links","properties":{"self":{"type":"string","description":"Link to this relationship"}},"additionalProperties":false},"meta":{"type":"object","description":"Non-standard meta (e.g. total count)","properties":{"total":{"type":"integer","minimum":0,"description":"Total number of records in the relationship"}},"additionalProperties":false}}},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/{dataDeliveryId}/relationships/records":{"get":{"summary":"Get records relationship (linkage)","operationId":"dataDeliveryFindRecordsRelationship","description":"Returns all linkage records for the data delivery package as JSON:API resource identifiers (type + id). Supports optional pagination via page.size and page.number.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery","in":"path","required":true,"schema":{"type":"string"}},{"name":"page.size","in":"query","description":"Number of resource identifiers per page (default: return all)","schema":{"type":"integer","minimum":1,"maximum":1000}},{"name":"page.number","in":"query","description":"1-based page number (used with page.size)","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryFindRecordsRelationshipResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Add records to data delivery relationship

> Adds (appends) records to the relationship without removing existing ones. Maximum 50000 records per data delivery. Server will not add duplicates if a record is already present. Update is allowed only if the status is IN\_PROGRESS.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryAddRecordsRelationshipRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryAddRecordsRelationshipRequest","description":"Request to add records to a data delivery relationship","type":"object","properties":{"meta":{"$ref":"#/components/schemas/WriteRequestMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/data"},"minItems":1}},"required":["data"],"additionalProperties":false},"WriteRequestMeta":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IWriteRequestMeta","description":"Optional audit metadata for a write request. `audit.source` is the issuing surface/channel (e.g. studio-web, mcp, api, system); `audit.reason` is a free-text justification. Both are optional and length-capped.","type":"object","additionalProperties":false,"properties":{"audit":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"reason":{"type":"string","maxLength":256}}}}},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/{dataDeliveryId}/relationships/records":{"post":{"summary":"Add records to data delivery relationship","operationId":"dataDeliveryAddRecordsRelationship","description":"Adds (appends) records to the relationship without removing existing ones. Maximum 50000 records per data delivery. Server will not add duplicates if a record is already present. Update is allowed only if the status is IN_PROGRESS.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryAddRecordsRelationshipRequest"}}}},"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Remove records from data delivery relationship

> Removes specific records from the relationship. Update is allowed only if the status is IN\_PROGRESS.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryRemoveRecordsRelationshipRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryRemoveRecordsRelationshipRequest","description":"Request to remove records from a data delivery relationship","type":"object","properties":{"meta":{"$ref":"#/components/schemas/WriteRequestMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/data"},"minItems":1}},"required":["data"],"additionalProperties":false},"WriteRequestMeta":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IWriteRequestMeta","description":"Optional audit metadata for a write request. `audit.source` is the issuing surface/channel (e.g. studio-web, mcp, api, system); `audit.reason` is a free-text justification. Both are optional and length-capped.","type":"object","additionalProperties":false,"properties":{"audit":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"reason":{"type":"string","maxLength":256}}}}},"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["records"]}},"required":["id","type"]},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/{dataDeliveryId}/relationships/records":{"delete":{"summary":"Remove records from data delivery relationship","operationId":"dataDeliveryRemoveRecordsRelationship","description":"Removes specific records from the relationship. Update is allowed only if the status is IN_PROGRESS.","tags":["Data Deliveries"],"parameters":[{"name":"dataDeliveryId","description":"The ID of the data delivery","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryRemoveRecordsRelationshipRequest"}}}},"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a data delivery job

> Creates a background job. For type exportDataDelivery: export is allowed only if status is IN\_PROGRESS and exportJobStatus is PENDING; starts the dataDelivery state machine. For type deleteDataDelivery: delete is allowed if status is IN\_PROGRESS with exportJobStatus PENDING, or status is COMPLETED; starts the dataDeliveryDelete state machine.

```json
{"openapi":"3.0.3","info":{"title":"Fabric API - Audit","version":"0.9.2264"},"tags":[{"name":"Data Deliveries","description":"This API provides a way to manage Data Deliveries in the context of a Tenant."}],"servers":[{"url":"{protocol}://{domain}/{basePath}","variables":{"protocol":{"enum":["http","https"],"default":"https"},"domain":{"default":"api.studio.fabricdata.com"},"basePath":{"default":"v1"}}}],"security":[{"jwt-apikey-authorizer":[]}],"components":{"securitySchemes":{"jwt-apikey-authorizer":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"DataDeliveryExportJobCreateOneRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryExportJobCreateOneRequest","description":"Request body for creating a data delivery export or delete job. Specify the job type (`exportDataDelivery` or `deleteDataDelivery`) and the target delivery ID in the parameters.","type":"object","properties":{"meta":{"$ref":"#/components/schemas/WriteRequestMeta"},"data":{"allOf":[{"$ref":"#/components/schemas/BaseCreateRequest"},{"type":"object","properties":{"attributes":{"type":"object","properties":{"type":{"type":"string","enum":["exportDataDelivery","deleteDataDelivery"]},"parameters":{"$ref":"#/components/schemas/DataDeliveryExportJobParameters"}},"required":["type","parameters"],"additionalProperties":false}},"required":["attributes"],"additionalProperties":false}]}},"required":["data"],"additionalProperties":false},"WriteRequestMeta":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IWriteRequestMeta","description":"Optional audit metadata for a write request. `audit.source` is the issuing surface/channel (e.g. studio-web, mcp, api, system); `audit.reason` is a free-text justification. Both are optional and length-capped.","type":"object","additionalProperties":false,"properties":{"audit":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"reason":{"type":"string","maxLength":256}}}}},"BaseCreateRequest":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseCreateRequest","description":"Base JSON:API shape for create requests. The `type` field is required and must match the target resource type. The `id` field is optional; if omitted, the server generates a unique ID for the new resource.","type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["type"]},"DataDeliveryExportJobParameters":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryExportJobParameters","description":"Parameters for a data delivery export job. `dataDeliveryId` specifies the delivery to export. `exportOptions` is an array of content categories (what to export): `metadata` (record fields), `contributors` (cast and crew), `images` (poster and photo assets), and `files` (associated documents and media files). `outputFormats` is the set of representations to produce for the record metadata: `json` (per-record JSON) and/or `csv` (a single flat, re-importable CSV for the bulk-update flow). A record-export requests both so the completed package can be downloaded as either; the pipeline produces one format-tagged archive per entry. Defaults to `[\"json\"]`.","type":"object","properties":{"dataDeliveryId":{"type":"string"},"exportOptions":{"type":"array","items":{"type":"string","enum":["metadata","contributors","images","files"]}},"outputFormats":{"type":"array","items":{"type":"string","enum":["json","csv"]}}},"required":["dataDeliveryId"],"additionalProperties":false},"DataDeliveryExportJobCreateOneResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryExportJobCreateOneResponse","description":"Response returned after successfully creating a data delivery background job. Contains the new job's ID and initial status attributes. Poll the job status to track export progress.","type":"object","properties":{"data":{"allOf":[{"$ref":"#/components/schemas/BaseCreateRequest"},{"additionalProperties":false,"properties":{"id":{"type":"string"},"attributes":{"$ref":"#/components/schemas/DataDeliveryExportJobAttributes"}},"required":["id","attributes"]}]}},"required":["data"],"additionalProperties":false},"DataDeliveryExportJobAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IDataDeliveryExportJobAttributes","description":"Attributes for a data delivery background job. Extends the base background job with data delivery-specific job types: `exportDataDelivery` (packages and exports all records in the delivery) and `deleteDataDelivery` (permanently removes the delivery and its associated data).","type":"object","allOf":[{"$ref":"#/components/schemas/BackgroundJobAttributes"},{"type":"object","properties":{"type":{"type":"string","enum":["exportDataDelivery","deleteDataDelivery"]},"parameters":{"type":"object","properties":{"dataDeliveryId":{"type":"string"},"tenantId":{"type":"string"},"exportOptions":{"type":"array","items":{"type":"string","enum":["metadata","contributors","images","files"]}},"outputFormats":{"type":"array","items":{"type":"string","enum":["json","csv"]}}},"required":["dataDeliveryId","tenantId"],"additionalProperties":false}},"required":["type","parameters"],"additionalProperties":false}],"required":["arn","status","created","updated","type","parameters"],"additionalProperties":false},"BackgroundJobAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBackgroundJobAttributes","description":"Attributes for a background job. Background jobs represent long-running asynchronous operations (e.g. contributor deletion, tenant data export). Includes current status, job type, parameters, optional output on completion, optional error details on failure, and optional item progress counts for batch jobs.","type":"object","allOf":[{"$ref":"#/components/schemas/BaseResourceAttributes"},{"type":"object","properties":{"type":{"type":"string"},"parameters":{"type":"object"},"status":{"$ref":"#/components/schemas/BackgroundJobStatus"},"output":{"type":"object"},"totalItemsCount":{"type":"integer","minimum":0,"description":"Total number of items in a batch job, when applicable."},"successItemsCount":{"type":"integer","minimum":0,"description":"Number of items processed successfully in a batch job, when applicable."},"failedItemsCount":{"type":"integer","minimum":0,"description":"Number of items that failed in a batch job, when applicable."},"error":{"type":"object","properties":{"message":{"type":"string"},"code":{"type":"string"}},"required":["message","code"],"additionalProperties":false}},"required":["type","parameters","status"],"additionalProperties":false}],"additionalProperties":false},"BaseResourceAttributes":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBaseResourceAttributes","description":"Common timestamps present on all resource attribute objects. `created` is the ISO 8601 date-time when the resource was first created; `updated` is the date-time of the most recent modification.","type":"object","additionalProperties":false,"required":["created","updated"],"properties":{"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"}}},"BackgroundJobStatus":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IBackgroundJobStatus","description":"Status of a background job: ABORTED, FAILED, PENDING_REDRIVE, RUNNING, SUCCEEDED, or TIMED_OUT.","type":"string","enum":["ABORTED","FAILED","PENDING_REDRIVE","RUNNING","SUCCEEDED","TIMED_OUT"]},"ErrorResponse":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IErrorResponse","description":"Standard JSON:API error response returned when a request fails. Contains an `errors` array with one or more error objects (status, title, and optional detail).","type":"object","required":["errors"],"additionalProperties":false,"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/Error"}}}},"Error":{"$schema":"http://json-schema.org/draft-07/schema#","title":"IError","description":"A single JSON:API error object. `status` is the HTTP status code as a string. `title` is a short, human-readable summary. `detail` provides optional context. `meta` may include structured conflict or authorization details.","type":"object","additionalProperties":false,"required":["status","title"],"properties":{"status":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","description":"A JSON Pointer to the request field that caused the error (e.g. `/data/attributes/title`).","properties":{"pointer":{"type":"string"}}},"meta":{"type":"object","additionalProperties":true,"properties":{"stack":{"type":"string","description":"Error stack trace. Only present in non-production environments."},"conflictItems":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"unauthorizedItems":{"type":"array","items":{"type":"string"}}}}}}}},"paths":{"/dataDeliveries/jobs":{"post":{"summary":"Create a data delivery job","operationId":"dataDeliveryExportJobCreateOne","description":"Creates a background job. For type exportDataDelivery: export is allowed only if status is IN_PROGRESS and exportJobStatus is PENDING; starts the dataDelivery state machine. For type deleteDataDelivery: delete is allowed if status is IN_PROGRESS with exportJobStatus PENDING, or status is COMPLETED; starts the dataDeliveryDelete state machine.","tags":["Data Deliveries"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryExportJobCreateOneRequest"}}}},"responses":{"201":{"description":"Created OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataDeliveryExportJobCreateOneResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```
