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

Updated: November 2, 2026

A category that parts, documents or changes are filed under

 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)                                                                                                                                                                      |
| name                     | string             | No       |                                                                                                                                                                                                               |
| description              | string             | No       |                                                                                                                                                                                                               |
| type                     | enum               | No       | Which records the category classifies Values: PART, DOCUMENT, CHANGE                                                                                                                                          |
| is\_active               | boolean            | No       |                                                                                                                                                                                                               |
| parent\_id               | string             | No       | The parent PlmCategory, for nested categories                                                                                                                                                                 |
| 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 PlmCategory = {
	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)
	name?: string;
	description?: string;
	type?: 'PART' | 'DOCUMENT' | 'CHANGE'; // Which records the category classifies
	is_active?: boolean;
	parent_id?: string; // The parent PlmCategory, for nested categories
	metadata?: [];
	raw?: any; // Raw data from integration
} 
```

## Zod

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

export const ZodPlmCategory = 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)"),
	name: z.string().optional(),
	description: z.string().optional(),
	type: z.enum("PART", "DOCUMENT", "CHANGE").optional().describe("Which records the category classifies"),
	is_active: z.boolean().optional(),
	parent_id: z.string().optional().describe("The parent PlmCategory, for nested categories"),
	metadata: z.array().optional(),

});
```

## Python

```python
import dataclasses

@dataclasses.dataclass
class PlmCategoryType(str, Enum):
	PART = 'PART'
	DOCUMENT = 'DOCUMENT'
	CHANGE = 'CHANGE'

@dataclasses.dataclass
class PlmCategory:
	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]
	name: Optional[str]
	description: Optional[str]
	"""Which records the category classifies"""
	type: Optional[PlmCategoryType]
	is_active: Optional[bool]
	"""The parent PlmCategory, for nested categories"""
	parent_id: Optional[str]
	metadata: Optional[PropertyPlmCategoryMetadata]

```
