--- title: "Submission Data Structure" slug: "submission-data-structure" tags: ["data-integration"] updated: 2026-09-14T17:38:40Z published: 2026-09-14T17:38:40Z canonical: "docs.unqork.io/submission-data-structure" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.unqork.io/llms.txt > Use this file to discover all available pages before exploring further. # Submission Data Structure Every time an end-user submits a module, Unqork creates a submission object. Understanding the structure of this object helps Creators retrieve the right data, configure Plug-In outputs correctly, and debug unexpected results. > [!WARNING] > Submissions are stored as database documents with a maximum size of **16 MB**. This limit includes all field values, metadata, and Base64-encoded file data in the submission. See [Platform Limits](/unqorkai/docs/platform-limits) for guidance on staying in this limit. ## Top-Level Fields A submission object contains the following top-level fields. | Field | Type | Description | | --- | --- | --- | | `id` | String | The unique identifier for this submission. | | `userId` | String | The ID of the end-user who owns this submission. | | `moduleId` | String | The ID of the module this submission belongs to. | | `created` | Date-time | The ISO 8601 timestamp when the submission was created (for example, `2026-03-20T14:30:00.000Z`). | | `modified` | Date-time | The ISO 8601 timestamp when the submission was last modified. | | `deleted` | Date-time | The ISO 8601 timestamp when the submission was soft-deleted. Present only on deleted submissions. | | `data` | Object | The submission's field data. See [Data Object](/unqorkai/docs/submission-data-structure#data-object) below. | | `metadata` | Object | Additional key-value pairs stored alongside the submission data. Not tied to module fields. | | `validationErrors` | Object | Validation errors present at the time the submission was last saved. | ## Data Object The `data` field contains the submission's actual field values. Its structure depends on how the submission is retrieved. | Property | Type | Description | | --- | --- | --- | | `rawData` | Object | Field values stored as key-value pairs, where each key is a component's Property ID. This is the primary object you work with when reading submission data. | | `jsonData` | Object | Transformed output data in JSON format. Present when a Transform is applied to the response. | | `xmlData` | String | Transformed output data in XML format. Present when a Transform is applied. | | `pdfUrl` | URL | A URL pointing to a generated PDF. Present when a PDF Transform is applied. | | `pdfData` | String | The raw PDF data. Present when a PDF Transform is applied. | ### rawData Structure Each key in `rawData` is a component's Property ID, and each value is that component's stored value. The value type depends on the component. See [Data Types](/unqorkai/docs/data-types-reference) for the full reference. **Example**: ```json {  "rawData": {    "firstName": "Jane",    "lastName": "Smith",    "dateOfBirth": "1990-05-14T00:00:00.000Z",    "agreedToTerms": true,    "uploadedFiles": [      { "url": "https://...", "name": "document.pdf" }    ]  } } ``` ## Metadata Object The `metadata` field stores arbitrary key-value pairs alongside the submission. Unlike `data`, metadata is not tied to module components. Metadata is useful for storing workflow status, internal tracking values, or integration identifiers. Metadata can be set, updated, and deleted through the submissions API using `metadata`, `unsetMetadata`, and partial update operations. ## Revisions Unqork maintains a revision history for every submission. Each revision captures the state of the submission at a point in time. | Field | Type | Description | | --- | --- | --- | | `id` | String | The unique revision ID. | | `created` | String | When this revision was created. | | `createdBy` | String | The person who created or modified the submission at this point. | | `submission` | Object | The full submission object as it existed at this revision. | | `persistedInWormStorage` | Boolean | Whether this revision is stored in WORM (Write-Once-Read-Many) compliant storage. | > [!NOTE] > Revision data is empty for API calls that return multiple revisions simultaneously. Retrieve a single revision by ID to access its full `data` object. --- **Changelog** | Date | Change | | --- | --- | | — | Initial publication. | End-users, also known as Express Users, are the individuals accessing an application through Express View. In most cases, end-users are the customers using the product. An object is a type of data structure that represents a single, self-contained entity that acts as a container for the characteristics of that entity. Also known as Unqork Users, or Designer Users; is anyone who is inside the Unqork platform. Debugging is the process of finding and resolving errors or bugs in an application. To debug an application in Unqork, use UNQENG tools in Express View. Base64 is an encoding and decoding technique used to convert binary data to an ASCII (American Standard for Information Interchange) text format. A standard format for representing dates and times. ISO 8601 format is represented in the following order: year, month, day, hour, minutes, seconds, and milliseconds. A key-value pair is a fundamental data structure where a unique "key" is associated with a specific "value," used for organizing and retrieving data efficiently, like in dictionaries or databases. A Property ID is the unique field ID used by Unqork to track and link components in your module. JSON (JavaScript Object Notation) is an open standard file and data interchange format. Unqork uses JSON for submission (record) data. Extensible Markup Language (XML) is markup language that lets you define and store data in a shareable way. A URL (uniform resource locator) is a unique identifier used to locate a resource on the internet. Also known as a web address. PDF (Portable Document Format) is a file format that allows users to share and print documents without modifying them. APIs (application programming interfaces) are a set of protocols and definitions developers use to build and integrate application software. APIs act as the connective tissue between products and services. The Boolean data type accepts one of two values: true, or, false. A definition