# `api.notes.update` > `PUT /note/{id}` — ACPortal **Python** ```python api.notes.update(note_id: str, *, data: NoteRequest | dict) -> GlobalNote ``` **CLI** ```bash ab notes update [--data ...] ``` Update a note (``PUT /note/{id}``). The API uses the same :class:`NoteRequest` schema as ``create``, so ``comments`` and ``category`` are required on update too -- partial updates are not supported by this endpoint. Args: note_id: Note identifier (path param). data: Note payload. Accepts a :class:`NoteRequest` instance or a dict. Request model: :class:`NoteRequest` (same schema as ``create``). ## Request body — `NoteRequest` | Field | Type | Required | Description | |---|---|---|---| | `comments` | `str` | yes | Note content (1-8000 chars) | | `category` | `str` | yes | Category UUID (required) | | `dueDate` | `Optional[date]` | no | Due date (yyyy-mm-dd) | | `isImportant` | `Optional[bool]` | no | Mark important | | `isCompleted` | `Optional[bool]` | no | Mark completed | | `jobId` | `Optional[str]` | no | Job UUID | | `sendNotification` | `Optional[bool]` | no | Send notification to assigned users | | `assignedUsers` | `Optional[list[SuggestedUser]]` | no | Assigned users (forward ref: SuggestedUser.id) | | `crmContactId` | `Optional[int]` | no | CRM contact ID (int) | | `companyId` | `Optional[str]` | no | Company UUID | | `isGlobal` | `Optional[bool]` | no | Global flag | | `isShared` | `Optional[bool]` | no | Shared flag | ## Response Returns `GlobalNote`. | Field | Type | Required | Description | |---|---|---|---| | `noteID` | `Optional[int]` | no | Note ID (int) | | `isImportant` | `Optional[bool]` | no | Important flag | | `comments` | `Optional[str]` | no | Note content | | `category` | `Optional[str]` | no | Category UUID | | `dueDate` | `Optional[datetime]` | no | Due date | | `jobId` | `Optional[str]` | no | Associated job UUID | | `crmContactId` | `Optional[int]` | no | CRM contact ID (int) | | `contactId` | `Optional[str]` | no | Contact UUID | | `companyId` | `Optional[str]` | no | Company UUID | | `userID` | `Optional[str]` | no | User UUID | | `importance` | `Optional[str]` | no | Importance label | | `author` | `Optional[str]` | no | Author display name | | `dueDates` | `Optional[str]` | no | Due-date label | | `categoryName` | `Optional[str]` | no | Category display name | | `createdDate` | `Optional[datetime]` | no | Created timestamp | | `createdBy` | `Optional[str]` | no | Creator user UUID | | `modifiedBy` | `Optional[str]` | no | Modifier user UUID | | `modifiyDate` | `Optional[datetime]` | no | Modified timestamp (server spelling: modifiyDate) | | `franchiseID` | `Optional[str]` | no | Franchise UUID | | `isCompleted` | `Optional[bool]` | no | Completion flag | | `isGlobal` | `Optional[bool]` | no | Global flag | | `isShared` | `Optional[bool]` | no | Shared flag | | `assignedContactNames` | `Optional[list[str]]` | no | Assigned contact display names | | `assignedUsers` | `Optional[list[SuggestedUser]]` | no | Assigned users (SuggestedContactEntity[]) | | `isJobLevel` | `Optional[bool]` | no | Job-scoped note flag | --- [← Back to api.notes](../notes.md)