SG Ground Truth

client note

client_note cannot be set over REST: true on create is 400 and any PUT is 400 editable on create only. sg_note_type: "Client" is the one marker a caller can write.

API

Q Can a Note be made client-facing over REST?

Endpoint GET /schema/Note/fields ; POST /entity/notes ; PUT /entity/notes/<id> ; POST /entity/notes/_search

Docs claim Silent. The REST reference lists client_note as a checkbox and says nothing about who may write it. The web application ties the "Client Note" toggle to it.

Actual

GET /schema/Note/fields
  client_note:  data_type 'checkbox', editable False, mandatory False, default None
  sg_note_type: data_type 'list',     editable True,  mandatory False, default None
                valid_values ['Internal', 'Client']

POST /entity/notes {"project": {...}, "subject": "...", "client_note": true}
  as the script  -> 400 code 104 "API create() Client Notes can not be created through the API"
  as the person  -> 400, the same
POST ... "client_note": false
  as the script  -> 201, the echo omits the key, a re-read returns False
  as the person  -> 201, the same

PUT /entity/notes/<id> {"client_note": true}   (and false; as the script and as the person)
  -> 400 code 103 "API update() Note.client_note is editable on create only."

POST /entity/notes {..., "sg_note_type": "Internal"} -> 201, re-read 'Internal', client_note False
POST /entity/notes {..., "sg_note_type": "Client"}   -> 201, re-read 'Client',   client_note False
POST /entity/notes {..., "sg_note_type": "zzznope"}  -> 400 code 104 "Invalid field value, update
   failed [5 - Update failed for [Note.sg_note_type]: 'zzznope' is not a valid list value.
   Valid list values: 'Internal', 'Client'.]"
PUT /entity/notes/<id> {"sg_note_type": "Internal"}  -> 200

POST /entity/notes/_search, scoped to the sandbox project of 330 Notes
  client_note is true      -> 200, 0        sg_note_type is 'Client'    -> 200, 108
  client_note is false     -> 200, 330      sg_note_type is null        -> 200, 41

Teaches

Two refusals, one field. The create path answers Client Notes can not be created through the API, and the update path answers Note.client_note is editable on create only. Read together they close every route: the only call allowed to set the flag refuses true, and false is what an omitted key already stores. The schema's editable: false is right here, unlike created_at (probe 070). sudo_as_login changes nothing; the refusal is on the API, not on the identity.

sg_note_type is what a REST caller can write. Both fields are stock (visible.editable false, probe 056). sg_note_type is an ordinary list: a value outside valid_values is 400 with the vocabulary in the error, a PUT is 200, and is filters count it. On the probed site the vocabulary is Internal and Client; read it from the schema, never assume it. Setting it to Client leaves client_note false, so a client written this way is invisible to a filter on client_note.

Filter both when listing client-facing Notes. A Note the web application flagged and a Note the API typed are two disjoint sets: client_note is true finds the first, sg_note_type is "Client" the second. On the probed sandbox, 0 and 108 rows.

Python equivalent

# probe 069: the one client-facing marker the API accepts
sg.create("Note", {"project": {"type": "Project", "id": pid}, "subject": "...",
                   "sg_note_type": "Client"})
# sg.create(..., {"client_note": True}) -> Fault: Client Notes can not be created through the API

Every entry on this site is the output of a probe in probes/. The corpus is generated by running those probes against a live Flow Production Tracking site, not written from memory.

Not affiliated with or endorsed by Autodesk. Flow Production Tracking is their product; this is an independent record of how its REST API answers.