Demiton · Schema
plant_snapshot contract v1
The plant register at a project location at a point in time.
CompanyConstructionCivil EngineeringProject ManagementComplianceMCPArtificial IntelligenceOpen Contracting
Properties
| Name | Type | Description |
|---|---|---|
| assets | array | The register rows behind the count. Must be a **structured attribute**, not a measure. |
| project | string | The project the register snapshot is taken at; the fact's subject anchor. |
| asset_count | integer | Number of plant assets at the project at snapshot time. |
| external_id | string | The fact's supersede key; today `plant:{job_no}`, i.e. one current snapshot per project. |
| occurred_at | string | The instant the snapshot was taken (the writer uses `date.today()`, `:623`). |
| legal_entity_id | string | Legal-entity context coordinate. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://docs.demiton.io/registers/plant_snapshot/v1.json",
"title": "plant_snapshot contract v1",
"type": "object",
"required": [
"asset_count",
"assets",
"external_id",
"occurred_at",
"project"
],
"properties": {
"assets": {
"type": "array",
"description": "The register rows behind the count. Must be a **structured attribute**, not a measure.",
"x-demiton-requiredness": "required",
"x-demiton-unit": "none",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Display name of the plant item.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"model": {
"type": "string",
"description": "Model of the plant item.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"status": {
"type": "string",
"description": "The asset's status in the source register (available / in use / etc.).",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"scan_code": {
"type": "string",
"description": "Barcode / QR scan code, the value field crews scan.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"asset_type": {
"type": "string",
"description": "The plant class/category (excavator, EWP, crane, …).",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"location_id": {
"type": "string",
"description": "The source location the asset sat at when the snapshot was taken (the Hilti `locationId` the fetch was filtered by).",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"manufacturer": {
"type": "string",
"description": "Manufacturer / make.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"serial_number": {
"type": "string",
"description": "The manufacturer's serial number.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"source_asset_id": {
"type": "string",
"description": "The source system's own asset identifier (`Hilti` `id`, falling back to `externalId`) so a snapshot row can join the `equipment_list` register.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
},
"responsible_employee_id": {
"type": "string",
"description": "The custody holder in the source register.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none"
}
}
}
},
"project": {
"type": "string",
"description": "The project the register snapshot is taken at; the fact's subject anchor.",
"x-demiton-requiredness": "required",
"x-demiton-unit": "none",
"x-demiton-reference": true
},
"asset_count": {
"type": "integer",
"description": "Number of plant assets at the project at snapshot time.",
"x-demiton-requiredness": "required",
"x-demiton-unit": "dimensionless (count)"
},
"external_id": {
"type": "string",
"description": "The fact's supersede key; today `plant:{job_no}`, i.e. one current snapshot per project.",
"x-demiton-requiredness": "required",
"x-demiton-unit": "none"
},
"occurred_at": {
"type": "string",
"description": "The instant the snapshot was taken (the writer uses `date.today()`, `:623`).",
"x-demiton-requiredness": "required",
"x-demiton-unit": "none",
"format": "date-time",
"x-demiton-type": "datetime"
},
"legal_entity_id": {
"type": "string",
"description": "Legal-entity context coordinate.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "none",
"x-demiton-reference": true
}
},
"x-demiton-register-type": "plant_snapshot",
"x-demiton-contract-version": "1.0.3",
"x-demiton-store": "tenant",
"x-demiton-axes": [
{
"axis": "legal_entity",
"requirement": "optional",
"role": "context"
},
{
"axis": "project",
"requirement": "required",
"role": "subject"
}
],
"x-demiton-measures": [
{
"key": "asset_count",
"accumulation": "instantaneous",
"dtype": "integer",
"unit": "dimensionless"
}
],
"x-demiton-provenance": {
"standards": [
{
"code": "ISO 55001",
"title": "Asset management - Asset management system - Requirements",
"access": "paywalled_secondary",
"clause": "7.6; 8.1",
"region": "International",
"edition": "2024 (AS ISO 55001:2024 identical AU adoption)",
"checked_on": "2026-09-14"
},
{
"code": "ISO/TS 55010",
"title": "Asset management - Guidance on the alignment of financial and non-financial functions",
"access": "paywalled_secondary",
"clause": "Annex I",
"region": "International",
"edition": "2024 (2019 edition withdrawn 2025-04-09)",
"checked_on": "2026-09-14"
}
]
},
"description": "The plant register at a project location at a point in time.",
"x-demiton-contract-url": "https://docs.demiton.io/registers/plant_snapshot/",
"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-plant_snapshot-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.