Domain Model
Contact
Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string.uuid | Yes | — | Id |
| createdAt | string.date-time | Yes | — | Created at |
| updatedAt | string.date-time | Yes | — | Updated at |
| customerId | string | No | — | ID of the associated customer |
| vendorId | string | No | — | ID of the associated vendor |
| firstName | string | Yes | — | First name |
| lastName | string | Yes | — | Last name |
| title | string | No | — | Title |
string.email | No | — | ||
| phone | string | No | — | Phone |
| mobile | string | No | — | Mobile |
| roleTags | string[] | Yes | — | Role tags |
| preferredContactMethod | enum(email, phone, mobile, portal) | No | — | Preferred contact method |
| portalAccessStatus | enum(none, invited, active, suspended) | Yes | — | Portal access status |
| status | enum(active, inactive) | Yes | — | Status |
| notesSummary | string | No | — | Notes summary |
| workspaceId | string | Yes | — | ID of the associated workspace |
| visibilityMode | enum(global, workspace_local, shared) | Yes | — | Visibility mode |
Create Schema
Fields accepted when creating a new record:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| customerId | string | No | — | ID of the associated customer |
| vendorId | string | No | — | ID of the associated vendor |
| firstName | string | Yes | — | First name |
| lastName | string | Yes | — | Last name |
| title | string | No | — | Title |
string.email | No | — | ||
| phone | string | No | — | Phone |
| mobile | string | No | — | Mobile |
| roleTags | string[] | Yes | [] | Role tags |
| preferredContactMethod | enum(email, phone, mobile, portal) | No | — | Preferred contact method |
| portalAccessStatus | enum(none, invited, active, suspended) | Yes | "none" | Portal access status |
| status | enum(active, inactive) | Yes | "active" | Status |
| notesSummary | string | No | — | Notes summary |
| workspaceId | string | No | — | ID of the associated workspace |
| visibilityMode | enum(global, workspace_local, shared) | Yes | "workspace_local" | Visibility mode |
Update Schema
All fields are optional when updating:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| customerId | string | No | — | ID of the associated customer |
| vendorId | string | No | — | ID of the associated vendor |
| firstName | string | No | — | First name |
| lastName | string | No | — | Last name |
| title | string | No | — | Title |
string.email | No | — | ||
| phone | string | No | — | Phone |
| mobile | string | No | — | Mobile |
| roleTags | string[] | No | [] | Role tags |
| preferredContactMethod | enum(email, phone, mobile, portal) | No | — | Preferred contact method |
| portalAccessStatus | enum(none, invited, active, suspended) | No | "none" | Portal access status |
| status | enum(active, inactive) | No | "active" | Status |
| notesSummary | string | No | — | Notes summary |