ThingDetail
ThingDetail =
object
Full record shape for a single Thing returned by single-record SDK
reads. Returned by client.thing.get and client.thing.resolve, the
items[] element type for client.thing.getMany, the base of
client.thing.graph, and the return of client.repo.getReadme and
getAgents (nullable). Identity fields (wref, name, kind,
shape/shapeName) are always populated. data carries the
shape-validated payload when present; active is false for retracted
reads. The [key: string]: unknown index signature is a forward-compat
affordance — current callers should rely on the named fields. Note: list
reads — client.thing.head, query, and search — return a thinner
row shape (no shape, validatedShape, or committerWref); use
client.thing.get to hydrate a full ThingDetail from a list result.
Authored WREF values inside data and identity metadata such as
aboutWref, committerWref, createdBy, and revisedBy use durable ids in
the reader-independent base response. Body references preserve their exact
version pin; identity references are unpinned. With decorateResponses, a
separate decorations sidecar maps readable durable ids to current canonical
labels without rewriting the base body. A durable id grants no target access.
https://docs.warmhub.ai/data-modeling/things/
Indexable
Section titled “Indexable”[
key:string]:unknown
Properties
Section titled “Properties”wref:
string
pinnedWref?
Section titled “pinnedWref?”
optionalpinnedWref?:string
name:
string
kind:
string
shape?
Section titled “shape?”
optionalshape?:string
shapeName?
Section titled “shapeName?”
optionalshapeName?:string
Canonical unversioned shape name (e.g. "Game").
validatedShape?
Section titled “validatedShape?”
optionalvalidatedShape?:string
Version-pinned shape wref (e.g. "Game@v3") — the shape version that
validated this thing version.
Naming caveat, now retiring. Where the read path still sources the legacy shape column, this is synthesized from the shape’s current version at read time, so revising a shape retroactively changes it for every thing already validated against an older version. Where reads are served from certificate records it is the captured fact and no longer moves. The two sources give the same answer except when the shape was revised after the thing version was written; the caveat goes away entirely once every repository reads certificates.
version
Section titled “version”version:
number
active
Section titled “active”active:
boolean
optionaldata?:unknown
collection?
Section titled “collection?”
optionalcollection?:CollectionReadSummary
synthesized?
Section titled “synthesized?”
optionalsynthesized?:boolean
True on synthesized empty stubs from getReadme/getAgents when no row exists yet.
aboutWref?
Section titled “aboutWref?”
optionalaboutWref?:string
affirmedWrefs?
Section titled “affirmedWrefs?”
optionalaffirmedWrefs?:string[]
Pinned target wrefs the returned assertion version affirms. Assertions only; targets the reader cannot see are suppressed per-target.
committerWref?
Section titled “committerWref?”
optionalcommitterWref?:string
createdBy?
Section titled “createdBy?”
optionalcreatedBy?:string
#4848 Phase C: the thing’s creator (first-version author), a peer of the
current-version author revisedBy. Present for things created after Phase
C; optional for legacy rows without trustworthy creator provenance.
revisedBy?
Section titled “revisedBy?”
optionalrevisedBy?:string
#4848 Phase C: current-version author (renamed from createdByWref).
metadata?
Section titled “metadata?”
optionalmetadata?:ThingMetadata