Data Model Overview
Understand the core data structures in DZDESK.
Core Entities
Tenant
The top-level organization:
- Isolated data container
- Configuration holder
- User boundary
User
People who access DZDESK:
- Profile information
- Role assignment
- Group membership
Request
Support tickets:
- Issue details
- Status tracking
- Assignment info
- Activity history
Group
Team organization:
- Collection of users
- Request assignment target
- Queue management
Entity Relationships
Tenant
├── Users
│ └── Group Memberships
├── Groups
│ └── Members
├── Requests
│ ├── Requester (User)
│ ├── Assigned Agent (User)
│ ├── Assigned Group (Group)
│ ├── Comments
│ ├── Attachments
│ └── Activities
└── SLA Tiers
Request Structure
Core Fields
| Field | Type | Description |
|---|---|---|
| id | UUID | Unique identifier |
| title | String | Summary |
| description | Text | Detailed description |
| status | Enum | Current state |
| priority | Enum | Urgency level |
| category | String | Classification |
| createdAt | DateTime | Creation time |
| updatedAt | DateTime | Last update |
Relationships
| Field | Type | Description |
|---|---|---|
| requester | User | Who submitted |
| assignedTo | User | Assigned agent |
| assignedGroup | Group | Assigned team |
| comments | Array | Discussion |
| attachments | Array | Files |
| activities | Array | History |
Status Values
| Status | Description |
|---|---|
| open | New, unassigned |
| assigned | Agent assigned |
| in_progress | Being worked |
| pending | Waiting |
| resolved | Solution provided |
| closed | Completed |
User Structure
Core Fields
| Field | Type | Description |
|---|---|---|
| id | UUID | Unique identifier |
| String | Login email | |
| name | String | Display name |
| role | Enum | Permission level |
| status | Enum | Active/inactive |
| isVip | Boolean | VIP status |
Relationships
| Field | Type | Description |
|---|---|---|
| groups | Array | Group memberships |
| assignedRequests | Array | Assigned work |
| createdRequests | Array | Submitted requests |
SLA Structure
SLA Tier
| Field | Type | Description |
|---|---|---|
| id | UUID | Unique identifier |
| name | String | Tier name |
| responseTarget | Integer | Hours to respond |
| resolutionTarget | Integer | Hours to resolve |
| includeSaturday | Boolean | Count Saturday |
| includeSunday | Boolean | Count Sunday |
Request SLA
| Field | Type | Description |
|---|---|---|
| tier | SLA Tier | Applied tier |
| responseDeadline | DateTime | Response due |
| resolutionDeadline | DateTime | Resolution due |
| responseStatus | Enum | Met/breached |
| resolutionStatus | Enum | Status |
Activity/Event Structure
Fields
| Field | Type | Description |
|---|---|---|
| id | UUID | Unique identifier |
| type | Enum | Event type |
| actor | User | Who acted |
| timestamp | DateTime | When |
| changes | Object | What changed |
Event Types
- request.created
- request.updated
- request.status_changed
- request.assigned
- request.commented
- request.attachment_added
Data Isolation
Tenant Isolation
- Separate database schema per tenant
- No cross-tenant queries
- Independent configuration
Row-Level Security
- All queries filtered by tenant
- Cannot access other tenants
- Enforced at database level
Indexing
Primary Indexes
- All ID fields
- Foreign key references
- Frequently filtered fields
Search Indexes
- Full-text on title/description
- Optimized for common queries
- Updated in near-real-time
API Representation
JSON Format
{
"id": "req_abc123",
"title": "Issue title",
"status": "open",
"priority": "high",
"requester": {
"id": "usr_123",
"email": "user@company.com"
},
"assignedTo": null,
"createdAt": "2024-01-15T10:00:00Z"
}
Nested vs Flat
- Related entities embedded when useful
- IDs for references
- Expandable relationships
Related Topics
- Requests API - API structure
- Users API - User API
- Events API - Event structure