---
title: "Part data model"
url: "https://docs.unified.to/plm/part/model"
description: "The Part data model object in Unified's Part API: 21 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"
---
# Part data model

Updated: November 2, 2026

One revision of a part or item

 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       | Unique identifier of this part revision                                                                                                                                                                       |
| 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 part (Windchill WTPartMaster, Aras config\_id); not a unified object                                                                                           |
| number                   | string             | No       | Part number                                                                                                                                                                                                   |
| name                     | string             | No       |                                                                                                                                                                                                               |
| description              | string             | No       |                                                                                                                                                                                                               |
| revision                 | string             | No       | Revision label, e.g. B                                                                                                                                                                                        |
| status                   | enum               | No       | Normalized lifecycle status Values: IN\_WORK, IN\_REVIEW, RELEASED, OBSOLETE, OTHER                                                                                                                           |
| lifecycle\_state         | string             | No       | Vendor's own lifecycle state or phase name                                                                                                                                                                    |
| type                     | enum               | No       | Normalized part type Values: COMPONENT, ASSEMBLY, RAW\_MATERIAL, SOFTWARE, DOCUMENT\_ONLY, OTHER                                                                                                              |
| original\_type           | string             | No       | The vendor's own part type or category name                                                                                                                                                                   |
| category\_id             | string             | No       | The PlmCategory the part is filed under (reference to AccountingCategory)                                                                                                                                     |
| source                   | enum               | No       | Whether a part is made in-house or bought Values: MAKE, BUY, OTHER                                                                                                                                            |
| unit\_of\_measure        | string             | No       |                                                                                                                                                                                                               |
| is\_assembly             | boolean            | No       | Whether the part has BOM children                                                                                                                                                                             |
| user\_id                 | string             | No       | Owner or creator (reference to HrisEmployee)                                                                                                                                                                  |
| document\_ids            | string\[\]         | No       | Related PlmDocument IDs                                                                                                                                                                                       |
| file\_ids                | string\[\]         | No       | Attachment IDs retrievable from StorageFile                                                                                                                                                                   |
| url                      | string             | No       | Deep link to the vendor UI                                                                                                                                                                                    |
| 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 PlmPart = {
	id?: string; // Unique identifier of this part revision
	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 part (Windchill WTPartMaster, Aras config_id); not a unified object
	number?: string; // Part number
	name?: string;
	description?: string;
	revision?: string; // Revision label, e.g. B
	status?: 'IN_WORK' | 'IN_REVIEW' | 'RELEASED' | 'OBSOLETE' | 'OTHER'; // Normalized lifecycle status
	lifecycle_state?: string; // Vendor's own lifecycle state or phase name
	type?: 'COMPONENT' | 'ASSEMBLY' | 'RAW_MATERIAL' | 'SOFTWARE' | 'DOCUMENT_ONLY' | 'OTHER'; // Normalized part type
	original_type?: string; // The vendor's own part type or category name
	category_id?: string; // The PlmCategory the part is filed under (reference to AccountingCategory)
	source?: 'MAKE' | 'BUY' | 'OTHER'; // Whether a part is made in-house or bought
	unit_of_measure?: string;
	is_assembly?: boolean; // Whether the part has BOM children
	user_id?: string; // Owner or creator (reference to HrisEmployee)
	document_ids?: string[]; // Related PlmDocument IDs
	file_ids?: string[]; // Attachment IDs retrievable from StorageFile
	url?: string; // Deep link to the vendor UI
	metadata?: [];
	raw?: any; // Raw data from integration
} 
```

## Zod

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

export const ZodPlmPart = z.object({
	id: z.string().optional().describe("Unique identifier of this part revision"),
	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 part (Windchill WTPartMaster, Aras config_id); not a unified object"),
	number: z.string().optional().describe("Part number"),
	name: z.string().optional(),
	description: z.string().optional(),
	revision: z.string().optional().describe("Revision label, e.g. B"),
	status: z.enum("IN_WORK", "IN_REVIEW", "RELEASED", "OBSOLETE", "OTHER").optional().describe("Normalized lifecycle status"),
	lifecycle_state: z.string().optional().describe("Vendor's own lifecycle state or phase name"),
	type: z.enum("COMPONENT", "ASSEMBLY", "RAW_MATERIAL", "SOFTWARE", "DOCUMENT_ONLY", "OTHER").optional().describe("Normalized part type"),
	original_type: z.string().optional().describe("The vendor's own part type or category name"),
	category_id: z.string().optional().describe("The PlmCategory the part is filed under (reference to AccountingCategory)"),
	source: z.enum("MAKE", "BUY", "OTHER").optional().describe("Whether a part is made in-house or bought"),
	unit_of_measure: z.string().optional(),
	is_assembly: z.boolean().optional().describe("Whether the part has BOM children"),
	user_id: z.string().optional().describe("Owner or creator (reference to HrisEmployee)"),
	document_ids: z.array().optional().describe("Related PlmDocument IDs"),
	file_ids: z.array().optional().describe("Attachment IDs retrievable from StorageFile"),
	url: z.string().optional().describe("Deep link to the vendor UI"),
	metadata: z.array().optional(),

});
```

## Python

```python
import dataclasses

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

@dataclasses.dataclass
class PlmPartType(str, Enum):
	COMPONENT = 'COMPONENT'
	ASSEMBLY = 'ASSEMBLY'
	RAW_MATERIAL = 'RAW_MATERIAL'
	SOFTWARE = 'SOFTWARE'
	DOCUMENT_ONLY = 'DOCUMENT_ONLY'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PlmPartSource(str, Enum):
	MAKE = 'MAKE'
	BUY = 'BUY'
	OTHER = 'OTHER'

@dataclasses.dataclass
class PlmPart:
	"""Unique identifier of this part revision"""
	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 part (Windchill WTPartMaster, Aras config_id); not a unified object"""
	master_identifier: Optional[str]
	"""Part number"""
	number: Optional[str]
	name: Optional[str]
	description: Optional[str]
	"""Revision label, e.g. B"""
	revision: Optional[str]
	"""Normalized lifecycle status"""
	status: Optional[PlmPartStatus]
	"""Vendor's own lifecycle state or phase name"""
	lifecycle_state: Optional[str]
	"""Normalized part type"""
	type: Optional[PlmPartType]
	"""The vendor's own part type or category name"""
	original_type: Optional[str]
	"""The PlmCategory the part is filed under (reference to AccountingCategory)"""
	category_id: Optional[str]
	"""Whether a part is made in-house or bought"""
	source: Optional[PlmPartSource]
	unit_of_measure: Optional[str]
	"""Whether the part has BOM children"""
	is_assembly: Optional[bool]
	"""Owner or creator (reference to HrisEmployee)"""
	user_id: Optional[str]
	"""Related PlmDocument IDs"""
	document_ids: Optional[List[List[str]]]
	"""Attachment IDs retrievable from StorageFile"""
	file_ids: Optional[List[List[str]]]
	"""Deep link to the vendor UI"""
	url: Optional[str]
	metadata: Optional[PropertyPlmPartMetadata]

```
