{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.govfresh.com/v1/procurement/contracting-process.schema.json",
  "title": "ContractingProcess",
  "description": "One complete procurement, from planning through tender, award, and contract - the spine that OCDS calls a contracting process, identified by an ocid. Everything that happens hangs off this one identifier, which is what makes it possible to follow a single purchase from the budget line that funded it to the supplier that was paid. schema.org has no tender, procurement, bid, or solicitation concept; Demand and Offer are retail constructs carrying GTIN, SKU and warranty semantics that do not apply, so nothing is gained by forcing a tender into them.",
  "standards": [
    "ocds"
  ],
  "type": "object",
  "properties": {
    "@context": {},
    "@id": {
      "type": "string",
      "format": "iri",
      "description": "This process's own dereferenceable identifier."
    },
    "@type": {
      "const": "ContractingProcess",
      "description": "Always `ContractingProcess`."
    },
    "ocid": {
      "type": "string",
      "description": "Open Contracting ID: a globally unique identifier for this process, prefixed with a registered publisher prefix. The join key across publishers and the reason OCDS data is aggregatable at all."
    },
    "name": {
      "type": "string",
      "description": "A short label for the process, e.g. what's being procured."
    },
    "description": {
      "type": "string",
      "description": "A plain-language summary of the procurement."
    },
    "url": {
      "type": "string",
      "format": "iri",
      "description": "Where this process's canonical human-readable page lives."
    },
    "identifier": {
      "type": "array",
      "description": "Any scheme-qualified identifiers for this process beyond its `@id`.",
      "items": {
        "$ref": "../_core/identifier.schema.json"
      }
    },
    "buyer": {
      "$ref": "../_core/reference.schema.json",
      "description": "The GovernmentOrganization paying. Required: a procurement with no accountable buyer cannot be audited."
    },
    "jurisdiction": {
      "$ref": "../_core/reference.schema.json",
      "description": "The `Jurisdiction` the procurement is conducted in."
    },
    "budgetLine": {
      "type": "array",
      "items": {
        "$ref": "../_core/reference.schema.json"
      },
      "description": "The BudgetLine(s) funding this process. The join to the budget profile, and the link that answers 'what did we actually buy with that appropriation'."
    },
    "tender": {
      "$ref": "tender.schema.json",
      "description": "The `Tender` for this process - what was solicited, and how."
    },
    "award": {
      "type": "array",
      "description": "The `Award`(s) made in this process. Usually one, but a process can split a contract across several suppliers.",
      "items": {
        "$ref": "award.schema.json"
      }
    },
    "contract": {
      "type": "array",
      "description": "The `Contract`(s) signed as a result of this process.",
      "items": {
        "$ref": "contract.schema.json"
      }
    },
    "party": {
      "type": "array",
      "items": {
        "$ref": "../_core/reference.schema.json"
      },
      "description": "References to the non-government Party entities involved. Government participants are reached through buyer and tender.procuringEntity instead, so a body is never duplicated as both an organization and a party."
    },
    "dateModified": {
      "type": "string",
      "anyOf": [
        {
          "format": "date"
        },
        {
          "format": "date-time"
        }
      ],
      "description": "When this record was last updated."
    },
    "language": {
      "type": "string",
      "description": "The language this process's documents are in."
    },
    "sourceDataset": {
      "type": "string",
      "format": "iri",
      "description": "The `Dataset` this record was published as part of."
    }
  },
  "required": [
    "@id",
    "@type",
    "ocid",
    "buyer"
  ],
  "additionalProperties": true
}
