{
  "id": "https://standard.open-contracting.org/profiles/ppp/schema/1__0__0__beta5/release-schema.json",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Schema for an Open Contracting Release",
  "description": "Each release provides data about a single contracting process at a particular point in time. Releases can be used to notify users of new tenders, awards, contracts and other updates. Releases may repeat or update information provided previously in this contracting process. One contracting process may have many releases. A 'record' of a contracting process follows the same structure as a release, but combines information from multiple points in time into a single summary.",
  "type": "object",
  "properties": {
    "ocid": {
      "title": "Open Contracting ID",
      "description": "A globally unique identifier for this Open Contracting Process. Composed of an ocid prefix and an identifier for the contracting process. For more information see the [Open Contracting Identifier guidance](https://standard.open-contracting.org/1.1/en/schema/identifiers/)",
      "type": "string",
      "minLength": 1
    },
    "id": {
      "title": "Release ID",
      "description": "An identifier for this particular release of information. A release identifier must be unique within the scope of its related contracting process (defined by a common ocid). A release identifier must not contain the # character.",
      "type": "string",
      "minLength": 1,
      "omitWhenMerged": true
    },
    "date": {
      "title": "Release Date",
      "description": "The date on which the information contained in the release was first recorded in, or published by, any system.",
      "type": "string",
      "format": "date-time",
      "omitWhenMerged": true
    },
    "tag": {
      "title": "Release Tag",
      "description": "One or more values from the closed [releaseTag](https://standard.open-contracting.org/1.1/en/schema/codelists/#release-tag) codelist. Tags can be used to filter releases and to understand the kind of information that releases might contain.",
      "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,
      "omitWhenMerged": true
    },
    "initiationType": {
      "title": "Initiation type",
      "description": "The type of initiation process used for this contract, from the closed [initiationType](https://standard.open-contracting.org/1.1/en/schema/codelists/#initiation-type) codelist.",
      "type": "string",
      "enum": [
        "tender"
      ],
      "codelist": "initiationType.csv",
      "openCodelist": false
    },
    "parties": {
      "title": "Parties",
      "description": "Information on the parties (organizations, economic operators and other participants) who are involved in the contracting process 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
    },
    "buyer": {
      "title": "Buyer",
      "description": "A buyer is an entity whose budget will be used to pay for goods, works or services related to a contract. This may be different from the procuring entity who may be specified in the tender data.",
      "$ref": "#/definitions/OrganizationReference"
    },
    "planning": {
      "title": "Planning",
      "description": "Information from the planning phase of the contracting process. This includes information related to the process of deciding what to contract, when and how.",
      "$ref": "#/definitions/Planning"
    },
    "tender": {
      "title": "Tender",
      "description": "The activities undertaken in order to enter into a contract.",
      "$ref": "#/definitions/Tender"
    },
    "awards": {
      "title": "Awards",
      "description": "Information from the award phase of the contracting process. There can be more than one award per contracting process e.g. because the contract is split among different providers, or because it is a standing offer.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Award"
      },
      "uniqueItems": true
    },
    "contracts": {
      "title": "Contracts",
      "description": "Information from the contract creation phase of the procurement process.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/Contract"
      },
      "uniqueItems": true
    },
    "language": {
      "title": "Release 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",
        "null"
      ],
      "default": "en"
    },
    "relatedProcesses": {
      "uniqueItems": true,
      "items": {
        "$ref": "#/definitions/RelatedProcess"
      },
      "description": "The details of related processes: for example, if this process follows on from one or more other processes, represented under a separate open contracting identifier (ocid). This is commonly used to relate mini-competitions to their parent frameworks or individual tenders to a broader planning process.",
      "title": "Related processes",
      "type": "array"
    },
    "bids": {
      "title": "Bids",
      "description": "The bid section is used to publish summary statistics, and where applicable, individual bid information.",
      "$ref": "#/definitions/Bids"
    }
  },
  "required": [
    "ocid",
    "id",
    "date",
    "tag",
    "initiationType"
  ],
  "definitions": {
    "Planning": {
      "title": "Planning",
      "description": "Information from the planning phase of the contracting process. Note that many other fields can be filled in a planning release, in the appropriate fields in other schema sections; these would likely be estimates at this stage, e.g. value in tender.",
      "type": "object",
      "properties": {
        "rationale": {
          "title": "Rationale",
          "description": "The rationale for the procurement provided in free text. More detail can be provided in an attached document.",
          "type": [
            "string",
            "null"
          ]
        },
        "budget": {
          "title": "Budget",
          "description": "Details of the budget that funds this contracting process.",
          "$ref": "#/definitions/Budget"
        },
        "documents": {
          "title": "Documents",
          "description": "A list of documents related to the planning process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          }
        },
        "milestones": {
          "title": "Planning milestones",
          "description": "A list of milestones associated with the planning stage.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Milestone"
          }
        },
        "forecasts": {
          "title": "Forecasts",
          "description": "Any forecasts metrics for a future contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metric"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "project": {
          "title": "Project information",
          "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.",
          "$ref": "#/definitions/Project"
        }
      },
      "patternProperties": {
        "^(rationale_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Tender": {
      "title": "Tender",
      "description": "Data regarding tender process - publicly inviting prospective contractors to submit bids for evaluation and selecting a winner or winners.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Tender ID",
          "description": "An identifier for this tender process. This may be the same as the ocid, or may be an internal identifier for this tender.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1,
          "versionId": true
        },
        "title": {
          "title": "Tender title",
          "description": "A title for this tender. This will often be used by applications as a headline to attract interest, and to help analysts understand the nature of this procurement.",
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "title": "Tender description",
          "description": "A summary description of the tender. This complements any structured information provided using the items array. Descriptions should be short and easy to read. Avoid using ALL CAPS.",
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "title": "Tender status",
          "description": "The current status of the tender, from the closed [tenderStatus](https://standard.open-contracting.org/1.1/en/schema/codelists/#tender-status) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "tenderStatus.csv",
          "openCodelist": false,
          "enum": [
            "planning",
            "planned",
            "active",
            "cancelled",
            "unsuccessful",
            "complete",
            "withdrawn",
            null
          ]
        },
        "procuringEntity": {
          "title": "Procuring entity",
          "description": "The entity managing the procurement. This may be different from the buyer who pays for, or uses, the items being procured.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "items": {
          "title": "Items to be procured",
          "description": "The goods and services to be purchased, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Item"
          },
          "uniqueItems": true
        },
        "value": {
          "title": "Value",
          "description": "The total upper estimated value of the procurement. A negative value indicates that the contracting process may involve payments from the supplier to the buyer (commonly used in concession contracts).",
          "$ref": "#/definitions/Value"
        },
        "minValue": {
          "title": "Minimum value",
          "description": "The minimum estimated value of the procurement.  A negative value indicates that the contracting process may involve payments from the supplier to the buyer (commonly used in concession contracts).",
          "$ref": "#/definitions/Value"
        },
        "procurementMethod": {
          "title": "Procurement method",
          "description": "The procurement method, from the closed [method](https://standard.open-contracting.org/1.1/en/schema/codelists/#method) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "method.csv",
          "openCodelist": false,
          "enum": [
            "open",
            "selective",
            "limited",
            "direct",
            null
          ]
        },
        "procurementMethodDetails": {
          "title": "Procurement method details",
          "description": "Additional detail on the procurement method used. This field can be used to provide the local name of the particular procurement method used.",
          "type": [
            "string",
            "null"
          ]
        },
        "procurementMethodRationale": {
          "title": "Procurement method rationale",
          "description": "Rationale for the chosen procurement method. This is especially important to provide a justification in the case of limited tenders or direct awards.",
          "type": [
            "string",
            "null"
          ]
        },
        "mainProcurementCategory": {
          "title": "Main procurement category",
          "description": "The primary category describing the main object of this contracting process, from the closed [procurementCategory](https://standard.open-contracting.org/1.1/en/schema/codelists/#procurement-category) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "procurementCategory.csv",
          "openCodelist": false,
          "enum": [
            "goods",
            "works",
            "services",
            null
          ]
        },
        "additionalProcurementCategories": {
          "title": "Additional procurement categories",
          "description": "Any additional categories describing the objects of this contracting process, using the open [extendedProcurementCategory](https://standard.open-contracting.org/1.1/en/schema/codelists/#extended-procurement-category) codelist.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "codelist": "extendedProcurementCategory.csv",
          "openCodelist": true
        },
        "awardCriteria": {
          "title": "Award criteria",
          "description": "The award criteria for the procurement, using the open [awardCriteria](https://standard.open-contracting.org/1.1/en/schema/codelists/#award-criteria) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "awardCriteria.csv",
          "openCodelist": true
        },
        "awardCriteriaDetails": {
          "title": "Award criteria details",
          "description": "Any detailed or further information on the award or selection criteria.",
          "type": [
            "string",
            "null"
          ]
        },
        "submissionMethod": {
          "title": "Submission method",
          "description": "The methods by which bids are submitted, using the open [submissionMethod](https://standard.open-contracting.org/1.1/en/schema/codelists/#submission-method) codelist.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "codelist": "submissionMethod.csv",
          "openCodelist": true
        },
        "submissionMethodDetails": {
          "title": "Submission method details",
          "description": "Any detailed or further information on the submission method. This can include the address, e-mail address or online service to which bids are submitted, and any special requirements to be followed for submissions.",
          "type": [
            "string",
            "null"
          ]
        },
        "tenderPeriod": {
          "title": "Tender period",
          "description": "The period when the tender is open for submissions. The end date is the closing date for tender submissions.",
          "$ref": "#/definitions/Period"
        },
        "enquiryPeriod": {
          "title": "Enquiry period",
          "description": "The period during which potential bidders may submit questions and requests for clarification to the entity managing procurement. Details of how to submit enquiries should be provided in attached notices, or in submissionMethodDetails. Structured dates for when responses to questions will be made can be provided using tender milestones.",
          "$ref": "#/definitions/Period"
        },
        "hasEnquiries": {
          "title": "Has enquiries?",
          "description": "A true/false field to indicate whether any enquiries were received during the tender process. Structured information on enquiries that were received, and responses to them, can be provided using the enquiries extension.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "eligibilityCriteria": {
          "title": "Eligibility criteria",
          "description": "A description of any eligibility criteria for potential suppliers.",
          "type": [
            "string",
            "null"
          ]
        },
        "awardPeriod": {
          "title": "Evaluation and award period",
          "description": "The period for decision making regarding the contract award. The end date should be the date on which an award decision is due to be finalized. The start date may be used to indicate the start of an evaluation period.",
          "$ref": "#/definitions/Period"
        },
        "contractPeriod": {
          "description": "The period over which the contract is estimated or required to be active. If the tender does not specify explicit dates, the duration field may be used.",
          "title": "Contract period",
          "$ref": "#/definitions/Period"
        },
        "numberOfTenderers": {
          "title": "Number of tenderers",
          "description": "The number of parties who submit a bid.",
          "type": [
            "integer",
            "null"
          ]
        },
        "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.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          },
          "uniqueItems": true
        },
        "documents": {
          "title": "Documents",
          "description": "All documents and attachments related to the tender, including any notices. See the [documentType](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#documenttype) codelist for details of potential documents to include. Common documents include official legal notices of tender, technical specifications, evaluation criteria, and, as a tender process progresses, clarifications and replies to queries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          }
        },
        "milestones": {
          "title": "Milestones",
          "description": "A list of milestones associated with the tender.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Milestone"
          }
        },
        "amendments": {
          "description": "A tender amendment is a formal change to the tender, and generally involves the publication of a new tender notice/release. The rationale and a description of the changes made can be provided here.",
          "type": "array",
          "title": "Amendments",
          "items": {
            "$ref": "#/definitions/Amendment"
          }
        },
        "amendment": {
          "title": "Amendment",
          "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.",
          "$ref": "#/definitions/Amendment",
          "deprecated": {
            "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.",
            "deprecatedVersion": "1.1"
          }
        },
        "targets": {
          "title": "Targets",
          "description": "Any target metrics for this contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metric"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "patternProperties": {
        "^(title_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(procurementMethodRationale_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(awardCriteriaDetails_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(submissionMethodDetails_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(eligibilityCriteria_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Award": {
      "title": "Award",
      "description": "An award for the given procurement. There can be more than one award per contracting process e.g. because the contract is split among different providers, or because it is a standing offer.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Award ID",
          "description": "The identifier for this award. It must be unique and must not change within the Open Contracting Process it is part of (defined by a single ocid). See the [identifier guidance](https://standard.open-contracting.org/1.1/en/schema/identifiers/) for further details.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "Award title",
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "title": "Description",
          "description": "Award description",
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "title": "Award status",
          "description": "The current status of the award, from the closed [awardStatus](https://standard.open-contracting.org/1.1/en/schema/codelists/#award-status) codelist.",
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "pending",
            "active",
            "cancelled",
            "unsuccessful",
            null
          ],
          "codelist": "awardStatus.csv",
          "openCodelist": false
        },
        "date": {
          "title": "Award date",
          "description": "The date of the contract award. This is usually the date on which a decision to award was made.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "value": {
          "title": "Value",
          "description": "The total value of this award. In the case of a framework contract this may be the total estimated lifetime value, or maximum value, of the agreement. There may be more than one award per procurement. A negative value indicates that the award may involve payments from the supplier to the buyer (commonly used in concession contracts).",
          "$ref": "#/definitions/Value"
        },
        "suppliers": {
          "title": "Suppliers",
          "description": "The suppliers awarded this award. If different suppliers have been awarded different items or values, these should be split into separate award blocks.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          },
          "uniqueItems": true
        },
        "items": {
          "title": "Items awarded",
          "description": "The goods and services awarded in this award, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.",
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Item"
          },
          "uniqueItems": true
        },
        "contractPeriod": {
          "title": "Contract period",
          "description": "The period for which the contract has been awarded.",
          "$ref": "#/definitions/Period"
        },
        "documents": {
          "title": "Documents",
          "description": "All documents and attachments related to the award, including any notices.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true
        },
        "amendments": {
          "description": "An award amendment is a formal change to the details of the award, and generally involves the publication of a new award notice/release. The rationale and a description of the changes made can be provided here.",
          "type": "array",
          "title": "Amendments",
          "items": {
            "$ref": "#/definitions/Amendment"
          }
        },
        "amendment": {
          "title": "Amendment",
          "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.",
          "$ref": "#/definitions/Amendment",
          "deprecated": {
            "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.",
            "deprecatedVersion": "1.1"
          }
        },
        "relatedBid": {
          "title": "Related bid",
          "description": "Where bid details are used, a cross reference to the entry in the bids array to which this award relates. Provide the bid identifier here.",
          "type": [
            "string",
            "null"
          ]
        },
        "agreedMetrics": {
          "title": "Agreed metrics",
          "description": "Any target metrics set out as part of the contract award.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metric"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "evaluationIndicators": {
          "title": "Evaluation of PPP option",
          "description": "Key indicators that describe how the PPP option has been evaluated by government.",
          "$ref": "#/definitions/EvaluationIndicators"
        }
      },
      "patternProperties": {
        "^(title_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Contract": {
      "type": "object",
      "title": "Contract",
      "description": "Information regarding the signed contract between the buyer and supplier(s).",
      "required": [
        "id",
        "awardID"
      ],
      "properties": {
        "id": {
          "title": "Contract ID",
          "description": "The identifier for this contract. It must be unique and must not change within the Open Contracting Process it is part of (defined by a single ocid). See the [identifier guidance](https://standard.open-contracting.org/1.1/en/schema/identifiers/) for further details.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "awardID": {
          "title": "Award ID",
          "description": "The award.id against which this contract is being issued.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "title": {
          "title": "Contract title",
          "description": "Contract title",
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "title": "Contract description",
          "description": "Contract description",
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "title": "Contract status",
          "description": "The current status of the contract, from the closed [contractStatus](https://standard.open-contracting.org/1.1/en/schema/codelists/#contract-status) codelist.",
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "pending",
            "active",
            "cancelled",
            "terminated",
            null
          ],
          "codelist": "contractStatus.csv",
          "openCodelist": false
        },
        "period": {
          "title": "Period",
          "description": "The start and end date for the contract.",
          "$ref": "#/definitions/Period"
        },
        "value": {
          "title": "Value",
          "description": "The total value of this contract. A negative value indicates that the contract will involve payments from the supplier to the buyer (commonly used in concession contracts).",
          "$ref": "#/definitions/Value"
        },
        "items": {
          "title": "Items contracted",
          "description": "The goods, services, and any intangible outcomes in this contract. Note: If the items are the same as the award do not repeat.",
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/Item"
          },
          "uniqueItems": true
        },
        "dateSigned": {
          "title": "Date signed",
          "description": "The date the contract was signed. In the case of multiple signatures, the date of the last signature.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "documents": {
          "title": "Documents",
          "description": "All documents and attachments related to the contract, including any notices.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true
        },
        "implementation": {
          "title": "Implementation",
          "description": "Information related to the implementation of the contract in accordance with the obligations laid out therein.",
          "$ref": "#/definitions/Implementation"
        },
        "relatedProcesses": {
          "uniqueItems": true,
          "items": {
            "$ref": "#/definitions/RelatedProcess"
          },
          "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate open contracting identifier (ocid). This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.",
          "title": "Related processes",
          "type": "array"
        },
        "milestones": {
          "title": "Contract milestones",
          "description": "A list of milestones associated with the finalization of this contract.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Milestone"
          }
        },
        "amendments": {
          "description": "A contract amendment is a formal change to, or extension of, a contract, and generally involves the publication of a new contract notice/release, or some other documents detailing the change. The rationale and a description of the changes made can be provided here.",
          "type": "array",
          "title": "Amendments",
          "items": {
            "$ref": "#/definitions/Amendment"
          }
        },
        "amendment": {
          "title": "Amendment",
          "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.",
          "$ref": "#/definitions/Amendment",
          "deprecated": {
            "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.",
            "deprecatedVersion": "1.1"
          }
        },
        "finance": {
          "title": "Finance",
          "description": "Information about financing arrangements for this contract.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Finance"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "agreedMetrics": {
          "title": "Agreed metrics",
          "description": "Any target metrics set out as part of the contract documents.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metric"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "riskAllocation": {
          "title": "Risk allocation",
          "description": "Information on the allocation of risks relating to the contract.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Risk"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "signatories": {
          "title": "Contract signatories",
          "description": "The signatories to the contract. Each signatory should have a corresponding entry in the `parties` array.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "tariffs": {
          "title": "Tariffs",
          "description": "The tariffs as set out in the contract schedules. Also known as tolls or user charges. Updates to tariffs over the operation of the contract can be provided in the implementation section.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tariff"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "financeSummary": {
          "title": "Finance summary",
          "description": "Key indicators that describe the financial model of the PPP.",
          "$ref": "#/definitions/FinanceSummary"
        }
      },
      "patternProperties": {
        "^(title_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Implementation": {
      "type": "object",
      "title": "Implementation",
      "description": "Information during the performance / implementation stage of the contract.",
      "properties": {
        "transactions": {
          "title": "Transactions",
          "description": "A list of the spending transactions made against this contract",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Transaction"
          },
          "uniqueItems": true
        },
        "milestones": {
          "title": "Milestones",
          "description": "As milestones are completed, the milestone's status and dates should be updated.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Milestone"
          },
          "uniqueItems": true
        },
        "documents": {
          "title": "Documents",
          "description": "Documents and reports that are part of the implementation phase e.g. audit and evaluation reports.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true
        },
        "charges": {
          "title": "Charges",
          "description": "Information on the revenue to be raised through charges, as set out in the contract or as subsequently revised during the life of the project.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Charge"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "metrics": {
          "title": "Metrics",
          "description": "Reported results from the delivery of the contracted goods, works or services.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metric"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "performanceFailures": {
          "title": "Performance failure disclosures",
          "description": "An array of performance failure disclosures, detailing performance failures for different periods and categories.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PerformanceFailure"
          },
          "uniqueItems": true,
          "minItems": 1
        },
        "tariffs": {
          "title": "Tariffs",
          "description": "The tariffs as they apply during the life of the project. Also known as tolls or user charges. These may be initially copied from the contract section, and then updated with any revisions over the lifetime of the implementation phase.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tariff"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      }
    },
    "Milestone": {
      "title": "Milestone",
      "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting process.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier for this milestone, unique within this block. This field is used to keep track of multiple revisions of a milestone through the compilation from release to record mechanism.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "Milestone title",
          "type": [
            "string",
            "null"
          ]
        },
        "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",
            "null"
          ],
          "codelist": "milestoneType.csv",
          "openCodelist": true
        },
        "description": {
          "title": "Description",
          "description": "A description of the milestone.",
          "type": [
            "string",
            "null"
          ]
        },
        "code": {
          "title": "Milestone code",
          "description": "Milestone codes can be used to track specific events that take place for a particular kind of 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",
            "null"
          ],
          "codelist": "milestoneCode.csv",
          "openCodelist": true
        },
        "dueDate": {
          "title": "Due date",
          "description": "The date the milestone is due.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "dateMet": {
          "format": "date-time",
          "title": "Date met",
          "description": "The date on which the milestone was met.",
          "type": [
            "string",
            "null"
          ]
        },
        "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",
            "null"
          ],
          "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",
            "null"
          ],
          "enum": [
            "scheduled",
            "met",
            "notMet",
            "partiallyMet",
            null
          ],
          "codelist": "milestoneStatus.csv",
          "openCodelist": false
        },
        "documents": {
          "title": "Documents",
          "description": "List of documents associated with this milestone (Deprecated in 1.1).",
          "type": "array",
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "Inclusion of documents at the milestone level is now deprecated. Documentation should be attached in the tender, award, contract or implementation sections, and titles and descriptions used to highlight the related milestone. Publishers who wish to continue to provide documents at the milestone level should explicitly declare this by using the milestone documents extension."
          },
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true
        }
      },
      "patternProperties": {
        "^(title_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "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",
            "integer"
          ],
          "minLength": 1
        },
        "documentType": {
          "title": "Document type",
          "description": "A classification of the document described, using the open [documentType](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#documenttype) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "documentType.csv",
          "openCodelist": true
        },
        "title": {
          "title": "Title",
          "description": "The document title.",
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "title": "Description",
          "description": "A short description of the document. Descriptions are recommended to not exceed 250 words. In the event the document is not accessible online, the description field can be used to describe arrangements for obtaining a copy of the document.",
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "title": "URL",
          "description": "A direct link to the document or attachment. The server providing access to this document ought to be configured to correctly report the document mime type.",
          "type": [
            "string",
            "null"
          ],
          "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",
            "null"
          ],
          "format": "date-time"
        },
        "dateModified": {
          "title": "Date modified",
          "description": "Date that the document was last modified",
          "type": [
            "string",
            "null"
          ],
          "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",
            "null"
          ]
        },
        "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",
            "null"
          ]
        },
        "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",
            "null"
          ],
          "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",
            "null"
          ],
          "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",
            "null"
          ],
          "minLength": 1
        },
        "accessDetailsURL": {
          "title": "Access details URL",
          "description": "A web address for information on any special arrangements needed to access the document.",
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "author": {
          "title": "Author",
          "description": "The names of the authors of the document.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "unofficialTranslations": {
          "title": "Unofficial translations",
          "description": "The languages in which unofficial translations of the document are available, from the open [language](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#language) codelist. A [BCP47 language tag](https://www.w3.org/International/articles/language-tags/) is allowed, if there is a user need for the additional information.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "codelist": "language.csv",
          "openCodelist": true,
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "patternProperties": {
        "^(title_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Budget": {
      "type": "object",
      "title": "Budget information",
      "description": "This section contains information about the budget line, and associated projects, through which this contracting process is funded. It draws upon the data model of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/), and should be used to cross-reference to more detailed information held using a Budget Data Package, or, where no linked Budget Data Package is available, to provide enough information to allow a user to manually or automatically cross-reference with another published source of budget and project information.",
      "properties": {
        "id": {
          "title": "ID",
          "description": "An identifier for the budget line item which provides funds for this contracting process. This identifier should be possible to cross-reference against the provided data source.",
          "type": [
            "string",
            "integer",
            "null"
          ]
        },
        "description": {
          "title": "Budget Source",
          "description": "A short free text description of the budget source. May be used to provide the title of the budget line, or the programme used to fund this project.",
          "type": [
            "string",
            "null"
          ]
        },
        "amount": {
          "title": "Amount",
          "description": "The value reserved in the budget for this contracting process. A negative value indicates anticipated income to the budget as a result of this contracting process, rather than expenditure. Where the budget is drawn from multiple sources, the budget breakdown extension can be used.",
          "$ref": "#/definitions/Value"
        },
        "project": {
          "title": "Project title",
          "description": "The name of the project through which this contracting process is funded (if applicable). Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry. No translation option is offered for this string, as translated values can be provided in third-party data, linked from the data source above.",
          "type": [
            "string",
            "null"
          ]
        },
        "projectID": {
          "title": "Project identifier",
          "description": "An external identifier for the project that this contracting process forms part of, or is funded via (if applicable). Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects.",
          "type": [
            "string",
            "integer",
            "null"
          ]
        },
        "uri": {
          "title": "Linked budget information",
          "description": "A URI pointing directly to a machine-readable record about the budget line-item or line-items that fund this contracting process. Information can be provided in a range of formats, including using IATI, the Open Fiscal Data Standard or any other standard which provides structured data on budget sources. Human readable documents can be included using the planning.documents block.",
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "source": {
          "title": "Data Source",
          "description": "(Deprecated in 1.1) Used to point either to a corresponding Budget Data Package, or to a machine or human-readable source where users can find further information on the budget line item identifiers, or project identifiers, provided here.",
          "type": [
            "string",
            "null"
          ],
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "The budget data source field was intended to link to machine-readable data about the budget for a contracting process, but has been widely mis-used to provide free-text descriptions of budget providers. As a result, it has been removed from version 1.1. budget/uri can be used to provide a link to machine-readable budget information, and budget/description can be used to provide human-readable information on the budget source."
          },
          "format": "uri"
        },
        "finance": {
          "title": "Finance",
          "description": "Information about financing arrangements for a future contracting process.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Finance"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "patternProperties": {
        "^(source_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        },
        "^(project_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Transaction": {
      "type": "object",
      "title": "Transaction information",
      "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](http://iatistandard.org/activity-standard/iati-activities/iati-activity/transaction/) 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 spending 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",
            "integer"
          ],
          "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",
            "null"
          ],
          "format": "uri"
        },
        "date": {
          "title": "Date",
          "description": "The date of the transaction",
          "type": [
            "string",
            "null"
          ],
          "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",
            "null"
          ],
          "format": "uri"
        },
        "amount": {
          "title": "Amount",
          "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.",
          "$ref": "#/definitions/Value",
          "deprecated": {
            "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.",
            "deprecatedVersion": "1.1"
          }
        },
        "providerOrganization": {
          "title": "Provider organization",
          "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.",
          "$ref": "#/definitions/Identifier",
          "deprecated": {
            "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.",
            "deprecatedVersion": "1.1"
          }
        },
        "receiverOrganization": {
          "title": "Receiver organization",
          "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.",
          "$ref": "#/definitions/Identifier",
          "deprecated": {
            "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.",
            "deprecatedVersion": "1.1"
          }
        }
      }
    },
    "OrganizationReference": {
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ],
          "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",
            "integer"
          ],
          "description": "The id of the party being referenced. This must match the id of an entry in the parties section.",
          "title": "Organization ID"
        },
        "identifier": {
          "title": "Primary identifier",
          "description": "The primary identifier for this organization. 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.",
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release."
          },
          "$ref": "#/definitions/Identifier"
        },
        "address": {
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release."
          },
          "$ref": "#/definitions/Address",
          "description": "(Deprecated outside the parties section)",
          "title": "Address"
        },
        "additionalIdentifiers": {
          "type": "array",
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release."
          },
          "items": {
            "$ref": "#/definitions/Identifier"
          },
          "title": "Additional identifiers",
          "uniqueItems": true,
          "wholeListMerge": true,
          "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, 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."
        },
        "contactPoint": {
          "deprecated": {
            "deprecatedVersion": "1.1",
            "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release."
          },
          "$ref": "#/definitions/ContactPoint",
          "description": "(Deprecated outside the parties section)",
          "title": "Contact point"
        }
      },
      "type": "object",
      "description": "The id and name of the party being referenced. Used to cross-reference to the parties section",
      "title": "Organization reference"
    },
    "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",
            "null"
          ]
        },
        "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"
        },
        "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,
          "wholeListMerge": true
        },
        "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 contracting process, using the open [partyRole](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#partyrole) codelist.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "codelist": "partyRole.csv",
          "openCodelist": true
        },
        "details": {
          "type": [
            "object",
            "null"
          ],
          "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.",
          "title": "Details"
        },
        "shareholders": {
          "title": "Shareholdings",
          "description": "Shareholdings in the organization: used to provide company ownership information for firms, primarily in the case of large and complex contracts, like public private partnerships, that require disclosure of this information by bidders or suppliers.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Shareholder"
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "patternProperties": {
        "^(name_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Item": {
      "title": "Item",
      "type": "object",
      "description": "A good, service, or work to be contracted.",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier to reference and merge the items by. Must be unique within a given array of items.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A description of the goods, services to be provided.",
          "type": [
            "string",
            "null"
          ]
        },
        "classification": {
          "title": "Classification",
          "description": "The primary classification for the item.",
          "$ref": "#/definitions/Classification"
        },
        "additionalClassifications": {
          "title": "Additional classifications",
          "description": "An array of additional classifications for the item.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Classification"
          },
          "uniqueItems": true,
          "wholeListMerge": true
        },
        "quantity": {
          "title": "Quantity",
          "description": "The number of units to be provided.",
          "type": [
            "number",
            "null"
          ]
        },
        "unit": {
          "title": "Unit",
          "description": "A description of the unit in which the supplies, services or works are provided (e.g. hours, kilograms) and the unit-price.",
          "type": "object",
          "properties": {
            "scheme": {
              "title": "Scheme",
              "description": "The list from which identifiers for units of measure are taken, using the open [unitClassificationScheme](https://standard.open-contracting.org/1.1/en/schema/codelists/#unit-classification-scheme) codelist. 'UNCEFACT' is recommended.",
              "type": [
                "string",
                "null"
              ],
              "codelist": "unitClassificationScheme.csv",
              "openCodelist": true
            },
            "id": {
              "title": "ID",
              "description": "The identifier from the codelist referenced in the `scheme` field. Check the [unitClassificationScheme](https://standard.open-contracting.org/1.1/en/schema/codelists/#unit-classification-scheme) codelist for details of how to find and use identifiers from the scheme in use.",
              "type": [
                "string",
                "null"
              ],
              "versionId": true
            },
            "name": {
              "title": "Name",
              "description": "Name of the unit.",
              "type": [
                "string",
                "null"
              ]
            },
            "value": {
              "title": "Value",
              "description": "The monetary value of a single unit.",
              "$ref": "#/definitions/Value"
            },
            "uri": {
              "title": "URI",
              "description": "The machine-readable URI for the unit of measure, provided by the scheme.",
              "format": "uri",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "patternProperties": {
            "^(name_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "deliveryLocation": {
          "title": "Delivery Location",
          "description": "The location where activity related to this tender, contract or license will be delivered, or will take place.",
          "$ref": "#/definitions/Location"
        },
        "deliveryAddress": {
          "title": "Delivery Address",
          "description": "The address to which, or where, goods or services related to this tender, contract or license will be delivered.",
          "$ref": "#/definitions/Address"
        }
      },
      "patternProperties": {
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Amendment": {
      "title": "Amendment",
      "type": "object",
      "description": "Amendment information",
      "properties": {
        "date": {
          "title": "Amendment date",
          "description": "The date of this amendment.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "rationale": {
          "title": "Rationale",
          "description": "An explanation for the amendment.",
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "description": "An identifier for this amendment: often the amendment number",
          "type": [
            "string",
            "null"
          ],
          "title": "ID"
        },
        "description": {
          "description": "A free text, or semi-structured, description of the changes made in this amendment.",
          "type": [
            "string",
            "null"
          ],
          "title": "Description"
        },
        "amendsReleaseID": {
          "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.",
          "type": [
            "string",
            "null"
          ],
          "title": "Amended release (identifier)"
        },
        "releaseID": {
          "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.",
          "type": [
            "string",
            "null"
          ],
          "title": "Amending release (identifier)"
        },
        "changes": {
          "title": "Amended fields",
          "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "property": {
                "title": "Property",
                "description": "The property name that has been changed relative to the place the amendment is. For example if the contract value has changed, then the property under changes within the contract.amendment would be value.amount. (Deprecated in 1.1)",
                "type": "string"
              },
              "former_value": {
                "title": "Former Value",
                "description": "The previous value of the changed property, in whatever type the property is. (Deprecated in 1.1)",
                "type": [
                  "string",
                  "number",
                  "integer",
                  "array",
                  "object",
                  "null"
                ]
              }
            }
          },
          "deprecated": {
            "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment.",
            "deprecatedVersion": "1.1"
          }
        }
      },
      "patternProperties": {
        "^(rationale_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "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. For line item classifications, this uses the open [itemClassificationScheme](https://standard.open-contracting.org/profiles/ppp/latest/en/reference/codelists/#itemclassificationscheme) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "itemClassificationScheme.csv",
          "openCodelist": true
        },
        "id": {
          "title": "ID",
          "description": "The classification code taken from the scheme.",
          "type": [
            "string",
            "integer",
            "null"
          ],
          "versionId": true
        },
        "description": {
          "title": "Description",
          "description": "A textual description or title for the classification code.",
          "type": [
            "string",
            "null"
          ]
        },
        "uri": {
          "title": "URI",
          "description": "A URI to uniquely identify the classification code.",
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        }
      },
      "patternProperties": {
        "^(description_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "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",
            "null"
          ]
        },
        "id": {
          "title": "ID",
          "description": "The identifier of the organization in the selected scheme.",
          "type": [
            "string",
            "integer",
            "null"
          ],
          "versionId": true
        },
        "legalName": {
          "title": "Legal Name",
          "description": "The legally registered name of the organization.",
          "type": [
            "string",
            "null"
          ]
        },
        "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",
            "null"
          ],
          "format": "uri"
        }
      },
      "patternProperties": {
        "^(legalName_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Address": {
      "title": "Address",
      "description": "An address.",
      "type": "object",
      "properties": {
        "streetAddress": {
          "title": "Street address",
          "type": [
            "string",
            "null"
          ],
          "description": "The street address. For example, 1600 Amphitheatre Pkwy."
        },
        "locality": {
          "title": "Locality",
          "type": [
            "string",
            "null"
          ],
          "description": "The locality. For example, Mountain View."
        },
        "region": {
          "title": "Region",
          "type": [
            "string",
            "null"
          ],
          "description": "The region. For example, CA."
        },
        "postalCode": {
          "title": "Postal code",
          "type": [
            "string",
            "null"
          ],
          "description": "The postal code. For example, 94043."
        },
        "countryName": {
          "title": "Country name",
          "type": [
            "string",
            "null"
          ],
          "description": "The country name. For example, United States."
        }
      },
      "patternProperties": {
        "^(countryName_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "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",
            "null"
          ],
          "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process."
        },
        "email": {
          "title": "Email",
          "type": [
            "string",
            "null"
          ],
          "description": "The e-mail address of the contact point/person."
        },
        "telephone": {
          "title": "Telephone",
          "type": [
            "string",
            "null"
          ],
          "description": "The telephone number of the contact point/person. This should include the international dialing code."
        },
        "faxNumber": {
          "title": "Fax number",
          "type": [
            "string",
            "null"
          ],
          "description": "The fax number of the contact point/person. This should include the international dialing code."
        },
        "url": {
          "title": "URL",
          "type": [
            "string",
            "null"
          ],
          "description": "A web address for the contact point/person.",
          "format": "uri"
        }
      },
      "patternProperties": {
        "^(name_(((([A-Za-z]{2,3}(-([A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-([A-Za-z]{4}))?(-([A-Za-z]{2}|[0-9]{3}))?(-([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-([0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(x(-[A-Za-z0-9]{1,8})+))?)|(x(-[A-Za-z0-9]{1,8})+)))$": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "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",
            "null"
          ]
        },
        "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",
            "null"
          ],
          "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",
            null
          ]
        }
      }
    },
    "Period": {
      "title": "Period",
      "description": "Key events during a 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",
            "null"
          ],
          "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",
            "null"
          ],
          "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",
            "null"
          ]
        },
        "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",
            "null"
          ]
        }
      }
    },
    "RelatedProcess": {
      "description": "A reference to a related contracting process: generally one preceding or following on from the current process.",
      "type": "object",
      "title": "Related Process",
      "properties": {
        "id": {
          "title": "Relationship ID",
          "description": "A local identifier for this relationship, unique within this array.",
          "type": "string"
        },
        "relationship": {
          "items": {
            "type": "string"
          },
          "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/1.1/en/schema/codelists/#related-process) codelist.",
          "title": "Relationship",
          "type": [
            "array",
            "null"
          ],
          "codelist": "relatedProcess.csv",
          "openCodelist": true
        },
        "title": {
          "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.",
          "title": "Related process title",
          "type": [
            "string",
            "null"
          ]
        },
        "scheme": {
          "title": "Scheme",
          "description": "The identification scheme used by this cross-reference, using the open [relatedProcessScheme](https://standard.open-contracting.org/1.1/en/schema/codelists/#related-process-scheme) codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "relatedProcessScheme.csv",
          "openCodelist": true
        },
        "identifier": {
          "description": "The identifier of the related process. If the scheme is 'ocid', this must be an Open Contracting ID (ocid).",
          "title": "Identifier",
          "type": [
            "string",
            "null"
          ]
        },
        "uri": {
          "format": "uri",
          "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.",
          "title": "Related process URI",
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "BidsStatistic": {
      "title": "Bid Statistic",
      "description": "For reporting aggregate statistics about the bids related to a tender. Where lots are in use, statistics can be broken down by lot.",
      "type": "object",
      "required": [
        "id",
        "measure",
        "value"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "An internal identifier for this statistic.",
          "type": "string"
        },
        "measure": {
          "title": "Measure",
          "description": "The statistic reported in the value.",
          "type": "string",
          "codelist": "bidStatistics.csv",
          "openCodelist": true
        },
        "date": {
          "title": "Date",
          "description": "The date when this statistic was last updated. This is often the closing date of the tender process. This field may be omitted unless either (a) the same statistic is provided from multiple points in time, or (b) there is a specific local requirement for the date when statistics were calculated to be provided.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "value": {
          "title": "Value",
          "description": "The value for the measure in question. Total counts should be provided as an integer. Percentages should be provided as a proportion of 1 (e.g. 10% = 0.1)",
          "type": "number"
        },
        "currency": {
          "title": "Currency",
          "description": "The currency of the amount in the `value` field, if the statistic has a monetary value.",
          "type": [
            "string",
            "null"
          ],
          "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",
            null
          ]
        },
        "notes": {
          "title": "Notes",
          "description": "Any notes needed to understand or interpret the given statistic.",
          "type": [
            "string",
            "null"
          ]
        },
        "relatedLot": {
          "title": "Related Lot",
          "description": "Where lots are in use, if this statistic relates to bids on a particular lot, provide the lot identifier here. If left blank, the statistic will be interpreted as applying to the whole tender.",
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "Bids": {
      "title": "Bids",
      "description": "Summary and detailed information about bids received and evaluated as part of this contracting process.",
      "type": "object",
      "properties": {
        "statistics": {
          "title": "Statistics",
          "description": "Summary statistics on the number and nature of bids received. Where information is provided on individual bids, these statistics should match those that can be calculated from the bid details array.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BidsStatistic"
          }
        },
        "details": {
          "title": "Bid details",
          "description": "An array of bids, providing information on the bidders, and where applicable, bid status, bid values and related documents. The extent to which this information can be disclosed varies from jurisdiction to jurisdiction.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Bid"
          }
        }
      }
    },
    "Bid": {
      "title": "Bid",
      "description": "For representing a bid in response to the tender or qualification stage in this contracting process.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier for this bid",
          "type": [
            "string"
          ]
        },
        "date": {
          "title": "Date",
          "description": "The date when this bid was received.",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "status": {
          "title": "Status",
          "description": "The status of the bid.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "bidStatus.csv",
          "openCodelist": false,
          "enum": [
            "invited",
            "pending",
            "valid",
            "disqualified",
            "withdrawn",
            null
          ]
        },
        "tenderers": {
          "title": "Tenderer",
          "description": "The party, or parties, responsible for this bid.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          }
        },
        "value": {
          "title": "Value",
          "description": "The total value of the bid.",
          "$ref": "#/definitions/Value"
        },
        "documents": {
          "title": "Documents",
          "description": "All documents and attachments related to the bid and its evaluation.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Document"
          },
          "uniqueItems": true
        }
      }
    },
    "Charge": {
      "title": "Charge",
      "description": "A charge to be incurred by users or government over the course of the contract. Charge information can be broken down by period. Information on the unit prices upon which total values are based can be provided in the tariffs section.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Charge identifier",
          "description": "A local identifier for this specific charge. This field is used to keep track of revisions of a charge across multiple OCDS releases.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Charge title",
          "description": "A descriptive title for this charge.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "paidBy": {
          "title": "Paid by",
          "description": "Is this a user charge (paid by businesses or citizens using the facilities provided by the contract), or a charge paid by the government?",
          "type": [
            "string",
            "null"
          ],
          "codelist": "chargePaidBy.csv",
          "openCodelist": false,
          "enum": [
            "government",
            "user",
            null
          ]
        },
        "period": {
          "title": "Period",
          "description": "The period to which this charge applies.",
          "$ref": "#/definitions/Period"
        },
        "estimatedValue": {
          "title": "Estimated value",
          "description": "What is the estimated total value to be raised from this charge during this period.",
          "$ref": "#/definitions/Value"
        },
        "actualValue": {
          "title": "Actual value",
          "description": "In the implementation section, this field may be updated with the total revenue raised from this charge during this period.",
          "$ref": "#/definitions/Value"
        },
        "notes": {
          "title": "Notes",
          "description": "Any notes on this charge. This may include clarifying information.",
          "type": [
            "string",
            "null"
          ],
          "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 this financing arrangement.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "A short title for this financing arrangement.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of this 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",
            "null"
          ],
          "minLength": 1
        },
        "value": {
          "title": "Value",
          "description": "The total value of this finance.",
          "$ref": "#/definitions/Value"
        },
        "financingParty": {
          "title": "Financing organization",
          "description": "The organization providing this financing arrangement.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "financingPartyType": {
          "title": "Financing organization type",
          "description": "The type of the financing organization, from the closed financingPartyType codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "financingPartyType.csv",
          "openCodelist": false,
          "enum": [
            "institutional",
            "commercial",
            "bilateral",
            "multilateral",
            "vendor",
            "other",
            null
          ]
        },
        "source": {
          "title": "Funding source",
          "description": "The source of funds for this financing arrangement. For example, the Green Climate Fund.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "assetClass": {
          "title": "Asset class",
          "description": "The asset classes used in this financing arrangement, from the closed assetClass codelist.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string",
            "enum": [
              "debt",
              "equity"
            ],
            "minLength": 1
          },
          "codelist": "assetClass.csv",
          "openCodelist": false,
          "minItems": 1,
          "uniqueItems": true
        },
        "type": {
          "title": "Type",
          "description": "The type of this financing arrangement, from the closed financingArrangementType codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "financingArrangementType.csv",
          "openCodelist": false,
          "enum": [
            "bond",
            "loan",
            "hybrid",
            "shares.listed",
            "shares.unlisted",
            "grant",
            "guarantee",
            null
          ]
        },
        "repaymentPriority": {
          "title": "Repayment priority",
          "description": "The order in which the debt in this financing arrangement will be repaid in case of default, from the closed debtRepaymentPriority codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "debtRepaymentPriority.csv",
          "openCodelist": false,
          "enum": [
            "senior",
            "subordinated",
            null
          ]
        },
        "concessional": {
          "title": "Concessional",
          "description": "Whether this financing arrangement is provided below market rate in order to accelerate climate or development objectives. Also called soft financing and subsidized funding.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "resultsBased": {
          "title": "Results based",
          "description": "Whether payments under this financing arrangement are contingent on the achievement of pre-defined results.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "period": {
          "title": "Finance period",
          "description": "The period covered by this financing arrangement. Also called maturity.",
          "$ref": "#/definitions/Period"
        },
        "paymentPeriod": {
          "title": "Payment period",
          "description": "The period over which the borrower in this financing arrangement is obliged to make payments.",
          "$ref": "#/definitions/Period"
        },
        "paymentFrequency": {
          "title": "Payment frequency (days)",
          "description": "The average payment frequency (in days) of this financing arrangement. For example, 365 for yearly, 30.4 for monthly, or 1 for daily.",
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        },
        "interestRate": {
          "title": "Interest rate",
          "description": "The interest rate associated with this 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",
                "null"
              ],
              "minLength": 1
            },
            "margin": {
              "title": "Margin",
              "description": "The variable added to the base to give the interest amount, expressed as a decimal (for example, 0.1) and not as a percentage (for example, 10).",
              "type": [
                "number",
                "null"
              ]
            },
            "fixed": {
              "title": "Fixed rate",
              "description": "A boolean field. If this interest rate of fixed, set to true. Otherwise, set to false.",
              "type": [
                "boolean",
                "null"
              ]
            },
            "notes": {
              "title": "Notes",
              "description": "Any explanatory notes concerning the interest rate.",
              "type": [
                "string",
                "null"
              ],
              "minLength": 1
            }
          },
          "minProperties": 1
        },
        "exchangeRateGuarantee": {
          "title": "Exchange rate guarantees",
          "description": "Whether there is an associated exchange rate guarantee with this source of finance.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "stepInRights": {
          "title": "Step in rights",
          "description": "Whether provision of this finance confers any step in rights to the financing organization.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "relatedLots": {
          "title": "Related lot(s)",
          "description": "The identifiers of the lots to which this financing arrangement relates.",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string",
            "minLength": 1
          },
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "Location": {
      "type": "object",
      "title": "Delivery Location",
      "description": "The location where activity related to this tender, contract or license will be delivered, or will take place. A location can be described by either a geometry (point location, line or polygon), or a gazetteer entry, or both.",
      "properties": {
        "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",
            "null"
          ]
        },
        "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",
                "null"
              ],
              "enum": [
                "Point",
                "MultiPoint",
                "LineString",
                "MultiLineString",
                "Polygon",
                "MultiPolygon",
                null
              ],
              "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",
                "null"
              ],
              "items": {
                "type": [
                  "number",
                  "array"
                ]
              }
            }
          }
        },
        "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",
                "null"
              ],
              "codelist": "locationGazetteers.csv",
              "openCodelist": true
            },
            "identifiers": {
              "title": "Identifiers",
              "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.",
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": [
                  "string"
                ]
              }
            }
          }
        },
        "uri": {
          "type": [
            "string",
            "null"
          ],
          "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."
        }
      }
    },
    "Metric": {
      "title": "Metric",
      "description": "Metrics are used to set out targets and results from a contracting process. During the planning and tender sections, a metric indicates the anticipated results. In award and contract sections it indicates the awarded/contracted results. In the implementation section it is used to provide updates on actually delivered results, also known as outputs.",
      "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 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",
            "null"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the metric. This may include short details of measurement methods.",
          "type": [
            "string",
            "null"
          ],
          "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",
            "null"
          ],
          "minLength": 1
        },
        "unit": {
          "title": "Unit",
          "description": "Unit",
          "type": "object",
          "properties": {
            "name": {
              "title": "Unit name",
              "description": "The name of the unit.",
              "type": [
                "string",
                "null"
              ],
              "minLength": 1
            },
            "scheme": {
              "title": "Scheme",
              "description": "The list from which units of measure identifiers are taken. It is recommended to use the scheme 'UNCEFACT' and codes from the UN/CEFACT Recommendation 20 list of \"Codes for Units of Measure Used in International Trade\".",
              "type": [
                "string",
                "null"
              ],
              "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",
                "null"
              ],
              "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",
                "null"
              ],
              "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",
          "patternProperties": {
            "^.*": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 1
            }
          },
          "minProperties": 1
        },
        "notes": {
          "title": "Notes",
          "description": "Any notes on this observation. This may include clarifying information.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "relatedImplementationMilestone": {
          "title": "Related implementation milestone",
          "description": "A link to the milestone in the implementation section of OCDS to which this forecast, target or actual observation relates.",
          "$ref": "#/definitions/MilestoneReference"
        }
      },
      "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 described elsewhere in a release about this contracting process.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Milestone title",
          "description": "The title of the milestone being referenced, this must match the title of a milestone described elsewhere in a release about this contracting process.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "PerformanceFailure": {
      "title": "Performance failure disclosure",
      "description": "Details of the performance failures for a given period and category. Details of the associated penalties and abatements provided for in the contract, imposed and paid can also be provided.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "A local identifier for this specific category and period of performance failure. This field is used to keep track of revisions of a charge across multiple OCDS releases.",
          "type": "string",
          "minLength": 1
        },
        "period": {
          "title": "Performance failure period",
          "description": "The reporting period for the performance failures.",
          "$ref": "#/definitions/Period"
        },
        "category": {
          "title": "Performance failure category",
          "description": "The category of the performance failures.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "events": {
          "title": "Number of events",
          "description": "The number of performance failures for this period and category.",
          "type": [
            "number",
            "null"
          ]
        },
        "penaltyContracted": {
          "title": "Contracted penalty",
          "description": "A description of the penalty or abatement provided for in the contract for this period, category and number of performance failures.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "penaltyImposed": {
          "title": "Penalty imposed",
          "description": "A description of the penalty or abatement imposed for this period, category and number of performance failures.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "penaltyPaid": {
          "title": "Penalty paid",
          "description": "Whether the penalty imposed for this period, category and number of performance failures has been paid.",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "minProperties": 1
    },
    "Project": {
      "title": "Project information",
      "description": "Information about the infrastructure or public-private partnership project to which a planning process is related.",
      "type": "object",
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "An externally provided identifier for the project. This can be a URI, an identifier from a projects register, or based on the canonical version of the project's name. Project identifiers should be unique within the scope of the publication.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "The name of the project. If a projects register is available, this should be the same as the project's name in that register.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "description": {
          "title": "Description",
          "description": "A short description of the project.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "totalValue": {
          "title": "Total value",
          "description": "The total anticipated value of the project over its lifetime.",
          "$ref": "#/definitions/Value"
        },
        "uri": {
          "title": "URI",
          "description": "The URI of a resource with additional information about the project.",
          "type": [
            "string",
            "null"
          ],
          "format": "uri"
        },
        "sector": {
          "title": "Sector",
          "description": "The primary sector to which the project relates. It is recommended to use the scheme 'oc4idsProjectSector' and codes from the [OC4IDS projectSector codelist](https://standard.open-contracting.org/infrastructure/latest/en/reference/codelists/#projectsector).",
          "$ref": "#/definitions/Classification"
        },
        "additionalClassifications": {
          "title": "Additional classifications",
          "description": "Additional classifications for the project. For example, a sector or strategic framework classification.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Classification"
          },
          "wholeListMerge": true,
          "uniqueItems": true,
          "minItems": 1
        },
        "locations": {
          "title": "Locations",
          "description": "Information about the locations where the project is taking place.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Location"
          },
          "wholeListMerge": true,
          "uniqueItems": true,
          "minItems": 1
        }
      },
      "minProperties": 1
    },
    "Risk": {
      "title": "Risk",
      "description": "A risk relating to the project.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Risk ID",
          "description": "A local identifier for this risk, unique within this block. This field is used to keep track of multiple revisions of a risk through the compilation from release to record mechanism.",
          "type": [
            "string",
            "integer"
          ],
          "minLength": 1
        },
        "category": {
          "title": "Risk category",
          "description": "The category of the risk, from the riskCategory codelist.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "riskCategory.csv",
          "openCodelist": true,
          "minLength": 1
        },
        "description": {
          "title": "Risk description",
          "description": "The description of the risk.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "allocation": {
          "title": "Risk allocation",
          "description": "The party to the contract that retains the risk.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "riskAllocation.csv",
          "openCodelist": false,
          "enum": [
            "publicAuthority",
            "privateParty",
            "undefined",
            null
          ]
        },
        "notes": {
          "title": "Risk notes",
          "description": "Additional notes on the risk, for example the rationale for the allocation.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Shareholder": {
      "title": "Shareholding",
      "description": "A shareholding in an organization.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "ID",
          "description": "A local identifier for this shareholding, unique within this array.",
          "type": "string",
          "minLength": 1
        },
        "shareholder": {
          "title": "Shareholder",
          "description": "The organization holding the share.",
          "$ref": "#/definitions/OrganizationReference"
        },
        "shareholding": {
          "title": "Shareholding",
          "description": "The proportion of the organization's shares held by the shareholder, expressed as a decimal between 0 and 1.",
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 1
        },
        "votingRights": {
          "title": "Voting rights",
          "description": "The type of voting rights associated with the shareholder's shares.",
          "type": [
            "string",
            "null"
          ],
          "codelist": "votingRights.csv",
          "openCodelist": false,
          "enum": [
            "ordinary",
            "none",
            "restricted",
            "additional",
            "enhanced",
            null
          ]
        },
        "votingRightsDetails": {
          "title": "Voting rights details",
          "description": "Detailed information about the voting rights associated with the shareholder's shares: for example, when the shareholder voting rights are restricted, additional or enhanced.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "notes": {
          "title": "Notes",
          "description": "Additional notes on the shareholding or shareholder: for example, details on any caps on equity transfer, or lock-in arrangements, applicable to the shareholder.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "Tariff": {
      "title": "Tariff",
      "description": "An item in a tariff table, setting out a breakdown of the user or government fees payable in relation to each unit of a particular good or services.",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "title": "Identifier",
          "description": "A local identifier for this specific tariff. This field is used to keep track of revisions of a tariff across multiple OCDS releases.",
          "type": "string",
          "minLength": 1
        },
        "title": {
          "title": "Title",
          "description": "The title of this tariff.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "paidBy": {
          "title": "Paid by",
          "description": "Is this a user charge (paid by businesses or citizens using the facilities provided by the contract), or a charge paid by the government?",
          "type": [
            "string",
            "null"
          ],
          "codelist": "chargePaidBy.csv",
          "openCodelist": false,
          "enum": [
            "government",
            "user",
            null
          ]
        },
        "period": {
          "title": "Period",
          "description": "The period to which this tariff applies.",
          "$ref": "#/definitions/Period"
        },
        "value": {
          "title": "Value",
          "description": "The price per unit of this tariff.",
          "$ref": "#/definitions/Value"
        },
        "unit": {
          "title": "Unit",
          "description": "The unit against which this tariff is charged.",
          "type": "object",
          "properties": {
            "name": {
              "title": "Unit name",
              "description": "The name of the unit that the tariff is charged against. E.g. tonnes,",
              "type": [
                "string",
                "null"
              ],
              "minLength": 1
            },
            "scheme": {
              "title": "Scheme",
              "description": "The list from which units of measure identifiers are taken. It is recommended to use the scheme 'UNCEFACT' and codes from the UN/CEFACT Recommendation 20 list of \"Codes for Units of Measure Used in International Trade\".",
              "type": [
                "string",
                "null"
              ],
              "codelist": "unitClassificationScheme.csv",
              "openCodelist": true,
              "minLength": 1
            },
            "id": {
              "title": "ID",
              "description": "The identifier from the codelist referenced in the schema property. 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",
                "null"
              ],
              "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",
                "null"
              ],
              "format": "uri"
            }
          },
          "minProperties": 1
        },
        "dimensions": {
          "title": "Dimensions",
          "description": "Used to capture the different breakdowns in tariff charges. Any number of dimensions can be recorded within this object. Dimensions names should follow the camelCase conventions of OCDS.",
          "type": "object",
          "patternProperties": {
            "^.*": {
              "type": [
                "string",
                "null"
              ],
              "minLength": 1
            }
          },
          "minProperties": 1
        },
        "notes": {
          "title": "Notes",
          "description": "Any notes on this tariff line item. This may include clarifying information.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "EvaluationIndicators": {
      "title": "Evaluation indicators",
      "description": "Key indicators that describe how the PPP option has been evaluated by government.",
      "type": "object",
      "properties": {
        "riskPremium": {
          "title": "Risk premium",
          "description": "The risk premium used by government when evaluating the PPP option, expressed as a decimal (for example, 0.1) and not as a percentage (for example, 10).",
          "type": [
            "number",
            "null"
          ]
        },
        "riskPremiumDetails": {
          "title": "Risk premium details",
          "description": "Additional details on the risk premium used: for example, the rationale.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "discountRate": {
          "title": "Discount rate",
          "description": "The discount rate used by government when evaluating the PPP option, expressed as a decimal (for example, 0.1) and not as a percentage (for example, 10).",
          "type": [
            "number",
            "null"
          ]
        },
        "discountRateDetails": {
          "title": "Discount rate details",
          "description": "Additional details on the discount rate used.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "netPresentValue": {
          "title": "Net present value",
          "description": "The discounted value of an investment's cash inflows minus the discounted value of its cash outflows.",
          "$ref": "#/definitions/Value"
        },
        "netPresentValueDetails": {
          "title": "Net present value details",
          "description": "Additional details on the calculation of the net present value.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    },
    "FinanceSummary": {
      "title": "Finance summary",
      "description": "Key indicators that describe the financial model of the PPP.",
      "type": "object",
      "properties": {
        "debtEquityRatio": {
          "title": "Debt-equity ratio",
          "description": "The debt-equity ratio of the project, expressed as a decimal (for example, 0.1). Also called gearing or leverage.",
          "type": [
            "number",
            "null"
          ]
        },
        "debtEquityRatioDetails": {
          "title": "Debt-equity ratio details",
          "description": "Additional details on the calculation of the debt equity ratio.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "shareCapital": {
          "title": "Share capital",
          "description": "The value of the capital in the project that comes from the issue of shares.",
          "$ref": "#/definitions/Value"
        },
        "shareCapitalDetails": {
          "title": "Share capital details",
          "description": "Additional details on the calculation of the share capital.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "subsidyRatio": {
          "title": "Subsidy ratio",
          "description": "The subsidy's proportion of the project value, expressed as a decimal between 0 and 1.",
          "type": [
            "number",
            "null"
          ]
        },
        "subsidyRatioDetails": {
          "title": "Subsidy ratio details",
          "description": "Additional details on the calculation of the subsidy ratio.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        },
        "projectIRR": {
          "title": "Internal rate of return",
          "description": "The internal rate of return of the project, expressed as a decimal (for example, 0.1) and not as a percentage (for example, 10).",
          "type": [
            "number",
            "null"
          ]
        },
        "projectIRRDetails": {
          "title": "Internal rate of return details",
          "description": "Additional details on the calculation of the project IRR.",
          "type": [
            "string",
            "null"
          ],
          "minLength": 1
        }
      },
      "minProperties": 1
    }
  }
}