NewNoteInput
input type
Append-input for addNote.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
targetConstructId | ID ID! | yes | The annotated construct (ANY same-tenant type — existence + same-rootId gate; a cross-tenant/missing target refuses NOT_FOUND). |
targetType | String String! | yes | The target's declared construct type (the ruling — constructs key by (type,id), so the existence read NEEDS the type and PROVES the declaration; a mismatch refuses NOT_FOUND opaquely; the TaskConstructRef law). |
body | String String! | yes | The note body (1..4096). |
parentNoteId | ID | no | No further notes. |
title | String | no | The optional lead line (1..120). |
kind | String | no | The kind ∈ {comment, question, action} — unnamed stamps 'comment' (the Task-priority idiom; server-validated). |
links | NoteLinkInput [NoteLinkInput!] | no | Outbound links (≤8 — the scheme fence). |
attachmentIds | ID [ID!] | no | The caller's own PRIOR upload-mints to bind (≤8, distinct; each un-bound + on the SAME target — the attachment-first flow). |
refs | TaskConstructRefInput [TaskConstructRefInput!] | no | The construct refs (≤8, distinct by (type,id); in-tenant + non-doomed at write — the TaskConstructRef law). |
mentions | NoteMentionInput [NoteMentionInput!] | no | The mentions (≤8, distinct by target; userId ⊕ teamId each — the sendMessage recipient gates verbatim [a USER in-tenant + non-doomed, suspended still receives; a TEAM must be ACTIVE with the CALLER a member]; each lands ONE inbox message in the birth txn). |
labelIds | ID [ID!] | no | The labels (≤8, distinct — ACTIVE TaskLabels; the ONE shared vocabulary). |