# CaseMessage

object type

One CS-case thread message. internal_note rows NEVER serialize to the consumer face (ruling — the structural walk filter).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | No further notes. |
| `type` | [String](/types/#scalars) `String!` | No further notes. |
| `caption` | [String](/types/#scalars) `String!` | No further notes. |
| `status` | [String](/types/#scalars) `String!` | active (a posted fact) — the void lane is FSM data with NO wire op (the AREntry class). |
| `parentId` | [ID](/types/#scalars) `ID!` | The owning CsCase. |
| `rootId` | [ID](/types/#scalars) `ID!` | The org-group family root. |
| `createdAt` | [String](/types/#scalars) `String!` | No further notes. |
| `updatedAt` | [String](/types/#scalars) `String!` | No further notes. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | No further notes. |
| `revision` | [ID](/types/#scalars) `ID!` | No further notes. |
| `authorKind` | [String](/types/#scalars) `String!` | consumer \| user \| system — WHO wrote it (system rows carry NO authorId; the future auto_close trail). |
| `authorId` | [ID](/types/#scalars) | The authoring principal (a Consumer or User id — server-stamped from the channel); absent on system rows. |
| `visibility` | [String](/types/#scalars) `String!` | customer_visible \| internal_note — internal notes are staff-face ONLY (ruling). |
| `body` | [String](/types/#scalars) `String!` | The message body (1..4096). |

## Used by

- [addCaseMessage](/reference/selling/addCaseMessage/)
