update_person
Updates an existing person: ONLY the fields provided are written, the others keep their value. Cannot change id; initials are not editable (the chip is derived from name). tags, when sent, REPLACES the whole list. Changing color also changes the person's level colour. Returns the updated person; returns an error, nothing written, if the id is unknown (find it with search_people). To move someone onto or off a block use assign_person / unassign_person, and delete_person to remove them from the project.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the person to update (find it with search_people); it cannot be changed | |
| desc | No | New description of the profile | |
| name | No | New first name or full name | |
| note | No | New internal notes | |
| role | No | New professional role | |
| tags | No | REPLACES the whole list of tags (this is NOT an append) — a tag absent from this array is removed; `[]` removes them all. Field omitted: the tags do not change. | |
| color | No | New hex color (e.g. '#3dffa0'); the level colour follows it | |
| level | No | New level, free text (e.g. `Élevé`, `Intermédiaire`) | |
| network | No | New network of belonging (free text, e.g. 'core') | |
| category | No | New category: `moteur` (driver / leader), `pivot` (linchpin), `executant` (operational) | |
| expectedProjectId | No | UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted. |