{
"metric": "p95_latency_ms",
"value": 142.3,
"endpoint": "/api/search",
"timestamp": "2026-08-21T22:00:00Z"
}--kind — the bare family name. Free-form, but be consistent within a family"measurement", "query-plan", "computation-output").--intent — current (this is the one to take by default), member (one of several,--precedence), or pinned (explicitly held). A closed vocabulary — the system--content — @path/to/file.json (file), - (stdin), or omit for implicit stdin. Must betype, properties,required, additionalProperties, items, enum, const, pattern, the length, item-count andformat is one of those annotations: it is accepted but not enforced, so "format":
"date-time" documents a field without checking it (use pattern to check a form). Keys beginningx- are carried as written and ignored. Keywords such as $ref, $defs, allOf, anyOf andoneOf are refused at declare; the refusal names the first keyword or cap that failed and where —keyword allOf at /properties/when — and lists what is allowed. A const and everyenum member must be a scalar — a string of at most 256 bytes (JSON-escaped), a number, a booleannull — and a shape's schema holds at most 12,288 JSON values in all, at most 3,072 of themdefault, examples and x- values included. The declare routes hold thenever_declared is a first-classdeclared_not_yet_checked until the sweep reaches them, never as silently conforming.{
"type": "object",
"properties": {
"metric": { "type": "string" },
"value": { "type": "number" },
"endpoint": { "type": "string" },
"timestamp": { "type": "string", "minLength": 20 }
},
"required": ["metric", "value", "timestamp"]
}advisory (default) — a non-conforming commit succeeds and is recorded asdeclared_not_satisfied. The shape informs; it does not gate.enforcing — a non-conforming commit is refused, and the refusal carries what failed.advisory is the default because the registry exists to make shapes discoverable and informative,enforcing only when you want a hardmeasurement in one context maymeasurement in another. This is by construction: a shape declared--limit, the answer is {"artifacts": [...], "next": {"created": ..., "artifact_id": ...}}.next is not null, more follow: pass next.created and next.artifact_id back as--after-created and --after-id, with the same filters. Without --limit, the answer is every--include-folded returns it. The systemopen_meta — small, key-scoped metadata values (a status, a verified date, adescriptor) belong in open metadata. Data artifacts are for structured content of any sizetemper data-artifact:temper data-artifact schema: