Demiton · Schema

contract_terms contract v2

Commercial terms extracted from each contract document: payment terms, retention, notice windows, and liquidated damages (contract-wide and per milestone).

CompanyConstructionCivil EngineeringProject ManagementComplianceMCPArtificial IntelligenceOpen Contracting

Properties

Name Type Description
ld_cap number Liquidated damages ceiling for the whole contract (a per-milestone cap is `ld_milestones[].cap_amount`).
ld_rate number Liquidated damages rate per calendar day.
currency currency The currency every amount on this record is in (contract_sum, ld_rate, ld_cap, ld_milestones, public_liability, professional_indemnity). As the document states it; where it states only a symbol such a
security string Form/amount of security, e.g. two unconditional undertakings totalling 5%.
eot_grounds array Pre-classified grounds on which this contract allows an extension of time to be claimed, so an event fact (e.g. a rain day) can be matched against its clause without free-text parsing at dispatch time
contract_sum number Total contract/subcontract price or lump sum, excluding GST. A sum the document states GST-inclusive is stored with the GST taken out: the document's own GST figure when it states one, otherwise the g
jurisdiction jurisdiction The jurisdiction whose law governs the contract (its governing-law clause or security of payment Act), e.g. `AU-QLD`, `NZ`.
contract_date string The date the contract was entered into. Where the obligation library has a duty whose rule changed on a date for contracts entered into on or after it, this is the date that picks the version. As the
contract_form string The standard conditions of contract the document is based on (amended or not), so an evidence standard can fall back to the form's own notice windows when the contract states none.
ld_milestones array Damages stated per milestone or separable portion (sectional completion), one entry per clause. A single contract-wide LD stays in `ld_rate`/`ld_cap`.
retention_pct number Retention/security percentage of the contract price.
time_bar_days integer Window after the notice above within which the substantiated claim itself must be submitted, or it is time-barred (NEC-style two-stage notice/substantiation).
indemnity_scope string The indemnity clause's scope and any cap or carve-outs, recorded verbatim.
notice_eot_days integer Contractual notice window to raise a delay / extension-of-time claim after the delaying event.
security_expiry string Date the security (bank guarantee / undertaking) is returnable.
escalation_basis string Whether the contract lets the price move with input costs, and on what. `none`: the contract carries no rise-and-fall or price-adjustment clause. `index`: the clause adjusts on published indices, name
public_liability number Public liability insurance cover amount.
escalation_basket array The indices the clause adjusts on, one entry per line, with the weight of each over the adjustable share. The weights sum to 100. `index_name` is the index as the clause names it; `series_key` is the
escalation_cap_pct number The largest adjustment the clause allows, as a percent; `escalation_cap_scope` says of what.
payment_timing_days integer Contract time for payment of a payment claim.
service_for_notices array The contract's notices clause as a per-party service profile - who may be served, at what address, by which permitted methods, and the deemed-service rule - one entry per party the clause names. This
escalation_cap_scope string What the cap limits. `per_claim`: each claim's adjusted move. `cumulative`: the running total of adjustments, as a share of `contract_sum`.
escalation_fixed_pct number The share of the price the clause holds fixed (the non-adjustable portion), from 0 to 100. Absent when the clause states none.
escalation_clause_ref string The clause that provides the adjustment, as the contract numbers and names it.
notice_variation_days integer Contractual notice window after a variation-triggering event, before which a variation claim must be raised or is time-barred.
escalation_base_period string The index period the contract's rates are priced at, as the clause states it, written `YYYY-Qn` for a quarterly index or `YYYY-MM` for a monthly one.
escalation_notice_days integer The window, from the progress claim, inside which the adjustment must be claimed.
escalation_notice_unit string Whether `escalation_notice_days` counts business or calendar days, as the clause states it.
insurance_requirements array Insurance types and minimum cover the contract requires - each entry an object with insurance_type, min_limit and endorsements - for cross-joining against insurance_certificate.expires_on.
notice_suspension_days integer Contractual notice window before a right to suspend work may be exercised.
professional_indemnity number Professional indemnity cover amount.
variation_overhead_pct number Overheads-and-profit percentage applied to variations.
dispute_resolution_path array The contract's dispute escalation ladder, in order (e.g. negotiation, mediation, expert determination, arbitration, litigation).
defects_liability_months integer Defects liability/correction period.
escalation_threshold_pct number The move, as a percent of the price, below which the clause makes no adjustment. Absent when the clause states no threshold.
practical_completion_date string Date for Practical Completion / Date for Completion, verbatim.
security_release_milestones array Milestones at which security is reduced or released - each entry an object naming the trigger and the amount or percentage released.
retention_release_milestones array Milestones at which retention is reduced or released - each entry an object naming the trigger (e.g. practical completion, end of defects liability) and the amount or percentage released.
escalation_index_lag_quarters integer How many quarters before a claim's work quarter the clause takes its index from. 0 when the clause uses the work quarter itself.
notice_latent_conditions_days integer Contractual notice window to notify latent or differing site conditions after they are encountered.
View JSON Schema on GitHub

JSON Schema

demiton-io-contract_terms-v2-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.demiton.io/registers/contract_terms/v2.json",
  "title": "contract_terms contract v2",
  "type": "object",
  "required": [
    "contract_sum",
    "payment_timing_days",
    "practical_completion_date",
    "retention_pct",
    "security"
  ],
  "properties": {
    "ld_cap": {
      "type": "number",
      "description": "Liquidated damages ceiling for the whole contract (a per-milestone cap is `ld_milestones[].cap_amount`).",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "in `currency`"
    },
    "ld_rate": {
      "type": "number",
      "description": "Liquidated damages rate per calendar day.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "in `currency`, per day"
    },
    "currency": {
      "type": "currency",
      "description": "The currency every amount on this record is in (contract_sum, ld_rate, ld_cap, ld_milestones, public_liability, professional_indemnity). As the document states it; where it states only a symbol such as `$`, the currency of the country whose law governs the contract (`jurisdiction`). A record with no currency has no usable amount.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "ISO 4217 alpha-3 code (e.g. `AUD`, `NZD`)",
      "pattern": "^[A-Z]{3}$"
    },
    "security": {
      "type": "string",
      "description": "Form/amount of security, e.g. two unconditional undertakings totalling 5%.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "n/a (form and/or amount)"
    },
    "eot_grounds": {
      "type": "array",
      "description": "Pre-classified grounds on which this contract allows an extension of time to be claimed, so an event fact (e.g. a rain day) can be matched against its clause without free-text parsing at dispatch time.",
      "items": {
        "type": "string",
        "enum": [
          "weather",
          "latent_conditions",
          "variation",
          "suspension",
          "access",
          "other"
        ]
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (closed enum)"
    },
    "contract_sum": {
      "type": "number",
      "description": "Total contract/subcontract price or lump sum, excluding GST. A sum the document states GST-inclusive is stored with the GST taken out: the document's own GST figure when it states one, otherwise the governing country's rate (AU 10%, NZ 15%); with neither, no sum is stored. Parser rejects <1000 as a clause-number artefact.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "in `currency`, ex GST, plain (no symbol/commas)"
    },
    "jurisdiction": {
      "type": "jurisdiction",
      "description": "The jurisdiction whose law governs the contract (its governing-law clause or security of payment Act), e.g. `AU-QLD`, `NZ`.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "ISO 3166-1 or 3166-2 code"
    },
    "contract_date": {
      "type": "string",
      "description": "The date the contract was entered into. Where the obligation library has a duty whose rule changed on a date for contracts entered into on or after it, this is the date that picks the version. As the document states it (a signed copy's date of agreement, else the date on the letter of acceptance); a draft's date is a reading, not a fact. Never defaulted: a record with no contract date says so, and a rule that turns on it cannot be measured.",
      "format": "date",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "ISO 8601 date"
    },
    "contract_form": {
      "type": "string",
      "description": "The standard conditions of contract the document is based on (amended or not), so an evidence standard can fall back to the form's own notice windows when the contract states none.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (closed vocabulary, enforced by the parser: `GC21`, `TFNSW_GC21` (Transport for NSW's amended GC21, C2-GC21), `TMR_TIC`, `MRWA_MAJOR`, `MRWA_MINOR`, `AS4000_1997`, `AS4000_2025`, `AS2124`, `AS4902`, `NZS3910_2013`, `NZS3910_2023`, `other`)"
    },
    "ld_milestones": {
      "type": "array",
      "description": "Damages stated per milestone or separable portion (sectional completion), one entry per clause. A single contract-wide LD stays in `ld_rate`/`ld_cap`.",
      "items": {
        "type": "object",
        "properties": {
          "cap_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "penalty_type": {
            "type": "string",
            "enum": [
              "liquidated_damages",
              "delay_damages",
              "bonus",
              "other"
            ]
          },
          "rate_per_day": {
            "type": [
              "number",
              "null"
            ]
          },
          "milestone_name": {
            "type": "string"
          },
          "clause_reference": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "milestone_name",
          "penalty_type"
        ]
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (object list; rate_per_day and cap_amount in `currency`)"
    },
    "retention_pct": {
      "type": "number",
      "description": "Retention/security percentage of the contract price.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "percent, 0–100 exclusive of 0"
    },
    "time_bar_days": {
      "type": "integer",
      "description": "Window after the notice above within which the substantiated claim itself must be submitted, or it is time-barred (NEC-style two-stage notice/substantiation).",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    },
    "indemnity_scope": {
      "type": "string",
      "description": "The indemnity clause's scope and any cap or carve-outs, recorded verbatim.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "free text as written"
    },
    "notice_eot_days": {
      "type": "integer",
      "description": "Contractual notice window to raise a delay / extension-of-time claim after the delaying event.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    },
    "security_expiry": {
      "type": "string",
      "description": "Date the security (bank guarantee / undertaking) is returnable.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "ISO 8601 date"
    },
    "escalation_basis": {
      "type": "string",
      "description": "Whether the contract lets the price move with input costs, and on what. `none`: the contract carries no rise-and-fall or price-adjustment clause. `index`: the clause adjusts on published indices, named in `escalation_basket`. `invoice`: the clause adjusts on supplier invoices. Absent means the clause has not been captured, which is not the same as `none`.",
      "enum": [
        "none",
        "index",
        "invoice"
      ],
      "x-demiton-requiredness": "optional"
    },
    "public_liability": {
      "type": "number",
      "description": "Public liability insurance cover amount.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "in `currency`"
    },
    "escalation_basket": {
      "type": "array",
      "description": "The indices the clause adjusts on, one entry per line, with the weight of each over the adjustable share. The weights sum to 100. `index_name` is the index as the clause names it; `series_key` is the `platform_rate` series that publishes exactly that index, absent when no such series is held. A line is never mapped to a different index.",
      "items": {
        "type": "object",
        "properties": {
          "index_name": {
            "type": "string",
            "description": "the index as the clause names it"
          },
          "series_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "the platform_rate series that publishes this index"
          },
          "weight_pct": {
            "type": "number",
            "description": "this line's weight over the adjustable share, 0 to 100"
          }
        },
        "required": [
          "index_name",
          "weight_pct"
        ]
      },
      "x-demiton-requiredness": "optional"
    },
    "escalation_cap_pct": {
      "type": "number",
      "description": "The largest adjustment the clause allows, as a percent; `escalation_cap_scope` says of what.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "percent"
    },
    "payment_timing_days": {
      "type": "integer",
      "description": "Contract time for payment of a payment claim.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "days"
    },
    "service_for_notices": {
      "type": "array",
      "description": "The contract's notices clause as a per-party service profile - who may be served, at what address, by which permitted methods, and the deemed-service rule - one entry per party the clause names. This is what the contract SAYS about serving notices; a notice actually served is a separate contract_notice record.",
      "items": {
        "type": "object",
        "properties": {
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "party_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "party_role": {
            "type": "string",
            "enum": [
              "superintendent",
              "principal",
              "contractor",
              "other"
            ]
          },
          "email_basis": {
            "type": "string",
            "enum": [
              "declared_permitted",
              "declared_excluded",
              "inferred_from_silence"
            ]
          },
          "email_address": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_clause": {
            "type": [
              "string",
              "null"
            ]
          },
          "email_permitted": {
            "type": "boolean"
          },
          "deemed_service_days": {
            "type": [
              "integer",
              "null"
            ]
          },
          "deemed_service_basis": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "business",
              "calendar",
              "working",
              null
            ]
          },
          "deemed_service_method": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "party_role",
          "methods",
          "email_permitted",
          "email_basis"
        ]
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (object list)"
    },
    "escalation_cap_scope": {
      "type": "string",
      "description": "What the cap limits. `per_claim`: each claim's adjusted move. `cumulative`: the running total of adjustments, as a share of `contract_sum`.",
      "enum": [
        "per_claim",
        "cumulative"
      ],
      "x-demiton-requiredness": "optional"
    },
    "escalation_fixed_pct": {
      "type": "number",
      "description": "The share of the price the clause holds fixed (the non-adjustable portion), from 0 to 100. Absent when the clause states none.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "percent"
    },
    "escalation_clause_ref": {
      "type": "string",
      "description": "The clause that provides the adjustment, as the contract numbers and names it.",
      "x-demiton-requiredness": "optional"
    },
    "notice_variation_days": {
      "type": "integer",
      "description": "Contractual notice window after a variation-triggering event, before which a variation claim must be raised or is time-barred.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    },
    "escalation_base_period": {
      "type": "string",
      "description": "The index period the contract's rates are priced at, as the clause states it, written `YYYY-Qn` for a quarterly index or `YYYY-MM` for a monthly one.",
      "x-demiton-requiredness": "optional"
    },
    "escalation_notice_days": {
      "type": "integer",
      "description": "The window, from the progress claim, inside which the adjustment must be claimed.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    },
    "escalation_notice_unit": {
      "type": "string",
      "description": "Whether `escalation_notice_days` counts business or calendar days, as the clause states it.",
      "enum": [
        "business_days",
        "calendar_days"
      ],
      "x-demiton-requiredness": "optional"
    },
    "insurance_requirements": {
      "type": "array",
      "description": "Insurance types and minimum cover the contract requires - each entry an object with insurance_type, min_limit and endorsements - for cross-joining against insurance_certificate.expires_on.",
      "items": {
        "type": "object"
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (object list)"
    },
    "notice_suspension_days": {
      "type": "integer",
      "description": "Contractual notice window before a right to suspend work may be exercised.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    },
    "professional_indemnity": {
      "type": "number",
      "description": "Professional indemnity cover amount.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "in `currency`"
    },
    "variation_overhead_pct": {
      "type": "number",
      "description": "Overheads-and-profit percentage applied to variations.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "percent, 0–100"
    },
    "dispute_resolution_path": {
      "type": "array",
      "description": "The contract's dispute escalation ladder, in order (e.g. negotiation, mediation, expert determination, arbitration, litigation).",
      "items": {
        "type": "string"
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "ordered list of step names, as written"
    },
    "defects_liability_months": {
      "type": "integer",
      "description": "Defects liability/correction period.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "months, converted from weeks/years"
    },
    "escalation_threshold_pct": {
      "type": "number",
      "description": "The move, as a percent of the price, below which the clause makes no adjustment. Absent when the clause states no threshold.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "percent"
    },
    "practical_completion_date": {
      "type": "string",
      "description": "Date for Practical Completion / Date for Completion, verbatim.",
      "x-demiton-requiredness": "required",
      "x-demiton-unit": "free text as written (e.g. \"11 January 2027\", \"26 weeks after Date of Contract\")"
    },
    "security_release_milestones": {
      "type": "array",
      "description": "Milestones at which security is reduced or released - each entry an object naming the trigger and the amount or percentage released.",
      "items": {
        "type": "object"
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (object list)"
    },
    "retention_release_milestones": {
      "type": "array",
      "description": "Milestones at which retention is reduced or released - each entry an object naming the trigger (e.g. practical completion, end of defects liability) and the amount or percentage released.",
      "items": {
        "type": "object"
      },
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "n/a (object list)"
    },
    "escalation_index_lag_quarters": {
      "type": "integer",
      "description": "How many quarters before a claim's work quarter the clause takes its index from. 0 when the clause uses the work quarter itself.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "count"
    },
    "notice_latent_conditions_days": {
      "type": "integer",
      "description": "Contractual notice window to notify latent or differing site conditions after they are encountered.",
      "x-demiton-requiredness": "optional",
      "x-demiton-unit": "days"
    }
  },
  "x-demiton-register-type": "contract_terms",
  "x-demiton-contract-version": "2.1.0",
  "x-demiton-store": "tenant",
  "x-demiton-axes": [],
  "x-demiton-measures": [],
  "x-demiton-provenance": {
    "standards": [
      {
        "code": "AS 2124-1992",
        "title": "General Conditions of Contract (superseded)",
        "access": "paywalled_secondary",
        "clause": "Annexure Part A",
        "region": "Australia",
        "edition": "1992",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS 4000-1997",
        "title": "General Conditions of Contract (superseded edition, still in use)",
        "access": "paywalled_secondary",
        "clause": "cl 37.1/37.2 (per commentary)",
        "region": "Australia",
        "edition": "1997",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS 4000:2025",
        "title": "General Conditions of Contract (construct only)",
        "access": "paywalled_secondary",
        "clause": "Annexure Part A; cl 37.2; cl 42 (per commentary)",
        "region": "Australia",
        "edition": "2025",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AS 4902-2000",
        "title": "General Conditions of Contract for Design and Construct",
        "access": "paywalled_secondary",
        "region": "Australia",
        "edition": "2000",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AU SoP Acts",
        "title": "Australian state and territory Security of Payment Acts (NSW 1999, QLD 2017, VIC 2002, WA 2021, SA 2009, TAS 2009, ACT 2009, NT 2004)",
        "access": "public_summary",
        "region": "Australia",
        "edition": "various",
        "checked_on": "2026-09-14"
      },
      {
        "code": "VIC BCISP Act 2002",
        "title": "Building and Construction Industry Security of Payment Act 2002 (Vic), as amended from 15 Apr 2026",
        "access": "public_summary",
        "clause": "ss 17A-17H (per commentary)",
        "region": "Australia",
        "edition": "2002 as amended 15 Apr 2026",
        "checked_on": "2026-09-14"
      },
      {
        "code": "WA BCISP Act 2021",
        "title": "Building and Construction Industry (Security of Payment) Act 2021 (WA)",
        "access": "full_text_verified",
        "clause": "ss 59, 71-77",
        "region": "Australia",
        "edition": "2021",
        "checked_on": "2026-09-14"
      },
      {
        "code": "NZ CCA 2002",
        "title": "Construction Contracts Act 2002 (NZ), 2002 No 46, as amended 2015 and 2023",
        "access": "full_text_verified",
        "clause": "ss 18B, 18FD, 20, 22",
        "region": "New Zealand",
        "edition": "as at 5 Oct 2023",
        "checked_on": "2026-09-14"
      },
      {
        "code": "HGCRA 1996 Part II",
        "title": "Housing Grants, Construction and Regeneration Act 1996, Part II (as amended by LDEDCA 2009)",
        "access": "full_text_verified",
        "clause": "s 110(1)",
        "region": "United Kingdom",
        "edition": "1996 c. 53 as amended",
        "checked_on": "2026-09-14"
      },
      {
        "code": "SI 1998/649",
        "title": "Scheme for Construction Contracts (England and Wales) Regulations 1998",
        "access": "full_text_verified",
        "clause": "Part II para 8",
        "region": "United Kingdom",
        "edition": "1998 as amended 2011",
        "checked_on": "2026-09-14"
      },
      {
        "code": "AIA G702-1992 / G703-1992",
        "title": "Application and Certificate for Payment; Continuation Sheet",
        "access": "public_summary",
        "region": "United States",
        "edition": "1992 (current base editions)",
        "checked_on": "2026-09-14"
      }
    ]
  },
  "description": "Commercial terms extracted from each contract document: payment terms, retention, notice windows, and liquidated damages (contract-wide and per milestone).",
  "x-demiton-contract-url": "https://docs.demiton.io/registers/contract_terms/",
  "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-contract_terms-v2"
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.