Schemas
Reading
pointPoint identity - the raw source topic/label. Becomes urn:point:{point} in the graph; the same string used consistently by a source is what makes repeated readings resolve to the same point.
The reading value - whatever type the source produced.
tsUnix epoch seconds. Defaults to the ingest server's current time if omitted.
Optional sample quality (#183). A flag name (fault, overridden, out_of_service, out_of_range, spike, unit_suspect; ok or omitted means good), or BACnet's own status as {"status_flags": [...], "reliability": "..."}. The value is stored as sent either way; an unrecognised quality is treated as good.
HistoryItem
tsUnix epoch seconds.
Whatever type was originally stored.
qualityPresent only on a flagged sample (#183). The value is kept as received; fault rules and Cx checks skip flagged samples.
HisQueryResult
exprThe expression as received.
modefilterJust the filter part of the expression.
Present when the expression had a hisRollup; every series is then numeric and bucket-stamped.
limitThe per-point raw-sample cap that applied.
matchedURIs the filter matched (before equipment-to-point expansion), first 200.
matchedCountOnly ever non-empty when matchedCount is 0: filter names that
are almost a Brick class or tag word (Air_Handeling_Unit,
temperture), with the nearest real ones. Never an error -
the name may be a valid Haystack marker or PROJ class the
vendored Brick can't know about.
HisSeries
idThe point's graph URI.
pointThe same identity GET /history?point= takes (URI minus the urn:point: prefix).
disDisplay name - the point's dis tag, else the last segment of its source topic.
unitkindHaystack kind - Number, Bool, or Str; from the point's kind tag, else inferred from the data. Always Number for a rollup.
brickClasstagsMarker tags on the point.
equipURI of the equipment this point brick:isPointOf, if any.
equipDistruncatedTrue if the point had more raw samples in the span than limit allowed.
TagsRequest
pointSame point identity POST /ingest uses - resolves to the same urn:point:{point} entity.
tagsHaystack tag name -> value. true for marker tags, any JSON scalar/object/array for valued tags.
tsUnix epoch seconds. Accepted for envelope symmetry with Reading; not currently used by classification.
ClassificationResult
pointThe point's full graph URI (urn:point:{point}).
outcomeSee mapping.classify_point: direct (a rule's tags are a full subset of this point's tags), fallback (partial overlap, a PROJ subclass of the closest rule), or miss (TD:UnmappedPoint, no rule shares any tag).
brickClassThe matched (or nearest-ancestor) Brick class name, or null on a miss.
EquipMergeRequest
aFull equip URI (e.g. urn:equip:fbf/ahu-3 or urn:equip:haystack:AHU-1), not a bare topic/ref.
bFull equip URI - the other identity for the same physical equipment.

