---
title: "Ticket data model"
url: "https://docs.unified.to/ticketing/ticket/model"
description: "The Ticket data model object in Unified's Ticket API: 17 fields, including created_at, updated_at and customer_id, with types and enum values."
---
# Ticket data model

 View field support, webhooks, and list parameters for each integration on the [Supported Integrations](https://docs.unified.to/ticketing/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)                        |
| customer\_id    | string             | No       |                                                                 |
| subject         | string             | No       | short description of the ticket                                 |
| description     | string             | No       | Full description of ticket issue                                |
| status          | enum               | No       | Values: ACTIVE, CLOSED                                          |
| closed\_at      | string (date-time) | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                        |
| priority        | string             | No       |                                                                 |
| category\_id    | string             | No       | (reference to AccountingCategory)                               |
| source          | string             | No       | Channel where ticket was originally submitted                   |
| source\_ref     | string             | No       | Reference to source-specific object                             |
| tags            | string\[\]         | No       |                                                                 |
| user\_id        | string             | No       | (reference to HrisEmployee)                                     |
| url             | string             | No       |                                                                 |
| attachment\_ids | string\[\]         | No       | Array of attachment IDs retrieved from StorageFile.Get endpoint |
| due\_at         | string (date-time) | No       | (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)                        |

## TypeScript

```typescript
export type TicketingTicket = {
	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)
	customer_id?: string;
	subject?: string; // short description of the ticket
	description?: string; // Full description of ticket issue
	status?: 'ACTIVE' | 'CLOSED';
	closed_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	priority?: string;
	category_id?: string; // (reference to AccountingCategory)
	source?: string; // Channel where ticket was originally submitted
	source_ref?: string; // Reference to source-specific object
	tags?: string[];
	user_id?: string; // (reference to HrisEmployee)
	url?: string;
	attachment_ids?: string[]; // Array of attachment IDs retrieved from StorageFile.Get endpoint
	due_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	raw?: any;
} 
```

## Zod

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

export const ZodTicketingTicket = 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)"),
	customer_id: z.string().optional(),
	subject: z.string().optional().describe("short description of the ticket"),
	description: z.string().optional().describe("Full description of ticket issue"),
	status: z.enum("ACTIVE", "CLOSED").optional(),
	closed_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	priority: z.string().optional(),
	category_id: z.string().optional().describe("(reference to AccountingCategory)"),
	source: z.string().optional().describe("Channel where ticket was originally submitted"),
	source_ref: z.string().optional().describe("Reference to source-specific object"),
	tags: z.array().optional(),
	user_id: z.string().optional().describe("(reference to HrisEmployee)"),
	url: z.string().optional(),
	attachment_ids: z.array().optional().describe("Array of attachment IDs retrieved from StorageFile.Get endpoint"),
	due_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),

});
```

## Python

```python
import dataclasses

@dataclasses.dataclass
class TicketingTicketStatus(str, Enum):
	ACTIVE = 'ACTIVE'
	CLOSED = 'CLOSED'

@dataclasses.dataclass
class TicketingTicket:
	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]
	customer_id: Optional[str]
	"""short description of the ticket"""
	subject: Optional[str]
	"""Full description of ticket issue"""
	description: Optional[str]
	status: Optional[TicketingTicketStatus]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	closed_at: Optional[str]
	priority: Optional[str]
	"""(reference to AccountingCategory)"""
	category_id: Optional[str]
	"""Channel where ticket was originally submitted"""
	source: Optional[str]
	"""Reference to source-specific object"""
	source_ref: Optional[str]
	tags: Optional[List[List[str]]]
	"""(reference to HrisEmployee)"""
	user_id: Optional[str]
	url: Optional[str]
	"""Array of attachment IDs retrieved from StorageFile.Get endpoint"""
	attachment_ids: Optional[List[List[str]]]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	due_at: Optional[str]

```
