Demiton · Schema
estimating_email contract v1
Emails in your estimating mailbox, filed against the opportunity they concern.
CompanyConstructionCivil EngineeringProject ManagementComplianceMCPArtificial IntelligenceOpen Contracting
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Graph message id; the shelf's identity and dedup key. |
| from | object | Graph sender block (`emailAddress.name`, `emailAddress.address`). |
| subject | string | Subject line as received. |
| user_id | number | The tenant identity that made the correction. |
| email_id | string | The harvested message's `id` the correction is about. |
| polarity | string | `suppress`, `promote` or `except`. |
| confidence | number | Hand-tuned classifier confidence. |
| attachments | array | Attachment metadata only: `id`, `name`, `content_type`, `size`. |
| auto_create | boolean | Whether the classification cleared the org's auto-create threshold with a folder name and an attachment. |
| reason_code | string | The selected reason, from a per-polarity vocabulary. |
| received_at | string | When the mailbox received the message. |
| company_guess | string | Best-effort company name from the sender domain; null for public webmail domains. |
| source_folder | string | Folder path the message was harvested from (`Inbox`, `Local Council/Tweed Shire`, …). |
| candidate_kind | string | The ingress verdict: `new_opportunity`, `chain_update` or `noise`. |
| conversation_id | string | Graph conversation/thread key. |
| has_attachments | boolean | Whether the message carried attachments. |
| folder_name_suffix | string | Proposed folder suffix for a new numbered opportunity folder. |
| portal_link_detected | boolean | Whether a procurement-portal link was detected, meaning documents are not attached. |
| classification_reason | string | Why the verdict came out that way, in one sentence. |
| description_candidate | string | Cleaned subject as the candidate opportunity description. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://docs.demiton.io/registers/estimating_email/v1.json",
"title": "estimating_email contract v1",
"type": "object",
"required": [
"attachments",
"conversation_id",
"email_id",
"from",
"has_attachments",
"id",
"polarity",
"reason_code",
"received_at",
"subject"
],
"properties": {
"id": {
"type": "string",
"description": "Graph message id; the shelf's identity and dedup key.",
"x-demiton-requiredness": "required"
},
"from": {
"type": "object",
"description": "Graph sender block (`emailAddress.name`, `emailAddress.address`).",
"x-demiton-requiredness": "required"
},
"subject": {
"type": "string",
"description": "Subject line as received.",
"x-demiton-requiredness": "required"
},
"user_id": {
"type": "number",
"description": "The tenant identity that made the correction.",
"x-demiton-requiredness": "tenant-specific"
},
"email_id": {
"type": "string",
"description": "The harvested message's `id` the correction is about.",
"x-demiton-requiredness": "required"
},
"polarity": {
"type": "string",
"description": "`suppress`, `promote` or `except`.",
"x-demiton-requiredness": "required"
},
"confidence": {
"type": "number",
"description": "Hand-tuned classifier confidence.",
"x-demiton-requiredness": "optional",
"x-demiton-unit": "0–1"
},
"attachments": {
"type": "array",
"description": "Attachment metadata only: `id`, `name`, `content_type`, `size`.",
"x-demiton-requiredness": "required"
},
"auto_create": {
"type": "boolean",
"description": "Whether the classification cleared the org's auto-create threshold with a folder name and an attachment.",
"x-demiton-requiredness": "optional"
},
"reason_code": {
"type": "string",
"description": "The selected reason, from a per-polarity vocabulary.",
"x-demiton-requiredness": "required"
},
"received_at": {
"type": "string",
"description": "When the mailbox received the message.",
"x-demiton-requiredness": "required",
"format": "date-time",
"x-demiton-type": "datetime"
},
"company_guess": {
"type": "string",
"description": "Best-effort company name from the sender domain; null for public webmail domains.",
"x-demiton-requiredness": "optional"
},
"source_folder": {
"type": "string",
"description": "Folder path the message was harvested from (`Inbox`, `Local Council/Tweed Shire`, …).",
"x-demiton-requiredness": "optional"
},
"candidate_kind": {
"type": "string",
"description": "The ingress verdict: `new_opportunity`, `chain_update` or `noise`.",
"x-demiton-requiredness": "optional"
},
"conversation_id": {
"type": "string",
"description": "Graph conversation/thread key.",
"x-demiton-requiredness": "required"
},
"has_attachments": {
"type": "boolean",
"description": "Whether the message carried attachments.",
"x-demiton-requiredness": "required"
},
"folder_name_suffix": {
"type": "string",
"description": "Proposed folder suffix for a new numbered opportunity folder.",
"x-demiton-requiredness": "optional"
},
"portal_link_detected": {
"type": "boolean",
"description": "Whether a procurement-portal link was detected, meaning documents are not attached.",
"x-demiton-requiredness": "optional"
},
"classification_reason": {
"type": "string",
"description": "Why the verdict came out that way, in one sentence.",
"x-demiton-requiredness": "optional"
},
"description_candidate": {
"type": "string",
"description": "Cleaned subject as the candidate opportunity description.",
"x-demiton-requiredness": "optional"
}
},
"x-demiton-register-type": "estimating_email",
"x-demiton-contract-version": "1.0.3",
"x-demiton-store": "tenant",
"x-demiton-axes": [
{
"axis": "financial_period",
"requirement": "required",
"role": "context"
},
{
"axis": "customer",
"requirement": "optional",
"role": "context"
}
],
"x-demiton-measures": [],
"x-demiton-provenance": {
"standards": [
{
"code": "AS/NZS ISO 9001:2016",
"title": "Quality management systems - Requirements (AU/NZ adoption of ISO 9001:2015)",
"access": "paywalled_secondary",
"clause": "7.5; 10.2",
"region": "Australia",
"edition": "2016 (ISO 9001:2026 expected 16 Sep 2026)",
"checked_on": "2026-09-14"
},
{
"code": "Privacy Act 1988 (Cth)",
"title": "Privacy Act 1988 and the Australian Privacy Principles",
"access": "public_summary",
"region": "Australia",
"edition": "No. 119, 1988 (as amended)",
"checked_on": "2026-09-14"
},
{
"code": "ISO 19650-1:2018 / ISO 19650-2:2018",
"title": "Information management using BIM - Part 1 (AS ISO 19650.1:2019 identical)",
"access": "paywalled_secondary",
"region": "International",
"edition": "2018",
"checked_on": "2026-09-14"
},
{
"code": "Privacy Act 2020 (NZ)",
"title": "Privacy Act 2020 and the information privacy principles",
"access": "public_summary",
"region": "New Zealand",
"edition": "2020",
"checked_on": "2026-09-14"
},
{
"code": "UK GDPR / DPA 2018",
"title": "UK GDPR and Data Protection Act 2018",
"access": "public_summary",
"region": "United Kingdom",
"edition": "DPA 2018 c. 12 (as amended)",
"checked_on": "2026-09-14"
}
]
},
"description": "Emails in your estimating mailbox, filed against the opportunity they concern.",
"x-demiton-contract-url": "https://docs.demiton.io/registers/estimating_email/",
"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-estimating_email-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.