Laboratory › Developers › Schemas
Schemas
15 published schemas. Every document this site emits is validated against its schema during the build, and a failure stops the build — so these are enforced contracts, not documentation that drifted.
Draft 2020-12. Canonical URIs are their published URLs; the OpenAPI document references them by URL rather than copying them, so there is exactly one definition of each.
| Schema | Version | Describes | Download |
|---|---|---|---|
ApiIndex |
1.0.0 |
The entry point document. A client that knows only the base URL can discover every other public document from here. | api-index.schema.json |
ResearchBundle |
1.0.0 |
A self-describing, portable scientific record. Designed to stay intelligible and checkable if tiffany.systems, its database and its search index all disappear. | bundle.schema.json |
Changes |
1.0.0 |
Scientific state changes, newest first. This feed carries weakening changes — executed falsifiers, new limitations, supersessions, withdrawals — not only publications. | changes.schema.json |
ClaimHistory |
1.0.0 |
Every version of one claim identity, oldest first. Supersession and withdrawal never remove a version from this list. | claim-history.schema.json |
ClaimIndex |
1.0.0 |
A list of claim identities. The scientific index and the fixture index share this shape so a client cannot be surprised by which one it is reading — the classification field is what distinguishes them. | claim-index.schema.json |
ClaimView |
1.0.0 |
One immutable claim version with everything a machine client needs to decide what it may and may not conclude: the record itself, its identity and digest, the evidence coverage map, the deterministic policy decisions, and the semantic diff against the previous version. | claim-view.schema.json |
Claim |
1.0.0 |
One immutable version of one scientific claim. The claim, not the paper, is the unit of publication. | claim.schema.json |
Delegation |
1.0.0 |
A grant of specific authority to a specific actor, bounded in scope, environment and time. No delegation exists today; the registry is empty and every rung of the ladder is held by nobody. A delegation grants operational permission only — it can never make content scientifically qualified. | delegation.schema.json |
ApiError |
1.0.0 |
The envelope returned by an implemented Tiffany API endpoint when it fails. It does not govern requests to unknown or nonexistent paths: those never reach a Tiffany endpoint and are answered by the hosting layer, which may return its own native response. Fixed in advance so the shape cannot be invented differently later under pressure. | error.schema.json |
OperationEnvelope |
1.0.0 |
One proposed machine operation against the canonical record model. This is a contract, not a live endpoint: nothing on this site accepts an envelope over the network, and no actor holds a delegation that would let one execute. Unknown fields fail closed, because a field the contract does not model may be the one carrying the claim. | operation-envelope.schema.json |
OperationResult |
1.0.0 |
The deterministic outcome of evaluating an operation envelope. Machine-readable throughout: a stop reason is typed data, not a sentence in a log that something later has to parse. | operation-result.schema.json |
PortalResource |
1.0.0 |
The canonical input contract for anything Tiffany offers or may one day offer. One record drives the human page and the machine document, so the two cannot disagree. Every optional field means UNKNOWN when absent and stays absent until an authorised input supplies it — the renderer never writes prose to cover a gap, and the ingestion validator rejects a record that asserts availability, capability or release without the object that would justify it. | portal-resource.schema.json |
QueryResult |
1.0.0 |
The answer to one bounded, named question, precomputed at build time. There is no query language and no execution surface. | query-result.schema.json |
ResourceIndex |
1.0.0 |
Every public resource record, with four status dimensions kept separate: development state, scientific status, release status and access. A client must not merge them — they answer different questions and frequently disagree, and a resource in discovery is neither a product awaiting release nor a product that failed. | resource-index.schema.json |
Status |
1.0.0 |
What is published, what is sealed, what is deferred. Operational state only — nothing here is evidence about any claim. | status.schema.json |
Validate a response yourself
curl -s https://tiffany.systems/api/schema/claim-view.schema.json -o claim-view.schema.json
curl -s https://tiffany.systems/api/demo/claims/demo-0001/v2.json -o v2.json
# then validate with any draft 2020-12 validator
Compatibility
- A new optional field is additive and does not change a schema version or the contract version.
- A removed field, a retyped field or a narrowed enum is breaking: new schema version and new contract version.
additionalProperties: falsethroughout. A response will never carry a field the schema does not name — which is what stops something like a confidence score appearing by accident.- Old records stay interpretable under the schema version they name. A record carries its own
schemafield for exactly this reason.
Not published here
Schemas for credentials, entitlements, private audit events and internal infrastructure are not published, because those objects do not exist yet and publishing their shape would describe a system nobody has built. When they exist, only the parts a public client must understand will be published.
Three reference documents — /api/ontology.json, /api/policy.json and
/api/deferred.json — have no envelope schema. They are self-describing: the definitions and rules they
contain are the contract, and wrapping them in a schema would add a layer without adding a guarantee.