{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "https://standard.open-contracting.org/infrastructure/schema/0__9__5/project-schema.json",
  "title": "Open Contracting for Infrastructure Data Standard Schema",
  "description": "The Open Contracting for Infrastructure Data Standard (OC4IDS) schema sets out a data structure for capturing and exchanging information about infrastructure projects in line with the disclosure requirements of the [CoST Infrastructure Data Standard](https://infrastructuretransparency.org/resource/977/). OC4IDS defines an \"infrastructure project\" as: \"the development, maintenance, rehabilitation, expansion, replacement and/or decommissioning of a set of infrastructure assets in a specified location, generally the responsibility of a single procuring entity and budget authority: for example, a highway overpass or a university campus. Development covers project identification, preparation, implementation and completion.\"",
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "title": "Identifier or Reference",
      "description": "An identifier for this infrastructure project. The identifier must be globally unique and must begin with a registered project identifier prefix. For more information, see the [project identifier guidance](https://standard.open-contracting.org/infrastructure/0.9/en/guidance/identifiers/#project-identifier-prefixes).",
      "type": "string",
      "minLength": 1
    },
    "updated": {
      "title": "Last updated",
      "description": "The date on which project-level information was last updated. This should not be changed when constituent contracting processes information changes, unless this project-level data has been updated as a result, or to provide explanations or justifications for those changes.",
      "type": "string",
      "format": "date-time"
    },
    "language": {
      "title": "Language",
      "description": "The default language of the data using either two-letter [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or extended [BCP47 language tags](http://www.w3.org/International/articles/language-tags/). The use of lowercase two-letter codes from [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) is recommended.",
      "type": [
        "string"
      ],
      "default": "en",
      "minLength": 1
    },
    "identifiers": {
      "title": "Identifiers",
      "description": "Identifiers for this project. This field can be used to provide internal identifiers for the project, such as identifiers from a project management system or procurement system.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/SimpleIdentifier"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "publicAuthority": {
      "title": "Public authority",
      "description": "The name and identifier of the public authority that is tendering and contracting the project. The full details of the entity should be added to the project-level `parties` array with a `role` of 'publicAuthority'.",
      "$ref": "#/definitions/OrganizationReference"
    },
    "title": {
      "title": "Project title",
      "description": "The title of the project.",
      "type": "string",
      "minLength": 1
    },
    "description": {
      "title": "Project description",
      "description": "A description of this project. This should usually be no longer than a single paragraph.",
      "type": "string",
      "minLength": 1
    },
    "budget": {
      "title": "Total project value",
      "description": "Specify the allocated budget for the infrastructure project (currency and amount). This cost should include land and property acquisition, environmental mitigation measures, health and safety provisions, client, consultant and supplier costs, as well as applicable taxes. Where this value includes costs incurred directly by the project owner or other agencies, which are not subject to procurement, then this value is likely to be higher than the sum of all the linked contracting processes. To indicate the profile of a budget over time, or the budget coming from different sources, the extended budgetBreakdown section may be used.",
      "type": "object",
      "properties": {
        "description": {
          "title": "Description",
          "description": "A short free-text description of the budget that will fund the project. This may be used to provide human-readable information on: the budget category for the project and/or the nature and source of the budget allocation (e.g. conditional, confirmed, or any official authorizations given to the budget allocation).",
          "type": "string",
          "minLength": 1
        },
        "amount": {
          "title": "Amount",
          "description": "The projected costs or allocated budget for the project.",
          "$ref": "#/definitions/Value"
        },
        "requestDate": {
          "title": "Request date",
          "description": "The date on which the project budget was requested.",
          "type": "string",
          "format": "date-time"
        },
        "approvalDate": {
          "title": "Approval date",
          "description": "The date on which the project budget was approved. Where documentary evidence for this exists, it may be included among the project documents with the documentType set to 'budgetApproval'.",
          "type": "string",
          "format": "date-time"
        },
        "budgetBreakdowns": {
          "title": "Budget breakdowns",
          "description": "Detailed breakdowns of the budget grouped together by, for example, period, funder or stage.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BudgetBreakdowns"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "finance": {
          "title": "Finance",
          "description": "Information about financing arrangements for the project.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Finance"
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "minProperties": 1
    },
    "period": {
      "title": "Project period",
      "description": "The period over which this project is planned to run. This may be updated during the preparation phase as information becomes available to more accurately specify anticipated start and end dates, but should not be updated during the implementation or completion phases. The planned completion date of the project should be provided in `period.endDate`, which can be compared with the actual completion date in `completion.endDate`",
      "$ref": "#/definitions/Period"
    },
    "locations": {
      "title": "Project locations",
      "description": "Information about the location where a project is taking place. One or more locations may be provided, or the location may be described in a number of different ways, such as a point location for the central location of construction, and a gazetteer entry to describe the region where the project is taking place.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Location"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "status": {
      "title": "Status",
      "description": "The current phase or status of this project, from the [projectStatus](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#projectstatus) codelist.",
      "type": "string",
      "enum": [
        "identification",
        "preparation",
        "implementation",
        "completion",
        "maintenance",
        "decommissioning",
        "decommissioned",
        "cancelled"
      ],
      "codelist": "projectStatus.csv",
      "openCodelist": false
    },
    "type": {
      "title": "Project type",
      "description": "Whether the primary focus of this project is the construction of a new asset or the rehabilitation or replacement of an existing asset, from the [projectType](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#projecttype) codelist.",
      "type": "string",
      "enum": [
        "construction",
        "maintenance",
        "rehabilitation",
        "replacement",
        "expansion",
        "decommissioning"
      ],
      "codelist": "projectType.csv",
      "openCodelist": false
    },
    "sector": {
      "title": "Project sector",
      "description": "One or more values from the [projectSector codelist](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#projectsector) representing the sector(s) this project relates to. More detailed sector breakdown information can be provided using the pattern [sector].[subsector]. Where subsector codes are used the parent code should also be included, e.g. `['transport', 'transport.air']`",
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "codelist": "projectSector.csv",
      "openCodelist": true,
      "uniqueItems": true,
      "minItems": 1
    },
    "purpose": {
      "title": "Project purpose",
      "description": "The socioeconomic purpose of this project.",
      "type": "string",
      "minLength": 1
    },
    "additionalClassifications": {
      "title": "Additional classifications",
      "description": "Classifications of the project: for example, according to its social and economic purpose. See also the `purpose` field.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Classification"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "parties": {
      "title": "Parties",
      "description": "Information on the parties (organizations, economic operators and other participants) who are involved in the project and their roles, e.g. buyer, procuring entity, supplier etc. Organization references elsewhere in the schema are used to refer back to this entries in this list.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Organization"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "assetLifetime": {
      "title": "Asset lifetime",
      "description": "The anticipated lifetime of the asset after this project is completed. This may be provided as either explicit dates or an estimated duration.",
      "$ref": "#/definitions/Period"
    },
    "identificationPeriod": {
      "title": "Identification period",
      "description": "The period over which the identification stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "preparationPeriod": {
      "title": "Preparation period",
      "description": "The period over which the preparation stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "implementationPeriod": {
      "title": "Implementation period",
      "description": "The period over which the implementation stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "completionPeriod": {
      "title": "Completion period",
      "description": "The period over which the completion stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "maintenancePeriod": {
      "title": "Maintenance period",
      "description": "The period over which the maintenance stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "decommissioningPeriod": {
      "title": "Decommissioning period",
      "description": "The period over which the decommissioning stage is planned to run.",
      "$ref": "#/definitions/Period"
    },
    "forecasts": {
      "title": "Forecasts",
      "description": "Forecast metrics for this project, such as planned physical or financial progress over time.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Metric"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "metrics": {
      "title": "Metrics",
      "description": "Actual metrics for this project, such as the actual physical or financial progress over time.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Metric"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "milestones": {
      "title": "Milestones",
      "description": "Milestones associated with this project.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Milestone"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "completion": {
      "title": "Completion",
      "description": "This information is provided at project completion, and reflects the final timing and values relating to the project. The reason for any variation (not already explained) between the anticipated project scope, period and value should be detailed.",
      "type": "object",
      "properties": {
        "endDate": {
          "title": "End date",
          "description": "The actual completion date for the project (compare with the endDate in project period).",
          "type": "string",
          "format": "date-time"
        },
        "endDateDetails": {
          "title": "End date details",
          "description": "Details related to the endDate. This may be a justification for the project's completion date being different than in the original project.",
          "type": "string",
          "minLength": 1
        },
        "finalValue": {
          "title": "Final value",
          "description": "The total cost of this project at completion (compare with project budget).",
          "$ref": "#/definitions/Value"
        },
        "finalValueDetails": {
          "title": "Final value details",
          "description": "Details related to the final value. This may be a justification for the completed project's value being different than in the original or latest revised budget.",
          "type": "string",
          "minLength": 1
        },
        "finalScope": {
          "title": "Final scope",
          "description": "A short description of the final scope of the project at completion.",
          "type": "string",
          "minLength": 1
        },
        "finalScopeDetails": {
          "title": "Final scope details",
          "description": "A reason, explanation or justification for any variation between the anticipated scope (compare to the projectScope document) and the final scope at completion. If appropriate, additional details may be included in the documents section, with a title indicating that these documents will describe and differences between the planned and completed scope of work.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "costMeasurements": {
      "title": "Cost measurements",
      "description": "Information about cost measurements for the project.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/CostMeasurement"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "transactions": {
      "title": "Transactions",
      "description": "Financial transactions related to this project. For example, a disbursement from a funder to the project company. Transactions related to a contracting process, like a disbursement from a funder to a supplier, should be recorded in the contracting process summary's `.transactions.`",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Transaction"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "documents": {
      "title": "Documents",
      "description": "Documentation related to this project. Entries may include a short text summary (plain text, HTML or Markdown), and/or a link to a specific document accessible on the web. \n\n At the identification phase, a project scope (documentType: projectScope) is expected. At the preparation phase, environmental impact (documentType: environmentalImpact) and land and settlement impact (documentType: landAndSettlementImpact) documentation is expected. During implementation, procurement documents should be shared at the contracting process level, but key documents may also be provided here. At the completion phase, final audit (documentType: finalAudit) and evaluation (documentType: projectEvaluation) reports and documents are expected.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Document"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "contractingProcesses": {
      "title": "Contracting processes",
      "description": "A single project may have a number of related contracting processes (design, construction, monitoring etc.). Project-level data should contain \n\n (a) an index of those contracting process; \n\n (b) the latest summary information about them; \n\n(c) a change history with explanations for any major modifications to contract duration, price or scope.\n\n Where OCDS data is published on each contracting process, a link should be provided to each available release of OCDS data (e.g. to each notice or updated notice), and this OCDS data may be used to automatically populate the summary information.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/ContractingProcess"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "relatedProjects": {
      "title": "Related projects",
      "description": "References to projects related to the same set of infrastructure assets as this project. For example, a project for the replacement of a bridge might reference the earlier project for its initial construction.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/RelatedProject"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "policyAlignment": {
      "title": "Policy alignment",
      "description": "Information about how the project aligns with international, national and/or sectoral policies.",
      "type": "object",
      "properties": {
        "policies": {
          "title": "Policies",
          "description": "The policies the project aligns with, using the open [policyAlignment](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#policyalignment) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "policyAlignment.csv",
          "openCodelist": true,
          "minItems": 1,
          "uniqueItems": true
        },
        "description": {
          "title": "Description",
          "description": "A short description of how the project aligns with the policies.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "benefits": {
      "title": "Benefits",
      "description": "The benefits and intended benefits of the project.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Benefit"
      },
      "uniqueItems": true,
      "minItems": 1
    },
    "social": {
      "title": "Social",
      "description": "Information about the social impacts of the project and the actions the project will take to mitigate potentially negative impacts on adjacent populations and project workers.",
      "$ref": "#/definitions/Social"
    },
    "environment": {
      "title": "Environment",
      "description": "Information about the environmental and climate impacts of the project and the actions the project will take to mitigate potentially negative impacts on adjacent populations and habitats.",
      "type": "object",
      "properties": {
        "goals": {
          "title": "Environmental goals",
          "description": "The environmental goals pursued, using the closed [environmentalGoal](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#environmentalgoal) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "enum": [
              "climateChangeAdaptation",
              "climateChangeMitigation"
            ]
          },
          "codelist": "environmentalGoal.csv",
          "openCodelist": false,
          "minItems": 1,
          "uniqueItems": true
        },
        "climateOversightTypes": {
          "title": "Climate oversight types",
          "description": "Whether the oversight of this project's climate impact is performed internally, externally or both, from the closed [climateOversightTypes](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#climateOversightTypes) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "enum": [
              "internal",
              "external"
            ]
          },
          "codelist": "climateOversightTypes.csv",
          "openCodelist": false,
          "uniqueItems": true,
          "minItems": 1
        },
        "hasImpactAssessment": {
          "title": "Has impact assessment",
          "description": "Whether an environmental impact assessment has been conducted.",
          "type": "boolean"
        },
        "impactCategories": {
          "title": "Impact categories",
          "description": "The categories of the environmental impact of the project.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Classification"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "climateMeasures": {
          "title": "Climate measures",
          "description": "The measures adopted by the project to adapt to or mitigate against climate change.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClimateMeasure"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "conservationMeasures": {
          "title": "Conservation measures",
          "description": "The measures adopted by the project to protect and enhance biodiversity.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConservationMeasure"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "environmentalMeasures": {
          "title": "Environmental measures",
          "description": "The measures adopted by the project to mitigate or remedy environmental impacts.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/EnvironmentalMeasure"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "abatementCost": {
          "title": "Abatement cost",
          "description": "The lifetime abatement cost of the project, measured in cost per tonne of CO2 equivalent emissions. That is, the additional cost of reducing greenhouse gas emissions by one tonne compared to the most likely alternative scenario.",
          "$ref": "#/definitions/Value"
        },
        "inProtectedArea": {
          "title": "In protected area",
          "description": "Whether the project is located in a protected area.",
          "type": "boolean"
        }
      },
      "minProperties": 1
    },
    "lobbyingMeetings": {
      "title": "Lobbying meetings",
      "description": "Information about lobbying meetings in relation to the project. That is, meetings with public officials that are made, managed or directed with the purpose of influencing public decision-making in relation to the project, whether for private, public or collective ends, whether for compensation or without. Public decision-making is the creation and amendment of legislation or any other regulatory measures; the development, modification and implementation of public policies, strategies and programs; and the awarding of government contracts or grants, administrative decisions or any other public spending decisions.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Meeting"
      },
      "uniqueItems": true,
      "minItems": 1
    }
  },
  "definitions": {
    "ContractingProcess": {
      "title": "Contracting process",
      "description": "Within OC4IDS, a contracting process provides both summary information, and a log of changes over time, either manually curated, or automatically generated through linked OCDS releases.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "An identifier for this contracting process. If this contracting process has been assigned an Open Contracting Identifier (OCID) by an external platform (e.g. national procurement system), that OCID must be recorded here. If information about this contracting process has been entered manually, or from a non-OCDS system, then an identifier may be created by the system data is entered into.",
          "type": "string",
          "minLength": 1
        },
        "summary": {
          "title": "Summary",
          "description": "Summary information about a contracting process, including a log of changes over time.",
          "$ref": "#/definitions/ContractingProcessSummary"
        },
        "releases": {
          "title": "Linked releases",
          "description": "The information known about a contracting process changes over time, both as new information becomes available, and as changes are made (such as amendments to scope and value). In the OCDS, each new update of information is known as a 'release'. \n\n This section provides space to record a link to each available release.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/LinkedRelease"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "ContractingProcessSummary": {
      "type": "object",
      "title": "Summary",
      "description": "Summary information about a contracting process and any modifications to it.\n\n Summary information can be manually entered and the `modifications` list can be used to manually record a log of changes, with the date and details of each modification.\n\n Where OCDS data is available, most summary fields can be derived from OCDS releases, although the exact method to derive data might vary between implementations; and modifications can be identified by comparing a new release to previous releases to check for relevant changes, with the release identifier recorded in `modifications`.",
      "properties": {
        "ocid": {
          "title": "Open Contracting Identifier",
          "description": "If this contracting process has been assigned an Open Contracting Identifier (OCID) by an external platform (e.g. national procurement system), that OCID must be recorded here. Otherwise this field should be omitted.",
          "type": "string",
          "minLength": 1
        },
        "externalReference": {
          "title": "External reference",
          "description": "If this contracting process is identified by some external reference number it may be recorded here.",
          "type": "string",
          "minLength": 1
        },
        "nature": {
          "title": "Nature",
          "description": "Whether this contracting process relates to the design, construction and/or supervision of the project, from the [contractNature](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#contractnature) codelist. More than one value may be provided if the contract is for both design and construction, or both design and supervision, etc.",
          "type": "array",
          "items": {
            "type": [
              "string"
            ],
            "enum": [
              "design",
              "construction",
              "supervision"
            ]
          },
          "codelist": "contractNature.csv",
          "openCodelist": false,
          "uniqueItems": true,
          "minItems": 1
        },
        "title": {
          "title": "Title",
          "description": "The formal name of this contracting process. Once set, this should not normally by changed.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "The description should summarize the purpose of this contract and the initial scope of the work to be carried out under the contract.",
          "type": "string",
          "minLength": 1
        },
        "status": {
          "title": "Status",
          "description": "The status of this contracting process. Drawn from the [contractingProcessStatus codelist](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#contractingprocessstatus).",
          "type": "string",
          "enum": [
            "preAward",
            "active",
            "closed",
            "pre-award"
          ],
          "codelist": "contractingProcessStatus.csv",
          "openCodelist": false
        },
        "tender": {
          "title": "Tender",
          "description": "The activities undertaken in order to enter into a contract.",
          "type": "object",
          "properties": {
            "procurementMethod": {
              "title": "Procurement method",
              "description": "Specify tendering method using the [method codelist](https://standard.open-contracting.org/1.1/en/schema/codelists/#method) (open, selective, limited, direct).",
              "type": "string",
              "enum": [
                "open",
                "selective",
                "limited",
                "direct"
              ],
              "codelist": "method.csv",
              "openCodelist": false
            },
            "procurementMethodDetails": {
              "title": "Procurement method details",
              "description": "Additional detail on the procurement method used. This field should be used to record an agreed list of procurement process types, such as: International Competitive Bidding, National Competitive Bidding, Donor Procurement Rules, Framework or Direct Award.",
              "type": "string",
              "minLength": 1
            },
            "datePublished": {
              "description": "The date on which the tender was published.",
              "format": "date-time",
              "title": "Date published",
              "type": [
                "string"
              ]
            },
            "costEstimate": {
              "title": "Cost estimate",
              "description": "The pre-tender estimated value of the contracting process.",
              "$ref": "#/definitions/Value"
            },
            "numberOfTenderers": {
              "title": "Number of tenderers",
              "description": "The number of parties who placed a bid during this contracting process.",
              "type": "number"
            },
            "tenderers": {
              "title": "Tenderers",
              "description": "All parties who submit a bid on a tender. More detailed information on bids and the bidding organization can be provided using the bid extension in a linked OCDS release.",
              "type": "array",
              "items": {
                "$ref": "#/definitions/OrganizationReference"
              },
              "uniqueItems": true,
              "minItems": 1
            },
            "procuringEntity": {
              "title": "Procuring entity",
              "description": "The name and identifier of the procuring entity responsible for this contracting process. The full details of the entity should be added to the project-level `parties` array with a `role` of 'procuringEntity'.",
              "$ref": "#/definitions/OrganizationReference"
            },
            "administrativeEntity": {
              "title": "Administrative entity",
              "description": "The name and identifier of the entity responsible for contract administration if this is different from the procuring entity. The full details of the entity should be added to the project-level `parties` array with a `role` of 'administrativeEntity'.",
              "$ref": "#/definitions/OrganizationReference"
            },
            "sustainability": {
              "title": "Sustainability",
              "description": "Information about how the contracting process incorporates sustainable public procurement.",
              "type": "array",
              "items": {
                "$ref": "#/definitions/Sustainability"
              },
              "uniqueItems": true,
              "minItems": 1
            }
          },
          "minProperties": 1
        },
        "suppliers": {
          "title": "Suppliers",
          "description": "The name and identifier for each supplier for this contracting process. The full details of each supplier should be added to the project-level `parties` array with a `role` of 'supplier'.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "contractValue": {
          "title": "Contract value",
          "description": "The initial value of the contract. Changes to the initial value of the contract should be recorded in `modifications`.",
          "$ref": "#/definitions/Value"
        },
        "contractPeriod": {
          "title": "Contract period",
          "description": "The initial duration of the contract. Changes to the initial duration of the contract should be recorded in `modifications`.",
          "$ref": "#/definitions/Period"
        },
        "finalValue": {
          "title": "Final value",
          "description": "This should be provided when the contracting process is complete. This can be derived from the sum of `contract.implementation.transactions` values in linked OCDS data where available. In other cases, it might need to be identified and entered manually based on other project documentation.",
          "$ref": "#/definitions/Value"
        },
        "documents": {
          "title": "Documents",
          "description": "Additional documentation about this contracting process may be provided here, including reports and evaluations produced through a monitoring process, or links to web pages where further information about this process can be found. Where OCDS releases are published, further documents can be found by looking at the published releases.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "modifications": {
          "title": "Modifications",
          "description": "Details of changes to the duration, price, scope or other significant features of the contracting process should be logged here.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Modification"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "transactions": {
          "title": "Transactions",
          "description": "The spending transactions made against this contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Transaction"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "milestones": {
          "title": "Milestones",
          "description": "Milestones associated with this contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Milestone"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "finance": {
          "title": "Finance",
          "description": "Information about financing arrangements for the contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Finance"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "social": {
          "title": "Social",
          "description": "Information about the social impact of the project and actions the project will take to mitigate potentially negative impacts on adjacent populations and project workers.",
          "type": "object",
          "properties": {
            "laborBudget": {
              "title": "Labor budget",
              "description": "The budget allocated in the contract for labor costs.",
              "$ref": "#/definitions/Value"
            },
            "laborObligations": {
              "title": "Labor obligations",
              "description": "Information about labor obligations stipulated in the construction contract(s).",
              "$ref": "#/definitions/LaborObligations"
            }
          },
          "minProperties": 1
        }
      },
      "minProperties": 1
    },
    "LinkedRelease": {
      "title": "Release",
      "description": "A release of data represents the information known or updated at a particular point in time.",
      "type": "object",
      "properties": {
        "id": {
          "title": "ID",
          "description": "A unique identifier for this update of information. This should be taken from the OCDS `release.id`, if available.",
          "type": "string",
          "minLength": 1
        },
        "tag": {
          "title": "Release tag",
          "description": "One or more values from the [releaseTag](https://standard.open-contracting.org/1.1/en/schema/codelists/#release-tag) codelist used to indicate the information contained in this release, and the stage of the contracting process it represents. This should be filled from the OCDS `release.tag`, if available.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "planning",
              "planningUpdate",
              "tender",
              "tenderAmendment",
              "tenderUpdate",
              "tenderCancellation",
              "award",
              "awardUpdate",
              "awardCancellation",
              "contract",
              "contractUpdate",
              "contractAmendment",
              "implementation",
              "implementationUpdate",
              "contractTermination",
              "compiled"
            ]
          },
          "codelist": "releaseTag.csv",
          "openCodelist": false,
          "minItems": 1,
          "uniqueItems": true
        },
        "date": {
          "title": "Date",
          "description": "The effective date of this release/update. This should be filled from the OCDS `release.date`, if available.",
          "type": "string",
          "format": "date-time"
        },
        "url": {
          "title": "URL",
          "description": "A URL (web link) to a release package containing the OCDS release, if available.",
          "type": "string",
          "format": "uri"
        }
      },
      "required": [
        "id",
        "tag",
        "date",
        "url"
      ],
      "minProperties": 1
    },
    "Modification": {
      "title": "Modification",
      "description": "Contains a structured description of any changes, along with a free text justification.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "A local identifier for this modification.",
          "type": "string",
          "minLength": 1
        },
        "date": {
          "title": "Date",
          "description": "The date this modification was recorded.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "description": {
          "title": "Description",
          "description": "Details of the modification. This may be free text, or may be generated automatically and provide a structured description of the change.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "rationale": {
          "title": "Rationale",
          "description": "A summary of the reasons which have led to this modification to the originally planned scope, period or value.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "type": {
          "title": "Type",
          "description": "A value from the [modificationType](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#modificationtype) codelist, indicating whether the modification relates to the duration, value, scope or other aspect of the contract.",
          "type": [
            "string"
          ],
          "codelist": "modificationType.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "releaseID": {
          "title": "Release ID",
          "description": "The identifier for the OCDS release this modification relates to. The referenced release should appear in the list of linked releases for this contracting process.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "oldContractValue": {
          "title": "Old contract value",
          "description": "Contract value before the modification, taking into account any prior modifications.",
          "$ref": "#/definitions/Value"
        },
        "newContractValue": {
          "title": "New contract value",
          "description": "Contract value after the modification.",
          "$ref": "#/definitions/Value"
        },
        "oldContractPeriod": {
          "title": "Old contract period",
          "description": "Contract period before the modification, taking into account any prior modifications.",
          "$ref": "#/definitions/Period"
        },
        "newContractPeriod": {
          "title": "New contract period",
          "description": "Contract period after the modification.",
          "$ref": "#/definitions/Period"
        }
      },
      "minProperties": 1
    },
    "Period": {
      "title": "Period",
      "description": "Key events during a project or contracting process may have a known start date, end date, duration, or maximum extent (the latest date the period can extend to). In some cases, not all of these fields will have known or relevant values.",
      "type": "object",
      "properties": {
        "startDate": {
          "title": "Start date",
          "description": "The start date for the period. When known, a precise start date must be provided.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "endDate": {
          "title": "End date",
          "description": "The end date for the period. When known, a precise end date must be provided.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "maxExtentDate": {
          "description": "The period cannot be extended beyond this date. This field can be used to express the maximum available date for extension or renewal of this period.",
          "format": "date-time",
          "title": "Maximum extent",
          "type": [
            "string"
          ]
        },
        "durationInDays": {
          "description": "The maximum duration of this period in days. A user interface can collect or display this data in months or years as appropriate, and then convert it into days when storing this field. This field can be used when exact dates are not known. If a startDate and endDate are set, this field, if used, should be equal to the difference between startDate and endDate. Otherwise, if a startDate and maxExtentDate are set, this field, if used, should be equal to the difference between startDate and maxExtentDate.",
          "title": "Duration (days)",
          "type": [
            "integer"
          ]
        }
      },
      "minProperties": 1
    },
    "Classification": {
      "title": "Classification",
      "description": "A classification consists of at least two parts: an identifier for the list (scheme) from which the classification is taken, and an identifier for the category from that list being applied. It is useful to also publish a text label and/or URI that users can draw on to interpret the classification.",
      "type": "object",
      "properties": {
        "scheme": {
          "title": "Scheme",
          "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#classificationscheme) codelist.",
          "type": [
            "string"
          ],
          "codelist": "classificationScheme.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "id": {
          "title": "ID",
          "description": "The classification code taken from the scheme.",
          "type": "string",
          "versionId": true,
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A textual description or title for the classification code.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "uri": {
          "title": "URI",
          "description": "A URI to uniquely identify the classification code.",
          "type": [
            "string"
          ],
          "format": "uri"
        }
      },
      "minProperties": 1
    },
    "Location": {
      "type": "object",
      "title": "Delivery Location",
      "description": "The location where activity related to this project will be delivered, or will take place. A location may be described using a geometry (point location, line or polygon), a gazetteer entry, an address, or a combination of these.",
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "A local identifier for this location, unique within the array this location appears in.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A name or description of this location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "geometry": {
          "type": "object",
          "title": "Geometry",
          "description": "We follow the [GeoJSON standard](http://geojson.org/) to express basic location information, using longitude, latitude, and optional elevation values in the [WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) (EPSG:4326) projection. A point location can be identified by geocoding a delivery address. For concession licenses, or other contracts covering a polygon location which is not contained in a known gazetteer, polygon and multi-polygon can be used.",
          "properties": {
            "type": {
              "title": "Type",
              "description": "The type of [GeoJSON Geometry Objects](http://geojson.org/geojson-spec.html#geometry-objects) being provided. To provide longitude, latitude, and optional elevation, use 'Point', and enter an array of [longitude, latitude] or [longitude, latitude, elevation] as the value of the coordinates field: e.g. [-122.085, 37.42].",
              "type": [
                "string"
              ],
              "enum": [
                "Point",
                "MultiPoint",
                "LineString",
                "MultiLineString",
                "Polygon",
                "MultiPolygon"
              ],
              "codelist": "geometryType.csv",
              "openCodelist": false
            },
            "coordinates": {
              "title": "Coordinates",
              "description": "The relevant array of points, e.g. [longitude, latitude] or [longitude, latitude, elevation], or a nested array of points, for the GeoJSON geometry being described. The longitude and latitude must be expressed in decimal degrees in the WGS84 (EPSG:4326) projection.",
              "type": [
                "array"
              ],
              "items": {
                "type": [
                  "number",
                  "array"
                ],
                "minItems": 1
              },
              "minItems": 1
            }
          },
          "minProperties": 1
        },
        "gazetteer": {
          "type": "object",
          "title": "Gazetteer",
          "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.",
          "properties": {
            "scheme": {
              "title": "Gazetteer scheme",
              "description": "The identifier of the gazetteer. The `locationGazetteers.csv` codelist provides details of services, where available, that can resolve a gazetteer entry to provide location names.",
              "type": [
                "string"
              ],
              "codelist": "locationGazetteers.csv",
              "openCodelist": true,
              "minLength": 1
            },
            "identifiers": {
              "title": "Identifiers",
              "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.",
              "type": [
                "array"
              ],
              "items": {
                "type": [
                  "string"
                ],
                "minLength": 1
              },
              "uniqueItems": true,
              "minItems": 1
            }
          },
          "minProperties": 1
        },
        "uri": {
          "type": [
            "string"
          ],
          "title": "URI",
          "description": "A URI to a further description of the activity location. This might be a human-readable document with information on the location, or a machine-readable description of the location.",
          "minLength": 1
        },
        "address": {
          "title": "Address",
          "description": "A physical address where works will take place.",
          "$ref": "#/definitions/Address"
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "Value": {
      "title": "Value",
      "description": "Financial values should be published with a currency attached.",
      "type": "object",
      "properties": {
        "amount": {
          "title": "Amount",
          "description": "Amount as a number.",
          "type": [
            "number"
          ]
        },
        "currency": {
          "title": "Currency",
          "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/1.1/en/schema/codelists/#currency) codelist.",
          "type": [
            "string"
          ],
          "codelist": "currency.csv",
          "openCodelist": false,
          "enum": [
            "ADP",
            "AED",
            "AFA",
            "AFN",
            "ALK",
            "ALL",
            "AMD",
            "ANG",
            "AOA",
            "AOK",
            "AON",
            "AOR",
            "ARA",
            "ARP",
            "ARS",
            "ARY",
            "ATS",
            "AUD",
            "AWG",
            "AYM",
            "AZM",
            "AZN",
            "BAD",
            "BAM",
            "BBD",
            "BDT",
            "BEC",
            "BEF",
            "BEL",
            "BGJ",
            "BGK",
            "BGL",
            "BGN",
            "BHD",
            "BIF",
            "BMD",
            "BND",
            "BOB",
            "BOP",
            "BOV",
            "BRB",
            "BRC",
            "BRE",
            "BRL",
            "BRN",
            "BRR",
            "BSD",
            "BTN",
            "BUK",
            "BWP",
            "BYB",
            "BYN",
            "BYR",
            "BZD",
            "CAD",
            "CDF",
            "CHC",
            "CHE",
            "CHF",
            "CHW",
            "CLF",
            "CLP",
            "CNY",
            "COP",
            "COU",
            "CRC",
            "CSD",
            "CSJ",
            "CSK",
            "CUC",
            "CUP",
            "CVE",
            "CYP",
            "CZK",
            "DDM",
            "DEM",
            "DJF",
            "DKK",
            "DOP",
            "DZD",
            "ECS",
            "ECV",
            "EEK",
            "EGP",
            "ERN",
            "ESA",
            "ESB",
            "ESP",
            "ETB",
            "EUR",
            "FIM",
            "FJD",
            "FKP",
            "FRF",
            "GBP",
            "GEK",
            "GEL",
            "GHC",
            "GHP",
            "GHS",
            "GIP",
            "GMD",
            "GNE",
            "GNF",
            "GNS",
            "GQE",
            "GRD",
            "GTQ",
            "GWE",
            "GWP",
            "GYD",
            "HKD",
            "HNL",
            "HRD",
            "HRK",
            "HTG",
            "HUF",
            "IDR",
            "IEP",
            "ILP",
            "ILR",
            "ILS",
            "INR",
            "IQD",
            "IRR",
            "ISJ",
            "ISK",
            "ITL",
            "JMD",
            "JOD",
            "JPY",
            "KES",
            "KGS",
            "KHR",
            "KMF",
            "KPW",
            "KRW",
            "KWD",
            "KYD",
            "KZT",
            "LAJ",
            "LAK",
            "LBP",
            "LKR",
            "LRD",
            "LSL",
            "LSM",
            "LTL",
            "LTT",
            "LUC",
            "LUF",
            "LUL",
            "LVL",
            "LVR",
            "LYD",
            "MAD",
            "MDL",
            "MGA",
            "MGF",
            "MKD",
            "MLF",
            "MMK",
            "MNT",
            "MOP",
            "MRO",
            "MRU",
            "MTL",
            "MTP",
            "MUR",
            "MVQ",
            "MVR",
            "MWK",
            "MXN",
            "MXP",
            "MXV",
            "MYR",
            "MZE",
            "MZM",
            "MZN",
            "NAD",
            "NGN",
            "NIC",
            "NIO",
            "NLG",
            "NOK",
            "NPR",
            "NZD",
            "OMR",
            "PAB",
            "PEH",
            "PEI",
            "PEN",
            "PES",
            "PGK",
            "PHP",
            "PKR",
            "PLN",
            "PLZ",
            "PTE",
            "PYG",
            "QAR",
            "RHD",
            "ROK",
            "ROL",
            "RON",
            "RSD",
            "RUB",
            "RUR",
            "RWF",
            "SAR",
            "SBD",
            "SCR",
            "SDD",
            "SDG",
            "SDP",
            "SEK",
            "SGD",
            "SHP",
            "SIT",
            "SKK",
            "SLL",
            "SOS",
            "SRD",
            "SRG",
            "SSP",
            "STD",
            "STN",
            "SUR",
            "SVC",
            "SYP",
            "SZL",
            "THB",
            "TJR",
            "TJS",
            "TMM",
            "TMT",
            "TND",
            "TOP",
            "TPE",
            "TRL",
            "TRY",
            "TTD",
            "TWD",
            "TZS",
            "UAH",
            "UAK",
            "UGS",
            "UGW",
            "UGX",
            "USD",
            "USN",
            "USS",
            "UYI",
            "UYN",
            "UYP",
            "UYU",
            "UYW",
            "UZS",
            "VEB",
            "VEF",
            "VES",
            "VNC",
            "VND",
            "VUV",
            "WST",
            "XAF",
            "XAG",
            "XAU",
            "XBA",
            "XBB",
            "XBC",
            "XBD",
            "XCD",
            "XDR",
            "XEU",
            "XFO",
            "XFU",
            "XOF",
            "XPD",
            "XPF",
            "XPT",
            "XRE",
            "XSU",
            "XTS",
            "XUA",
            "XXX",
            "YDD",
            "YER",
            "YUD",
            "YUM",
            "YUN",
            "ZAL",
            "ZAR",
            "ZMK",
            "ZMW",
            "ZRN",
            "ZRZ",
            "ZWC",
            "ZWD",
            "ZWL",
            "ZWN",
            "ZWR"
          ]
        }
      },
      "minProperties": 1
    },
    "Organization": {
      "title": "Organization",
      "description": "A party (organization)",
      "type": "object",
      "properties": {
        "name": {
          "title": "Common name",
          "description": "A common name for this organization or other participant in the contracting process. The identifier object provides a space for the formal legal name, and so this may either repeat that value, or may provide the common name by which this organization or entity is known. This field may also include details of the department or sub-unit involved in this contracting process.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "id": {
          "type": "string",
          "description": "The ID used for cross-referencing to this party from other sections of the release. This field may be built with the following structure {identifier.scheme}-{identifier.id}(-{department-identifier}).",
          "title": "Entity ID",
          "minLength": 1
        },
        "identifier": {
          "title": "Primary identifier",
          "description": "The primary identifier for this organization or participant. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/1.1/en/schema/identifiers/) for the preferred scheme and identifier to use.",
          "$ref": "#/definitions/Identifier"
        },
        "additionalIdentifiers": {
          "title": "Additional identifiers",
          "description": "A list of additional / supplemental identifiers for the organization or participant, using the [organization identifier guidance](https://standard.open-contracting.org/1.1/en/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Identifier"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "address": {
          "title": "Address",
          "description": "An address. This may be the legally registered address of the organization, or may be a correspondence address for this particular contracting process.",
          "$ref": "#/definitions/Address"
        },
        "contactPoint": {
          "title": "Contact point",
          "description": "Contact details that can be used for this party.",
          "$ref": "#/definitions/ContactPoint"
        },
        "roles": {
          "title": "Party roles",
          "description": "The party's role(s) in the project, using the open [partyRole](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#partyrole) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "partyRole.csv",
          "openCodelist": true,
          "uniqueItems": true,
          "minItems": 1
        },
        "beneficialOwners": {
          "title": "Beneficial owners",
          "description": "The beneficial owners of the organization.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Person"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "classifications": {
          "title": "Organization classifications",
          "description": "The classifications that categorize the organization.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Classification"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "people": {
          "title": "People",
          "description": "People associated with, representing, or working on behalf of this organization in respect of this project.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Person"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "OrganizationReference": {
      "properties": {
        "name": {
          "type": [
            "string"
          ],
          "description": "The name of the party being referenced. This must match the name of an entry in the parties section.",
          "title": "Organization name",
          "minLength": 1
        },
        "id": {
          "type": "string",
          "description": "The id of the party being referenced. This must match the id of an entry in the parties section.",
          "title": "Organization ID",
          "minLength": 1
        }
      },
      "type": "object",
      "description": "The id and name of the party being referenced. Used to cross-reference to the parties section",
      "title": "Organization reference",
      "minProperties": 1
    },
    "Address": {
      "title": "Address",
      "description": "An address.",
      "type": "object",
      "properties": {
        "streetAddress": {
          "title": "Street address",
          "type": [
            "string"
          ],
          "description": "The street address. For example, 1600 Amphitheatre Pkwy.",
          "minLength": 1
        },
        "locality": {
          "title": "Locality",
          "type": [
            "string"
          ],
          "description": "The locality. For example, Mountain View.",
          "minLength": 1
        },
        "region": {
          "title": "Region",
          "type": [
            "string"
          ],
          "description": "The region. For example, CA.",
          "minLength": 1
        },
        "postalCode": {
          "title": "Postal code",
          "type": [
            "string"
          ],
          "description": "The postal code. For example, 94043.",
          "minLength": 1
        },
        "countryName": {
          "title": "Country name",
          "type": [
            "string"
          ],
          "description": "The country name. For example, United States.",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "ContactPoint": {
      "title": "Contact point",
      "type": "object",
      "description": "A person, contact point or department to contact in relation to this contracting process.",
      "properties": {
        "name": {
          "title": "Name",
          "type": [
            "string"
          ],
          "description": "The name of the contact person, department, or contact point, for correspondence relating to this project.",
          "minLength": 1
        },
        "email": {
          "title": "Email",
          "type": [
            "string"
          ],
          "description": "The e-mail address of the contact point/person.",
          "minLength": 1
        },
        "telephone": {
          "title": "Telephone",
          "type": [
            "string"
          ],
          "description": "The telephone number of the contact point/person. This should include the international dialing code.",
          "minLength": 1
        },
        "faxNumber": {
          "title": "Fax number",
          "type": [
            "string"
          ],
          "description": "The fax number of the contact point/person. This should include the international dialing code.",
          "minLength": 1
        },
        "url": {
          "title": "URL",
          "type": [
            "string"
          ],
          "description": "A web address for the contact point/person.",
          "format": "uri"
        }
      },
      "minProperties": 1
    },
    "BudgetBreakdowns": {
      "title": "Budget breakdown group",
      "description": "Details of a breakdown of the budget grouped by a common dimension.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "An identifier for the budget breakdown group.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the budget breakdown group including the common dimension used to create the breakdown.",
          "type": "string",
          "minLength": 1
        },
        "budgetBreakdown": {
          "title": "Budget breakdown",
          "description": "A detailed breakdown of the budget.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BudgetBreakdown"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "BudgetBreakdown": {
      "title": "Detailed budget breakdown",
      "description": "This section allows a detailed budget breakdown to be expressed, covering multiple budget sources and multiple periods",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "An identifier for this particular budget entry.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short free text description of this budget entry.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "amount": {
          "title": "Amount",
          "description": "The value of the budget line item. A positive amount means the source organization funds the project. A negative amount means the project pays the source organization.",
          "$ref": "#/definitions/Value"
        },
        "uri": {
          "title": "Linked budget information",
          "description": "A URI pointing directly to a machine-readable information about this budget entry.",
          "type": [
            "string"
          ],
          "format": "uri"
        },
        "period": {
          "title": "Budget period",
          "description": "The period covered by this budget entry.",
          "$ref": "#/definitions/Period"
        },
        "sourceParty": {
          "title": "Source organization",
          "description": "The organization providing the funds for this budget entry. The corresponding entry in the `parties` array must have 'sourceParty' in its `roles` array.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "approvalDate": {
          "title": "Approval date",
          "description": "The date on which this budget entry was approved. Where documentary evidence for this exists, it may be included among the project documents with `.documentType` set to 'budgetApproval'.",
          "type": "string",
          "format": "date-time"
        }
      },
      "minProperties": 1
    },
    "Document": {
      "type": "object",
      "title": "Document",
      "description": "Links to, or descriptions of, external documents can be attached at various locations within the standard. Documents can be supporting information, formal notices, downloadable forms, or any other kind of resource that ought to be made public as part of full open contracting.",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local, unique identifier for this document. This field is used to keep track of multiple revisions of a document through the compilation from release to record mechanism.",
          "type": "string",
          "minLength": 1
        },
        "documentType": {
          "title": "Document type",
          "description": "A classification of the document described, using the open [documentType](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#documenttype) codelist.",
          "type": [
            "string"
          ],
          "codelist": "documentType.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "The document title.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "Where a link to a full document is provided, the description should provide a 1 - 3 paragraph summary of the information the document contains, and the `pageStart` field should be used to make sure readers can find the correct section of the document containing more information. Where there is no linked document available, the description field may contain all the information required by the current `documentType`. \n\nLine breaks in text (represented in JSON using `\\n\\n`) must be respected by systems displaying this information, and systems may also support basic HTML tags (H1-H6, B, I, U, strong, A and optionally IMG) or [markdown syntax](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) for formatting.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "url": {
          "title": "URL",
          "description": "This should be a direct link to the document or web page where the information described by the current documentType exists.",
          "type": [
            "string"
          ],
          "format": "uri"
        },
        "datePublished": {
          "title": "Date published",
          "description": "The date on which the document was first published. This is particularly important for legally important documents such as notices of a tender.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "dateModified": {
          "title": "Date modified",
          "description": "Date that the document was last modified",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "format": {
          "title": "Format",
          "description": "The format of the document, using the open [IANA Media Types](http://www.iana.org/assignments/media-types/) codelist (see the values in the 'Template' column), or using the 'offline/print' code if the described document is published offline. For example, web pages have a format of 'text/html'.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "language": {
          "title": "Language",
          "description": "The language of the linked document using either two-letter [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or extended [BCP47 language tags](http://www.w3.org/International/articles/language-tags/). The use of lowercase two-letter codes from [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) is recommended unless there is a clear user need for distinguishing the language subtype.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "pageStart": {
          "title": "Page start",
          "description": "When the information referenced exists within a large document, indicate the first page on which it can be found. This should refer to the printed page number, not the page number reported by software applications.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "pageEnd": {
          "title": "Page end",
          "description": "When the information referenced exists within a large document, indicate the last page on which it can be found. This should refer to the printed page number, not the page number reported by software applications.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "accessDetails": {
          "title": "Access details",
          "description": "A description of any special arrangements needed to access this document, for example: registering for access, paying a fee, or visiting a location to inspect the document.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "author": {
          "title": "Author",
          "description": "The names of the authors of the document.",
          "type": [
            "string"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Identifier": {
      "title": "Identifier",
      "description": "A unique identifier for a party (organization).",
      "type": "object",
      "properties": {
        "scheme": {
          "title": "Scheme",
          "description": "Organization identifiers should be taken from an existing organization identifier list. The scheme field is used to indicate the list or register from which the identifier is taken. This value should be taken from the [Organization Identifier Scheme](https://standard.open-contracting.org/1.1/en/schema/codelists/#organization-identifier-scheme) codelist.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "id": {
          "title": "ID",
          "description": "The identifier of the organization in the selected scheme.",
          "type": "string",
          "versionId": true,
          "minLength": 1
        },
        "legalName": {
          "title": "Legal Name",
          "description": "The legally registered name of the organization.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "uri": {
          "title": "URI",
          "description": "A URI to identify the organization, such as those provided by [Open Corporates](http://www.opencorporates.com) or some other relevant URI provider. This is not for listing the website of the organization: that can be done through the URL field of the Organization contact point.",
          "type": [
            "string"
          ],
          "format": "uri"
        }
      },
      "minProperties": 1
    },
    "RelatedProject": {
      "title": "Related project",
      "description": "A reference to a project related to the same set of infrastructure assets as this project. Generally, related projects either precede or follow on from the current project.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Relationship ID",
          "description": "A local identifier for this relationship, unique within this array.",
          "type": "string",
          "minLength": 1
        },
        "scheme": {
          "title": "Scheme",
          "description": "The identification scheme used by this cross-reference, using the open [relatedProjectScheme](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#relatedprojectscheme) codelist.",
          "type": "string",
          "codelist": "relatedProjectScheme.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "identifier": {
          "title": "Identifier",
          "description": "The identifier of the related project. If the scheme is 'oc4ids', this must be an OC4IDS project ID.",
          "type": "string",
          "minLength": 1
        },
        "relationship": {
          "title": "Relationship",
          "description": "The type of relationship, using the open [relatedProject](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#relatedproject) codelist.",
          "type": "string",
          "codelist": "relatedProject.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "title": {
          "title": "Related project title",
          "description": "The title of the related project. If referencing an OC4IDS project, this should match the value of the `title` field of the related project.",
          "type": "string",
          "minLength": 1
        },
        "uri": {
          "title": "Related project URI",
          "description": "A URI pointing to a machine-readable document or project package containing the identified related project.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "Metric": {
      "title": "Metric",
      "description": "Metrics are used to set out forecast and actual metrics targets for a project: for example, planned and actual physical and financial progress over time.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "An identifier for this metric. In some cases this may be drawn from a codelist of metrics required for this type of contracting process or project, or in other instances may be an arbitrary identifier.",
          "type": "string",
          "minLength": 1,
          "codelist": "metricID.csv",
          "openCodelist": true
        },
        "title": {
          "title": "Title",
          "description": "The title of this metric",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the metric. This may include short details of measurement methods.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "observations": {
          "title": "Observations",
          "description": "An array of target or actual values for this metric.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Observation"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "Observation": {
      "title": "Observation",
      "description": "An actual or target observation. Observations should include either a value (for financial metrics) or measure (for other metrics).",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "A local identifier for this specific observation. This may be an arbitrary identifier, or could be a composite of the metric identifier, and the date and other dimensions of this observation.",
          "type": "string",
          "minLength": 1
        },
        "period": {
          "title": "Period",
          "description": "The period over which this observation is measured.",
          "$ref": "#/definitions/Period"
        },
        "value": {
          "title": "Value",
          "description": "For financial metrics, the value of this forecast, target or actual observation.",
          "$ref": "#/definitions/Value"
        },
        "measure": {
          "title": "Measure",
          "description": "For non-financial metrics, the measure of this forecast, target or actual observation. Measures may be provided as free text or numerical values.",
          "type": [
            "string",
            "number"
          ],
          "minLength": 1
        },
        "unit": {
          "title": "Unit",
          "description": "Unit",
          "type": "object",
          "properties": {
            "name": {
              "title": "Unit name",
              "description": "The name of the unit.",
              "type": [
                "string"
              ],
              "minLength": 1
            },
            "scheme": {
              "title": "Scheme",
              "description": "The list from which units of measure identifiers are taken. Use of the scheme 'UNCEFACT' for the UN/CEFACT Recommendation 20 list of \"Codes for Units of Measure Used in International Trade\" is recommended.",
              "type": [
                "string"
              ],
              "codelist": "unitClassificationScheme.csv",
              "openCodelist": true,
              "minLength": 1
            },
            "id": {
              "title": "ID",
              "description": "The identifier from the codelist referenced in the scheme field. For example, with UNCEFACT, this is the value of the 'Common Code' column. From this identifier, applications can look-up the human readable name or symbol for this unit of measure.",
              "type": "string",
              "minLength": 1
            },
            "uri": {
              "title": "URI",
              "description": "If the scheme used provide a machine-readable URI for this unit of measure, this can be given.",
              "type": [
                "string"
              ],
              "format": "uri"
            }
          },
          "minProperties": 1
        },
        "dimensions": {
          "title": "Dimensions",
          "description": "Any number of dimensions can be recorded within this object. Dimensions names should follow the camelCase conventions of OCDS.",
          "type": "object",
          "minProperties": 1
        },
        "notes": {
          "title": "Notes",
          "description": "Any notes on this observation. This may include clarifying information.",
          "type": [
            "string"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Person": {
      "title": "Person",
      "description": "A natural person.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier for the person.",
          "type": "string",
          "minLength": 1
        },
        "name": {
          "title": "Name",
          "description": "The full name of the person.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "identifier": {
          "title": "Identifier",
          "description": "An official identifier for the person. The scheme should follow the pattern {JURISDICTION}-{TYPE}, where JURISDICTION is a three-letter, uppercase ISO 3166-1 alpha-3 country code, and TYPE is one of \"PASSPORT\", \"TAXID\" or \"IDCARD\".",
          "$ref": "#/definitions/Identifier"
        },
        "nationalities": {
          "title": "Nationalities",
          "description": "The nationalities of the person, from the closed country codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "enum": [
              "AD",
              "AE",
              "AF",
              "AG",
              "AI",
              "AL",
              "AM",
              "AO",
              "AQ",
              "AR",
              "AS",
              "AT",
              "AU",
              "AW",
              "AX",
              "AZ",
              "BA",
              "BB",
              "BD",
              "BE",
              "BF",
              "BG",
              "BH",
              "BI",
              "BJ",
              "BL",
              "BM",
              "BN",
              "BO",
              "BQ",
              "BR",
              "BS",
              "BT",
              "BV",
              "BW",
              "BY",
              "BZ",
              "CA",
              "CC",
              "CD",
              "CF",
              "CG",
              "CH",
              "CI",
              "CK",
              "CL",
              "CM",
              "CN",
              "CO",
              "CR",
              "CU",
              "CV",
              "CW",
              "CX",
              "CY",
              "CZ",
              "DE",
              "DJ",
              "DK",
              "DM",
              "DO",
              "DZ",
              "EC",
              "EE",
              "EG",
              "EH",
              "ER",
              "ES",
              "ET",
              "FI",
              "FJ",
              "FK",
              "FM",
              "FO",
              "FR",
              "GA",
              "GB",
              "GD",
              "GE",
              "GF",
              "GG",
              "GH",
              "GI",
              "GL",
              "GM",
              "GN",
              "GP",
              "GQ",
              "GR",
              "GS",
              "GT",
              "GU",
              "GW",
              "GY",
              "HK",
              "HM",
              "HN",
              "HR",
              "HT",
              "HU",
              "ID",
              "IE",
              "IL",
              "IM",
              "IN",
              "IO",
              "IQ",
              "IR",
              "IS",
              "IT",
              "JE",
              "JM",
              "JO",
              "JP",
              "KE",
              "KG",
              "KH",
              "KI",
              "KM",
              "KN",
              "KP",
              "KR",
              "KW",
              "KY",
              "KZ",
              "LA",
              "LB",
              "LC",
              "LI",
              "LK",
              "LR",
              "LS",
              "LT",
              "LU",
              "LV",
              "LY",
              "MA",
              "MC",
              "MD",
              "ME",
              "MF",
              "MG",
              "MH",
              "MK",
              "ML",
              "MM",
              "MN",
              "MO",
              "MP",
              "MQ",
              "MR",
              "MS",
              "MT",
              "MU",
              "MV",
              "MW",
              "MX",
              "MY",
              "MZ",
              "NA",
              "NC",
              "NE",
              "NF",
              "NG",
              "NI",
              "NL",
              "NO",
              "NP",
              "NR",
              "NU",
              "NZ",
              "OM",
              "PA",
              "PE",
              "PF",
              "PG",
              "PH",
              "PK",
              "PL",
              "PM",
              "PN",
              "PR",
              "PS",
              "PT",
              "PW",
              "PY",
              "QA",
              "RE",
              "RO",
              "RS",
              "RU",
              "RW",
              "SA",
              "SB",
              "SC",
              "SD",
              "SE",
              "SG",
              "SH",
              "SI",
              "SJ",
              "SK",
              "SL",
              "SM",
              "SN",
              "SO",
              "SR",
              "SS",
              "ST",
              "SV",
              "SX",
              "SY",
              "SZ",
              "TC",
              "TD",
              "TF",
              "TG",
              "TH",
              "TJ",
              "TK",
              "TL",
              "TM",
              "TN",
              "TO",
              "TR",
              "TT",
              "TV",
              "TW",
              "TZ",
              "UA",
              "UG",
              "UM",
              "US",
              "UY",
              "UZ",
              "VA",
              "VC",
              "VE",
              "VG",
              "VI",
              "VN",
              "VU",
              "WF",
              "WS",
              "XK",
              "YE",
              "YT",
              "ZA",
              "ZM",
              "ZW"
            ]
          },
          "codelist": "country.csv",
          "openCodelist": false,
          "uniqueItems": true,
          "minItems": 1
        },
        "address": {
          "title": "Address",
          "description": "The address of the person.",
          "$ref": "#/definitions/Address"
        },
        "email": {
          "title": "Email",
          "description": "The e-mail address of the person.",
          "type": [
            "string"
          ],
          "format": "email",
          "minLength": 1
        },
        "faxNumber": {
          "title": "Fax number",
          "description": "The fax number of the person. This must include the international dialing code.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "telephone": {
          "title": "Telephone",
          "description": "The telephone number of the person. This must include the international dialing code.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "jobTitle": {
          "title": "Job title",
          "description": "The job title of the person (for example, Financial Manager).",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Transaction": {
      "type": "object",
      "title": "Transaction information",
      "description": "A financial transaction related to a project or contracting process. Draws upon the data models of the Fiscal Data Package and the International Aid Transparency Initiative and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional data.",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A unique identifier for this transaction. This identifier should be possible to cross-reference against the provided data source. For IATI this is the transaction reference.",
          "type": "string",
          "minLength": 1
        },
        "source": {
          "title": "Data source",
          "description": "Used to point either to a corresponding Fiscal Data Package, IATI file, or machine or human-readable source where users can find further information on the budget line item identifiers, or project identifiers, provided here.",
          "type": [
            "string"
          ],
          "format": "uri"
        },
        "date": {
          "title": "Date",
          "description": "The date of the transaction",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "value": {
          "$ref": "#/definitions/Value",
          "title": "Value",
          "description": "The value of the transaction."
        },
        "payer": {
          "$ref": "#/definitions/OrganizationReference",
          "title": "Payer",
          "description": "An organization reference for the organization from which the funds in this transaction originate."
        },
        "payee": {
          "$ref": "#/definitions/OrganizationReference",
          "title": "Payee",
          "description": "An organization reference for the organization which receives the funds in this transaction."
        },
        "uri": {
          "title": "Linked spending information",
          "description": "A URI pointing directly to a machine-readable record about this spending transaction.",
          "type": [
            "string"
          ],
          "format": "uri"
        },
        "relatedImplementationMilestone": {
          "title": "Related implementation milestone",
          "description": "A link to the milestone in the implementation section of OCDS to which this transaction relates.",
          "$ref": "#/definitions/MilestoneReference"
        }
      },
      "minProperties": 1
    },
    "SimpleIdentifier": {
      "title": "Simple identifier",
      "description": "An unambiguous reference to a resource within a given context.",
      "type": "object",
      "properties": {
        "id": {
          "title": "ID",
          "description": "The identifier taken from the scheme.",
          "type": "string",
          "minLength": 1
        },
        "scheme": {
          "title": "Scheme",
          "description": "The list, register or system from which the identifier is taken.",
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "Milestone": {
      "title": "Milestone",
      "description": "An event in the lifetime of a project or contracting process.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier for this milestone, unique within this block.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "Milestone title",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "type": {
          "title": "Milestone type",
          "description": "The nature of the milestone, using the open [milestoneType](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#milestonetype) codelist.",
          "type": [
            "string"
          ],
          "codelist": "milestoneType.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A description of the milestone.",
          "type": [
            "string"
          ],
          "minLength": 1
        },
        "code": {
          "title": "Milestone code",
          "description": "Milestone codes can be used to track specific events that take place for a particular kind of project or contracting process. For example, a code of 'approvalLetter' can be used to allow applications to understand this milestone represents the date an approvalLetter is due or signed.",
          "type": [
            "string"
          ],
          "codelist": "milestoneCode.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "dueDate": {
          "title": "Due date",
          "description": "The date the milestone is due.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "dateMet": {
          "format": "date-time",
          "title": "Date met",
          "description": "The date on which the milestone was met.",
          "type": [
            "string"
          ]
        },
        "dateModified": {
          "title": "Date modified",
          "description": "The date the milestone was last reviewed or modified and the status was altered or confirmed to still be correct.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "status": {
          "title": "Status",
          "description": "The status that was realized on the date provided in `dateModified`, from the closed [milestoneStatus](https://standard.open-contracting.org/1.1/en/schema/codelists/#milestone-status) codelist.",
          "type": [
            "string"
          ],
          "enum": [
            "scheduled",
            "met",
            "notMet",
            "partiallyMet"
          ],
          "codelist": "milestoneStatus.csv",
          "openCodelist": false
        },
        "value": {
          "title": "Value",
          "description": "The payment's value, if the milestone represents a planned payment.",
          "$ref": "#/definitions/Value"
        }
      },
      "minProperties": 1
    },
    "MilestoneReference": {
      "title": "Milestone Reference",
      "description": "A block used to reference a milestone, including the ID and title of the milestone being referenced.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Milestone ID",
          "description": "The ID of the milestone being referenced, this must match the ID of a milestone in this project or contracting process's `.milestones`.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Milestone title",
          "description": "The title of the milestone being referenced, this must match the title of a milestone in this project or contracting process's `.milestones`.",
          "type": [
            "string"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "ClimateMeasure": {
      "title": "Climate measure",
      "description": "A measure adopted by the project to adapt to or mitigate against climate change.",
      "type": "object",
      "properties": {
        "type": {
          "title": "Type",
          "description": "The type of climate measure, using the open [climateMeasure](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#climateMeasure) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "climateMeasure.csv",
          "openCodelist": true,
          "minItems": 1,
          "uniqueItems": true
        },
        "description": {
          "title": "Description",
          "description": "A short description of the climate measure.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "ConservationMeasure": {
      "title": "Conservation measure",
      "description": "A measure adopted by the project to protect and enhance biodiversity.",
      "type": "object",
      "properties": {
        "type": {
          "title": "Type",
          "description": "The type of conservation measure, using the open [conservationMeasure](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#conservationMeasure) codelist.",
          "type": "string",
          "codelist": "conservationMeasure.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the conservation measure.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "EnvironmentalMeasure": {
      "title": "Environmental measure",
      "description": "A measure adopted by the project to mitigate or remedy environmental impacts.",
      "type": "object",
      "properties": {
        "type": {
          "title": "Type",
          "description": "The type of environmental measure, using the open [environmentalMeasure](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#environmentalMeasure) codelist.",
          "type": "string",
          "codelist": "environmentalMeasure.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the environmental measure.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Finance": {
      "title": "Financing arrangement",
      "description": "An arrangement between two parties for raising money.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "An identifier for the financing arrangement.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "A short title for the financing arrangement.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the financing arrangement. This may include details of service fees, commitment fees, lender rights, step in arrangements, exchange rate guarantees, and for syndicated loans, details of syndication and any members of the syndicate.",
          "type": "string",
          "minLength": 1
        },
        "value": {
          "title": "Value",
          "description": "The total value of the finance.",
          "$ref": "#/definitions/Value"
        },
        "financingParty": {
          "title": "Financing organization",
          "description": "The organization providing the financing arrangement.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "financingPartyType": {
          "title": "Financing organization type",
          "description": "The type of the financing organization, using the closed [financingPartyType](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#financingPartyType) codelist.",
          "type": "string",
          "codelist": "financingPartyType.csv",
          "openCodelist": false,
          "enum": [
            "institutional",
            "commercial",
            "bilateral",
            "multilateral",
            "vendor",
            "other"
          ]
        },
        "source": {
          "title": "Funding source",
          "description": "The source of funds for the financing arrangement. For example, the Green Climate Fund.",
          "type": "string",
          "minLength": 1
        },
        "assetClass": {
          "title": "Asset class",
          "description": "The asset classes used in the financing arrangement, using the closed [assetClass](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#assetClass) codelist.",
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "debt",
              "equity"
            ],
            "minLength": 1
          },
          "codelist": "assetClass.csv",
          "openCodelist": false,
          "minItems": 1,
          "uniqueItems": true
        },
        "type": {
          "title": "Type",
          "description": "The type of the financing arrangement, using the closed [financingArrangementType](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#financingArrangementType) codelist.",
          "type": "string",
          "codelist": "financingArrangementType.csv",
          "openCodelist": false,
          "enum": [
            "bond",
            "loan",
            "hybrid",
            "shares.listed",
            "shares.unlisted",
            "grant",
            "guarantee"
          ]
        },
        "repaymentPriority": {
          "title": "Repayment priority",
          "description": "The order in which the debt in the financing arrangement will be repaid in case of default, using the closed [debtRepaymentPriority](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#debtRepaymentPriority) codelist.",
          "type": "string",
          "codelist": "debtRepaymentPriority.csv",
          "openCodelist": false,
          "enum": [
            "senior",
            "subordinated"
          ]
        },
        "concessional": {
          "title": "Concessional",
          "description": "Whether the financing arrangement is provided below market rate in order to accelerate climate or development objectives. Also called soft financing and subsidized funding.",
          "type": "boolean"
        },
        "resultsBased": {
          "title": "Results based",
          "description": "Whether payments under the financing arrangement are contingent on the achievement of pre-defined results.",
          "type": "boolean"
        },
        "period": {
          "title": "Finance period",
          "description": "The period covered by the financing arrangement. Also called maturity.",
          "$ref": "#/definitions/Period"
        },
        "paymentPeriod": {
          "title": "Payment period",
          "description": "The period over which the borrower in the financing arrangement is obliged to make payments.",
          "$ref": "#/definitions/Period"
        },
        "paymentFrequency": {
          "title": "Payment frequency (days)",
          "description": "The average payment frequency (in days) of the financing arrangement. For example, 365 for yearly, 30.4 for monthly, or 1 for daily.",
          "type": "number",
          "minimum": 0
        },
        "interestRate": {
          "title": "Interest rate",
          "description": "The interest rate associated with the finance.",
          "type": "object",
          "properties": {
            "base": {
              "title": "Base",
              "description": "The variable to which an additional margin amount is added to get the Interest amount. This can be specified as a fixed number, as a known variable (e.g. LIBOR or LIBOR+1%), or can be omitted if margin specifies the entire interest rate.",
              "type": [
                "string",
                "number"
              ],
              "minLength": 1
            },
            "margin": {
              "title": "Margin",
              "description": "The variable added to the base to give the Interest amount expressed as a decimal fraction (e.g. 12.5% = 0.125).",
              "type": [
                "number"
              ]
            },
            "fixed": {
              "title": "Fixed rate",
              "description": "A boolean field. If the interest rate of fixed, set to true. Otherwise, set to false.",
              "type": [
                "boolean"
              ]
            },
            "notes": {
              "title": "Notes",
              "description": "Any explanatory notes concerning the interest rate.",
              "type": [
                "string"
              ],
              "minLength": 1
            }
          },
          "minProperties": 1
        },
        "exchangeRateGuarantee": {
          "title": "Exchange rate guarantees",
          "description": "Whether there is an associated exchange rate guarantee with the source of finance.",
          "type": [
            "boolean"
          ]
        },
        "stepInRights": {
          "title": "Step in rights",
          "description": "Whether provision of the finance confers any step in rights to the financing organization.",
          "type": [
            "boolean"
          ]
        },
        "relatedLots": {
          "title": "Related lot(s)",
          "description": "The identifiers of the lots to which the financing arrangement relates.",
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "minProperties": 1
    },
    "CostMeasurement": {
      "title": "Cost measurement",
      "description": "A measurement of costs for a project.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Local identifier",
          "description": "A local identifier for the cost measurement.",
          "type": "string",
          "minLength": 1
        },
        "date": {
          "title": "Date",
          "description": "The date on which the cost measurement was reported.",
          "type": "string",
          "format": "date-time"
        },
        "lifeCycleCosting": {
          "title": "Life-cycle costing",
          "description": "Information about life-cycle costing for the cost measurement.",
          "type": "object",
          "properties": {
            "value": {
              "title": "Life-cycle cost",
              "description": "The life-cycle cost of the project.",
              "$ref": "#/definitions/Value"
            }
          },
          "minProperties": 1
        },
        "costGroups": {
          "title": "Cost groups",
          "description": "The cost groups included in the cost measurement.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CostGroup"
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "CostGroup": {
      "title": "Cost group",
      "description": "A group of costs relating to a project.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Local identifier",
          "description": "A local identifier for the cost group.",
          "type": "string",
          "minLength": 1
        },
        "category": {
          "title": "Category",
          "description": "The category of costs included in the cost group, using the open [costCategory](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#costcategory) codelist.",
          "type": "string",
          "codelist": "costCategory.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "costs": {
          "title": "Costs",
          "description": "The costs included in the cost group.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cost"
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "Cost": {
      "title": "Cost",
      "description": "A cost relating to a project.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Local Identifier",
          "description": "A local identifier for the cost.",
          "type": "string",
          "minLength": 1
        },
        "classification": {
          "title": "Classification",
          "description": "A classification of the cost.",
          "$ref": "#/definitions/Classification"
        },
        "value": {
          "title": "Value",
          "description": "The monetary value of the cost.",
          "$ref": "#/definitions/Value"
        }
      },
      "minProperties": 1
    },
    "LaborObligations": {
      "title": "Labor obligations",
      "description": "Information about labor obligations stipulated in the construction contract(s).",
      "type": "object",
      "properties": {
        "obligations": {
          "title": "Obligations",
          "description": "The labor obligations stipulated in the construction contract(s), using the open [laborObligations codelist](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#laborObligations).",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "laborObligations.csv",
          "openCodelist": true,
          "minItems": 1,
          "uniqueItems": true
        },
        "description": {
          "title": "Description",
          "description": "A short description of the labor obligations.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Benefit": {
      "title": "Benefit",
      "description": "A benefit or intended benefit of the project.",
      "type": "object",
      "properties": {
        "title": {
          "title": "Title",
          "description": "A title for the benefit.",
          "type": "string",
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the benefit.",
          "type": "string",
          "minLength": 1
        },
        "beneficiaries": {
          "title": "Beneficiaries",
          "description": "Whom the benefit will aid.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Beneficiary"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "Beneficiary": {
      "title": "Beneficiary",
      "description": "Information about a beneficiary of the project.",
      "type": "object",
      "properties": {
        "location": {
          "title": "Location",
          "description": "The location of the beneficiary.",
          "$ref": "#/definitions/Location"
        },
        "description": {
          "title": "Description",
          "description": "A short description of the beneficiary.",
          "type": "string",
          "minLength": 1
        },
        "numberOfPeople": {
          "title": "Number of people",
          "description": "The total size of the beneficiary population.",
          "type": "integer"
        }
      },
      "minProperties": 1
    },
    "Sustainability": {
      "title": "Sustainability",
      "description": "Information about how the contracting process incorporates sustainable public procurement.",
      "type": "object",
      "properties": {
        "strategies": {
          "title": "Strategies",
          "description": "The strategies used to pursue the sustainability goal(s), using the open [sustainabilityStrategy](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#sustainabilityStrategy) codelist.",
          "type": [
            "array"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "sustainabilityStrategy.csv",
          "openCodelist": true,
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "minProperties": 1
    },
    "Meeting": {
      "title": "Meeting",
      "description": "Information about a meeting.",
      "type": "object",
      "properties": {
        "id": {
          "title": "ID",
          "description": "The locally unique identifier for the meeting.",
          "type": "string",
          "minLength": 1
        },
        "date": {
          "title": "Date",
          "description": "The date of the meeting.",
          "type": [
            "string"
          ],
          "format": "date-time"
        },
        "address": {
          "title": "Address",
          "description": "The address of the meeting.",
          "$ref": "#/definitions/Address"
        },
        "numberOfParticipants": {
          "title": "Number of participants",
          "description": "The number of people in attendance at the meeting.",
          "type": "integer"
        },
        "publicOffice": {
          "title": "Public office",
          "description": "A position held by a person (or advisor to a person) with decision-making powers, who is elected, appointed or employed within the executive or legislative branches of power at national, sub-national, or supra-national levels; within private bodies performing public functions; and within public international organizations domiciled or operational in the country concerned.",
          "$ref": "#/definitions/PublicOffice"
        }
      },
      "required": [
        "id"
      ],
      "minProperties": 1
    },
    "PublicOffice": {
      "title": "Public office",
      "description": "A position held by a person (or advisor to a person) with decision-making powers, who is elected, appointed or employed within the executive or legislative branches of power at national, sub-national, or supra-national levels; within private bodies performing public functions; and within public international organizations domiciled or operational in the country concerned.",
      "type": "object",
      "properties": {
        "person": {
          "title": "Person",
          "description": "The person holding the public office.",
          "type": "object",
          "properties": {
            "name": {
              "title": "Name",
              "description": "The full name of the person.",
              "type": "string",
              "minLength": 1
            }
          },
          "minProperties": 1
        },
        "organization": {
          "title": "Organization",
          "description": "The organization in which the public office exists.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "jobTitle": {
          "title": "Job title",
          "description": "The job title of the person holding the public office.",
          "type": "string",
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Social": {
      "title": "Social",
      "description": "Information about the social impacts of the project and the actions the project will take to mitigate potentially negative impacts on adjacent populations and project workers.",
      "type": "object",
      "properties": {
        "consultationMeetings": {
          "title": "Public consultation meetings",
          "description": "Information about public consultation meetings held during the project preparation stage.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Meeting"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "landCompensationBudget": {
          "title": "Land compensation budget",
          "description": "The budget allocated for land compensation.",
          "$ref": "#/definitions/Value"
        },
        "inIndigenousLand": {
          "title": "In indigenous land",
          "description": "Whether the project is located in or cuts through indigenous land.",
          "type": "boolean"
        },
        "healthAndSafety": {
          "title": "Health and safety",
          "description": "Information about health and safety in regards to the construction and ongoing use of the project asset.",
          "$ref": "#/definitions/HealthAndSafety"
        }
      },
      "minProperties": 1
    },
    "HealthAndSafety": {
      "title": "Health and safety",
      "description": "Information about health and safety in regards to the construction and ongoing use of the project asset.",
      "type": "object",
      "properties": {
        "materialTests": {
          "title": "Material tests",
          "description": "Information about tests conducted on materials used in the construction of the assets.",
          "type": "object",
          "properties": {
            "tests": {
              "title": "Tests",
              "description": "The construction materials that were tested, using the open [constructionMaterial](https://standard.open-contracting.org/infrastructure/0.9/en/reference/codelists/#constructionMaterial) codelist.",
              "type": [
                "array"
              ],
              "items": {
                "type": "string",
                "minLength": 1
              },
              "codelist": "constructionMaterial.csv",
              "openCodelist": true,
              "minItems": 1,
              "uniqueItems": true
            },
            "description": {
              "title": "Description",
              "description": "A short description of the tests conducted on the construction materials.",
              "type": "string",
              "minLength": 1
            }
          },
          "minProperties": 1
        }
      },
      "minProperties": 1
    }
  },
  "minProperties": 1
}