Demiton · Schema

rate_card_verdict contract v1

The Rate card verdict 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
asset string the machine, when `subject_kind` is `plant`
detail string a one-line explanation for display
reason string why no rate can be proposed; required when `status` is `blocked`
run_on string the date of the run that measured it
status string `ready`: a new rate is proposed. `holds`: the current rate meets its target at replacement cost, so nothing is proposed. `approved`: a person approved the proposed rate and the register does not yet c
item_no string the item, when `subject_kind` is `item`
burn_lph number for a machine: litres per hour, from its fuel usage
currency currency the currency of every amount on this record (`current_rate`, `replacement_cost`, `proposed_rate`, `restocking_gap`, `fuel_pass_through`), an ISO 4217 alpha-3 code. A record with no currency has no usa
margin_now number (sell less book cost) over sell, as a fraction; absent when no book cost is held
current_rate number the sell price or charge rate in force
subject_kind string whether this record is about an item or a machine
approved_rate number the rate a person approved; present when `status` is `approved` or `applied`
proposed_rate number the rate that restores the target; absent unless `status` is `ready`
aged_to_period string the index period it was aged to
restocking_gap number (proposed less current) times the quantity on hand; 0 when nothing is held
formula_version string the version of the rate-card formula that computed this record
aged_from_period string the index period of that purchase, when it was aged
replacement_cost number for an item: the last price paid, aged by its series when the series is newer
evidence_fact_ids array the facts the measurement read: the item or rate, the purchase, the fuel usage and every price observation
fuel_pass_through number for a machine: the change in fuel cost per `rate_unit`, net of GST and fuel tax credits
target_margin_pct number the item's target margin, 0 to 100
replacement_source string where the replacement cost came from
margin_at_replacement number (sell less replacement cost) over sell, as a fraction
replacement_observed_on string the date of the purchase the replacement cost starts from
View JSON Schema on GitHub

JSON Schema

demiton-io-rate_card_verdict-v1-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.demiton.io/registers/rate_card_verdict/v1.json",
  "title": "rate_card_verdict contract v1",
  "type": "object",
  "required": [
    "currency",
    "detail",
    "evidence_fact_ids",
    "formula_version",
    "run_on",
    "status",
    "subject_kind"
  ],
  "properties": {
    "asset": {
      "type": "string",
      "description": "the machine, when `subject_kind` is `plant`",
      "x-demiton-requiredness": "optional",
      "x-demiton-reference": true
    },
    "detail": {
      "type": "string",
      "description": "a one-line explanation for display",
      "x-demiton-requiredness": "required"
    },
    "reason": {
      "type": "string",
      "description": "why no rate can be proposed; required when `status` is `blocked`",
      "enum": [
        "no_item_master_row",
        "no_currency_or_tax_basis",
        "no_target_margin",
        "no_purchase_price",
        "stale_price_no_series",
        "no_charge_rate",
        "no_burn_rate",
        "no_fuel_price"
      ],
      "x-demiton-requiredness": "optional"
    },
    "run_on": {
      "type": "string",
      "description": "the date of the run that measured it",
      "x-demiton-requiredness": "required",
      "format": "date",
      "x-demiton-type": "date"
    },
    "status": {
      "type": "string",
      "description": "`ready`: a new rate is proposed. `holds`: the current rate meets its target at replacement cost, so nothing is proposed. `approved`: a person approved the proposed rate and the register does not yet carry it. `applied`: a person approved a rate and the register now carries it or more. `blocked`: something is missing, named in `reason`.",
      "enum": [
        "ready",
        "holds",
        "approved",
        "applied",
        "blocked"
      ],
      "x-demiton-requiredness": "required"
    },
    "item_no": {
      "type": "string",
      "description": "the item, when `subject_kind` is `item`",
      "x-demiton-requiredness": "optional",
      "x-demiton-reference": true
    },
    "burn_lph": {
      "type": "number",
      "description": "for a machine: litres per hour, from its fuel usage",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "L/h"
    },
    "currency": {
      "type": "currency",
      "description": "the currency of every amount on this record (`current_rate`, `replacement_cost`, `proposed_rate`, `restocking_gap`, `fuel_pass_through`), an ISO 4217 alpha-3 code. A record with no currency has no usable amount.",
      "x-demiton-requiredness": "required"
    },
    "margin_now": {
      "type": "number",
      "description": "(sell less book cost) over sell, as a fraction; absent when no book cost is held",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "dimensionless"
    },
    "current_rate": {
      "type": "number",
      "description": "the sell price or charge rate in force",
      "x-demiton-requiredness": "optional"
    },
    "subject_kind": {
      "type": "string",
      "description": "whether this record is about an item or a machine",
      "enum": [
        "item",
        "plant"
      ],
      "x-demiton-requiredness": "required"
    },
    "approved_rate": {
      "type": "number",
      "description": "the rate a person approved; present when `status` is `approved` or `applied`",
      "x-demiton-requiredness": "optional"
    },
    "proposed_rate": {
      "type": "number",
      "description": "the rate that restores the target; absent unless `status` is `ready`",
      "x-demiton-requiredness": "optional"
    },
    "aged_to_period": {
      "type": "string",
      "description": "the index period it was aged to",
      "x-demiton-requiredness": "optional"
    },
    "restocking_gap": {
      "type": "number",
      "description": "(proposed less current) times the quantity on hand; 0 when nothing is held",
      "x-demiton-requiredness": "optional"
    },
    "formula_version": {
      "type": "string",
      "description": "the version of the rate-card formula that computed this record",
      "x-demiton-requiredness": "required"
    },
    "aged_from_period": {
      "type": "string",
      "description": "the index period of that purchase, when it was aged",
      "x-demiton-requiredness": "optional"
    },
    "replacement_cost": {
      "type": "number",
      "description": "for an item: the last price paid, aged by its series when the series is newer",
      "x-demiton-requiredness": "optional"
    },
    "evidence_fact_ids": {
      "type": "array",
      "description": "the facts the measurement read: the item or rate, the purchase, the fuel usage and every price observation",
      "x-demiton-requiredness": "required"
    },
    "fuel_pass_through": {
      "type": "number",
      "description": "for a machine: the change in fuel cost per `rate_unit`, net of GST and fuel tax credits",
      "x-demiton-requiredness": "optional"
    },
    "target_margin_pct": {
      "type": "number",
      "description": "the item's target margin, 0 to 100",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "percent"
    },
    "replacement_source": {
      "type": "string",
      "description": "where the replacement cost came from",
      "enum": [
        "purchase_line",
        "last_direct_cost",
        "aged_by_index"
      ],
      "x-demiton-requiredness": "optional"
    },
    "margin_at_replacement": {
      "type": "number",
      "description": "(sell less replacement cost) over sell, as a fraction",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "dimensionless"
    },
    "replacement_observed_on": {
      "type": "string",
      "description": "the date of the purchase the replacement cost starts from",
      "x-demiton-requiredness": "optional",
      "format": "date",
      "x-demiton-type": "date"
    }
  },
  "x-demiton-register-type": "rate_card_verdict",
  "x-demiton-contract-version": "1.1.0",
  "x-demiton-store": "tenant",
  "x-demiton-axes": [],
  "x-demiton-measures": [],
  "x-demiton-provenance": {
    "standards": []
  },
  "description": "The Rate card verdict 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/rate_card_verdict/",
  "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-rate_card_verdict-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.