Demiton · Schema

platform_research_finding contract v3

The Platform research finding register contract, version 3. 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
label string how the finding is named on the surface, in the source's own terms - 'Mean total rework cost (115 Australian civil projects)'
caveat string the author's own plain-English limit on the figure, where the research pass gave one - 'Based on respondents' estimates, not records'; 'Size of the pot, not a loss'
currency currency ISO 4217 currency of a `per_*` figure (AUD, USD, NZD); null for ratios and `none`. The surface prints the amount in this currency, never as a bare dollar sign
confidence string the evidence grade, by the published rubric in github.com/demitonapp/disease-economics METHOD.md Section 4: `low` (read second-hand, unverifiable, or a model or estimate), `moderate` (read at source b
industries array ISIC Rev.4 divisions the evidence covers (`F42` civil engineering, `F` construction, `ALL`, `unknown`); the union of the finding's sources. Carried for display and future matching; not yet part of the
metric_key string the finding's stable identifier within its disease, e.g. `rework_total_civil_survey`. The seed's idempotency partner: re-running the seed updates the same row, and a genuinely new finding gets a new k
price_year integer the year a `per_*` amount is priced in; null otherwise
source_org string the publishing organisation or author of record
source_url string a resolvable link to the source
denominator string what a `ratio_of_other` figure is a share OF: `budget_at_decision`, `budget_at_announcement`, `construction_cost`, `amount_claimed`, `arbitration_cost`, `total_injury_cost` (the vocabulary of github.c
disease_key string which of the five margin diseases this finding prices - the key in `vocab/diseases.json` (`rework`, `overrun`, `forfeited_entitlements`, `disputes`, `non_compliance`)
sample_note string sample size, geography, sector and method - what bounds the figure. Null where the source did not disclose it
source_year integer the year of the source, for a vintage check - a 2001 benchmark and a 2025 one are not the same evidence
source_title string the paper, report or dataset title
exposure_kind string who bears the money: `contractor_loss` (the source measured money the contractor loses), `money_at_stake` (it measured how much is in play, not what is lost), `owner_side` (the client pays), or `socie
exposure_unit string how the figure may be projected: `ratio_of_contract` (multiplies a contract value), `ratio_of_other` (a share of something else, named by `denominator`; never multiplied), `per_wet_day`, `per_incident
jurisdictions array Where the evidence is from: ISO 3166 codes (`AU`, `AU-QLD`), `GLOBAL` (no limit claimed) or `unknown`; the union of the finding's sources. The exposure service applies a figure to a project only when
exposure_basis string what the figure is a percentage OF, in words - 'of original contract value'. Stored because the same disease yields 3-5% of one basis and 10% of another, and a bare number without its basis is the mos
exposure_value number the published figure in the source's own unit. A share of contract value is stored as a decimal fraction (10% is 0.10); a per-day or per-incident figure is stored in whole dollars. 0 when the source p
source_location string where in the document to look - 'abstract', 'p.5', 'table 23'. Null when the source did not permit it
source_secondary boolean true when the figure was read only through someone else's citation rather than at the primary document
View JSON Schema on GitHub

JSON Schema

demiton-io-platform_research_finding-v3-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.demiton.io/registers/platform_research_finding/v3.json",
  "title": "platform_research_finding contract v3",
  "type": "object",
  "required": [
    "confidence",
    "disease_key",
    "exposure_basis",
    "exposure_kind",
    "exposure_unit",
    "exposure_value",
    "label",
    "metric_key",
    "source_org",
    "source_title",
    "source_url"
  ],
  "properties": {
    "label": {
      "type": "string",
      "description": "how the finding is named on the surface, in the source's own terms - 'Mean total rework cost (115 Australian civil projects)'",
      "x-demiton-requiredness": "required"
    },
    "caveat": {
      "type": "string",
      "description": "the author's own plain-English limit on the figure, where the research pass gave one - 'Based on respondents' estimates, not records'; 'Size of the pot, not a loss'",
      "x-demiton-requiredness": "optional"
    },
    "currency": {
      "type": "currency",
      "description": "ISO 4217 currency of a `per_*` figure (AUD, USD, NZD); null for ratios and `none`. The surface prints the amount in this currency, never as a bare dollar sign",
      "x-demiton-requiredness": "optional"
    },
    "confidence": {
      "type": "string",
      "description": "the evidence grade, by the published rubric in github.com/demitonapp/disease-economics METHOD.md Section 4: `low` (read second-hand, unverifiable, or a model or estimate), `moderate` (read at source but one organisation's data, people's own estimates, or a sampling problem the caveat names), `high` (read at source and none of those). Carried so the surface can rank its evidence honestly instead of presenting a secondary citation as a measurement",
      "x-demiton-requiredness": "required"
    },
    "industries": {
      "type": "array",
      "description": "ISIC Rev.4 divisions the evidence covers (`F42` civil engineering, `F` construction, `ALL`, `unknown`); the union of the finding's sources. Carried for display and future matching; not yet part of the rule",
      "items": {
        "type": "string"
      },
      "x-demiton-requiredness": "optional"
    },
    "metric_key": {
      "type": "string",
      "description": "the finding's stable identifier within its disease, e.g. `rework_total_civil_survey`. The seed's idempotency partner: re-running the seed updates the same row, and a genuinely new finding gets a new key",
      "x-demiton-requiredness": "required"
    },
    "price_year": {
      "type": "integer",
      "description": "the year a `per_*` amount is priced in; null otherwise",
      "x-demiton-requiredness": "optional"
    },
    "source_org": {
      "type": "string",
      "description": "the publishing organisation or author of record",
      "x-demiton-requiredness": "required"
    },
    "source_url": {
      "type": "string",
      "description": "a resolvable link to the source",
      "x-demiton-requiredness": "required"
    },
    "denominator": {
      "type": "string",
      "description": "what a `ratio_of_other` figure is a share OF: `budget_at_decision`, `budget_at_announcement`, `construction_cost`, `amount_claimed`, `arbitration_cost`, `total_injury_cost` (the vocabulary of github.com/demitonapp/disease-economics schema/finding.schema.json). Null for every other unit",
      "x-demiton-requiredness": "optional"
    },
    "disease_key": {
      "type": "string",
      "description": "which of the five margin diseases this finding prices - the key in `vocab/diseases.json` (`rework`, `overrun`, `forfeited_entitlements`, `disputes`, `non_compliance`)",
      "x-demiton-requiredness": "required"
    },
    "sample_note": {
      "type": "string",
      "description": "sample size, geography, sector and method - what bounds the figure. Null where the source did not disclose it",
      "x-demiton-requiredness": "optional"
    },
    "source_year": {
      "type": "integer",
      "description": "the year of the source, for a vintage check - a 2001 benchmark and a 2025 one are not the same evidence",
      "x-demiton-requiredness": "optional"
    },
    "source_title": {
      "type": "string",
      "description": "the paper, report or dataset title",
      "x-demiton-requiredness": "required"
    },
    "exposure_kind": {
      "type": "string",
      "description": "who bears the money: `contractor_loss` (the source measured money the contractor loses), `money_at_stake` (it measured how much is in play, not what is lost), `owner_side` (the client pays), or `societal` (workers and the community). Only contractor_loss and money_at_stake may reach the headline ledger",
      "x-demiton-requiredness": "required"
    },
    "exposure_unit": {
      "type": "string",
      "description": "how the figure may be projected: `ratio_of_contract` (multiplies a contract value), `ratio_of_other` (a share of something else, named by `denominator`; never multiplied), `per_wet_day`, `per_incident`, `per_year_industry`, or `none` when no published figure exists. Multiplying a per-day or per-incident figure, or a share of an arbitration bill, by a contract value is nonsense, so the unit is declared rather than assumed",
      "x-demiton-requiredness": "required"
    },
    "jurisdictions": {
      "type": "array",
      "description": "Where the evidence is from: ISO 3166 codes (`AU`, `AU-QLD`), `GLOBAL` (no limit claimed) or `unknown`; the union of the finding's sources. The exposure service applies a figure to a project only when this holds the project's place, its country, or GLOBAL",
      "items": {
        "type": "string"
      },
      "x-demiton-requiredness": "optional"
    },
    "exposure_basis": {
      "type": "string",
      "description": "what the figure is a percentage OF, in words - 'of original contract value'. Stored because the same disease yields 3-5% of one basis and 10% of another, and a bare number without its basis is the most common way a benchmark misleads",
      "x-demiton-requiredness": "required"
    },
    "exposure_value": {
      "type": "number",
      "description": "the published figure in the source's own unit. A share of contract value is stored as a decimal fraction (10% is 0.10); a per-day or per-incident figure is stored in whole dollars. 0 when the source published no such figure",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "decimal fraction for ratio_of_contract; AUD for per_wet_day and per_incident"
    },
    "source_location": {
      "type": "string",
      "description": "where in the document to look - 'abstract', 'p.5', 'table 23'. Null when the source did not permit it",
      "x-demiton-requiredness": "optional"
    },
    "source_secondary": {
      "type": "boolean",
      "description": "true when the figure was read only through someone else's citation rather than at the primary document",
      "x-demiton-requiredness": "optional"
    }
  },
  "x-demiton-register-type": "platform_research_finding",
  "x-demiton-contract-version": "3.0.1",
  "x-demiton-store": "platform",
  "x-demiton-axes": [],
  "x-demiton-measures": [
    {
      "key": "ratio_of_contract",
      "accumulation": "instantaneous",
      "dtype": "decimal",
      "unit": "dimensionless"
    }
  ],
  "x-demiton-provenance": {
    "standards": []
  },
  "description": "The Platform research finding register contract, version 3. 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_research_finding/",
  "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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/demiton-io-platform_research_finding-v3"
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.