ghl_project_update_folder
Updates project folder details—name, color, or privacy—and adds private access grants for specified users without revoking existing permissions.
Instructions
PROJECT MANAGEMENT API — hierarchy is spaces -> folders -> lists -> tasks (+ comments, space statuses, recurring tasks). Task batch-get is RBAC-filtered (inaccessible ids are omitted, not errors) and omits embedded subtasks. position is an opaque server-assigned lexorank string; there is no public reorder endpoint. Recurring tasks use owners/contactIds and rruleOptions.intervalType (task create uses assignees/contactId). Task search supports updatedAt filtering/sorting for incremental sync. The docs do not describe what a delete cascades to — treat every delete as destructive.
Update Folder
Updates folder fields such as name, color, or privacy. color must be a palette swatch. userIds when making the folder private adds grants and does not revoke omitted users — use DELETE /projects/folders/{folderId}/users/{userId}. Setting isPrivate: false makes the folder public; existing direct grants remain but no longer gate access while public.
Endpoint: PATCH /projects/folders/{folderId} (Version header: v3; source: v3/projects-v3.json)
OAuth scopes: projects/workspace.write
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Partial update body for a space, folder, or list (not tasks). All fields optional. When setting `isPrivate: true`, send a non-empty `userIds` array (add-only). Revoke with `DELETE .../users/{userId}`. Setting `isPrivate: false` makes the resource public; existing direct grants remain but no longer gate access while public. `icon` and `description` are not accepted on the public API. | |
| folderId | Yes | Folder id | |
| locationId | No | Location id. Required for APP channel (`?locationId=`). Ignored for OAuth/PIT (token location is used). Do not send in path, body, or headers. |