From aa094bd9b98de410c3c71384b8d67eb280ece0c7 Mon Sep 17 00:00:00 2001 From: odscjen Date: Wed, 3 Apr 2024 12:36:58 +0100 Subject: [PATCH 01/17] schema/: merge Project and Location extensions --- schema/codelists/classificationScheme.csv | 1 + schema/codelists/geometryType.csv | 7 + schema/codelists/locationGazetteers.csv | 7 + schema/release-schema.json | 223 ++++++++++++++++++++++ 4 files changed, 238 insertions(+) create mode 100644 schema/codelists/geometryType.csv create mode 100644 schema/codelists/locationGazetteers.csv diff --git a/schema/codelists/classificationScheme.csv b/schema/codelists/classificationScheme.csv index 2aca73f40..0f54f906b 100644 --- a/schema/codelists/classificationScheme.csv +++ b/schema/codelists/classificationScheme.csv @@ -20,3 +20,4 @@ TED_CA_TYPE,EU Type of contracting authority (TED schema),The types of contracti TED_CE_ACTIVITY,EU Main activity of contracting entity (TED schema),The main activity of the contracting entity within the domain of public procurement according to the legislation of the European Parliament. This scheme's codes match those in TED schema.,https://simap.ted.europa.eu/documents/10184/99173/EN_F04.pdf,organization eu-buyer-contracting-type,EU Buyer contracting entity type,Whether or not the buyer is a contracting entity within the domain of public procurement according to the legislation of the European Parliament.,https://docs.ted.europa.eu/eforms/latest/reference/code-lists/buyer-contracting-type.html,organization eu-main-activity,EU Main activity authority list (eForms),The main activity of the contracting entity within the domain of public procurement according to the legislation of the European Parliament. This scheme's codes match those in eForms.,https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/main-activity,organization +oc4idsProjectSector,OC4IDS Project Sector,Open Contracting for Infrastructure Data Standards Toolkit projectSector codelist,https://standard.open-contracting.org/infrastructure/latest/en/reference/codelists/#projectsector,project diff --git a/schema/codelists/geometryType.csv b/schema/codelists/geometryType.csv new file mode 100644 index 000000000..f053feb6a --- /dev/null +++ b/schema/codelists/geometryType.csv @@ -0,0 +1,7 @@ +Code,Title,Description,Source +Point,Point,"For type 'Point', the 'coordinates' member is a single position.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPoint,MultiPoint,"For type 'MultiPoint', the 'coordinates' member is an array of positions.",https://tools.ietf.org/html/rfc7946#section-3.1 +LineString,LineString,"For type 'LineString', the 'coordinates' member is an array of two or more positions.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiLineString,MultiLineString,"For type 'MultiLineString', the 'coordinates' member is an array of LineString coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +Polygon,Polygon,"For type 'Polygon', the 'coordinates' member must be an array of linear ring coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPolygon,MultiPolygon,"For type 'MultiPolygon', the 'coordinates' member is an array of Polygon coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 diff --git a/schema/codelists/locationGazetteers.csv b/schema/codelists/locationGazetteers.csv new file mode 100644 index 000000000..fa5e62d4b --- /dev/null +++ b/schema/codelists/locationGazetteers.csv @@ -0,0 +1,7 @@ +Category,Code,Title,Description,Source,URI Pattern +Sub-National,NUTS,EU Nomenclature of Territorial Units for Statistics,The Nomenclature of Territorial Units for Statistics (NUTS) was established by Eurostat in order to provide a single uniform breakdown of territorial units for the production of regional statistics for the European Union.,https://ec.europa.eu/eurostat/web/nuts/linked-open-data,http://data.europa.eu/nuts/code/ +National,ISO2,ISO Country Codes (3166-1 alpha-2),ISO 2-Digit Country Codes,https://www.iso.org/iso-3166-country-codes.html, +Universal,GEONAMES,GeoNames,"GeoNames provides numerical identifiers for many points of interest around the world, including administrative divisions, populated centres and other locations, embedded within a structured tree of geographic relations.",https://www.geonames.org/,https://www.geonames.org/ +Universal,OSMN,OpenStreetMap Node,"OpenStreetMap Nodes consist of a single point in space defined by a latitude, longitude and node ID. Nodes might have tags to indicate the particular geographic feature they represent.",,https://www.openstreetmap.org/node/ +Universal,OSMR,OpenStreetMap Relation,"Relations are used to model logical (and usually local) or geographic relationships between objects. In practice, boundaries of geographic areas are available as Relations in OpenStreetMap.",https://wiki.openstreetmap.org/wiki/Relation,https://www.openstreetmap.org/relation/ +Universal,OSMW,OpenStreetMap Way,An OpenStreetMap Way is an ordered list of OpenStreetMap nodes. It can be used to describe fragments of roads or local boundaries and bounding boxes.,https://wiki.openstreetmap.org/wiki/Way,https://www.openstreetmap.org/way/ diff --git a/schema/release-schema.json b/schema/release-schema.json index f7346ffb2..bdff98fee 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -163,6 +163,11 @@ "description": "Details of the budget that will fund the future contract(s)", "$ref": "#/definitions/Budget" }, + "project": { + "title": "Project information", + "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", + "$ref": "#/definitions/Project" + }, "documents": { "title": "Documents", "description": "Documents related to the planning process (for example, notices, needs assessments and market studies).", @@ -301,6 +306,26 @@ "description": "The estimated maximum value of the framework agreement, as estimated when publishing the tender information.", "$ref": "#/definitions/Value" }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to this tender will take place.", + "type": "array", + "items": { + "$ref": "#/definitions/Location" + }, + "wholeListMerge": true, + "uniqueItems": true + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to this tender will be delivered.", + "type": "array", + "items": { + "$ref": "#/definitions/Address" + }, + "wholeListMerge": true, + "uniqueItems": true + }, "procurementMethod": { "title": "Procurement method", "description": "The method describing which organizations can submit a bid, using the closed [method](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#method) codelist. In releases concerning second stages (e.g. in framework agreements) or other subsequent stages, the procurement method always refers to the first stage of the contracting process.", @@ -1546,6 +1571,28 @@ "title": "Unit", "description": "A description of the unit in which the goods, services or works are provided (e.g. hours, kilograms) and the unit-price.", "$ref": "#/definitions/Unit" + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to this tender, contract or license will be delivered.", + "type": "array", + "items": { + "$ref": "#/definitions/Location" + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to this tender, contract or license will be delivered.", + "type": "array", + "items": { + "$ref": "#/definitions/Address" + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -1720,6 +1767,98 @@ } } }, + "Location": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, "Address": { "title": "Address", "description": "An address.", @@ -2031,6 +2170,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } } }, @@ -2677,6 +2824,82 @@ } }, "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 } } } From 4b967f52633f29931a2be66187f2055d26aba123 Mon Sep 17 00:00:00 2001 From: odscjen Date: Wed, 3 Apr 2024 12:48:20 +0100 Subject: [PATCH 02/17] update changelog.md --- docs/history/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/history/changelog.md b/docs/history/changelog.md index 89235d8a4..1d352e8b8 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -74,6 +74,7 @@ Per the [normative and non-normative content and changes policy](../governance/n * [#1316](https://github.com/open-contracting/standard/pull/1316) `language` * [#1308](https://github.com/open-contracting/standard/pull/1308) `mediaType` * [#1459](https://github.com/open-contracting/standard/pull/1459) `partyScale` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `geometryType` and `locationGazetteers` * `classificationScheme.csv`: * [#1319](https://github.com/open-contracting/standard/pull/1319) Rename from `itemClassificationScheme.csv`. @@ -88,6 +89,7 @@ Per the [normative and non-normative content and changes policy](../governance/n * 'eu-main-activity' * [#1452](https://github.com/open-contracting/standard/pull/1452) Add 'proClass'. * [#1637](https://github.com/open-contracting/standard/pull/1637) Add 'sdg' and 'sdgTarget'. + * [#1684](https://github.com/open-contracting/standard/pull/1684) Add 'oc4idsProjectSector' from project extension. * `documentType.csv`: * Add codes: @@ -215,6 +217,7 @@ Per the [normative and non-normative content and changes policy](../governance/n * [#1519](https://github.com/open-contracting/standard/pull/1519) `Value.amountNet` and `Value.amountGross` * [#1490](https://github.com/open-contracting/standard/pull/1490) `contracts.identifiers` * [#1679](https://github.com/open-contracting/standard/pull/1679) `Organization.details.classifications` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `planning.project`, `deliveryLocations` and `deliveryAddresses` to `Tender` and `Item` * Deprecate some fields: * [#1200](https://github.com/open-contracting/standard/pull/1200) `tender.submissionMethod`, because all codes from the `submissionMethod` codelist are deprecated. From 2675f20d664dfe0858e7163de2f91b42e5829a43 Mon Sep 17 00:00:00 2001 From: odscjen Date: Thu, 11 Apr 2024 11:57:08 +0100 Subject: [PATCH 03/17] add Location and Project to examples release_package.json and schema/reference --- .../release_package.json | 41 +++++++++++++++++++ docs/schema/reference.md | 41 +++++++++++++++++-- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/docs/examples/release_schema_reference/release_package.json b/docs/examples/release_schema_reference/release_package.json index a428e8272..aa6c4427c 100644 --- a/docs/examples/release_schema_reference/release_package.json +++ b/docs/examples/release_schema_reference/release_package.json @@ -94,6 +94,47 @@ "projectID": "SP001", "uri": "https://openspending.org/uk-barnet-budget/entries/6801ad388f3a38b7740dde20108c58b35984ee91" }, + "project": { + "id": "oc4ids-bu3kcz-0000", + "title": "Central Junction Cycle Lane Construction", + "description": "Design, construction and supervision of a new cycle lane for the Central Junction.", + "totalValue": { + "amount": 1100000, + "currency": "GBP" + }, + "uri": "http://example.com/projects/oc4ids-bu3kcz-0000.json", + "sector": { + "id": "transport.road", + "description": "Road transport, including roads, highways, streets, tunnels and bridges.", + "scheme": "oc4idsProjectSector" + }, + "additionalClassifications": [ + { + "id": "03.04.05", + "description": "Cycle lanes for road transport.", + "scheme": "My local scheme" + } + ], + "locations": [ + { + "description": "Barnet, London, UK", + "geometry": { + "type": "Point", + "coordinates": [ + 51.605, + 0.2076 + ] + }, + "gazetteer": { + "scheme": "GEONAMES", + "identifier": [ + "2656295" + ] + }, + "uri": "https://www.geonames.org/2656295/barnet.html" + } + ] + }, "documents": [ { "datePublished": "2009-01-05T00:00:00Z", diff --git a/docs/schema/reference.md b/docs/schema/reference.md index 22cfafe62..68f2d1b34 100644 --- a/docs/schema/reference.md +++ b/docs/schema/reference.md @@ -122,7 +122,7 @@ Each organization has a `details` object. Through extensions, this can be used t ### Planning -The planning section is used in a planning process. This includes information about, for example, needs identification, budget planning and market research. Background documents such as feasibility studies and project plans can also be included in this section. +The planning section is used in a planning process. This includes information about, for example, needs identification, budget planning, the parent project and market research. Background documents such as feasibility studies and project plans can also be included in this section. ````{admonition} Example :class: hint @@ -135,7 +135,7 @@ The planning section is used in a planning process. This includes information ab ```{jsonschema} ../../build/current_lang/release-schema.json :pointer: /definitions/Planning -:collapse: budget,documents,milestones +:collapse: budget,project,documents,milestones ``` ```{extensionlist} The following extensions are available for planning @@ -168,6 +168,28 @@ Apart from documents, the majority of planning information is held within the bu :list: budget ``` +#### Project + +The `planning` object includes details of the infrastructure or public-private partnership (PPP) project to which a planning process is related. The identifier of the project ought to be disclosed in `planning.project.id`. This object is designed to allow both machine-readable linkable data about the parent project, cross-referencing to data held in other standards such as the [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/projects/#what-is-a-project) and the [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/) profile, and human readable description of the parent project, supporting users to understand the relationship of the contracting (or planning) process to their parent project even where linked data is not available. + +````{admonition} Example +:class: hint + +```{jsoninclude} ../examples/release_schema_reference/release_package.json +:jsonpointer: /releases/0/planning/project +:title: project +``` +```` + +```{jsonschema} ../../build/current_lang/release-schema.json +:pointer: /definitions/Project +:collapse: totalValue,additionalClassifications,locations +``` + +```{extensionlist} The following extensions are available for project +:list: +``` + ### Tender The tender section includes details of the announcement that an organization intends to source some particular goods, services or works and to establish one or more contract(s) for these. @@ -671,7 +693,20 @@ As well as providing this machine-readable link between processes, publishers ma ### Location -The [Location](https://extensions.open-contracting.org/en/extensions/location/v1.1.4/) extension can be used to provide location information. +The `Location` subschema can be used to provide the geographic coordinates or standardized location identifiers of the proposed or executed contract delivery in the `Project`, `tender` and `Item` objects. + +````{admonition} Example +:class: hint + +```{jsoninclude} ../examples/release_schema_reference/release_package.json +:jsonpointer: /releases/0/planning/project/locations/0 +:title: location +``` +```` + +```{jsonschema} ../../build/current_lang/release-schema.json +:pointer: /definitions/Location +``` ### Link From 08c3627859504c0756b62829a868a590e5026f19 Mon Sep 17 00:00:00 2001 From: odscjen Date: Fri, 12 Apr 2024 09:12:51 +0100 Subject: [PATCH 04/17] update guidance linked_standards and add link to OC4IDS identifiers guidance --- docs/guidance/map/linked_standards.md | 2 +- docs/schema/reference.md | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/guidance/map/linked_standards.md b/docs/guidance/map/linked_standards.md index 654e927f0..afc5fe78c 100644 --- a/docs/guidance/map/linked_standards.md +++ b/docs/guidance/map/linked_standards.md @@ -8,7 +8,7 @@ The [Open Contracting for Infrastructure Data Standards](https://standard.open-c A joint effort by the [Infrastructure Transparency Initiative](https://infrastructuretransparency.org) (CoST) and the Open Contracting Partnership, it builds on best practice in open data and openness of public infrastructure procurement globally. -The [Project](https://extensions.open-contracting.org/en/extensions/project/master/) extension describes how to connect OCDS and OC4IDS datasets. +OCDS and OC4IDS data sets ought to be linked using the `planning.project` field, referencing the OC4IDS project identifier in `planning.project.id`. ## Open Fiscal Data Package diff --git a/docs/schema/reference.md b/docs/schema/reference.md index 68f2d1b34..15bac851f 100644 --- a/docs/schema/reference.md +++ b/docs/schema/reference.md @@ -150,6 +150,8 @@ The planning section is used in a planning process. This includes information ab Apart from documents, the majority of planning information is held within the budget block. This is designed to allow both machine-readable linkable data about budgets, cross-referencing to data held in other standards such as the [Fiscal Data Package](https://specs.frictionlessdata.io/fiscal-data-package/) or [International Aid Transparency Initiative Standard](https://iatistandard.org/en/), and human readable description of the related budgets and projects, supporting users to understand the relationship of the contracting (or planning) process to existing projects and budgets even where linked data is not available. +The `planning.budget.projectID` field should not be used to disclose the identifier of an infrastructure or PPP project. Rather, this field is used to disclose the identifier of a programme of work as it appears in a budget, like a national or state budget. Since such programmes of work can include many infrastructure projects, it is necessary to disclose their identifiers separately. Use the the `planning.project.id` field to disclose the identifier of an infrastructure or PPP project. + ````{admonition} Example :class: hint @@ -170,7 +172,9 @@ Apart from documents, the majority of planning information is held within the bu #### Project -The `planning` object includes details of the infrastructure or public-private partnership (PPP) project to which a planning process is related. The identifier of the project ought to be disclosed in `planning.project.id`. This object is designed to allow both machine-readable linkable data about the parent project, cross-referencing to data held in other standards such as the [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/projects/#what-is-a-project) and the [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/) profile, and human readable description of the parent project, supporting users to understand the relationship of the contracting (or planning) process to their parent project even where linked data is not available. +The `project` object includes details of the infrastructure or public-private partnership (PPP) project to which a planning process is related. This object is designed to allow both machine-readable linkable data about the parent project, cross-referencing to data held in other standards such as the [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/projects/#what-is-a-project) and the [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/) profile, and human readable description of the parent project, supporting users to understand the relationship of the contracting (or planning) process to their parent project even where linked data is not available. + +Where there is a separate OC4IDS dataset that describes the project the identifier from this dataset should be referenced in `project.id`. Where there is not a separate project dataset an appropriate project identifier will need to be generated. For more information on project identifiers see [OC4IDS Project Identifiers](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/). ````{admonition} Example :class: hint From 86bf1fa3db00716a2dae6b42430969dd1450a2b3 Mon Sep 17 00:00:00 2001 From: odscjen Date: Fri, 12 Apr 2024 09:26:25 +0100 Subject: [PATCH 05/17] release-schema: Project and Location changes in line with style guide --- schema/release-schema.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/schema/release-schema.json b/schema/release-schema.json index bdff98fee..41fb21a54 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -144,7 +144,7 @@ "properties": { "id": { "title": "Planning ID", - "description": "An identifier for this planning process.", + "description": "An identifier for the planning process.", "type": [ "string", "null" @@ -308,7 +308,7 @@ }, "deliveryLocations": { "title": "Delivery Locations", - "description": "The locations where activity related to this tender will take place.", + "description": "The locations where activity related to the opportunity will take place.", "type": "array", "items": { "$ref": "#/definitions/Location" @@ -318,7 +318,7 @@ }, "deliveryAddresses": { "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to this tender will be delivered.", + "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", "type": "array", "items": { "$ref": "#/definitions/Address" @@ -1574,7 +1574,7 @@ }, "deliveryLocations": { "title": "Delivery Locations", - "description": "The locations where activity related to this tender, contract or license will be delivered.", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "$ref": "#/definitions/Location" @@ -1585,7 +1585,7 @@ }, "deliveryAddresses": { "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to this tender, contract or license will be delivered.", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "$ref": "#/definitions/Address" @@ -1774,7 +1774,7 @@ "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.", + "description": "A name or description of the 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" @@ -2832,7 +2832,7 @@ "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.", + "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" From 0466f650ec6fc0ddec5fbfd442f4cb93b3523fe1 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 13 Jun 2024 01:14:02 -0400 Subject: [PATCH 06/17] build: Update manage.py for planning.project being an object --- manage.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/manage.py b/manage.py index 6b018148f..606eff65b 100755 --- a/manage.py +++ b/manage.py @@ -519,7 +519,7 @@ def pre_commit(): """ nonmultilingual = { # Identifiers. - 'amendsReleaseID', 'id', 'identifier', 'ocid', 'relatedItems', 'releaseID', + 'amendsReleaseID', 'id', 'identifier', 'identifiers', 'ocid', 'relatedItems', 'releaseID', # Missing format properties. https://github.com/open-contracting/standard/issues/881 'email', # Published-defined formats. @@ -549,7 +549,9 @@ def pre_commit(): ) field.sep = '/' if name in counts and bool(counts[name]) ^ multilingual: - if multilingual: + if not multilingual and field.schema['type'] == 'object': + click.secho(f'{field.path} is an object. {" & ".join(counts[name])} is/are multilingual.', fg='yellow') + elif multilingual: raise Exception(f'{name} is multilingual at {field.path}, but not elsewhere') else: raise Exception(f'{name} is multilingual at {" & ".join(counts[name])}, but not at {field.path}') From ee99109aca0ad6e24f5aa012394713ba77786c34 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 13 Jun 2024 01:14:23 -0400 Subject: [PATCH 07/17] build: Run ./manage.py pre-commit --- docs/guidance/map/translations.md | 8 +- schema/dereferenced-release-schema.json | 7542 +++++++++++++++-- .../versioned-release-validation-schema.json | 808 ++ 3 files changed, 7514 insertions(+), 844 deletions(-) diff --git a/docs/guidance/map/translations.md b/docs/guidance/map/translations.md index 2923ebc57..38571b8aa 100644 --- a/docs/guidance/map/translations.md +++ b/docs/guidance/map/translations.md @@ -11,16 +11,16 @@ Two texts have the same content if they describe the same thing: for example, "U You can publish the values of these fields in any language: % STARTLIST +- `coordinates`, in any location - `description`, in any location - `finalStatusDetails`, in any location - `legalName`, in any location +- `locality`, in any location - `name`, in any location - `rationale`, in any location +- `region`, in any location +- `streetAddress`, in any location - `title`, in any location -- `parties/address/locality` -- `parties/address/region` -- `parties/address/streetAddress` -- `planning/budget/project` - `tender/awardCriteriaDetails` - `tender/procurementMethodDetails` - `tender/procurementMethodRationale` diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index 8ea5d2834..f78ce0cde 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -515,6 +515,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } } }, @@ -1038,6 +1046,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -1161,7 +1177,7 @@ "properties": { "id": { "title": "Planning ID", - "description": "An identifier for this planning process.", + "description": "An identifier for the planning process.", "type": [ "string", "null" @@ -1584,463 +1600,1047 @@ } } }, - "finalStatus": { - "title": "Final status", - "description": "The final status of the planning process, using the closed [planningFinalStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#planning-final-status) codelist.", - "type": [ - "string", - "null" - ], - "codelist": "planningFinalStatus.csv", - "openCodelist": false, - "enum": [ - "cancelled", - "unsuccessful", - null - ] - }, - "finalStatusDetails": { - "title": "Final status details", - "description": "Additional details on the final status of the planning process. This field can be used to provide the local name of the final status.", - "type": [ - "string", - "null" - ] - }, - "finalStatusDate": { - "title": "Final status date", - "description": "The date on which the planning process reached its final status.", - "format": "date-time", - "type": [ - "string", - "null" - ] - }, - "documents": { - "title": "Documents", - "description": "Documents related to the planning process (for example, notices, needs assessments and market studies).", - "type": "array", - "items": { - "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. Although an integer is allowed, it is recommended to use a string.", - "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/{{version}}/{{lang}}/schema/codelists/#document-type) 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 web address for accessing the document. The server providing access to this document ought to be configured to report the correct IANA media type. If the relevant information is within a larger document, the first page should be indicated by adding a fragment identifier to the end of the URL, such as #page=32.", - "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 [media type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#media-type) codelist. For example, a web page has a format of 'text/html'. The 'offline/print' code is reserved for printed documents not available in other formats.", - "type": [ - "string", - "null" - ], - "codelist": "mediaType.csv", - "openCodelist": true - }, - "languages": { - "title": "Languages", - "description": "The languages used in the document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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" + "project": { + "title": "Project information", + "description": "Information about the infrastructure or public-private partnership project to which the 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.", + "type": "object", + "properties": { + "amount": { + "title": "Amount", + "description": "The amount as entered into a system or published in a document.", + "type": [ + "number", + "null" + ] }, - "codelist": "language.csv", - "openCodelist": true - }, - "language": { - "title": "Language", - "description": "The language of the linked document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ - "string", - "null" - ], - "codelist": "language.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated in favor of `languages`, to support documents in which multiple languages are used.", - "deprecatedVersion": "1.2" - } - }, - "relatedItems": { - "title": "Related items", - "description": "The subset of items to which this document relates, expressed as the `id` values of the related entries in the parent object's `items` array. For example, an entry in the `tender.documents` array may be related only to entries in the `tender.items` array.", - "type": [ - "array", - "null" - ], - "items": { + "amountNet": { + "title": "Net amount", + "description": "The amount excluding all taxes.", "type": [ - "string" + "number", + "null" ] - } - } - } - } - }, - "milestones": { - "title": "Planning milestones", - "description": "Milestones associated with the planning process.", - "type": "array", - "items": { - "title": "Milestone", - "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting (or planning) 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. Although an integer is allowed, it is recommended to use a string.", - "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/{{version}}/{{lang}}/schema/codelists/#milestone-type) 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 (or planning) 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" - ] - }, - "dueAfterDate": { - "title": "Due after date", - "description": "The date after which the milestone is due.", - "type": [ - "string", - "null" - ], - "format": "date-time" - }, - "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/{{version}}/{{lang}}/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": { - "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. Although an integer is allowed, it is recommended to use a string.", - "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/{{version}}/{{lang}}/schema/codelists/#document-type) 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 web address for accessing the document. The server providing access to this document ought to be configured to report the correct IANA media type. If the relevant information is within a larger document, the first page should be indicated by adding a fragment identifier to the end of the URL, such as #page=32.", - "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 [media type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#media-type) codelist. For example, a web page has a format of 'text/html'. The 'offline/print' code is reserved for printed documents not available in other formats.", - "type": [ - "string", - "null" - ], - "codelist": "mediaType.csv", - "openCodelist": true - }, - "languages": { - "title": "Languages", - "description": "The languages used in the document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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" - }, - "codelist": "language.csv", - "openCodelist": true - }, - "language": { - "title": "Language", - "description": "The language of the linked document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ - "string", - "null" - ], - "codelist": "language.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated in favor of `languages`, to support documents in which multiple languages are used.", - "deprecatedVersion": "1.2" - } - }, - "relatedItems": { - "title": "Related items", - "description": "The subset of items to which this document relates, expressed as the `id` values of the related entries in the parent object's `items` array. For example, an entry in the `tender.documents` array may be related only to entries in the `tender.items` array.", - "type": [ - "array", - "null" - ], - "items": { - "type": [ - "string" - ] - } - } - } + "amountGross": { + "title": "Gross amount", + "description": "The amount including all taxes.", + "type": [ + "number", + "null" + ] }, - "uniqueItems": true - }, - "value": { - "title": "Value", - "description": "The payment's value, if the milestone represents a planned payment.", - "type": "object", - "properties": { - "amount": { - "title": "Amount", - "description": "The amount as entered into a system or published in a document.", - "type": [ - "number", - "null" - ] - }, - "amountNet": { - "title": "Net amount", - "description": "The amount excluding all taxes.", - "type": [ - "number", - "null" - ] - }, - "amountGross": { - "title": "Gross amount", - "description": "The amount including all taxes.", - "type": [ - "number", - "null" - ] - }, - "currency": { - "title": "Currency", - "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/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", + "currency": { + "title": "Currency", + "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/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 + ] + } + } + }, + "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).", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } + }, + "additionalClassifications": { + "title": "Additional classifications", + "description": "Additional classifications for the project. For example, a sector or strategic framework classification.", + "type": "array", + "items": { + "title": "Classification", + "description": "A classification consists of at least two parts: an identifier for the list (scheme) from which the classification is taken, and an identifier for the category from that list being applied. It is useful to also publish a text label and/or URI that users can draw on to interpret the classification.", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "locations": { + "title": "Locations", + "description": "Information about the locations where the project is taking place.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + } + }, + "minProperties": 1 + }, + "finalStatus": { + "title": "Final status", + "description": "The final status of the planning process, using the closed [planningFinalStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#planning-final-status) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "planningFinalStatus.csv", + "openCodelist": false, + "enum": [ + "cancelled", + "unsuccessful", + null + ] + }, + "finalStatusDetails": { + "title": "Final status details", + "description": "Additional details on the final status of the planning process. This field can be used to provide the local name of the final status.", + "type": [ + "string", + "null" + ] + }, + "finalStatusDate": { + "title": "Final status date", + "description": "The date on which the planning process reached its final status.", + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "documents": { + "title": "Documents", + "description": "Documents related to the planning process (for example, notices, needs assessments and market studies).", + "type": "array", + "items": { + "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. Although an integer is allowed, it is recommended to use a string.", + "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/{{version}}/{{lang}}/schema/codelists/#document-type) 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 web address for accessing the document. The server providing access to this document ought to be configured to report the correct IANA media type. If the relevant information is within a larger document, the first page should be indicated by adding a fragment identifier to the end of the URL, such as #page=32.", + "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 [media type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#media-type) codelist. For example, a web page has a format of 'text/html'. The 'offline/print' code is reserved for printed documents not available in other formats.", + "type": [ + "string", + "null" + ], + "codelist": "mediaType.csv", + "openCodelist": true + }, + "languages": { + "title": "Languages", + "description": "The languages used in the document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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" + }, + "codelist": "language.csv", + "openCodelist": true + }, + "language": { + "title": "Language", + "description": "The language of the linked document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ + "string", + "null" + ], + "codelist": "language.csv", + "openCodelist": true, + "deprecated": { + "description": "This field is deprecated in favor of `languages`, to support documents in which multiple languages are used.", + "deprecatedVersion": "1.2" + } + }, + "relatedItems": { + "title": "Related items", + "description": "The subset of items to which this document relates, expressed as the `id` values of the related entries in the parent object's `items` array. For example, an entry in the `tender.documents` array may be related only to entries in the `tender.items` array.", + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "string" + ] + } + } + } + } + }, + "milestones": { + "title": "Planning milestones", + "description": "Milestones associated with the planning process.", + "type": "array", + "items": { + "title": "Milestone", + "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting (or planning) 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. Although an integer is allowed, it is recommended to use a string.", + "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/{{version}}/{{lang}}/schema/codelists/#milestone-type) 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 (or planning) 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" + ] + }, + "dueAfterDate": { + "title": "Due after date", + "description": "The date after which the milestone is due.", + "type": [ + "string", + "null" + ], + "format": "date-time" + }, + "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/{{version}}/{{lang}}/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": { + "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. Although an integer is allowed, it is recommended to use a string.", + "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/{{version}}/{{lang}}/schema/codelists/#document-type) 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 web address for accessing the document. The server providing access to this document ought to be configured to report the correct IANA media type. If the relevant information is within a larger document, the first page should be indicated by adding a fragment identifier to the end of the URL, such as #page=32.", + "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 [media type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#media-type) codelist. For example, a web page has a format of 'text/html'. The 'offline/print' code is reserved for printed documents not available in other formats.", + "type": [ + "string", + "null" + ], + "codelist": "mediaType.csv", + "openCodelist": true + }, + "languages": { + "title": "Languages", + "description": "The languages used in the document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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" + }, + "codelist": "language.csv", + "openCodelist": true + }, + "language": { + "title": "Language", + "description": "The language of the linked document, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ + "string", + "null" + ], + "codelist": "language.csv", + "openCodelist": true, + "deprecated": { + "description": "This field is deprecated in favor of `languages`, to support documents in which multiple languages are used.", + "deprecatedVersion": "1.2" + } + }, + "relatedItems": { + "title": "Related items", + "description": "The subset of items to which this document relates, expressed as the `id` values of the related entries in the parent object's `items` array. For example, an entry in the `tender.documents` array may be related only to entries in the `tender.items` array.", + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "string" + ] + } + } + } + }, + "uniqueItems": true + }, + "value": { + "title": "Value", + "description": "The payment's value, if the milestone represents a planned payment.", + "type": "object", + "properties": { + "amount": { + "title": "Amount", + "description": "The amount as entered into a system or published in a document.", + "type": [ + "number", + "null" + ] + }, + "amountNet": { + "title": "Net amount", + "description": "The amount excluding all taxes.", + "type": [ + "number", + "null" + ] + }, + "amountGross": { + "title": "Gross amount", + "description": "The amount including all taxes.", + "type": [ + "number", + "null" + ] + }, + "currency": { + "title": "Currency", + "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/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", @@ -2830,6 +3430,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -3463,6 +4071,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -4506,6 +5544,434 @@ } } }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity will take place.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true + }, "procurementMethod": { "title": "Procurement method", "description": "The method describing which organizations can submit a bid, using the closed [method](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#method) codelist. In releases concerning second stages (e.g. in framework agreements) or other subsequent stages, the procurement method always refers to the first stage of the contracting process.", @@ -5303,6 +6769,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -7848,6 +9322,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -8484,6 +9966,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -10544,6 +12456,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -11488,6 +13830,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -11979,6 +14329,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -14105,173 +16463,592 @@ } } }, - "deprecated": { - "description": "The single amendment object has been deprecated in favor of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } - } - } - }, - "uniqueItems": true - }, - "language": { - "title": "Release language", - "description": "The default language of the data, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ - "string", - "null" - ], - "codelist": "language.csv", - "openCodelist": true - }, - "relatedProcesses": { - "uniqueItems": true, - "items": { - "description": "A reference to a related, preceding contracting (or planning) process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", - "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" + "deprecated": { + "description": "The single amendment object has been deprecated in favor of including amendments in an amendments (plural) array.", + "deprecatedVersion": "1.1" + } + } + } + }, + "uniqueItems": true + }, + "language": { + "title": "Release language", + "description": "The default language of the data, from the open [language](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/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": [ + "string", + "null" + ], + "codelist": "language.csv", + "openCodelist": true + }, + "relatedProcesses": { + "uniqueItems": true, + "items": { + "description": "A reference to a related, preceding contracting (or planning) process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", + "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/{{version}}/{{lang}}/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 a contracting (or planning) 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/{{version}}/{{lang}}/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 process identifier (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" + ] + } + } + }, + "description": "References to related, preceding contracting (or planning) processes. This information concerns the contracting process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", + "title": "Related processes", + "type": "array" + }, + "links": { + "title": "Links", + "description": "Links to related resources. In a release, links relate to the individual release: for example, a link to a canonical version of the release in another OCDS publication. In a compiled release, links relate to the entire contracting (or planning) process: for example, a link to a resource in a non-OCDS publication that represents the entire contracting process. For references to related processes, see the `relatedProcesses` array.", + "type": "array", + "items": { + "title": "Link", + "description": "A reference to a related resource.", + "type": "object", + "properties": { + "rel": { + "title": "Link relation type", + "description": "The relationship with the related resource, using the open [link relation type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#link-relation-type) codelist.", + "type": "string", + "codelist": "linkRelationType.csv", + "openCodelist": true + }, + "href": { + "title": "Link target", + "description": "The URL of the related resource.", + "type": "string", + "format": "uri" + } + } + }, + "uniqueItems": true, + "omitWhenMerged": true + } + }, + "required": [ + "ocid", + "id", + "date", + "tag", + "initiationType" + ], + "definitions": { + "Planning": { + "title": "Planning", + "description": "Information about, for example, needs identification, budget planning and market research. This information concerns the planning process. This information typically concerns the period before contracting documents (for example, procurement documents) are available to potential suppliers.", + "type": "object", + "properties": { + "id": { + "title": "Planning ID", + "description": "An identifier for the planning process.", + "type": [ + "string", + "null" + ] + }, + "rationale": { + "title": "Rationale", + "description": "The rationale for the planned procurement provided in free text. More detail can be provided in an attached document.", + "type": [ + "string", + "null" + ] + }, + "budget": { + "type": "object", + "title": "Budget", + "description": "Details of the budget that will fund the future contract(s)", + "properties": { + "id": { + "title": "ID", + "description": "An identifier of the budget that will fund the future contract(s). This identifier should be possible to cross-reference against formal budget documents.", + "type": [ + "string", + "integer", + "null" + ] + }, + "description": { + "title": "Budget Source", + "description": "A short free-text description of the budget that will fund the future contract(s). This may be used to provide human-readable information on: the budget category for the future contract(s) and/or the nature and source of the budget allocation (e.g. conditional, confirmed, or any official authorizations given to the budget allocation).", + "type": [ + "string", + "null" + ] + }, + "amount": { + "title": "Amount", + "description": "The value reserved for the future contract(s), within the budget. A negative value indicates income to the budget as a result of the future contract(s), rather than expenditure. This field should not be used to report the total value of the budget line that will fund the future contract(s).", + "type": "object", + "properties": { + "amount": { + "title": "Amount", + "description": "The amount as entered into a system or published in a document.", + "type": [ + "number", + "null" + ] + }, + "amountNet": { + "title": "Net amount", + "description": "The amount excluding all taxes.", + "type": [ + "number", + "null" + ] + }, + "amountGross": { + "title": "Gross amount", + "description": "The amount including all taxes.", + "type": [ + "number", + "null" + ] + }, + "currency": { + "title": "Currency", + "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/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 + ] + } + } + }, + "project": { + "title": "Project title", + "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", + "type": [ + "string", + "null" + ] }, - "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/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 a contracting (or planning) 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/{{version}}/{{lang}}/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 process identifier (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" - ] - } - } - }, - "description": "References to related, preceding contracting (or planning) processes. This information concerns the contracting process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", - "title": "Related processes", - "type": "array" - }, - "links": { - "title": "Links", - "description": "Links to related resources. In a release, links relate to the individual release: for example, a link to a canonical version of the release in another OCDS publication. In a compiled release, links relate to the entire contracting (or planning) process: for example, a link to a resource in a non-OCDS publication that represents the entire contracting process. For references to related processes, see the `relatedProcesses` array.", - "type": "array", - "items": { - "title": "Link", - "description": "A reference to a related resource.", - "type": "object", - "properties": { - "rel": { - "title": "Link relation type", - "description": "The relationship with the related resource, using the open [link relation type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#link-relation-type) codelist.", - "type": "string", - "codelist": "linkRelationType.csv", - "openCodelist": true - }, - "href": { - "title": "Link target", - "description": "The URL of the related resource.", - "type": "string", - "format": "uri" + "projectID": { + "title": "Project identifier", + "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "uri": { + "title": "Linked budget information", + "description": "The URL of a machine-readable resource about the budget that will fund the future contract(s). For human-readable documents, see the `planning.documents` array.", + "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" + } } - } - }, - "uniqueItems": true, - "omitWhenMerged": true - } - }, - "required": [ - "ocid", - "id", - "date", - "tag", - "initiationType" - ], - "definitions": { - "Planning": { - "title": "Planning", - "description": "Information about, for example, needs identification, budget planning and market research. This information concerns the planning process. This information typically concerns the period before contracting documents (for example, procurement documents) are available to potential suppliers.", - "type": "object", - "properties": { - "id": { - "title": "Planning ID", - "description": "An identifier for this planning process.", - "type": [ - "string", - "null" - ] - }, - "rationale": { - "title": "Rationale", - "description": "The rationale for the planned procurement provided in free text. More detail can be provided in an attached document.", - "type": [ - "string", - "null" - ] }, - "budget": { + "project": { + "title": "Project information", + "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", "type": "object", - "title": "Budget", - "description": "Details of the budget that will fund the future contract(s)", "properties": { "id": { - "title": "ID", - "description": "An identifier of the budget that will fund the future contract(s). This identifier should be possible to cross-reference against formal budget documents.", + "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", - "integer", "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": "Budget Source", - "description": "A short free-text description of the budget that will fund the future contract(s). This may be used to provide human-readable information on: the budget category for the future contract(s) and/or the nature and source of the budget allocation (e.g. conditional, confirmed, or any official authorizations given to the budget allocation).", + "title": "Description", + "description": "A short description of the project.", "type": [ "string", "null" - ] + ], + "minLength": 1 }, - "amount": { - "title": "Amount", - "description": "The value reserved for the future contract(s), within the budget. A negative value indicates income to the budget as a result of the future contract(s), rather than expenditure. This field should not be used to report the total value of the budget line that will fund the future contract(s).", + "totalValue": { + "title": "Total value", + "description": "The total anticipated value of the project over its lifetime.", "type": "object", "properties": { "amount": { @@ -14615,46 +17392,211 @@ } } }, - "project": { - "title": "Project title", - "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", - "type": [ - "string", - "null" - ] - }, - "projectID": { - "title": "Project identifier", - "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", - "type": [ - "string", - "integer", - "null" - ] - }, "uri": { - "title": "Linked budget information", - "description": "The URL of a machine-readable resource about the budget that will fund the future contract(s). For human-readable documents, see the `planning.documents` array.", + "title": "URI", + "description": "The URI of a resource with additional information about the project.", "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." + "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).", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } + }, + "additionalClassifications": { + "title": "Additional classifications", + "description": "Additional classifications for the project. For example, a sector or strategic framework classification.", + "type": "array", + "items": { + "title": "Classification", + "description": "A classification consists of at least two parts: an identifier for the list (scheme) from which the classification is taken, and an identifier for the category from that list being applied. It is useful to also publish a text label and/or URI that users can draw on to interpret the classification.", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } }, - "format": "uri" + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "locations": { + "title": "Locations", + "description": "Information about the locations where the project is taking place.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } - } + }, + "minProperties": 1 }, "finalStatus": { "title": "Final status", @@ -15902,6 +18844,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -16535,6 +19485,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -17578,6 +20958,434 @@ } } }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity will take place.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true + }, "procurementMethod": { "title": "Procurement method", "description": "The method describing which organizations can submit a bid, using the closed [method](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#method) codelist. In releases concerning second stages (e.g. in framework agreements) or other subsequent stages, the procurement method always refers to the first stage of the contracting process.", @@ -18375,6 +22183,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -20916,6 +24732,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -21552,6 +25376,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -23606,6 +27860,436 @@ ] } } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -24550,6 +29234,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -25041,6 +29733,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -27943,6 +32643,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -28434,6 +33142,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -31598,6 +36314,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -32089,6 +36813,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -33031,6 +37763,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } }, "deprecated": { @@ -33565,6 +38305,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } } }, @@ -34213,17 +38961,447 @@ ] } } - }, - "uri": { - "title": "URI", - "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", - "type": [ - "string", - "null" - ] + }, + "uri": { + "title": "URI", + "description": "The machine-readable URI for the unit of measure, provided by the scheme.", + "format": "uri", + "type": [ + "string", + "null" + ] + } + } + }, + "deliveryLocations": { + "title": "Delivery Locations", + "description": "The locations where activity related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "deliveryAddresses": { + "title": "Delivery Addresses", + "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "type": "array", + "items": { + "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." + }, + "country": { + "title": "Country code", + "description": "The country, from the closed [country](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#country) codelist. If a country is missing, [create an issue](https://github.com/open-contracting/standard/issues) to discuss the addition of a user-assigned code to the country codelist.", + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "title": "Country name", + "type": [ + "string", + "null" + ], + "description": "The country name. For example, United States.", + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] + } } - } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } } }, @@ -34398,6 +39576,98 @@ } } }, + "Location": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, "Address": { "title": "Address", "description": "An address.", @@ -34709,6 +39979,14 @@ "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", "deprecatedVersion": "1.2" } + }, + "description": { + "title": "Description", + "description": "The description of the address.", + "type": [ + "string", + "null" + ] } } }, @@ -35106,142 +40384,632 @@ } } }, - "Period": { - "title": "Period", - "description": "Key events during a contracting (or planning) 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.", + "Period": { + "title": "Period", + "description": "Key events during a contracting (or planning) 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, must be equal to the difference between startDate and endDate. Otherwise, if a startDate and maxExtentDate are set, this field, if used, must be equal to the difference between startDate and maxExtentDate.", + "title": "Duration (days)", + "type": [ + "integer", + "null" + ] + } + } + }, + "RelatedProcess": { + "description": "A reference to a related, preceding contracting (or planning) process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", + "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/{{version}}/{{lang}}/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 a contracting (or planning) 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/{{version}}/{{lang}}/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 process identifier (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" + ] + } + } + }, + "Unit": { + "title": "Unit", + "description": "A description of the unit in which the goods, 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/{{version}}/{{lang}}/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/{{version}}/{{lang}}/schema/codelists/#unit-classification-scheme) codelist for details of how to find and use identifiers from the scheme in use.", + "type": [ + "string", + "null" + ] + }, + "name": { + "title": "Name", + "description": "Name of the unit.", + "type": [ + "string", + "null" + ] + }, + "value": { + "title": "Value", + "description": "The monetary value of a single unit.", + "type": "object", + "properties": { + "amount": { + "title": "Amount", + "description": "The amount as entered into a system or published in a document.", + "type": [ + "number", + "null" + ] + }, + "amountNet": { + "title": "Net amount", + "description": "The amount excluding all taxes.", + "type": [ + "number", + "null" + ] + }, + "amountGross": { + "title": "Gross amount", + "description": "The amount including all taxes.", + "type": [ + "number", + "null" + ] + }, + "currency": { + "title": "Currency", + "description": "The currency of the amount, from the closed [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/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 + ] + } + } + }, + "uri": { + "title": "URI", + "description": "The machine-readable URI for the unit of measure, provided by the scheme.", + "format": "uri", + "type": [ + "string", + "null" + ] + } + } + }, + "Link": { + "title": "Link", + "description": "A reference to a related resource.", "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" + "rel": { + "title": "Link relation type", + "description": "The relationship with the related resource, using the open [link relation type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#link-relation-type) codelist.", + "type": "string", + "codelist": "linkRelationType.csv", + "openCodelist": true }, - "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", + "href": { + "title": "Link target", + "description": "The URL of the related resource.", + "type": "string", + "format": "uri" + } + } + }, + "SimpleIdentifier": { + "title": "Simple identifier", + "description": "An unambiguous reference to a resource within a given context.", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The list, register or system from which the identifier is taken. If the scope of the list, register or system from which the identifier is drawn is national, it is suggested to follow the pattern {ISO 3166-1 alpha-2}-{system}. If it is subnational, it is suggested to follow the pattern {ISO 3166-2}-{system}.", "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, must be equal to the difference between startDate and endDate. Otherwise, if a startDate and maxExtentDate are set, this field, if used, must be equal to the difference between startDate and maxExtentDate.", - "title": "Duration (days)", + "id": { + "title": "ID", + "description": "The identifier taken from the scheme.", "type": [ - "integer", + "string", "null" - ] + ], + "versionId": true } } }, - "RelatedProcess": { - "description": "A reference to a related, preceding contracting (or planning) process. For example, the contracting process may refer to its planning process(es). In multi-stage procedures (e.g. framework agreements with reopening of competition), the contracting process for a later stage may refer to the contracting process for the first stage.", + "SubmissionTerms": { + "title": "Submission terms", + "description": "Information about how, when and where tenderers need to submit their bids.", "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/{{version}}/{{lang}}/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 a contracting (or planning) process, this field should match the tender/title field in the related process.", - "title": "Related process title", + "electronicSubmissionPolicy": { + "title": "Electronic submission policy", + "description": "Whether tenderers are required, allowed or not allowed to submit bids electronically.", "type": [ "string", "null" + ], + "codelist": "permission.csv", + "openCodelist": false, + "enum": [ + "required", + "allowed", + "notAllowed", + null ] - }, - "scheme": { - "title": "Scheme", - "description": "The identification scheme used by this cross-reference, using the open [relatedProcessScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process-scheme) codelist.", + } + } + }, + "ExclusionGrounds": { + "title": "Exclusion grounds", + "description": "The criteria regarding the situation of a tenderer that can lead to its exclusion from the contracting process. For example: criminal convictions, bankruptcy, presence on a blacklist or failure to pay taxes.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "The description of the criteria.", "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 process identifier (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", + "minLength": 1 + } + }, + "minProperties": 1 + }, + "SelectionCriteria": { + "title": "Selection criteria", + "description": "The minimum requirements for potential suppliers to participate in the contracting process. Selection criteria ensure that a potential supplier has the legal and financial capacities and the technical and professional abilities to perform the contract.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "The description of the criteria.", "type": [ "string", "null" - ] + ], + "minLength": 1 } - } + }, + "minProperties": 1 }, - "Unit": { - "title": "Unit", - "description": "A description of the unit in which the goods, services or works are provided (e.g. hours, kilograms) and the unit-price.", + "Project": { + "title": "Project information", + "description": "Information about the infrastructure or public-private partnership project to which a planning process is related.", "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/{{version}}/{{lang}}/schema/codelists/#unit-classification-scheme) codelist. 'UNCEFACT' is recommended.", + "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" ], - "codelist": "unitClassificationScheme.csv", - "openCodelist": true + "minLength": 1 }, - "id": { - "title": "ID", - "description": "The identifier from the codelist referenced in the `scheme` field. Check the [unitClassificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#unit-classification-scheme) codelist for details of how to find and use identifiers from the scheme in use.", + "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 }, - "name": { - "title": "Name", - "description": "Name of the unit.", + "description": { + "title": "Description", + "description": "A short description of the project.", "type": [ "string", "null" - ] + ], + "minLength": 1 }, - "value": { - "title": "Value", - "description": "The monetary value of a single unit.", + "totalValue": { + "title": "Total value", + "description": "The total anticipated value of the project over its lifetime.", "type": "object", "properties": { "amount": { @@ -35587,112 +41355,206 @@ }, "uri": { "title": "URI", - "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", + "description": "The URI of a resource with additional information about the project.", "type": [ "string", "null" - ] - } - } - }, - "Link": { - "title": "Link", - "description": "A reference to a related resource.", - "type": "object", - "properties": { - "rel": { - "title": "Link relation type", - "description": "The relationship with the related resource, using the open [link relation type](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#link-relation-type) codelist.", - "type": "string", - "codelist": "linkRelationType.csv", - "openCodelist": true - }, - "href": { - "title": "Link target", - "description": "The URL of the related resource.", - "type": "string", + ], "format": "uri" - } - } - }, - "SimpleIdentifier": { - "title": "Simple identifier", - "description": "An unambiguous reference to a resource within a given context.", - "type": "object", - "properties": { - "scheme": { - "title": "Scheme", - "description": "The list, register or system from which the identifier is taken. If the scope of the list, register or system from which the identifier is drawn is national, it is suggested to follow the pattern {ISO 3166-1 alpha-2}-{system}. If it is subnational, it is suggested to follow the pattern {ISO 3166-2}-{system}.", - "type": [ - "string", - "null" - ] }, - "id": { - "title": "ID", - "description": "The identifier taken from the scheme.", - "type": [ - "string", - "null" - ], - "versionId": true - } - } - }, - "SubmissionTerms": { - "title": "Submission terms", - "description": "Information about how, when and where tenderers need to submit their bids.", - "type": "object", - "properties": { - "electronicSubmissionPolicy": { - "title": "Electronic submission policy", - "description": "Whether tenderers are required, allowed or not allowed to submit bids electronically.", - "type": [ - "string", - "null" - ], - "codelist": "permission.csv", - "openCodelist": false, - "enum": [ - "required", - "allowed", - "notAllowed", - null - ] - } - } - }, - "ExclusionGrounds": { - "title": "Exclusion grounds", - "description": "The criteria regarding the situation of a tenderer that can lead to its exclusion from the contracting process. For example: criminal convictions, bankruptcy, presence on a blacklist or failure to pay taxes.", - "type": "object", - "properties": { - "description": { - "title": "Description", - "description": "The description of the criteria.", - "type": [ - "string", - "null" - ], - "minLength": 1 - } - }, - "minProperties": 1 - }, - "SelectionCriteria": { - "title": "Selection criteria", - "description": "The minimum requirements for potential suppliers to participate in the contracting process. Selection criteria ensure that a potential supplier has the legal and financial capacities and the technical and professional abilities to perform the contract.", - "type": "object", - "properties": { - "description": { - "title": "Description", - "description": "The description of the criteria.", - "type": [ - "string", - "null" - ], - "minLength": 1 + "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).", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } + }, + "additionalClassifications": { + "title": "Additional classifications", + "description": "Additional classifications for the project. For example, a sector or strategic framework classification.", + "type": "array", + "items": { + "title": "Classification", + "description": "A classification consists of at least two parts: an identifier for the list (scheme) from which the classification is taken, and an identifier for the category from that list being applied. It is useful to also publish a text label and/or URI that users can draw on to interpret the classification.", + "type": "object", + "properties": { + "scheme": { + "title": "Scheme", + "description": "The scheme or codelist from which the classification code is taken, using the open [classificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#classification-scheme) codelist.", + "type": [ + "string", + "null" + ], + "codelist": "classificationScheme.csv", + "openCodelist": true + }, + "id": { + "title": "ID", + "description": "The classification code taken from the scheme. Although an integer is allowed, it is recommended to use a string.", + "type": [ + "string", + "integer", + "null" + ] + }, + "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" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 + }, + "locations": { + "title": "Locations", + "description": "Information about the locations where the project is taking place.", + "type": "array", + "items": { + "title": "Location", + "description": "A physical or virtual location.", + "type": "object", + "properties": { + "description": { + "title": "Description", + "description": "A name or description of the 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": { + "title": "Geometry", + "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "type": "object", + "properties": { + "type": { + "title": "Type", + "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "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": { + "title": "Gazetteer", + "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "type": "object", + "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": { + "title": "URI", + "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "wholeListMerge": true, + "uniqueItems": true, + "minItems": 1 } }, "minProperties": 1 diff --git a/schema/versioned-release-validation-schema.json b/schema/versioned-release-validation-schema.json index 3f0c16627..486227fd4 100644 --- a/schema/versioned-release-validation-schema.json +++ b/schema/versioned-release-validation-schema.json @@ -126,6 +126,9 @@ "budget": { "$ref": "#/definitions/Budget" }, + "project": { + "$ref": "#/definitions/Project" + }, "finalStatus": { "type": "array", "items": { @@ -351,6 +354,62 @@ "maximumValue": { "$ref": "#/definitions/Value" }, + "deliveryLocations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/LocationUnversioned" + }, + "uniqueItems": true + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "deliveryAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/AddressUnversioned" + }, + "uniqueItems": true + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, "procurementMethod": { "type": "array", "items": { @@ -1874,6 +1933,64 @@ }, "unit": { "$ref": "#/definitions/Unit" + }, + "deliveryLocations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/LocationUnversioned" + }, + "uniqueItems": true, + "minItems": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "deliveryAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/AddressUnversioned" + }, + "uniqueItems": true, + "minItems": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } } } }, @@ -2038,6 +2155,157 @@ } } }, + "Location": { + "type": "object", + "properties": { + "description": { + "$ref": "#/definitions/StringNullVersioned" + }, + "geometry": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "coordinates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "number", + "array" + ] + } + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "gazetteer": { + "type": "object", + "properties": { + "scheme": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ], + "codelist": "locationGazetteers.csv", + "openCodelist": true + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "identifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "uri": { + "$ref": "#/definitions/StringNullUriVersioned" + } + } + }, "Address": { "type": "object", "properties": { @@ -2365,6 +2633,9 @@ } } } + }, + "description": { + "$ref": "#/definitions/StringNullVersioned" } } }, @@ -3173,6 +3444,163 @@ }, "minProperties": 1 }, + "Project": { + "type": "object", + "properties": { + "id": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ], + "minLength": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "title": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ], + "minLength": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "description": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": [ + "string", + "null" + ], + "minLength": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "totalValue": { + "$ref": "#/definitions/Value" + }, + "uri": { + "$ref": "#/definitions/StringNullUriVersioned" + }, + "sector": { + "$ref": "#/definitions/Classification" + }, + "additionalClassifications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/ClassificationUnversioned" + }, + "uniqueItems": true, + "minItems": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "locations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "releaseDate": { + "format": "date-time", + "type": "string" + }, + "releaseID": { + "type": "string" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/LocationUnversioned" + }, + "uniqueItems": true, + "minItems": 1 + }, + "releaseTag": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "minProperties": 1 + }, "StringNullUriVersioned": { "type": "array", "items": { @@ -3387,6 +3815,386 @@ } } }, + "LocationUnversioned": { + "type": "object", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "geometry": { + "type": "object", + "properties": { + "type": { + "type": [ + "string", + "null" + ], + "codelist": "geometryType.csv", + "openCodelist": false, + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon", + null + ] + }, + "coordinates": { + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "number", + "array" + ] + } + } + } + }, + "gazetteer": { + "type": "object", + "properties": { + "scheme": { + "type": [ + "string", + "null" + ], + "codelist": "locationGazetteers.csv", + "openCodelist": true + }, + "identifiers": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + } + } + }, + "uri": { + "type": [ + "string", + "null" + ], + "format": "uri" + } + } + }, + "AddressUnversioned": { + "type": "object", + "properties": { + "streetAddress": { + "type": [ + "string", + "null" + ] + }, + "locality": { + "type": [ + "string", + "null" + ] + }, + "region": { + "type": [ + "string", + "null" + ] + }, + "postalCode": { + "type": [ + "string", + "null" + ] + }, + "country": { + "type": [ + "string", + "null" + ], + "codelist": "country.csv", + "openCodelist": false, + "enum": [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "XK", + "YE", + "YT", + "ZA", + "ZM", + "ZW", + null + ] + }, + "countryName": { + "type": [ + "string", + "null" + ], + "deprecated": { + "description": "This field is deprecated in favor of `country`, to promote standardized country codes instead of non-standardized country names.", + "deprecatedVersion": "1.2" + } + }, + "description": { + "type": [ + "string", + "null" + ] + } + } + }, "IdentifierUnversioned": { "type": "object", "properties": { From 3546b52198803a8b0bda380e9b8c67ed573a8492 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:01:56 -0400 Subject: [PATCH 08/17] build: Update script to keep planning/budget/project as multilingual, but not coordinates. ci: Allow SME acronyms. --- .github/workflows/spellcheck.yml | 2 +- docs/guidance/map/translations.md | 2 +- docs/history/changelog.md | 3 ++- manage.py | 6 ++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml index 300eefc34..b60b28a2b 100644 --- a/.github/workflows/spellcheck.yml +++ b/.github/workflows/spellcheck.yml @@ -10,4 +10,4 @@ jobs: with: python-version: '3.10' - run: pip install codespell - - run: codespell -S .git,docson,locale,examples,country.csv,currency.csv,language.csv,mediaType.csv -L fo,zar . + - run: codespell -S .git,docson,locale,examples,country.csv,currency.csv,language.csv,mediaType.csv -L fo,sme,zar,SME . diff --git a/docs/guidance/map/translations.md b/docs/guidance/map/translations.md index 38571b8aa..d3d9f97a4 100644 --- a/docs/guidance/map/translations.md +++ b/docs/guidance/map/translations.md @@ -11,7 +11,6 @@ Two texts have the same content if they describe the same thing: for example, "U You can publish the values of these fields in any language: % STARTLIST -- `coordinates`, in any location - `description`, in any location - `finalStatusDetails`, in any location - `legalName`, in any location @@ -21,6 +20,7 @@ You can publish the values of these fields in any language: - `region`, in any location - `streetAddress`, in any location - `title`, in any location +- `planning/budget/project` - `tender/awardCriteriaDetails` - `tender/procurementMethodDetails` - `tender/procurementMethodRationale` diff --git a/docs/history/changelog.md b/docs/history/changelog.md index b2b06cf68..c921d1fbf 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -72,11 +72,12 @@ Per the [normative and non-normative content and changes policy](../governance/n * Add new codelists: * [#1372](https://github.com/open-contracting/standard/pull/1372) `country` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `geometryType` * [#1316](https://github.com/open-contracting/standard/pull/1316) `language` * [#1326](https://github.com/open-contracting/standard/pull/1326) `linkRelationType` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `locationGazetteers` * [#1308](https://github.com/open-contracting/standard/pull/1308) `mediaType` * [#1459](https://github.com/open-contracting/standard/pull/1459) `partyScale` - * [#1684](https://github.com/open-contracting/standard/pull/1684) `geometryType` and `locationGazetteers` * [#1654](https://github.com/open-contracting/standard/pull/1654) `permission` * [#1642](https://github.com/open-contracting/standard/pull/1642) `planningFinalStatus` * [#1648](https://github.com/open-contracting/standard/pull/1648) `tenderFinalStatus` diff --git a/manage.py b/manage.py index 606eff65b..a5c17f94e 100755 --- a/manage.py +++ b/manage.py @@ -532,6 +532,7 @@ def pre_commit(): jsonref_release_schema = json_load('release-schema.json', jsonref, merge_props=True) counts = defaultdict(list) + nonstring = ('boolean', 'integer', 'number', 'object') for field in get_schema_fields(jsonref_release_schema): name = field.path_components[-1] # Skip definitions (output dereferenced properties only). Skip deprecated fields. @@ -539,7 +540,8 @@ def pre_commit(): continue multilingual = ( # If a field can be a non-string, it is not multilingual. - not any(t in field.schema['type'] for t in ('boolean', 'integer', 'number', 'object')) + not any(t in field.schema['type'] for t in nonstring) + and ('array' not in field.schema['type'] or not any(t in field.schema['items']['type'] for t in nonstring)) # If a field's value is constrained to a codelist or format, it is not multilingual. and not any(prop in field.schema for prop in ('codelist', 'format')) # If an array can contain non-strings, it is not multilingual. @@ -558,7 +560,7 @@ def pre_commit(): if multilingual: counts[name].append(field.path) else: - counts[name] = [] + counts[name] = counts[name] bulletlist = [ '% STARTLIST', From dd97d4bcbd433fc16efcbcb9d246f1c986614498 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:39:57 -0400 Subject: [PATCH 09/17] Review merger of Project and Location extensions - Merge reference.md content into schema. - Copy-edit Project and Location subschema. - Copy-edit Location codelists. Remove normative word imported from RFC 7946. - Use classification scheme example that conforms to guidance. - Use "datasets" not "data sets" per style guide. --- .../release_package.json | 2 +- docs/guidance/map/linked_standards.md | 2 +- docs/history/changelog.md | 6 ++- docs/schema/reference.md | 10 +---- schema/codelists/geometryType.csv | 12 +++--- schema/codelists/locationGazetteer.csv | 7 ++++ schema/codelists/locationGazetteers.csv | 7 ---- schema/release-schema.json | 40 +++++++++---------- 8 files changed, 40 insertions(+), 46 deletions(-) create mode 100644 schema/codelists/locationGazetteer.csv delete mode 100644 schema/codelists/locationGazetteers.csv diff --git a/docs/examples/release_schema_reference/release_package.json b/docs/examples/release_schema_reference/release_package.json index aa6c4427c..2d401a453 100644 --- a/docs/examples/release_schema_reference/release_package.json +++ b/docs/examples/release_schema_reference/release_package.json @@ -112,7 +112,7 @@ { "id": "03.04.05", "description": "Cycle lanes for road transport.", - "scheme": "My local scheme" + "scheme": "GB-EXAMPLE" } ], "locations": [ diff --git a/docs/guidance/map/linked_standards.md b/docs/guidance/map/linked_standards.md index afc5fe78c..0d64d6d19 100644 --- a/docs/guidance/map/linked_standards.md +++ b/docs/guidance/map/linked_standards.md @@ -8,7 +8,7 @@ The [Open Contracting for Infrastructure Data Standards](https://standard.open-c A joint effort by the [Infrastructure Transparency Initiative](https://infrastructuretransparency.org) (CoST) and the Open Contracting Partnership, it builds on best practice in open data and openness of public infrastructure procurement globally. -OCDS and OC4IDS data sets ought to be linked using the `planning.project` field, referencing the OC4IDS project identifier in `planning.project.id`. +OCDS and OC4IDS datasets ought to be linked using the `planning.project` object, by referencing the OC4IDS project identifier in the `planning.project.id` field. ## Open Fiscal Data Package diff --git a/docs/history/changelog.md b/docs/history/changelog.md index c921d1fbf..2cfb2aa75 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -75,7 +75,7 @@ Per the [normative and non-normative content and changes policy](../governance/n * [#1684](https://github.com/open-contracting/standard/pull/1684) `geometryType` * [#1316](https://github.com/open-contracting/standard/pull/1316) `language` * [#1326](https://github.com/open-contracting/standard/pull/1326) `linkRelationType` - * [#1684](https://github.com/open-contracting/standard/pull/1684) `locationGazetteers` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `locationGazetteer` * [#1308](https://github.com/open-contracting/standard/pull/1308) `mediaType` * [#1459](https://github.com/open-contracting/standard/pull/1459) `partyScale` * [#1654](https://github.com/open-contracting/standard/pull/1654) `permission` @@ -200,7 +200,9 @@ Per the [normative and non-normative content and changes policy](../governance/n * Add new fields: * [#1335](https://github.com/open-contracting/standard/pull/1335) `planning.id` * [#1642](https://github.com/open-contracting/standard/pull/1642) `planning.finalStatus`, `planning.finalStatusDetails` and `planning.finalStatusDate` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `planning.project` * [#1324](https://github.com/open-contracting/standard/pull/1324) `tender.datePublished` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `tender.deliveryLocations` and `tender.deliveryAddresses` * [#1296](https://github.com/open-contracting/standard/pull/1296) [#1674](https://github.com/open-contracting/standard/pull/1674) `tender.exclusionGrounds` * [#1669](https://github.com/open-contracting/standard/pull/1669) `tender.expressionOfInterestDeadline` * [#1490](https://github.com/open-contracting/standard/pull/1490) `tender.identifiers` @@ -221,13 +223,13 @@ Per the [normative and non-normative content and changes policy](../governance/n * [#1372](https://github.com/open-contracting/standard/pull/1372) `Address.country` * [#1380](https://github.com/open-contracting/standard/pull/1380) [#1440](https://github.com/open-contracting/standard/pull/1440) `Document.languages` * [#1439](https://github.com/open-contracting/standard/pull/1439) `Document.relatedItems` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `Item.deliveryLocations` and `Item.deliveryAddresses` * [#1455](https://github.com/open-contracting/standard/pull/1455) `Milestone.dueAfterDate` * [#1434](https://github.com/open-contracting/standard/pull/1434) `Milestone.value` * [#1490](https://github.com/open-contracting/standard/pull/1490) `SimpleIdentifier` * [#1519](https://github.com/open-contracting/standard/pull/1519) `Value.amountNet` and `Value.amountGross` * [#1490](https://github.com/open-contracting/standard/pull/1490) `contracts.identifiers` * [#1679](https://github.com/open-contracting/standard/pull/1679) `Organization.details.classifications` - * [#1684](https://github.com/open-contracting/standard/pull/1684) `planning.project`, `deliveryLocations` and `deliveryAddresses` to `Tender` and `Item` * Deprecate some fields: * [#1200](https://github.com/open-contracting/standard/pull/1200) `tender.submissionMethod`, because all codes from the `submissionMethod` codelist are deprecated. diff --git a/docs/schema/reference.md b/docs/schema/reference.md index 15bac851f..df3da00e2 100644 --- a/docs/schema/reference.md +++ b/docs/schema/reference.md @@ -122,7 +122,7 @@ Each organization has a `details` object. Through extensions, this can be used t ### Planning -The planning section is used in a planning process. This includes information about, for example, needs identification, budget planning, the parent project and market research. Background documents such as feasibility studies and project plans can also be included in this section. +The planning section is used in a planning process. This includes information about, for example, needs identification, budget planning and market research. Background documents such as feasibility studies and project plans can also be included in this section. ````{admonition} Example :class: hint @@ -150,8 +150,6 @@ The planning section is used in a planning process. This includes information ab Apart from documents, the majority of planning information is held within the budget block. This is designed to allow both machine-readable linkable data about budgets, cross-referencing to data held in other standards such as the [Fiscal Data Package](https://specs.frictionlessdata.io/fiscal-data-package/) or [International Aid Transparency Initiative Standard](https://iatistandard.org/en/), and human readable description of the related budgets and projects, supporting users to understand the relationship of the contracting (or planning) process to existing projects and budgets even where linked data is not available. -The `planning.budget.projectID` field should not be used to disclose the identifier of an infrastructure or PPP project. Rather, this field is used to disclose the identifier of a programme of work as it appears in a budget, like a national or state budget. Since such programmes of work can include many infrastructure projects, it is necessary to disclose their identifiers separately. Use the the `planning.project.id` field to disclose the identifier of an infrastructure or PPP project. - ````{admonition} Example :class: hint @@ -172,10 +170,6 @@ The `planning.budget.projectID` field should not be used to disclose the identif #### Project -The `project` object includes details of the infrastructure or public-private partnership (PPP) project to which a planning process is related. This object is designed to allow both machine-readable linkable data about the parent project, cross-referencing to data held in other standards such as the [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/projects/#what-is-a-project) and the [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/) profile, and human readable description of the parent project, supporting users to understand the relationship of the contracting (or planning) process to their parent project even where linked data is not available. - -Where there is a separate OC4IDS dataset that describes the project the identifier from this dataset should be referenced in `project.id`. Where there is not a separate project dataset an appropriate project identifier will need to be generated. For more information on project identifiers see [OC4IDS Project Identifiers](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/). - ````{admonition} Example :class: hint @@ -697,8 +691,6 @@ As well as providing this machine-readable link between processes, publishers ma ### Location -The `Location` subschema can be used to provide the geographic coordinates or standardized location identifiers of the proposed or executed contract delivery in the `Project`, `tender` and `Item` objects. - ````{admonition} Example :class: hint diff --git a/schema/codelists/geometryType.csv b/schema/codelists/geometryType.csv index f053feb6a..204a8ee85 100644 --- a/schema/codelists/geometryType.csv +++ b/schema/codelists/geometryType.csv @@ -1,7 +1,7 @@ Code,Title,Description,Source -Point,Point,"For type 'Point', the 'coordinates' member is a single position.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiPoint,MultiPoint,"For type 'MultiPoint', the 'coordinates' member is an array of positions.",https://tools.ietf.org/html/rfc7946#section-3.1 -LineString,LineString,"For type 'LineString', the 'coordinates' member is an array of two or more positions.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiLineString,MultiLineString,"For type 'MultiLineString', the 'coordinates' member is an array of LineString coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 -Polygon,Polygon,"For type 'Polygon', the 'coordinates' member must be an array of linear ring coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiPolygon,MultiPolygon,"For type 'MultiPolygon', the 'coordinates' member is an array of Polygon coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +Point,Point,"For type 'Point', the `coordinates` field is a single position.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPoint,MultiPoint,"For type 'MultiPoint', the `coordinates` field is an array of positions.",https://tools.ietf.org/html/rfc7946#section-3.1 +LineString,LineString,"For type 'LineString', the `coordinates` field is an array of two or more positions.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiLineString,MultiLineString,"For type 'MultiLineString', the `coordinates` field is an array of LineString coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +Polygon,Polygon,"For type 'Polygon', the `coordinates` field is an array of linear ring coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPolygon,MultiPolygon,"For type 'MultiPolygon', the `coordinates` field is an array of Polygon coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 diff --git a/schema/codelists/locationGazetteer.csv b/schema/codelists/locationGazetteer.csv new file mode 100644 index 000000000..fbcc3869c --- /dev/null +++ b/schema/codelists/locationGazetteer.csv @@ -0,0 +1,7 @@ +Category,Code,Title,Description,Source,URI Pattern +Sub-National,NUTS,EU Nomenclature of Territorial Units for Statistics,The Nomenclature of Territorial Units for Statistics (NUTS) was established by Eurostat in order to provide a single uniform breakdown of territorial units for the production of regional statistics for the European Union.,https://ec.europa.eu/eurostat/web/nuts/linked-open-data,http://data.europa.eu/nuts/code/ +National,ISO2,ISO 3166-1 alpha-2,ISO 3166-1 alpha-2 assigns two-letter codes to countries.,https://www.iso.org/iso-3166-country-codes.html, +Universal,GEONAMES,GeoNames,GeoNames assigns numerical identifiers to geographical names.,https://www.geonames.org/,https://www.geonames.org/ +Universal,OSMN,OpenStreetMap node,An OpenStreetMap node defines a point in space.,,https://www.openstreetmap.org/node/ +Universal,OSMW,OpenStreetMap way,"An OpenStreetMap way defines linear features and area boundaries, as an ordered list of nodes.",https://wiki.openstreetmap.org/wiki/Way,https://www.openstreetmap.org/way/ +Universal,OSMR,OpenStreetMap relation,"An OpenStreetMap relation combines nodes, ways, and/or other relations.",https://wiki.openstreetmap.org/wiki/Relation,https://www.openstreetmap.org/relation/ diff --git a/schema/codelists/locationGazetteers.csv b/schema/codelists/locationGazetteers.csv deleted file mode 100644 index fa5e62d4b..000000000 --- a/schema/codelists/locationGazetteers.csv +++ /dev/null @@ -1,7 +0,0 @@ -Category,Code,Title,Description,Source,URI Pattern -Sub-National,NUTS,EU Nomenclature of Territorial Units for Statistics,The Nomenclature of Territorial Units for Statistics (NUTS) was established by Eurostat in order to provide a single uniform breakdown of territorial units for the production of regional statistics for the European Union.,https://ec.europa.eu/eurostat/web/nuts/linked-open-data,http://data.europa.eu/nuts/code/ -National,ISO2,ISO Country Codes (3166-1 alpha-2),ISO 2-Digit Country Codes,https://www.iso.org/iso-3166-country-codes.html, -Universal,GEONAMES,GeoNames,"GeoNames provides numerical identifiers for many points of interest around the world, including administrative divisions, populated centres and other locations, embedded within a structured tree of geographic relations.",https://www.geonames.org/,https://www.geonames.org/ -Universal,OSMN,OpenStreetMap Node,"OpenStreetMap Nodes consist of a single point in space defined by a latitude, longitude and node ID. Nodes might have tags to indicate the particular geographic feature they represent.",,https://www.openstreetmap.org/node/ -Universal,OSMR,OpenStreetMap Relation,"Relations are used to model logical (and usually local) or geographic relationships between objects. In practice, boundaries of geographic areas are available as Relations in OpenStreetMap.",https://wiki.openstreetmap.org/wiki/Relation,https://www.openstreetmap.org/relation/ -Universal,OSMW,OpenStreetMap Way,An OpenStreetMap Way is an ordered list of OpenStreetMap nodes. It can be used to describe fragments of roads or local boundaries and bounding boxes.,https://wiki.openstreetmap.org/wiki/Way,https://www.openstreetmap.org/way/ diff --git a/schema/release-schema.json b/schema/release-schema.json index 702c8bbe1..b3b2dd6e0 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -164,7 +164,7 @@ "$ref": "#/definitions/Budget" }, "project": { - "title": "Project information", + "title": "Project", "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", "$ref": "#/definitions/Project" }, @@ -348,7 +348,7 @@ "$ref": "#/definitions/Value" }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity will take place.", "type": "array", "items": { @@ -358,8 +358,8 @@ "uniqueItems": true }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity will be delivered.", "type": "array", "items": { "$ref": "#/definitions/Address" @@ -1292,7 +1292,7 @@ }, "projectID": { "title": "Project identifier", - "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", + "description": "The identifier of the programme of work in a budget, of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer", @@ -1632,7 +1632,7 @@ "$ref": "#/definitions/Unit" }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -1643,8 +1643,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "$ref": "#/definitions/Address" @@ -1833,7 +1833,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -1841,12 +1841,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -1865,7 +1865,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -1881,22 +1881,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -1909,7 +1909,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "A URI for the location.", "type": [ "string", "null" @@ -2886,12 +2886,12 @@ }, "Project": { "title": "Project information", - "description": "Information about the infrastructure or public-private partnership project to which a planning process is related.", + "description": "Information about the infrastructure or public-private partnership (PPP) 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.", + "description": "An externally provided identifier for the project. This can be a URI, an [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/) project identifier, [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/framework/#i-basic-project-information) project identifier, an identifier from a projects register, or an identifier based on the canonical version of the project's name. Project identifiers should be unique within the scope of the publication.", "type": [ "string", "null" From 4780b123c8dc5de75eda89ad6831d9b1c5f454d1 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:42:33 -0400 Subject: [PATCH 10/17] geometryType.csv: Reduce repetition --- schema/codelists/geometryType.csv | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/schema/codelists/geometryType.csv b/schema/codelists/geometryType.csv index 204a8ee85..6706bafdd 100644 --- a/schema/codelists/geometryType.csv +++ b/schema/codelists/geometryType.csv @@ -1,7 +1,7 @@ Code,Title,Description,Source -Point,Point,"For type 'Point', the `coordinates` field is a single position.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiPoint,MultiPoint,"For type 'MultiPoint', the `coordinates` field is an array of positions.",https://tools.ietf.org/html/rfc7946#section-3.1 -LineString,LineString,"For type 'LineString', the `coordinates` field is an array of two or more positions.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiLineString,MultiLineString,"For type 'MultiLineString', the `coordinates` field is an array of LineString coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 -Polygon,Polygon,"For type 'Polygon', the `coordinates` field is an array of linear ring coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 -MultiPolygon,MultiPolygon,"For type 'MultiPolygon', the `coordinates` field is an array of Polygon coordinate arrays.",https://tools.ietf.org/html/rfc7946#section-3.1 +Point,Point,The `coordinates` field is a single position.,https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPoint,MultiPoint,The `coordinates` field is an array of positions.,https://tools.ietf.org/html/rfc7946#section-3.1 +LineString,LineString,The `coordinates` field is an array of two or more positions.,https://tools.ietf.org/html/rfc7946#section-3.1 +MultiLineString,MultiLineString,The `coordinates` field is an array of LineString coordinate arrays.,https://tools.ietf.org/html/rfc7946#section-3.1 +Polygon,Polygon,The `coordinates` field is an array of linear ring coordinate arrays.,https://tools.ietf.org/html/rfc7946#section-3.1 +MultiPolygon,MultiPolygon,The `coordinates` field is an array of Polygon coordinate arrays.,https://tools.ietf.org/html/rfc7946#section-3.1 From fc4d4d8332a09f3f78a8b4c817cf6a517ef7c7a3 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:50:59 -0400 Subject: [PATCH 11/17] release-schema: Restore some clarity to budget.projectID --- schema/release-schema.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/schema/release-schema.json b/schema/release-schema.json index b3b2dd6e0..2627c5b13 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -165,7 +165,7 @@ }, "project": { "title": "Project", - "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", + "description": "Information about the infrastructure or public-private partnership (PPP) project to which the planning process is related.", "$ref": "#/definitions/Project" }, "finalStatus": { @@ -1292,7 +1292,7 @@ }, "projectID": { "title": "Project identifier", - "description": "The identifier of the programme of work in a budget, of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", + "description": "The identifier of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer", @@ -1909,7 +1909,7 @@ }, "uri": { "title": "URI", - "description": "A URI for the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -2885,7 +2885,7 @@ "minProperties": 1 }, "Project": { - "title": "Project information", + "title": "Project", "description": "Information about the infrastructure or public-private partnership (PPP) project to which a planning process is related.", "type": "object", "properties": { @@ -2923,7 +2923,7 @@ }, "uri": { "title": "URI", - "description": "The URI of a resource with additional information about the project.", + "description": "The URI of a resource about the project.", "type": [ "string", "null" @@ -2948,7 +2948,7 @@ }, "locations": { "title": "Locations", - "description": "Information about the locations where the project is taking place.", + "description": "Information about the locations where the project takes place.", "type": "array", "items": { "$ref": "#/definitions/Location" From c2d16d3a5fd5b38bdd979fd9321dcef53a5fab22 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:51:33 -0400 Subject: [PATCH 12/17] build: Run manage.py pre-commit --- schema/dereferenced-release-schema.json | 350 +++++++++--------- .../versioned-release-validation-schema.json | 4 +- 2 files changed, 177 insertions(+), 177 deletions(-) diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index f78ce0cde..1371d9e2a 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -1569,7 +1569,7 @@ }, "projectID": { "title": "Project identifier", - "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", + "description": "The identifier of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer", @@ -1601,13 +1601,13 @@ } }, "project": { - "title": "Project information", - "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", + "title": "Project", + "description": "Information about the infrastructure or public-private partnership (PPP) project to which the 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.", + "description": "An externally provided identifier for the project. This can be a URI, an [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/) project identifier, [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/framework/#i-basic-project-information) project identifier, an identifier from a projects register, or an identifier based on the canonical version of the project's name. Project identifiers should be unique within the scope of the publication.", "type": [ "string", "null" @@ -1980,7 +1980,7 @@ }, "uri": { "title": "URI", - "description": "The URI of a resource with additional information about the project.", + "description": "The URI of a resource about the project.", "type": [ "string", "null" @@ -2083,7 +2083,7 @@ }, "locations": { "title": "Locations", - "description": "Information about the locations where the project is taking place.", + "description": "Information about the locations where the project takes place.", "type": "array", "items": { "title": "Location", @@ -2092,7 +2092,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -2100,12 +2100,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -2124,7 +2124,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -2140,22 +2140,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -2168,7 +2168,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -4073,7 +4073,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -4083,7 +4083,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -4091,12 +4091,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -4115,7 +4115,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -4131,22 +4131,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -4159,7 +4159,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -4173,8 +4173,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -5545,7 +5545,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity will take place.", "type": "array", "items": { @@ -5555,7 +5555,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -5563,12 +5563,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -5587,7 +5587,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -5603,22 +5603,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -5631,7 +5631,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -5644,8 +5644,8 @@ "uniqueItems": true }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity will be delivered.", "type": "array", "items": { "title": "Address", @@ -9968,7 +9968,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -9978,7 +9978,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -9986,12 +9986,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -10010,7 +10010,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -10026,22 +10026,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -10054,7 +10054,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -10068,8 +10068,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -12458,7 +12458,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -12468,7 +12468,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -12476,12 +12476,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -12500,7 +12500,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -12516,22 +12516,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -12544,7 +12544,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -12558,8 +12558,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -16983,7 +16983,7 @@ }, "projectID": { "title": "Project identifier", - "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", + "description": "The identifier of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer", @@ -17015,13 +17015,13 @@ } }, "project": { - "title": "Project information", - "description": "Information about the infrastructure or public-private partnership project to which the planning process is related.", + "title": "Project", + "description": "Information about the infrastructure or public-private partnership (PPP) project to which the 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.", + "description": "An externally provided identifier for the project. This can be a URI, an [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/) project identifier, [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/framework/#i-basic-project-information) project identifier, an identifier from a projects register, or an identifier based on the canonical version of the project's name. Project identifiers should be unique within the scope of the publication.", "type": [ "string", "null" @@ -17394,7 +17394,7 @@ }, "uri": { "title": "URI", - "description": "The URI of a resource with additional information about the project.", + "description": "The URI of a resource about the project.", "type": [ "string", "null" @@ -17497,7 +17497,7 @@ }, "locations": { "title": "Locations", - "description": "Information about the locations where the project is taking place.", + "description": "Information about the locations where the project takes place.", "type": "array", "items": { "title": "Location", @@ -17506,7 +17506,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -17514,12 +17514,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -17538,7 +17538,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -17554,22 +17554,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -17582,7 +17582,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -19487,7 +19487,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -19497,7 +19497,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -19505,12 +19505,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -19529,7 +19529,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -19545,22 +19545,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -19573,7 +19573,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -19587,8 +19587,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -20959,7 +20959,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity will take place.", "type": "array", "items": { @@ -20969,7 +20969,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -20977,12 +20977,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -21001,7 +21001,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -21017,22 +21017,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -21045,7 +21045,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -21058,8 +21058,8 @@ "uniqueItems": true }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity will be delivered.", "type": "array", "items": { "title": "Address", @@ -25378,7 +25378,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -25388,7 +25388,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -25396,12 +25396,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -25420,7 +25420,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -25436,22 +25436,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -25464,7 +25464,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -25478,8 +25478,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -27862,7 +27862,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -27872,7 +27872,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -27880,12 +27880,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -27904,7 +27904,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -27920,22 +27920,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -27948,7 +27948,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -27962,8 +27962,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -35523,7 +35523,7 @@ }, "projectID": { "title": "Project identifier", - "description": "The identifier of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the identifier from the relevant registry of projects. Although an integer is allowed, it is recommended to use a string.", + "description": "The identifier of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer", @@ -38974,7 +38974,7 @@ } }, "deliveryLocations": { - "title": "Delivery Locations", + "title": "Delivery locations", "description": "The locations where activity related to the opportunity, contract or license will be delivered.", "type": "array", "items": { @@ -38984,7 +38984,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -38992,12 +38992,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -39016,7 +39016,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -39032,22 +39032,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -39060,7 +39060,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -39074,8 +39074,8 @@ "minItems": 1 }, "deliveryAddresses": { - "title": "Delivery Addresses", - "description": "The addresses to which, or where, goods or services related to the opportunity, contract or license will be delivered.", + "title": "Delivery addresses", + "description": "The addresses to which goods or services related to the opportunity, contract or license will be delivered.", "type": "array", "items": { "title": "Address", @@ -39583,7 +39583,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -39591,12 +39591,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -39615,7 +39615,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -39631,22 +39631,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -39659,7 +39659,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" @@ -40976,13 +40976,13 @@ "minProperties": 1 }, "Project": { - "title": "Project information", - "description": "Information about the infrastructure or public-private partnership project to which a planning process is related.", + "title": "Project", + "description": "Information about the infrastructure or public-private partnership (PPP) 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.", + "description": "An externally provided identifier for the project. This can be a URI, an [Open Contracting for Infrastructure Data Standards Toolkit (OC4IDS)](https://standard.open-contracting.org/infrastructure/latest/en/guidance/identifiers/) project identifier, [OCDS for PPPs](https://standard.open-contracting.org/profiles/ppp/latest/en/framework/#i-basic-project-information) project identifier, an identifier from a projects register, or an identifier based on the canonical version of the project's name. Project identifiers should be unique within the scope of the publication.", "type": [ "string", "null" @@ -41355,7 +41355,7 @@ }, "uri": { "title": "URI", - "description": "The URI of a resource with additional information about the project.", + "description": "The URI of a resource about the project.", "type": [ "string", "null" @@ -41458,7 +41458,7 @@ }, "locations": { "title": "Locations", - "description": "Information about the locations where the project is taking place.", + "description": "Information about the locations where the project takes place.", "type": "array", "items": { "title": "Location", @@ -41467,7 +41467,7 @@ "properties": { "description": { "title": "Description", - "description": "A name or description of the location. This might include the name(s) of the location(s), or might provide a human-readable description of the location to be covered.", + "description": "The name or description of the location.", "type": [ "string", "null" @@ -41475,12 +41475,12 @@ }, "geometry": { "title": "Geometry", - "description": "We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) 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 an address. For concession licenses, or other scenarios covering a polygon location that is not contained in a known gazetteer, polygon and multi-polygon can be used.", + "description": "The spatial extent of the location, as a [GeoJSON Geometry object](https://www.rfc-editor.org/rfc/rfc7946).", "type": "object", "properties": { "type": { "title": "Type", - "description": "The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1) 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].", + "description": "The type of the GeoJSON Geometry object, from the closed [geometryType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#geometryType) codelist.", "type": [ "string", "null" @@ -41499,7 +41499,7 @@ }, "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.", + "description": "The coordinates of the GeoJSON Geometry object. For example, [longitude, latitude] or [longitude, latitude, elevation] for a Point geometry, using the World Geodetic System 1984 (WGS84, EPSG:4326) with longitude and latitude units of decimal degrees.", "type": [ "array", "null" @@ -41515,22 +41515,22 @@ }, "gazetteer": { "title": "Gazetteer", - "description": "Identifiers from a gazetteer (a geographical index or directory) for the location.", + "description": "Identifiers for the location from a gazetteer (a geographical index or directory).", "type": "object", "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.", + "title": "Scheme", + "description": "The identifier of the gazetteer, from the open [locationGazetter](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#locationGazetter) codelist.", "type": [ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { "title": "Identifiers", - "description": "An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.", + "description": "One or more location codes taken from the scheme.", "type": [ "array", "null" @@ -41543,7 +41543,7 @@ }, "uri": { "title": "URI", - "description": "A URI to a further description of the location. This might be a human-readable document with information on the location, or a machine-readable description of the location.", + "description": "The URI of a resource about the location.", "type": [ "string", "null" diff --git a/schema/versioned-release-validation-schema.json b/schema/versioned-release-validation-schema.json index 486227fd4..eb952f77b 100644 --- a/schema/versioned-release-validation-schema.json +++ b/schema/versioned-release-validation-schema.json @@ -2257,7 +2257,7 @@ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "releaseTag": { @@ -3866,7 +3866,7 @@ "string", "null" ], - "codelist": "locationGazetteers.csv", + "codelist": "locationGazetteer.csv", "openCodelist": true }, "identifiers": { From 344e1cde3064b228edc172de053ac434b0c78997 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:57:22 -0400 Subject: [PATCH 13/17] release-schema: Align budget.project with projectID. If we're saying "as it appears in a budget", then we don't need to furthermore refer to a registry. --- docs/history/changelog.md | 3 ++- schema/release-schema.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/history/changelog.md b/docs/history/changelog.md index 2cfb2aa75..a1b430a78 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -185,9 +185,10 @@ Per the [normative and non-normative content and changes policy](../governance/n * Clarify core concepts: * [#1216](https://github.com/open-contracting/standard/pull/1216) Define contracting process and planning process in the schema description. Update definition of release, record and ocid. Update references to contracting process so that it takes take the planning process into account. - * [#1513](https://github.com/open-contracting/standard/pull/1513) Update fields' use of "contracting process" and "contracting (or planning) process" to reflect the new definition. Align `budget.project` and `budget.projectID`. + * [#1513](https://github.com/open-contracting/standard/pull/1513) Update fields' use of "contracting process" and "contracting (or planning) process" to reflect the new definition. * [#1443](https://github.com/open-contracting/standard/pull/1443) `date` * [#1182](https://github.com/open-contracting/standard/pull/1182) `buyer` + - [#1684](https://github.com/open-contracting/standard/pull/1684) `budget.project` and `budget.projectID` * [#1163](https://github.com/open-contracting/standard/pull/1163) `tender.procuringEntity` * [#1395](https://github.com/open-contracting/standard/pull/1417) `tender.procurementMethod` * [#1442](https://github.com/open-contracting/standard/pull/1442) `tender.submissionMethodDetails` diff --git a/schema/release-schema.json b/schema/release-schema.json index 2627c5b13..6b98eb88a 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -1284,7 +1284,7 @@ }, "project": { "title": "Project title", - "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", + "description": "The name of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded.", "type": [ "string", "null" From a246115cae98b217dcf1ee290c324222897b04ae Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Fri, 28 Jun 2024 00:01:14 -0400 Subject: [PATCH 14/17] build: Run manage.py pre-commit --- schema/dereferenced-release-schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index 1371d9e2a..8305bcbc1 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -1561,7 +1561,7 @@ }, "project": { "title": "Project title", - "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", + "description": "The name of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded.", "type": [ "string", "null" @@ -16975,7 +16975,7 @@ }, "project": { "title": "Project title", - "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", + "description": "The name of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded.", "type": [ "string", "null" @@ -35515,7 +35515,7 @@ }, "project": { "title": "Project title", - "description": "The name of the project of which the future contract(s) will be part or through which it/they will be funded. Some organizations maintain a registry of projects, and the data should use the name by which the project is known in that registry.", + "description": "The name of the programme of work as it appears in a budget (for example, a national or state budget), of which the future contract(s) will be part or through which it/they will be funded.", "type": [ "string", "null" From a74d21139821cc9d583605b8d52d2d9a2338da34 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Fri, 28 Jun 2024 00:10:19 -0400 Subject: [PATCH 15/17] guidance/map/linked_standards: Clarify direction of OC4IDS link --- docs/guidance/map/linked_standards.md | 2 +- docs/history/changelog.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guidance/map/linked_standards.md b/docs/guidance/map/linked_standards.md index 0d64d6d19..c946cdec1 100644 --- a/docs/guidance/map/linked_standards.md +++ b/docs/guidance/map/linked_standards.md @@ -8,7 +8,7 @@ The [Open Contracting for Infrastructure Data Standards](https://standard.open-c A joint effort by the [Infrastructure Transparency Initiative](https://infrastructuretransparency.org) (CoST) and the Open Contracting Partnership, it builds on best practice in open data and openness of public infrastructure procurement globally. -OCDS and OC4IDS datasets ought to be linked using the `planning.project` object, by referencing the OC4IDS project identifier in the `planning.project.id` field. +OC4IDS datasets ought to be linked from OCDS datasets using the `planning.project` object, by referencing the OC4IDS project identifier in the `planning.project.id` field. ## Open Fiscal Data Package diff --git a/docs/history/changelog.md b/docs/history/changelog.md index a1b430a78..aeac48a1f 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -188,7 +188,7 @@ Per the [normative and non-normative content and changes policy](../governance/n * [#1513](https://github.com/open-contracting/standard/pull/1513) Update fields' use of "contracting process" and "contracting (or planning) process" to reflect the new definition. * [#1443](https://github.com/open-contracting/standard/pull/1443) `date` * [#1182](https://github.com/open-contracting/standard/pull/1182) `buyer` - - [#1684](https://github.com/open-contracting/standard/pull/1684) `budget.project` and `budget.projectID` + * [#1684](https://github.com/open-contracting/standard/pull/1684) `budget.project` and `budget.projectID` * [#1163](https://github.com/open-contracting/standard/pull/1163) `tender.procuringEntity` * [#1395](https://github.com/open-contracting/standard/pull/1417) `tender.procurementMethod` * [#1442](https://github.com/open-contracting/standard/pull/1442) `tender.submissionMethodDetails` From d1dc0b70c966c5e22587b2b44cc0d3d32a61eacf Mon Sep 17 00:00:00 2001 From: Jen Harris <95221058+odscjen@users.noreply.github.com> Date: Fri, 28 Jun 2024 09:39:39 +0100 Subject: [PATCH 16/17] Update schema/release-schema.json --- schema/release-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema/release-schema.json b/schema/release-schema.json index 6b98eb88a..d16a6bba1 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -2900,7 +2900,7 @@ }, "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.", + "description": "The name of the project. If a project's register is available, this should be the same as the project's name in that register.", "type": [ "string", "null" From 4b8c49fae93d71a17c1c1fb1b90c09165ad09a69 Mon Sep 17 00:00:00 2001 From: odscjen Date: Fri, 28 Jun 2024 09:43:43 +0100 Subject: [PATCH 17/17] build: run manage.py precommit --- schema/dereferenced-release-schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index 8305bcbc1..d5b98a4e6 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -1616,7 +1616,7 @@ }, "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.", + "description": "The name of the project. If a project's register is available, this should be the same as the project's name in that register.", "type": [ "string", "null" @@ -17030,7 +17030,7 @@ }, "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.", + "description": "The name of the project. If a project's register is available, this should be the same as the project's name in that register.", "type": [ "string", "null" @@ -40991,7 +40991,7 @@ }, "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.", + "description": "The name of the project. If a project's register is available, this should be the same as the project's name in that register.", "type": [ "string", "null"