# Twenty CRM Field Mapping

This document outlines the field structures for standard objects in Twenty CRM (v2026-02-03).

## 🧑 People (`/rest/people`)
| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | UUID | Unique identifier |
| `name` | Object | `firstName`, `lastName` |
| `emails` | Object | `primaryEmail`, `additionalEmails` (array) |
| `jobTitle` | String | Job title of the person |
| `companyId` | UUID | Reference to the associated company |
| `city` | String | City location |
| `phones` | Object | `primaryPhoneNumber`, `primaryPhoneCountryCode`, etc. |
| `linkedinLink` | Object | `primaryLinkUrl`, `primaryLinkLabel` |
| `xLink` | Object | `primaryLinkUrl`, `primaryLinkLabel` |
| `avatarUrl` | String | URL to profile image |
| `position` | Integer | Sorting position |
| `createdAt` | DateTime | ISO 8601 creation timestamp |
| `updatedAt` | DateTime | ISO 8601 last update timestamp |

## 🏢 Companies (`/rest/companies`)
| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | UUID | Unique identifier |
| `name` | String | Company name |
| `domainName` | Object | `primaryLinkUrl` (e.g., `google.com`) |
| `email` | Object | `primaryEmail`, `additionalEmails` |
| `address` | Object | `addressStreet1`, `addressCity`, `addressState`, `addressPostcode`, `addressCountry` |
| `employees` | Integer | Number of employees |
| `annualRecurringRevenue` | Object | `amountMicros`, `currencyCode` |
| `idealCustomerProfile` | Boolean | ICP status |
| `linkedinLink` | Object | `primaryLinkUrl` |
| `xLink` | Object | `primaryLinkUrl` |

## 💰 Opportunities (`/rest/opportunities`)
| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | UUID | Unique identifier |
| `name` | String | Opportunity name |
| `amount` | Object | `amountMicros`, `currencyCode` |
| `stage` | String | `NEW`, `SCREENING`, `MEETING`, `PROPOSAL`, `CUSTOMER` |
| `closeDate` | DateTime | Expected closing date |
| `companyId` | UUID | Associated company |
| `pointOfContactId` | UUID | Primary person associated |
| `ownerId` | UUID | Internal owner (workspace member) |

## 📝 Notes (`/rest/notes`)
| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | UUID | Unique identifier |
| `title` | String | Note title |
| `bodyV2` | RichText | Note content (Rich Text V2) |
| `position` | Integer | Sorting position |
| `createdBy` | Actor | Record creator |
| `updatedBy` | Actor | Last record updater |

## ✅ Tasks (`/rest/tasks`)
| Field | Type | Description |
| :--- | :--- | :--- |
| `id` | UUID | Unique identifier |
| `title` | String | Task title |
| `bodyV2` | RichText | Task body (Rich Text V2) |
| `dueAt` | DateTime | ISO 8601 due date |
| `status` | Select | `TODO`, `IN_PROGRESS`, `DONE` |
| `assigneeId` | UUID | ID of workspace member assigned |
| `position` | Integer | Sorting position |

## 🛠 Metadata API
- **Objects:** `GET /rest/metadata/objects`
- **Fields:** `GET /rest/metadata/objects/{objectMetadataId}`
- **Note Object ID:** `89cb1d82-fa89-489c-9ee7-5dab0ba398eb`
- **Task Object ID:** `ce792436-b89a-459c-a083-96a3ee8a87c6`
