---
title: "Document data model"
url: "https://docs.unified.to/plm/document/model"
description: "The Document data model object in Unified's Document API: 18 fields, including created_at, updated_at and master_identifier, with types and enum values."
date: "2026-11-02T06:50:20.035Z"
updated: "2026-11-02T06:50:20.035Z"
---
# Document data model

Updated: November 2, 2026

One revision of an engineering document

 View field support, webhooks, and list parameters for each integration on the [Supported Integrations](https://docs.unified.to/plm/integrations.md) page. 

| Field                    | Type               | Required | Description                                                                                                                                                                                                   |
| ------------------------ | ------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                       | string             | No       |                                                                                                                                                                                                               |
| created\_at              | string (date-time) | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                                                                                                                      |
| updated\_at              | string (date-time) | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                                                                                                                                                                      |
| master\_identifier       | string             | No       | Vendor ID shared by every revision of the same document; not a unified object                                                                                                                                 |
| number                   | string             | No       |                                                                                                                                                                                                               |
| name                     | string             | No       |                                                                                                                                                                                                               |
| description              | string             | No       |                                                                                                                                                                                                               |
| revision                 | string             | No       |                                                                                                                                                                                                               |
| status                   | enum               | No       | Normalized lifecycle status of a part or document revision Values: IN\_WORK, IN\_REVIEW, RELEASED, OBSOLETE, OTHER                                                                                            |
| lifecycle\_state         | string             | No       |                                                                                                                                                                                                               |
| type                     | enum               | No       | Normalized document type Values: DRAWING, CAD\_MODEL, SPECIFICATION, PROCEDURE, REPORT, OTHER                                                                                                                 |
| original\_type           | string             | No       | The vendor's own document type name                                                                                                                                                                           |
| category\_id             | string             | No       | The PlmCategory the document is filed under (reference to AccountingCategory)                                                                                                                                 |
| part\_ids                | string\[\]         | No       | Related PlmPart IDs                                                                                                                                                                                           |
| file\_ids                | string\[\]         | No       | Attachment IDs retrievable from StorageFile                                                                                                                                                                   |
| user\_id                 | string             | No       | (reference to HrisEmployee)                                                                                                                                                                                   |
| url                      | string             | No       |                                                                                                                                                                                                               |
| metadata                 | PlmMetadata\[\]    | No       |                                                                                                                                                                                                               |
| metadata\[\].id          | string             | No       | The ID of the custom field definition (from the metadata/metadata endpoint).                                                                                                                                  |
| metadata\[\].slug        | string             | No       | The integration's API name (key) of an existing custom field.                                                                                                                                                 |
| metadata\[\].value       | object             | No       | The field's value, typed by format.                                                                                                                                                                           |
| metadata\[\].namespace   | string             | No       |                                                                                                                                                                                                               |
| metadata\[\].format      | enum               | No       | The data type of the custom field, which determines how value is formatted. Values: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE\_SELECT, MULTIPLE\_SELECT, MEASUREMENT, PRICE, YES\_NO, CURRENCY, URL |
| metadata\[\].extra\_data | object             | No       |                                                                                                                                                                                                               |

## TypeScript

```typescript
export type PlmDocument = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	master_identifier?: string; // Vendor ID shared by every revision of the same document; not a unified object
	number?: string;
	name?: string;
	description?: string;
	revision?: string;
	status?: 'IN_WORK' | 'IN_REVIEW' | 'RELEASED' | 'OBSOLETE' | 'OTHER'; // Normalized lifecycle status of a part or document revision
	lifecycle_state?: string;
	type?: 'DRAWING' | 'CAD_MODEL' | 'SPECIFICATION' | 'PROCEDURE' | 'REPORT' | 'OTHER'; // Normalized document type
	original_type?: string; // The vendor's own document type name
	category_id?: string; // The PlmCategory the document is filed under (reference to AccountingCategory)
	part_ids?: string[]; // Related PlmPart IDs
	file_ids?: string[]; // Attachment IDs retrievable from StorageFile
	user_id?: string; // (reference to HrisEmployee)
	url?: string;
	metadata?: [];
	raw?: any; // Raw data from integration
} 
```

## Zod

```typescript
import { z } from 'zod';

export const ZodPlmDocument = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	master_identifier: z.string().optional().describe("Vendor ID shared by every revision of the same document; not a unified object"),
	number: z.string().optional(),
	name: z.string().optional(),
	description: z.string().optional(),
	revision: z.string().optional(),
	status: z.enum("IN_WORK", "IN_REVIEW", "RELEASED", "OBSOLETE", "OTHER").optional().describe("Normalized lifecycle status of a part or document revision"),
	lifecycle_state: z.string().optional(),
	type: z.enum("DRAWING", "CAD_MODEL", "SPECIFICATION", "PROCEDURE", "REPORT", "OTHER").optional().describe("Normalized document type"),
	original_type: z.string().optional().describe("The vendor's own document type name"),
	category_id: z.string().optional().describe("The PlmCategory the document is filed under (reference to AccountingCategory)"),
	part_ids: z.array().optional().describe("Related PlmPart IDs"),
	file_ids: z.array().optional().describe("Attachment IDs retrievable from StorageFile"),
	user_id: z.string().optional().describe("(reference to HrisEmployee)"),
	url: z.string().optional(),
	metadata: z.array().optional(),

});
```

## Python

```python
import dataclasses

@dataclasses.dataclass
class PlmDocumentStatus(str, Enum):
	IN_WORK = 'IN_WORK'
	IN_REVIEW = 'IN_REVIEW'
	RELEASED = 'RELEASED'
	OBSOLETE = 'OBSOLETE'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PlmDocumentType(str, Enum):
	DRAWING = 'DRAWING'
	CAD_MODEL = 'CAD_MODEL'
	SPECIFICATION = 'SPECIFICATION'
	PROCEDURE = 'PROCEDURE'
	REPORT = 'REPORT'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PlmDocument:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""Vendor ID shared by every revision of the same document; not a unified object"""
	master_identifier: Optional[str]
	number: Optional[str]
	name: Optional[str]
	description: Optional[str]
	revision: Optional[str]
	"""Normalized lifecycle status of a part or document revision"""
	status: Optional[PlmDocumentStatus]
	lifecycle_state: Optional[str]
	"""Normalized document type"""
	type: Optional[PlmDocumentType]
	"""The vendor's own document type name"""
	original_type: Optional[str]
	"""The PlmCategory the document is filed under (reference to AccountingCategory)"""
	category_id: Optional[str]
	"""Related PlmPart IDs"""
	part_ids: Optional[List[List[str]]]
	"""Attachment IDs retrievable from StorageFile"""
	file_ids: Optional[List[List[str]]]
	"""(reference to HrisEmployee)"""
	user_id: Optional[str]
	url: Optional[str]
	metadata: Optional[PropertyPlmDocumentMetadata]

```
