Relatude Help

Nodes and values on the wire

A node is one JSON object: its properties by CodeName, and system fields with a $ prefix that no C# name can have.

{
  "$id": "…", "$type": "IArticle", "$displayName": "Five trails worth the climb",
  "$createdUtc": "2026-10-01T08:00:00.0000000Z", "$changedUtc": "2026-10-02T09:15:00.0000000Z",
  "$revisionId": null, "$revisionType": "Published", "$culture": null, "$collection": null,
  "$status": { "state": "published", "draft": false, "releaseUtc": null, "expireUtc": null },
  "Name": "Five trails worth the climb",
  "Body": "<p>Start <a href=\"/trails/north-ridge\">at the north ridge</a>.</p>",
  "Picture": { "name": "trails.jpg", "size": 183402, "contentType": "image/jpeg", "url": "/…", "thumbnailUrl": "/…", … },
  "Parent": { "$id": "…", "$type": "INewsList", "$displayName": "News", … }
}
  • $revisionId, $revisionType and $culture say which version this is. The id is null for a node without revisions, and the culture null for none. $collection is the node's site, or null.
  • $status says whether readers see the node now: published, scheduled, expired, draft or unpublished, and draft: true when a draft exists beside the published version.
  • A relation end is there only when the query included it.
  • An embedded property is the list of its inner nodes, each { $id, $type, <CodeName>: value }, and is written whole. Send an inner node's $id to keep it: a value left out keeps what that inner node had, and null resets it.
  • Dates are ISO 8601 text in UTC, a TimeSpan its invariant text (1.02:03:04), a coordinate { latitude, longitude }, and an enum its number. An enum is written as its number or its name.
  • HTML comes back with the store's links as URLs, unless the context has links: "stored".
  • A password reads as { isSet, storage, retrievable }, never the password. Write { "set": "…", "storage": "Hashed" } to set one and { "clear": true } to remove it; any other value leaves it as it is.
  • Values sent in are parsed strictly by the property's type. A value that does not fit is refused (400), never stored as the type's default.

A file is { name, size, contentType, width, height, hash, url, thumbnailUrl, previewUrl, converting }. The store's file conversions make the two pictures: of a picture, a square thumbnail and a larger preview; of a video, frames. They are null for an SVG and for a file no converter makes a picture of. A video's frames are made in the background. While they are, converting says how far along they are ({ progress, message }), so ask file-info again until it is null.

A query's answer has a kind, by what the query ends in:

kind For Holds
nodes nodes items, totalCount, count, pageIndex, pageSize, isLastPage, durationMs
values SelectId items, paged like nodes
objects Select items, paged like nodes
search a ranked search hits, each { node, sample, score }, paged like nodes
facets facets items and facets, paged like nodes
pivot Pivot, GroupBy result
path ShortestPath found, ids, items
value Count, Sum value