Demiton · Schema
platform_obligation contract v1
The Platform obligation register contract, version 1. JSON Schema (draft 2020-12); x-demiton-* keywords carry Demiton's own meaning and standard validators ignore them.
CompanyConstructionCivil EngineeringProject ManagementComplianceMCPArtificial IntelligenceOpen Contracting
Properties
| Name | Type | Description |
|---|---|---|
| duty | string | the duty in one sentence |
| kind | string | ENGINE ROUTING, not published: how the duty is measured against a project's registers - a cadence (`periodic`), a window after an anchor event (`event_bound`), a retention period (`retention`) or a st |
| grade | string | how close to the primary source the reading was |
| anchor | object | ENGINE ROUTING, not published: for an `event_bound` row, the event its window runs from (`register`, `date_field`, `target_date_field`) |
| caveat | string | what bounds this obligation |
| source | string | which of the seven sources the instrument belongs to |
| disease | string | which of the five diseases this obligation guards against |
| measure | string | ENGINE ROUTING, not published: the computation that judges this row, `kind` unless a named strategy overrides it |
| trigger | string | the event that starts this obligation's clock: the obligation's `trigger`, a key of vocab/event_types.json. Empty when the window is not anchored to an event |
| register | string | ENGINE ROUTING, not published: the tenant register this obligation is evaluated against |
| severity | integer | the contract-risk tier (1-4) |
| duty_shape | string | the duty this row states across instruments: the obligation's `duty_shape`, a key of vocab/duty_shapes.json |
| source_url | string | the primary source for this exact duty |
| consequence | string | what missing the duty costs, as the source states it |
| window_unit | string | unit of `window_value` |
| dispute_type | string | ENGINE ROUTING, not published: which of the five SM026 dispute-type buckets this obligation was transcribed from - a narrower, internal taxonomy the anchor map is keyed on, distinct from `disease` |
| jurisdiction | jurisdiction | where this obligation applies: the ISO 3166-1/3166-2 code |
| research_row | string | the row id in Demiton's own research record this obligation was transcribed from |
| source_title | string | the instrument's title |
| standard_key | string | the obligation's stable key, e.g. `payment.schedule_due.au-qld` |
| window_value | number | the cadence or window length in `window_unit` |
| evidence_kind | string | how this obligation is evidenced once switched on |
| in_force_from | string | the date this version starts to apply (ISO); absent on the original version |
| instrument_id | string | the instrument this obligation belongs to, e.g. `bif_act_2017_qld` |
| source_clause | string | the clause, section or paragraph |
| trigger_event | object | the `trigger`'s entry in vocab/event_types.json, resolved beside it: register, date field, subject, and the match, requires_item and reference fields that say which records count |
| approval_class | string | what kind of sign-off this obligation's evidence needs: the obligation's `approval_class`, a member of vocab/approval_classes.json |
| in_force_until | string | the last date this version applies (ISO); derived from the next version's start, or the end of a repealed duty |
| register_match | object | ENGINE ROUTING, not published: equality predicate on `register` selecting the evidence |
| threshold_unit | string | unit of `threshold_value`, e.g. `percent` |
| applies_to_form | string | the contract form this obligation is written for; `statute` for a legislative rule, `any` when form-independent |
| protection_type | string | the engine that runs this obligation once switched on |
| threshold_value | number | for a `threshold` obligation: the limit, or the labelled default when `threshold_set_by` is `org` |
| in_force_from_by | string | the selecting date that decides `in_force_from`: a key of vocab/selecting_dates.json |
| threshold_set_by | string | `library` (the limit is the instrument's) or `org` (the contractor sets its own at switch-on, and it is never published) |
| evidence_register | string | for evidence_kind=record_in_demiton|register|not_collected: the shelf_type |
| in_force_until_by | string | the selecting date that decides `in_force_until`: a key of vocab/selecting_dates.json |
| obligation_version | string | which dated version of this key the row states: its `in_force.from` date, or `original` when the key has no dated version (SM052) |
| threshold_direction | string | for a `threshold` obligation: `max` (a ceiling) or `min` (a floor), the side of the line that is strict |
| window_source_field | string | the `contract_terms` field whose value overrides `window_value` when the contract states its own window (SM030 decision 5: strictest wins) |
| citation_access_date | string | when the primary source was read |
| evidence_system_type | string | for evidence_kind=register only: the system type that would fill it |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://docs.demiton.io/registers/platform_obligation/v1.json",
"title": "platform_obligation contract v1",
"type": "object",
"required": [
"applies_to_form",
"citation_access_date",
"consequence",
"disease",
"dispute_type",
"duty",
"evidence_kind",
"grade",
"instrument_id",
"jurisdiction",
"kind",
"protection_type",
"register",
"severity",
"source",
"source_title",
"source_url",
"standard_key"
],
"properties": {
"duty": {
"type": "string",
"description": "the duty in one sentence",
"x-demiton-requiredness": "required"
},
"kind": {
"type": "string",
"description": "ENGINE ROUTING, not published: how the duty is measured against a project's registers - a cadence (`periodic`), a window after an anchor event (`event_bound`), a retention period (`retention`) or a standing condition (`state`)",
"enum": [
"periodic",
"event_bound",
"retention",
"state"
],
"x-demiton-requiredness": "required"
},
"grade": {
"type": "string",
"description": "how close to the primary source the reading was",
"enum": [
"primary_read",
"primary_via_secondary",
"demiton_default",
"inherited"
],
"x-demiton-requiredness": "required"
},
"anchor": {
"type": "object",
"description": "ENGINE ROUTING, not published: for an `event_bound` row, the event its window runs from (`register`, `date_field`, `target_date_field`)",
"x-demiton-requiredness": "optional"
},
"caveat": {
"type": "string",
"description": "what bounds this obligation",
"x-demiton-requiredness": "optional"
},
"source": {
"type": "string",
"description": "which of the seven sources the instrument belongs to",
"enum": [
"contract",
"law",
"principal",
"approvals",
"counterparties",
"workforce",
"own_commitments"
],
"x-demiton-requiredness": "required"
},
"disease": {
"type": "string",
"description": "which of the five diseases this obligation guards against",
"enum": [
"rework",
"overrun",
"forfeited_entitlements",
"disputes",
"non_compliance"
],
"x-demiton-requiredness": "required"
},
"measure": {
"type": "string",
"description": "ENGINE ROUTING, not published: the computation that judges this row, `kind` unless a named strategy overrides it",
"x-demiton-requiredness": "optional"
},
"trigger": {
"type": "string",
"description": "the event that starts this obligation's clock: the obligation's `trigger`, a key of vocab/event_types.json. Empty when the window is not anchored to an event",
"x-demiton-requiredness": "optional"
},
"register": {
"type": "string",
"description": "ENGINE ROUTING, not published: the tenant register this obligation is evaluated against",
"x-demiton-requiredness": "required"
},
"severity": {
"type": "integer",
"description": "the contract-risk tier (1-4)",
"x-demiton-requiredness": "required"
},
"duty_shape": {
"type": "string",
"description": "the duty this row states across instruments: the obligation's `duty_shape`, a key of vocab/duty_shapes.json",
"x-demiton-requiredness": "optional"
},
"source_url": {
"type": "string",
"description": "the primary source for this exact duty",
"x-demiton-requiredness": "required"
},
"consequence": {
"type": "string",
"description": "what missing the duty costs, as the source states it",
"enum": [
"barred",
"reduced_per_day",
"costs_excluded",
"liable_full_amount",
"damages_only",
"offence",
"breach",
"guidance"
],
"x-demiton-requiredness": "required"
},
"window_unit": {
"type": "string",
"description": "unit of `window_value`",
"enum": [
"hours",
"days",
"business_days",
"working_days",
"months"
],
"x-demiton-requiredness": "optional"
},
"dispute_type": {
"type": "string",
"description": "ENGINE ROUTING, not published: which of the five SM026 dispute-type buckets this obligation was transcribed from - a narrower, internal taxonomy the anchor map is keyed on, distinct from `disease`",
"x-demiton-requiredness": "required"
},
"jurisdiction": {
"type": "jurisdiction",
"description": "where this obligation applies: the ISO 3166-1/3166-2 code",
"x-demiton-requiredness": "required"
},
"research_row": {
"type": "string",
"description": "the row id in Demiton's own research record this obligation was transcribed from",
"x-demiton-requiredness": "optional"
},
"source_title": {
"type": "string",
"description": "the instrument's title",
"x-demiton-requiredness": "required"
},
"standard_key": {
"type": "string",
"description": "the obligation's stable key, e.g. `payment.schedule_due.au-qld`",
"x-demiton-requiredness": "required"
},
"window_value": {
"type": "number",
"description": "the cadence or window length in `window_unit`",
"x-demiton-requiredness": "optional"
},
"evidence_kind": {
"type": "string",
"description": "how this obligation is evidenced once switched on",
"enum": [
"built_in",
"record_in_demiton",
"register",
"not_collected"
],
"x-demiton-requiredness": "required"
},
"in_force_from": {
"type": "string",
"description": "the date this version starts to apply (ISO); absent on the original version",
"x-demiton-requiredness": "optional"
},
"instrument_id": {
"type": "string",
"description": "the instrument this obligation belongs to, e.g. `bif_act_2017_qld`",
"x-demiton-requiredness": "required"
},
"source_clause": {
"type": "string",
"description": "the clause, section or paragraph",
"x-demiton-requiredness": "optional"
},
"trigger_event": {
"type": "object",
"description": "the `trigger`'s entry in vocab/event_types.json, resolved beside it: register, date field, subject, and the match, requires_item and reference fields that say which records count",
"x-demiton-requiredness": "optional"
},
"approval_class": {
"type": "string",
"description": "what kind of sign-off this obligation's evidence needs: the obligation's `approval_class`, a member of vocab/approval_classes.json",
"enum": [
"geotechnical",
"quality",
"safety_environment",
"variations_claims",
"payments",
"general"
],
"x-demiton-requiredness": "optional"
},
"in_force_until": {
"type": "string",
"description": "the last date this version applies (ISO); derived from the next version's start, or the end of a repealed duty",
"x-demiton-requiredness": "optional"
},
"register_match": {
"type": "object",
"description": "ENGINE ROUTING, not published: equality predicate on `register` selecting the evidence",
"x-demiton-requiredness": "optional"
},
"threshold_unit": {
"type": "string",
"description": "unit of `threshold_value`, e.g. `percent`",
"x-demiton-requiredness": "optional"
},
"applies_to_form": {
"type": "string",
"description": "the contract form this obligation is written for; `statute` for a legislative rule, `any` when form-independent",
"x-demiton-requiredness": "required"
},
"protection_type": {
"type": "string",
"description": "the engine that runs this obligation once switched on",
"enum": [
"watch",
"countdown",
"check",
"threshold"
],
"x-demiton-requiredness": "required"
},
"threshold_value": {
"type": "number",
"description": "for a `threshold` obligation: the limit, or the labelled default when `threshold_set_by` is `org`",
"x-demiton-requiredness": "optional"
},
"in_force_from_by": {
"type": "string",
"description": "the selecting date that decides `in_force_from`: a key of vocab/selecting_dates.json",
"x-demiton-requiredness": "optional"
},
"threshold_set_by": {
"type": "string",
"description": "`library` (the limit is the instrument's) or `org` (the contractor sets its own at switch-on, and it is never published)",
"enum": [
"library",
"org"
],
"x-demiton-requiredness": "optional"
},
"evidence_register": {
"type": "string",
"description": "for evidence_kind=record_in_demiton|register|not_collected: the shelf_type",
"x-demiton-requiredness": "optional"
},
"in_force_until_by": {
"type": "string",
"description": "the selecting date that decides `in_force_until`: a key of vocab/selecting_dates.json",
"x-demiton-requiredness": "optional"
},
"obligation_version": {
"type": "string",
"description": "which dated version of this key the row states: its `in_force.from` date, or `original` when the key has no dated version (SM052)",
"x-demiton-requiredness": "optional"
},
"threshold_direction": {
"type": "string",
"description": "for a `threshold` obligation: `max` (a ceiling) or `min` (a floor), the side of the line that is strict",
"enum": [
"max",
"min"
],
"x-demiton-requiredness": "optional"
},
"window_source_field": {
"type": "string",
"description": "the `contract_terms` field whose value overrides `window_value` when the contract states its own window (SM030 decision 5: strictest wins)",
"x-demiton-requiredness": "optional"
},
"citation_access_date": {
"type": "string",
"description": "when the primary source was read",
"x-demiton-requiredness": "required",
"format": "date",
"x-demiton-type": "date"
},
"evidence_system_type": {
"type": "string",
"description": "for evidence_kind=register only: the system type that would fill it",
"enum": [
"finance",
"site_and_field",
"document_store"
],
"x-demiton-requiredness": "optional"
}
},
"x-demiton-register-type": "platform_obligation",
"x-demiton-contract-version": "1.4.1",
"x-demiton-store": "platform",
"x-demiton-axes": [],
"x-demiton-measures": [],
"x-demiton-provenance": {
"standards": []
},
"description": "The Platform obligation register contract, version 1. JSON Schema (draft 2020-12); x-demiton-* keywords carry Demiton's own meaning and standard validators ignore them.",
"x-demiton-contract-url": "https://docs.demiton.io/registers/platform_obligation/",
"x-demiton-register-catalog": "https://docs.demiton.io/concepts/register-catalog"
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/demiton-io-platform_obligation-v1"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.