diff --git a/manage.py b/manage.py index 879ad1272..d8d54674c 100755 --- a/manage.py +++ b/manage.py @@ -7,6 +7,7 @@ import re import sys import warnings +from collections import OrderedDict from contextlib import contextmanager from copy import deepcopy from glob import glob @@ -116,12 +117,12 @@ def custom_warning_formatter(message, category, filename, lineno, line=None): ) -def json_load(filename, library=json): +def json_load(filename, library=json, **kwargs): """ Loads JSON data from the given filename. """ with (schemadir / filename).open() as f: - return library.load(f) + return library.load(f, **kwargs) def json_dump(filename, data): @@ -175,15 +176,15 @@ def coerce_to_list(data, key): def traverse(block): - def method(schema, pointer='', **kwargs): + def method(schema, pointer=(), **kwargs): if isinstance(schema, list): for index, item in enumerate(schema): - method(item, pointer=f'{pointer}/{index}', **kwargs) + method(item, pointer=pointer + (index,), **kwargs) elif isinstance(schema, dict): block(schema, pointer=pointer, **kwargs) for key, value in schema.items(): - method(value, pointer=f'{pointer}/{key}', **kwargs) + method(value, pointer=pointer + (key,), **kwargs) return method @@ -196,6 +197,53 @@ def get_metaschema(): json_load('metaschema/meta-schema-patch.json')) +def sort_keywords(schema): + """ + Returns the schema with its keywords in a consistent order. + """ + schema = deepcopy(schema) + + # https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00 + keywords = ( + # Initial keywords that only appear at the top level. + 'id', '$schema', + # Metadata and deprecation keywords, so that the user first learns about the semantics and deprecation. + # Note: The `deprecated` object itself has a `description` field. `$ref` only co-occurs with these keywords. + 'title', 'deprecatedVersion', 'description', 'deprecated', '$ref', + # Validation keywords for any instance type. + 'type', + # Validation keywords for strings. + 'format', 'minLength', + # Validation keywords for arrays. Simple keywords are before "items"; otherwise, they're easy to miss. + 'minItems', 'uniqueItems', 'items', + # Validation keywords for objects. "required" is before "properties"; otherwise, it's easy to miss. + 'required', 'properties', 'patternProperties', + # Codelist keywords. Simple keywords are before "enum"; otherwise, they're easy to miss. + 'codelist', 'openCodelist', 'enum', + # Merge strategy keywords. + 'omitWhenMerged', 'wholeListMerge', + # Final keywords that only appear at the top level. + 'definitions', + ) + + def block(schema, pointer=(), **kwargs): + if pointer and pointer[-1] not in ('definitions', 'properties', 'patternProperties'): + for keyword in keywords: + if keyword in schema: + schema.move_to_end(keyword) + for keyword in schema: + if keyword not in keywords: + raise Exception(f'unexpected keyword: {keyword}') + if '$ref' in schema: + difference = set(schema) - {'title', 'description', 'deprecated', '$ref'} + if difference: + raise Exception(f"unexpected keywords in $ref schema: {', '.join(difference)}") + + traverse(block)(schema) + + return schema + + def get_common_definition_ref(item): """ Returns a schema that references the common definition that the ``item`` matches: "StringNullUriVersioned", @@ -326,7 +374,7 @@ def block(schema, pointer='', fields=()): if hasattr(schema['items'], '__reference__'): reference = schema['items'].__reference__['$ref'][1:] else: - reference = pointer + reference = '/'.join(pointer) fields.add(f'{reference}/properties/id') traverse(block)(schema, fields=fields) @@ -478,11 +526,12 @@ def pre_commit(): """ Update meta-schema.json, dereferenced-release-schema.json and versioned-release-validation-schema.json. """ - release_schema = json_load('release-schema.json') - jsonref_schema = json_load('release-schema.json', jsonref) + release_schema = json_load('release-schema.json', object_pairs_hook=OrderedDict) + jsonref_schema = json_load('release-schema.json', jsonref, object_pairs_hook=OrderedDict) json_dump('meta-schema.json', get_metaschema()) - json_dump('dereferenced-release-schema.json', get_dereferenced_release_schema(jsonref_schema)) + json_dump('release-schema.json', sort_keywords(release_schema)) + json_dump('dereferenced-release-schema.json', sort_keywords(get_dereferenced_release_schema(jsonref_schema))) json_dump('versioned-release-validation-schema.json', get_versioned_release_schema(release_schema)) diff --git a/schema/dereferenced-release-schema.json b/schema/dereferenced-release-schema.json index 5aae48996..536b5e43b 100644 --- a/schema/dereferenced-release-schema.json +++ b/schema/dereferenced-release-schema.json @@ -78,28 +78,29 @@ "title": "Release Tag", "description": "One or more values from the open [releaseTag](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#release-tag) codelist. A tag labels the release: for example, as corresponding to a particular stage of the contracting process. Codes outside the releaseTag codelist might indicate, for example, the notice or form to which the release corresponds, or the event that triggered the publication of the release.", "type": "array", + "minItems": 1, "items": { "type": "string" }, "codelist": "releaseTag.csv", "openCodelist": true, - "minItems": 1, "omitWhenMerged": true }, "initiationType": { "title": "Initiation type", "description": "The type of initiation process used for this contract, from the closed [initiationType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#initiation-type) codelist.", "type": "string", + "codelist": "initiationType.csv", + "openCodelist": false, "enum": [ "tender" - ], - "codelist": "initiationType.csv", - "openCodelist": false + ] }, "parties": { "title": "Parties", "description": "Information on the parties (organizations, economic operators and other participants) who are involved in the contracting process and their roles, e.g. buyer, procuring entity, supplier etc. Organization references elsewhere in the schema are used to refer back to this entries in this list.", "type": "array", + "uniqueItems": true, "items": { "title": "Organization", "description": "A party (organization)", @@ -114,9 +115,9 @@ ] }, "id": { - "type": "string", + "title": "Entity ID", "description": "The ID used for cross-referencing to this party from other sections of the release. This field need only be unique within the scope of the contracting process, but should be built with the following structure {identifier.scheme}-{identifier.id}(-{department-identifier}) where an organization identifier is available.", - "title": "Entity ID" + "type": "string" }, "identifier": { "title": "Primary identifier", @@ -171,6 +172,7 @@ "title": "Additional identifiers", "description": "A list of additional / supplemental identifiers for the organization or participant, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -220,7 +222,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "address": { @@ -230,43 +231,43 @@ "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -280,48 +281,48 @@ }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "Contact details that can be used for this party.", + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -348,12 +349,12 @@ "openCodelist": true }, "details": { + "title": "Details", + "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", "type": [ "object", "null" - ], - "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", - "title": "Details" + ] } }, "patternProperties": { @@ -364,31 +365,37 @@ ] } } - }, - "uniqueItems": true + } }, "buyer": { + "title": "Buyer", + "description": "The organization aiming to conclude a contract with a supplier or to use the goods, works or services resulting from the contract.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -433,56 +440,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -492,18 +499,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -553,55 +559,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -612,16 +619,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The organization aiming to conclude a contract with a supplier or to use the goods, works or services resulting from the contract.", - "title": "Buyer" + } }, "planning": { "title": "Planning", @@ -645,9 +645,9 @@ ] }, "budget": { - "type": "object", "title": "Budget", "description": "Details of the budget that funds the planned contracting process.", + "type": "object", "properties": { "id": { "title": "ID", @@ -1025,14 +1025,14 @@ "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." }, + "type": [ + "string", + "null" + ], "format": "uri" } }, @@ -1062,9 +1062,9 @@ "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.", + "type": "object", "required": [ "id" ], @@ -1233,13 +1233,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -1257,28 +1257,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -1380,8 +1381,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -1472,27 +1472,34 @@ ] }, "procuringEntity": { + "title": "Procuring entity", + "description": "The organization managing the contracting process. If an organization is both a buyer and a procuring entity (as can be the case in simple contracting processes), it should be disclosed using the buyer field, but not this field.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -1537,56 +1544,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -1596,18 +1603,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -1657,55 +1663,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -1716,25 +1723,19 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The organization managing the contracting process. If an organization is both a buyer and a procuring entity (as can be the case in simple contracting processes), it should be disclosed using the buyer field, but not this field.", - "title": "Procuring entity" + } }, "items": { "title": "Items to be procured", "description": "The goods and services to be purchased, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -1811,6 +1812,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -1862,7 +1864,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -2237,11 +2238,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -2302,8 +2303,7 @@ ] } } - }, - "uniqueItems": true + } }, "value": { "title": "Value", @@ -3378,6 +3378,10 @@ "submissionMethod": { "title": "Submission method", "description": "The methods by which bids are submitted, using the open [submissionMethod](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#submission-method) codelist.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes." + }, "type": [ "array", "null" @@ -3386,11 +3390,7 @@ "type": "string" }, "codelist": "submissionMethod.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes.", - "deprecatedVersion": "1.2" - } + "openCodelist": true }, "submissionMethodDetails": { "title": "Submission method details", @@ -3401,13 +3401,13 @@ ] }, "datePublished": { - "description": "The date on which the tender was published.", - "format": "date-time", "title": "Date published", + "description": "The date on which the tender was published.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "tenderPeriod": { "title": "Tender period", @@ -3433,17 +3433,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -3475,17 +3475,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -3504,14 +3504,14 @@ "eligibilityCriteria": { "title": "Eligibility criteria", "description": "A description of any eligibility criteria for potential suppliers.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds." + }, "type": [ "string", "null" - ], - "deprecated": { - "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds.", - "deprecatedVersion": "1.2" - } + ] }, "exclusionGrounds": { "title": "Exclusion grounds", @@ -3553,17 +3553,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -3595,17 +3595,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -3625,28 +3625,36 @@ "title": "Tenderers", "description": "All parties who submit a bid on a tender. More detailed information on bids and the bidding organization can be provided using the bid extension.", "type": "array", + "uniqueItems": true, "items": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { - "type": [ + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", + "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -3691,56 +3699,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -3750,18 +3758,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -3811,55 +3818,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -3870,27 +3878,19 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" - }, - "uniqueItems": true + } + } }, "documents": { "title": "Documents", "description": "Documents related to the tender stage (for example, notices, technical specifications, evaluation criteria, questions and clarifications).", "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.", + "type": "object", "required": [ "id" ], @@ -4059,13 +4059,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -4083,28 +4083,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -4206,8 +4207,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -4227,13 +4227,13 @@ } }, "amendments": { + "title": "Amendments", "description": "A tender amendment is a formal change to the tender, and generally involves the publication of a new tender notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -4253,40 +4253,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -4309,10 +4313,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -4328,8 +4328,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -4349,40 +4353,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -4405,10 +4413,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -4419,10 +4423,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -4475,6 +4475,7 @@ "title": "Awards", "description": "Information from the award phase of the contracting process. There can be more than one award per contracting process e.g. because the contract is split among different providers, or because it is a standing offer.", "type": "array", + "uniqueItems": true, "items": { "title": "Award", "description": "An award for the given procurement. There can be more than one award per contracting process e.g. because the contract is split among different providers, or because it is a standing offer.", @@ -4515,15 +4516,15 @@ "string", "null" ], + "codelist": "awardStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", "cancelled", "unsuccessful", null - ], - "codelist": "awardStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -5536,28 +5537,36 @@ "title": "Suppliers", "description": "Entities with which a buyer or a procuring entity decided to conclude a contract.", "type": "array", + "uniqueItems": true, "items": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -5602,56 +5611,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -5661,18 +5670,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -5722,55 +5730,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -5781,28 +5790,21 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" - }, - "uniqueItems": true + } + } }, "items": { "title": "Items awarded", "description": "The goods and services awarded in this award, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -5879,6 +5881,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -5930,7 +5933,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -6305,11 +6307,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -6370,8 +6372,7 @@ ] } } - }, - "uniqueItems": true + } }, "contractPeriod": { "title": "Contract period", @@ -6397,17 +6398,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -6419,10 +6420,11 @@ "title": "Documents", "description": "Documents related to the award (for example, notices, bids, evaluation reports).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -6524,17 +6526,16 @@ ] } } - }, - "uniqueItems": true + } }, "amendments": { + "title": "Amendments", "description": "An award amendment is a formal change to the details of the award, and generally involves the publication of a new award notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -6554,40 +6555,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -6610,10 +6615,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -6629,8 +6630,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -6650,40 +6655,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -6706,10 +6715,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -6720,10 +6725,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -6741,17 +6742,17 @@ ] } } - }, - "uniqueItems": true + } }, "contracts": { "title": "Contracts", "description": "Information from the contract creation and implementation phase of the contracting process.", "type": "array", + "uniqueItems": true, "items": { - "type": "object", "title": "Contract", "description": "Information regarding the contract, typically between the buyer and supplier. This includes contracts describing all the contractual conditions (e.g. item, quantity, price, payment terms, time and place of delivery), as well as contracts only describing the general contractual conditions (such as a framework agreement) and those only describing the specific contractual conditions (such as a contract within a framework agreement). Communication between contractual parties that consists of minor specifications of conditions agreed previously (e.g. specifying the time or place of delivery) is not considered a contract. Amendments are considered as part of the contract that is being amended. Contracts are also used when giving prizes or other rewards (e.g. a follow-up contract) resulting from a design contest.", + "type": "object", "required": [ "id", "awardID" @@ -6798,6 +6799,8 @@ "string", "null" ], + "codelist": "contractStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", @@ -6806,9 +6809,7 @@ "terminatedEarly", "terminatedSuccessfully", null - ], - "codelist": "contractStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -7822,10 +7823,11 @@ "description": "The goods, services, and any intangible outcomes in this contract. If the items contracted are identical to the items awarded, this field should be omitted.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -7902,6 +7904,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -7953,7 +7956,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -8328,11 +8330,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -8393,8 +8395,7 @@ ] } } - }, - "uniqueItems": true + } }, "period": { "title": "Period", @@ -8420,17 +8421,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -8442,10 +8443,11 @@ "title": "Documents", "description": "Documents related to the contract (for example, notices, signed contracts).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -8547,22 +8549,22 @@ ] } } - }, - "uniqueItems": true + } }, "implementation": { - "type": "object", "title": "Implementation", "description": "Information related to the implementation of the contract in accordance with the obligations laid out therein.", + "type": "object", "properties": { "transactions": { "title": "Transactions", "description": "A list of the spending transactions made against this contract", "type": "array", + "uniqueItems": true, "items": { - "type": "object", "title": "Transaction information", "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](https://iatistandard.org/en/iati-standard/203/activity-standard/iati-activities/iati-activity/transaction/) and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional spending data.", + "type": "object", "required": [ "id" ], @@ -8925,27 +8927,34 @@ } }, "payer": { + "title": "Payer", + "description": "An organization reference for the organization from which the funds in this transaction originate.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -8990,56 +8999,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -9049,18 +9058,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -9110,55 +9118,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -9169,39 +9178,39 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization from which the funds in this transaction originate.", - "title": "Payer" + } }, "payee": { + "title": "Payee", + "description": "An organization reference for the organization which receives the funds in this transaction.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -9246,56 +9255,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -9305,18 +9314,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -9366,55 +9374,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -9425,16 +9434,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization which receives the funds in this transaction.", - "title": "Payee" + } }, "uri": { "title": "Linked spending information", @@ -9448,6 +9450,10 @@ "amount": { "title": "Amount", "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, "type": "object", "properties": { "amount": { @@ -9773,15 +9779,15 @@ null ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" } }, "providerOrganization": { "title": "Provider organization", "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -9826,15 +9832,15 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } }, "receiverOrganization": { "title": "Receiver organization", "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -9879,20 +9885,16 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } } } - }, - "uniqueItems": true + } }, "milestones": { "title": "Milestones", "description": "As milestones are completed, the milestone's status and dates should be updated.", "type": "array", + "uniqueItems": true, "items": { "title": "Milestone", "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting process.", @@ -9954,13 +9956,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -9978,28 +9980,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -10101,8 +10104,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -10119,17 +10121,17 @@ ] } } - }, - "uniqueItems": true + } }, "documents": { "title": "Documents", "description": "Documents related to the implementation of the contract (for example, completion certificates, audits).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -10231,17 +10233,19 @@ ] } } - }, - "uniqueItems": true + } } } }, "relatedProcesses": { + "title": "Related processes", + "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", + "type": "array", "uniqueItems": true, "items": { + "title": "Related Process", "description": "A reference to a related contracting process: generally one preceding or following on from the current process.", "type": "object", - "title": "Related Process", "properties": { "id": { "title": "Relationship ID", @@ -10249,21 +10253,21 @@ "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", + "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process) codelist.", "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, "title": { - "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "title": "Related process title", + "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "type": [ "string", "null" @@ -10280,27 +10284,24 @@ "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", + "description": "The identifier of the related process. If the scheme is 'ocid', this must be an open contracting process identifier (ocid).", "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", + "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.", "type": [ "string", "null" - ] + ], + "format": "uri" } } - }, - "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", - "title": "Related processes", - "type": "array" + } }, "milestones": { "title": "Contract milestones", @@ -10367,13 +10368,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -10391,28 +10392,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -10514,8 +10516,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -10535,13 +10536,13 @@ } }, "amendments": { + "title": "Amendments", "description": "A contract amendment is a formal change to, or extension of, a contract, and generally involves the publication of a new contract notice/release, or some other documents detailing the change. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -10561,40 +10562,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -10617,10 +10622,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -10636,8 +10637,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -10657,40 +10662,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -10713,10 +10722,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -10727,10 +10732,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -10748,8 +10749,7 @@ ] } } - }, - "uniqueItems": true + } }, "language": { "title": "Release language", @@ -10762,11 +10762,14 @@ "openCodelist": true }, "relatedProcesses": { + "title": "Related processes", + "description": "The details of related processes: for example, if this process follows on from one or more other processes, represented under a separate ocid. This is commonly used to relate mini-competitions to their parent frameworks or individual tenders to a broader planning process.", + "type": "array", "uniqueItems": true, "items": { + "title": "Related Process", "description": "A reference to a related contracting process: generally one preceding or following on from the current process.", "type": "object", - "title": "Related Process", "properties": { "id": { "title": "Relationship ID", @@ -10774,21 +10777,21 @@ "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", + "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process) codelist.", "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, "title": { - "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "title": "Related process title", + "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "type": [ "string", "null" @@ -10805,32 +10808,30 @@ "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", + "description": "The identifier of the related process. If the scheme is 'ocid', this must be an open contracting process identifier (ocid).", "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", + "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.", "type": [ "string", "null" - ] + ], + "format": "uri" } } - }, - "description": "The details of related processes: for example, if this process follows on from one or more other processes, represented under a separate ocid. This is commonly used to relate mini-competitions to their parent frameworks or individual tenders to a broader planning process.", - "title": "Related processes", - "type": "array" + } }, "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 process: for example, a link to a resource in a non-OCDS publication that represents the entire contracting process.", "type": "array", + "uniqueItems": true, "items": { "title": "Link", "description": "A reference to a related resource.", @@ -10851,7 +10852,6 @@ } } }, - "uniqueItems": true, "omitWhenMerged": true } }, @@ -10885,9 +10885,9 @@ ] }, "budget": { - "type": "object", "title": "Budget", "description": "Details of the budget that funds the planned contracting process.", + "type": "object", "properties": { "id": { "title": "ID", @@ -11265,14 +11265,14 @@ "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." }, + "type": [ + "string", + "null" + ], "format": "uri" } }, @@ -11302,9 +11302,9 @@ "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.", + "type": "object", "required": [ "id" ], @@ -11473,13 +11473,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -11497,28 +11497,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -11620,8 +11621,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -11712,27 +11712,34 @@ ] }, "procuringEntity": { + "title": "Procuring entity", + "description": "The organization managing the contracting process. If an organization is both a buyer and a procuring entity (as can be the case in simple contracting processes), it should be disclosed using the buyer field, but not this field.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -11777,56 +11784,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -11836,18 +11843,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -11897,55 +11903,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -11956,25 +11963,19 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The organization managing the contracting process. If an organization is both a buyer and a procuring entity (as can be the case in simple contracting processes), it should be disclosed using the buyer field, but not this field.", - "title": "Procuring entity" + } }, "items": { "title": "Items to be procured", "description": "The goods and services to be purchased, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -12051,6 +12052,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -12102,7 +12104,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -12477,11 +12478,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -12542,8 +12543,7 @@ ] } } - }, - "uniqueItems": true + } }, "value": { "title": "Value", @@ -13618,6 +13618,10 @@ "submissionMethod": { "title": "Submission method", "description": "The methods by which bids are submitted, using the open [submissionMethod](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#submission-method) codelist.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes." + }, "type": [ "array", "null" @@ -13626,11 +13630,7 @@ "type": "string" }, "codelist": "submissionMethod.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes.", - "deprecatedVersion": "1.2" - } + "openCodelist": true }, "submissionMethodDetails": { "title": "Submission method details", @@ -13641,13 +13641,13 @@ ] }, "datePublished": { - "description": "The date on which the tender was published.", - "format": "date-time", "title": "Date published", + "description": "The date on which the tender was published.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "tenderPeriod": { "title": "Tender period", @@ -13673,17 +13673,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -13715,17 +13715,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -13744,14 +13744,14 @@ "eligibilityCriteria": { "title": "Eligibility criteria", "description": "A description of any eligibility criteria for potential suppliers.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds." + }, "type": [ "string", "null" - ], - "deprecated": { - "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds.", - "deprecatedVersion": "1.2" - } + ] }, "exclusionGrounds": { "title": "Exclusion grounds", @@ -13793,17 +13793,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -13835,17 +13835,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -13865,28 +13865,36 @@ "title": "Tenderers", "description": "All parties who submit a bid on a tender. More detailed information on bids and the bidding organization can be provided using the bid extension.", "type": "array", + "uniqueItems": true, "items": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -13931,56 +13939,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -13990,18 +13998,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -14051,55 +14058,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -14110,27 +14118,19 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" - }, - "uniqueItems": true + } + } }, "documents": { "title": "Documents", "description": "Documents related to the tender stage (for example, notices, technical specifications, evaluation criteria, questions and clarifications).", "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.", + "type": "object", "required": [ "id" ], @@ -14299,13 +14299,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -14323,28 +14323,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -14446,8 +14447,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -14467,13 +14467,13 @@ } }, "amendments": { + "title": "Amendments", "description": "A tender amendment is a formal change to the tender, and generally involves the publication of a new tender notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -14493,40 +14493,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -14549,10 +14553,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -14568,8 +14568,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -14589,40 +14593,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -14645,10 +14653,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -14659,10 +14663,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -14751,15 +14751,15 @@ "string", "null" ], + "codelist": "awardStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", "cancelled", "unsuccessful", null - ], - "codelist": "awardStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -15772,28 +15772,36 @@ "title": "Suppliers", "description": "Entities with which a buyer or a procuring entity decided to conclude a contract.", "type": "array", + "uniqueItems": true, "items": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -15838,56 +15846,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -15897,18 +15905,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -15958,55 +15965,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -16017,28 +16025,21 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" - }, - "uniqueItems": true + } + } }, "items": { "title": "Items awarded", "description": "The goods and services awarded in this award, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -16115,6 +16116,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -16166,7 +16168,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -16541,11 +16542,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -16606,8 +16607,7 @@ ] } } - }, - "uniqueItems": true + } }, "contractPeriod": { "title": "Contract period", @@ -16633,17 +16633,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -16655,10 +16655,11 @@ "title": "Documents", "description": "Documents related to the award (for example, notices, bids, evaluation reports).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -16760,17 +16761,16 @@ ] } } - }, - "uniqueItems": true + } }, "amendments": { + "title": "Amendments", "description": "An award amendment is a formal change to the details of the award, and generally involves the publication of a new award notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -16790,40 +16790,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -16846,10 +16850,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -16865,8 +16865,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -16886,40 +16890,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -16942,10 +16950,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -16956,10 +16960,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -16979,9 +16979,9 @@ } }, "Contract": { - "type": "object", "title": "Contract", "description": "Information regarding the contract, typically between the buyer and supplier. This includes contracts describing all the contractual conditions (e.g. item, quantity, price, payment terms, time and place of delivery), as well as contracts only describing the general contractual conditions (such as a framework agreement) and those only describing the specific contractual conditions (such as a contract within a framework agreement). Communication between contractual parties that consists of minor specifications of conditions agreed previously (e.g. specifying the time or place of delivery) is not considered a contract. Amendments are considered as part of the contract that is being amended. Contracts are also used when giving prizes or other rewards (e.g. a follow-up contract) resulting from a design contest.", + "type": "object", "required": [ "id", "awardID" @@ -17028,6 +17028,8 @@ "string", "null" ], + "codelist": "contractStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", @@ -17036,9 +17038,7 @@ "terminatedEarly", "terminatedSuccessfully", null - ], - "codelist": "contractStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -18052,10 +18052,11 @@ "description": "The goods, services, and any intangible outcomes in this contract. If the items contracted are identical to the items awarded, this field should be omitted.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -18132,6 +18133,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -18183,7 +18185,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -18558,11 +18559,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -18623,8 +18624,7 @@ ] } } - }, - "uniqueItems": true + } }, "period": { "title": "Period", @@ -18650,17 +18650,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -18672,10 +18672,11 @@ "title": "Documents", "description": "Documents related to the contract (for example, notices, signed contracts).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -18777,22 +18778,22 @@ ] } } - }, - "uniqueItems": true + } }, "implementation": { - "type": "object", "title": "Implementation", "description": "Information related to the implementation of the contract in accordance with the obligations laid out therein.", + "type": "object", "properties": { "transactions": { "title": "Transactions", "description": "A list of the spending transactions made against this contract", "type": "array", + "uniqueItems": true, "items": { - "type": "object", "title": "Transaction information", "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](https://iatistandard.org/en/iati-standard/203/activity-standard/iati-activities/iati-activity/transaction/) and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional spending data.", + "type": "object", "required": [ "id" ], @@ -19155,27 +19156,34 @@ } }, "payer": { + "title": "Payer", + "description": "An organization reference for the organization from which the funds in this transaction originate.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -19220,56 +19228,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -19279,18 +19287,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -19340,55 +19347,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -19399,39 +19407,39 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization from which the funds in this transaction originate.", - "title": "Payer" + } }, "payee": { + "title": "Payee", + "description": "An organization reference for the organization which receives the funds in this transaction.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -19476,56 +19484,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -19535,18 +19543,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -19596,55 +19603,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -19655,16 +19663,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization which receives the funds in this transaction.", - "title": "Payee" + } }, "uri": { "title": "Linked spending information", @@ -19678,6 +19679,10 @@ "amount": { "title": "Amount", "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, "type": "object", "properties": { "amount": { @@ -20003,15 +20008,15 @@ null ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" } }, "providerOrganization": { "title": "Provider organization", "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -20056,15 +20061,15 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } }, "receiverOrganization": { "title": "Receiver organization", "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -20109,20 +20114,16 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } } } - }, - "uniqueItems": true + } }, "milestones": { "title": "Milestones", "description": "As milestones are completed, the milestone's status and dates should be updated.", "type": "array", + "uniqueItems": true, "items": { "title": "Milestone", "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting process.", @@ -20184,13 +20185,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -20208,28 +20209,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -20331,8 +20333,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -20349,17 +20350,17 @@ ] } } - }, - "uniqueItems": true + } }, "documents": { "title": "Documents", "description": "Documents related to the implementation of the contract (for example, completion certificates, audits).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -20461,17 +20462,19 @@ ] } } - }, - "uniqueItems": true + } } } }, "relatedProcesses": { + "title": "Related processes", + "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", + "type": "array", "uniqueItems": true, "items": { + "title": "Related Process", "description": "A reference to a related contracting process: generally one preceding or following on from the current process.", "type": "object", - "title": "Related Process", "properties": { "id": { "title": "Relationship ID", @@ -20479,21 +20482,21 @@ "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", + "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process) codelist.", "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, "title": { - "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "title": "Related process title", + "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "type": [ "string", "null" @@ -20510,27 +20513,24 @@ "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", + "description": "The identifier of the related process. If the scheme is 'ocid', this must be an open contracting process identifier (ocid).", "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", + "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.", "type": [ "string", "null" - ] + ], + "format": "uri" } } - }, - "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", - "title": "Related processes", - "type": "array" + } }, "milestones": { "title": "Contract milestones", @@ -20597,13 +20597,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -20621,28 +20621,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -20744,8 +20745,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -20765,13 +20765,13 @@ } }, "amendments": { + "title": "Amendments", "description": "A contract amendment is a formal change to, or extension of, a contract, and generally involves the publication of a new contract notice/release, or some other documents detailing the change. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -20791,40 +20791,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -20847,10 +20851,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -20866,8 +20866,12 @@ }, "amendment": { "title": "Amendment", - "type": "object", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -20887,40 +20891,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -20943,10 +20951,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -20957,10 +20961,6 @@ "null" ] } - }, - "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" } } }, @@ -20980,18 +20980,19 @@ } }, "Implementation": { - "type": "object", "title": "Implementation", "description": "Information during the performance / implementation stage of the contract.", + "type": "object", "properties": { "transactions": { "title": "Transactions", "description": "A list of the spending transactions made against this contract", "type": "array", + "uniqueItems": true, "items": { - "type": "object", "title": "Transaction information", "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](https://iatistandard.org/en/iati-standard/203/activity-standard/iati-activities/iati-activity/transaction/) and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional spending data.", + "type": "object", "required": [ "id" ], @@ -21354,27 +21355,34 @@ } }, "payer": { + "title": "Payer", + "description": "An organization reference for the organization from which the funds in this transaction originate.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -21419,56 +21427,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -21478,18 +21486,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -21539,55 +21546,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -21598,39 +21606,39 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization from which the funds in this transaction originate.", - "title": "Payer" + } }, "payee": { + "title": "Payee", + "description": "An organization reference for the organization which receives the funds in this transaction.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -21675,56 +21683,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -21734,18 +21742,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -21795,55 +21802,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -21854,16 +21862,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization which receives the funds in this transaction.", - "title": "Payee" + } }, "uri": { "title": "Linked spending information", @@ -21877,6 +21878,10 @@ "amount": { "title": "Amount", "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, "type": "object", "properties": { "amount": { @@ -22202,15 +22207,15 @@ null ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" } }, "providerOrganization": { "title": "Provider organization", "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -22255,15 +22260,15 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } }, "receiverOrganization": { "title": "Receiver organization", "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -22308,20 +22313,16 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } } } - }, - "uniqueItems": true + } }, "milestones": { "title": "Milestones", "description": "As milestones are completed, the milestone's status and dates should be updated.", "type": "array", + "uniqueItems": true, "items": { "title": "Milestone", "description": "The milestone block can be used to represent a wide variety of events in the lifetime of a contracting process.", @@ -22383,13 +22384,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -22407,28 +22408,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -22530,8 +22532,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -22548,17 +22549,17 @@ ] } } - }, - "uniqueItems": true + } }, "documents": { "title": "Documents", "description": "Documents related to the implementation of the contract (for example, completion certificates, audits).", "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -22660,8 +22661,7 @@ ] } } - }, - "uniqueItems": true + } } } }, @@ -22726,13 +22726,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -22750,28 +22750,29 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "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.", + "type": "object", "required": [ "id" ], @@ -22873,8 +22874,7 @@ ] } } - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -22893,9 +22893,9 @@ } }, "Document": { - "type": "object", "title": "Document", "description": "Links to, or descriptions of, external documents can be attached at various locations within the standard. Documents can be supporting information, formal notices, downloadable forms, or any other kind of resource that ought to be made public as part of full open contracting.", + "type": "object", "required": [ "id" ], @@ -22999,9 +22999,9 @@ } }, "Budget": { - "type": "object", "title": "Budget information", "description": "This section contains basic information about the budget estimated for, or allocated to, this contracting process at the present time. Further documentation and data about how budgets have been allocated to a contracting process should be published outside of OCDS data, according to the best available standards.", + "type": "object", "properties": { "id": { "title": "ID", @@ -23379,14 +23379,14 @@ "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." }, + "type": [ + "string", + "null" + ], "format": "uri" } }, @@ -23412,9 +23412,9 @@ } }, "Transaction": { - "type": "object", "title": "Transaction information", "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](https://iatistandard.org/en/iati-standard/203/activity-standard/iati-activities/iati-activity/transaction/) and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional spending data.", + "type": "object", "required": [ "id" ], @@ -23777,27 +23777,34 @@ } }, "payer": { + "title": "Payer", + "description": "An organization reference for the organization from which the funds in this transaction originate.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -23842,56 +23849,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -23901,18 +23908,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -23962,55 +23968,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -24021,39 +24028,39 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." - } - } - }, - "type": "object", - "description": "An organization reference for the organization from which the funds in this transaction originate.", - "title": "Payer" + } + } + } }, "payee": { + "title": "Payee", + "description": "An organization reference for the organization which receives the funds in this transaction.", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -24098,56 +24105,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -24157,18 +24164,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -24218,55 +24224,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -24277,16 +24284,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "An organization reference for the organization which receives the funds in this transaction.", - "title": "Payee" + } }, "uri": { "title": "Linked spending information", @@ -24300,6 +24300,10 @@ "amount": { "title": "Amount", "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, "type": "object", "properties": { "amount": { @@ -24625,15 +24629,15 @@ null ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" } }, "providerOrganization": { "title": "Provider organization", "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -24678,15 +24682,15 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } }, "receiverOrganization": { "title": "Receiver organization", "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, "type": "object", "properties": { "scheme": { @@ -24731,36 +24735,39 @@ "null" ] } - }, - "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" } } } }, "OrganizationReference": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", "description": "The primary identifier for this organization. Identifiers that uniquely pick out a legal entity should be preferred. Consult the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/) for the preferred scheme and identifier to use.", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "scheme": { @@ -24805,56 +24812,56 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and detailed legal identifier information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "address": { "title": "Address", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, "type": "object", "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -24864,18 +24871,17 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -24925,55 +24931,56 @@ } } }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "(Deprecated outside the parties section)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." + }, + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -24984,16 +24991,9 @@ "null" ] } - }, - "deprecated": { - "deprecatedVersion": "1.1", - "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." } } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" + } }, "Organization": { "title": "Organization", @@ -25009,9 +25009,9 @@ ] }, "id": { - "type": "string", + "title": "Entity ID", "description": "The ID used for cross-referencing to this party from other sections of the release. This field need only be unique within the scope of the contracting process, but should be built with the following structure {identifier.scheme}-{identifier.id}(-{department-identifier}) where an organization identifier is available.", - "title": "Entity ID" + "type": "string" }, "identifier": { "title": "Primary identifier", @@ -25066,6 +25066,7 @@ "title": "Additional identifiers", "description": "A list of additional / supplemental identifiers for the organization or participant, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "type": "array", + "uniqueItems": true, "items": { "title": "Identifier", "description": "A unique identifier for a party (organization).", @@ -25115,7 +25116,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "address": { @@ -25125,43 +25125,43 @@ "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -25175,48 +25175,48 @@ }, "contactPoint": { "title": "Contact point", - "type": "object", "description": "Contact details that can be used for this party.", + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -25243,12 +25243,12 @@ "openCodelist": true }, "details": { + "title": "Details", + "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", "type": [ "object", "null" - ], - "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", - "title": "Details" + ] } }, "patternProperties": { @@ -25262,8 +25262,8 @@ }, "Item": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -25340,6 +25340,7 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "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.", @@ -25391,7 +25392,6 @@ } } }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -25766,11 +25766,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", @@ -25834,8 +25834,8 @@ }, "Amendment": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -25855,40 +25855,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -25911,10 +25915,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -26034,43 +26034,43 @@ "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -26084,48 +26084,48 @@ }, "ContactPoint": { "title": "Contact point", - "type": "object", "description": "A person, contact point or department to contact in relation to this contracting process.", + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -26492,17 +26492,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -26536,9 +26536,9 @@ } }, "RelatedProcess": { + "title": "Related Process", "description": "A reference to a related contracting process: generally one preceding or following on from the current process.", "type": "object", - "title": "Related Process", "properties": { "id": { "title": "Relationship ID", @@ -26546,21 +26546,21 @@ "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", + "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process) codelist.", "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, "title": { - "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "title": "Related process title", + "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "type": [ "string", "null" @@ -26577,21 +26577,21 @@ "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", + "description": "The identifier of the related process. If the scheme is 'ocid', this must be an open contracting process identifier (ocid).", "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", + "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.", "type": [ "string", "null" - ] + ], + "format": "uri" } } }, @@ -26959,11 +26959,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", diff --git a/schema/release-schema.json b/schema/release-schema.json index 8de515799..9784f5e41 100644 --- a/schema/release-schema.json +++ b/schema/release-schema.json @@ -34,32 +34,32 @@ "title": "Release Tag", "description": "One or more values from the open [releaseTag](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#release-tag) codelist. A tag labels the release: for example, as corresponding to a particular stage of the contracting process. Codes outside the releaseTag codelist might indicate, for example, the notice or form to which the release corresponds, or the event that triggered the publication of the release.", "type": "array", + "minItems": 1, "items": { "type": "string" }, "codelist": "releaseTag.csv", "openCodelist": true, - "minItems": 1, "omitWhenMerged": true }, "initiationType": { "title": "Initiation type", "description": "The type of initiation process used for this contract, from the closed [initiationType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#initiation-type) codelist.", "type": "string", + "codelist": "initiationType.csv", + "openCodelist": false, "enum": [ "tender" - ], - "codelist": "initiationType.csv", - "openCodelist": false + ] }, "parties": { "title": "Parties", "description": "Information on the parties (organizations, economic operators and other participants) who are involved in the contracting process and their roles, e.g. buyer, procuring entity, supplier etc. Organization references elsewhere in the schema are used to refer back to this entries in this list.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Organization" - }, - "uniqueItems": true + } }, "buyer": { "title": "Buyer", @@ -80,19 +80,19 @@ "title": "Awards", "description": "Information from the award phase of the contracting process. There can be more than one award per contracting process e.g. because the contract is split among different providers, or because it is a standing offer.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Award" - }, - "uniqueItems": true + } }, "contracts": { "title": "Contracts", "description": "Information from the contract creation and implementation phase of the contracting process.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Contract" - }, - "uniqueItems": true + } }, "language": { "title": "Release language", @@ -105,22 +105,22 @@ "openCodelist": true }, "relatedProcesses": { + "title": "Related processes", + "description": "The details of related processes: for example, if this process follows on from one or more other processes, represented under a separate ocid. This is commonly used to relate mini-competitions to their parent frameworks or individual tenders to a broader planning process.", + "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/RelatedProcess" - }, - "description": "The details of related processes: for example, if this process follows on from one or more other processes, represented under a separate ocid. This is commonly used to relate mini-competitions to their parent frameworks or individual tenders to a broader planning process.", - "title": "Related processes", - "type": "array" + } }, "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 process: for example, a link to a resource in a non-OCDS publication that represents the entire contracting process.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Link" }, - "uniqueItems": true, "omitWhenMerged": true } }, @@ -254,10 +254,10 @@ "title": "Items to be procured", "description": "The goods and services to be purchased, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "value": { "title": "Value", @@ -357,6 +357,10 @@ "submissionMethod": { "title": "Submission method", "description": "The methods by which bids are submitted, using the open [submissionMethod](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#submission-method) codelist.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes." + }, "type": [ "array", "null" @@ -365,11 +369,7 @@ "type": "string" }, "codelist": "submissionMethod.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes.", - "deprecatedVersion": "1.2" - } + "openCodelist": true }, "submissionMethodDetails": { "title": "Submission method details", @@ -380,13 +380,13 @@ ] }, "datePublished": { - "description": "The date on which the tender was published.", - "format": "date-time", "title": "Date published", + "description": "The date on which the tender was published.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "tenderPeriod": { "title": "Tender period", @@ -409,14 +409,14 @@ "eligibilityCriteria": { "title": "Eligibility criteria", "description": "A description of any eligibility criteria for potential suppliers.", + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds." + }, "type": [ "string", "null" - ], - "deprecated": { - "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds.", - "deprecatedVersion": "1.2" - } + ] }, "exclusionGrounds": { "title": "Exclusion grounds", @@ -440,8 +440,8 @@ "$ref": "#/definitions/Period" }, "contractPeriod": { - "description": "The period over which the contract is estimated or required to be active. If the tender does not specify explicit dates, the duration field may be used.", "title": "Contract period", + "description": "The period over which the contract is estimated or required to be active. If the tender does not specify explicit dates, the duration field may be used.", "$ref": "#/definitions/Period" }, "numberOfTenderers": { @@ -456,10 +456,10 @@ "title": "Tenderers", "description": "All parties who submit a bid on a tender. More detailed information on bids and the bidding organization can be provided using the bid extension.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/OrganizationReference" - }, - "uniqueItems": true + } }, "documents": { "title": "Documents", @@ -478,9 +478,9 @@ } }, "amendments": { + "title": "Amendments", "description": "A tender amendment is a formal change to the tender, and generally involves the publication of a new tender notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "$ref": "#/definitions/Amendment" } @@ -488,11 +488,11 @@ "amendment": { "title": "Amendment", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -580,15 +580,15 @@ "string", "null" ], + "codelist": "awardStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", "cancelled", "unsuccessful", null - ], - "codelist": "awardStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -626,20 +626,20 @@ "title": "Suppliers", "description": "Entities with which a buyer or a procuring entity decided to conclude a contract.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/OrganizationReference" - }, - "uniqueItems": true + } }, "items": { "title": "Items awarded", "description": "The goods and services awarded in this award, broken into line items wherever possible. Items should not be duplicated, but the quantity specified instead.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "contractPeriod": { "title": "Contract period", @@ -650,15 +650,15 @@ "title": "Documents", "description": "Documents related to the award (for example, notices, bids, evaluation reports).", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } }, "amendments": { + "title": "Amendments", "description": "An award amendment is a formal change to the details of the award, and generally involves the publication of a new award notice/release. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "$ref": "#/definitions/Amendment" } @@ -666,11 +666,11 @@ "amendment": { "title": "Amendment", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -689,9 +689,9 @@ } }, "Contract": { - "type": "object", "title": "Contract", "description": "Information regarding the contract, typically between the buyer and supplier. This includes contracts describing all the contractual conditions (e.g. item, quantity, price, payment terms, time and place of delivery), as well as contracts only describing the general contractual conditions (such as a framework agreement) and those only describing the specific contractual conditions (such as a contract within a framework agreement). Communication between contractual parties that consists of minor specifications of conditions agreed previously (e.g. specifying the time or place of delivery) is not considered a contract. Amendments are considered as part of the contract that is being amended. Contracts are also used when giving prizes or other rewards (e.g. a follow-up contract) resulting from a design contest.", + "type": "object", "required": [ "id", "awardID" @@ -738,6 +738,8 @@ "string", "null" ], + "codelist": "contractStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", @@ -746,9 +748,7 @@ "terminatedEarly", "terminatedSuccessfully", null - ], - "codelist": "contractStatus.csv", - "openCodelist": false + ] }, "statusDetails": { "title": "Status details", @@ -787,10 +787,10 @@ "description": "The goods, services, and any intangible outcomes in this contract. If the items contracted are identical to the items awarded, this field should be omitted.", "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "period": { "title": "Period", @@ -801,10 +801,10 @@ "title": "Documents", "description": "Documents related to the contract (for example, notices, signed contracts).", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } }, "implementation": { "title": "Implementation", @@ -812,13 +812,13 @@ "$ref": "#/definitions/Implementation" }, "relatedProcesses": { + "title": "Related processes", + "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", + "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/RelatedProcess" - }, - "description": "The details of related processes: for example, if this process is followed by one or more contracting processes, represented under a separate ocid. This is commonly used to refer to subcontracts and to renewal or replacement processes for this contract.", - "title": "Related processes", - "type": "array" + } }, "milestones": { "title": "Contract milestones", @@ -829,9 +829,9 @@ } }, "amendments": { + "title": "Amendments", "description": "A contract amendment is a formal change to, or extension of, a contract, and generally involves the publication of a new contract notice/release, or some other documents detailing the change. The rationale and a description of the changes made can be provided here.", "type": "array", - "title": "Amendments", "items": { "$ref": "#/definitions/Amendment" } @@ -839,11 +839,11 @@ "amendment": { "title": "Amendment", "description": "The use of individual amendment objects has been deprecated. From OCDS 1.1 information should be provided in the amendments array.", - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -862,36 +862,36 @@ } }, "Implementation": { - "type": "object", "title": "Implementation", "description": "Information during the performance / implementation stage of the contract.", + "type": "object", "properties": { "transactions": { "title": "Transactions", "description": "A list of the spending transactions made against this contract", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Transaction" - }, - "uniqueItems": true + } }, "milestones": { "title": "Milestones", "description": "As milestones are completed, the milestone's status and dates should be updated.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Milestone" - }, - "uniqueItems": true + } }, "documents": { "title": "Documents", "description": "Documents related to the implementation of the contract (for example, completion certificates, audits).", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } } } }, @@ -956,13 +956,13 @@ "format": "date-time" }, "dateMet": { - "format": "date-time", "title": "Date met", "description": "The date on which the milestone was met.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "dateModified": { "title": "Date modified", @@ -980,28 +980,28 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "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." }, + "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -1020,9 +1020,9 @@ } }, "Document": { - "type": "object", "title": "Document", "description": "Links to, or descriptions of, external documents can be attached at various locations within the standard. Documents can be supporting information, formal notices, downloadable forms, or any other kind of resource that ought to be made public as part of full open contracting.", + "type": "object", "required": [ "id" ], @@ -1126,9 +1126,9 @@ } }, "Budget": { - "type": "object", "title": "Budget information", "description": "This section contains basic information about the budget estimated for, or allocated to, this contracting process at the present time. Further documentation and data about how budgets have been allocated to a contracting process should be published outside of OCDS data, according to the best available standards.", + "type": "object", "properties": { "id": { "title": "ID", @@ -1181,14 +1181,14 @@ "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." }, + "type": [ + "string", + "null" + ], "format": "uri" } }, @@ -1214,9 +1214,9 @@ } }, "Transaction": { - "type": "object", "title": "Transaction information", "description": "A spending transaction related to the contracting process. Draws upon the data models of the [Fiscal Data Package](https://frictionlessdata.io/specs/fiscal-data-package/) and the [International Aid Transparency Initiative](https://iatistandard.org/en/iati-standard/203/activity-standard/iati-activities/iati-activity/transaction/) and should be used to cross-reference to more detailed information held using a Fiscal Data Package, IATI file, or to provide enough information to allow a user to manually or automatically cross-reference with some other published source of transactional spending data.", + "type": "object", "required": [ "id" ], @@ -1249,19 +1249,19 @@ "format": "date-time" }, "value": { - "$ref": "#/definitions/Value", "title": "Value", - "description": "The value of the transaction." + "description": "The value of the transaction.", + "$ref": "#/definitions/Value" }, "payer": { - "$ref": "#/definitions/OrganizationReference", "title": "Payer", - "description": "An organization reference for the organization from which the funds in this transaction originate." + "description": "An organization reference for the organization from which the funds in this transaction originate.", + "$ref": "#/definitions/OrganizationReference" }, "payee": { - "$ref": "#/definitions/OrganizationReference", "title": "Payee", - "description": "An organization reference for the organization which receives the funds in this transaction." + "description": "An organization reference for the organization which receives the funds in this transaction.", + "$ref": "#/definitions/OrganizationReference" }, "uri": { "title": "Linked spending information", @@ -1275,50 +1275,53 @@ "amount": { "title": "Amount", "description": "(Deprecated in 1.1. Use transaction.value instead) The value of the transaction. A negative value indicates a refund or correction.", - "$ref": "#/definitions/Value", "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, + "$ref": "#/definitions/Value" }, "providerOrganization": { "title": "Provider organization", "description": "(Deprecated in 1.1. Use transaction.payer instead.) The Organization Identifier for the organization from which the funds in this transaction originate. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", - "$ref": "#/definitions/Identifier", "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, + "$ref": "#/definitions/Identifier" }, "receiverOrganization": { "title": "Receiver organization", "description": "(Deprecated in 1.1. Use transaction.payee instead). The Organization Identifier for the organization which receives the funds in this transaction. Expressed following the Organizational Identifier standard - consult the documentation and the codelist.", - "$ref": "#/definitions/Identifier", "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, + "$ref": "#/definitions/Identifier" } } }, "OrganizationReference": { + "title": "Organization reference", + "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", + "type": "object", "properties": { "name": { + "title": "Organization name", + "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", "type": [ "string", "null" ], - "description": "The name of the party being referenced. This must match the name of an entry in the parties section.", - "title": "Organization name", "minLength": 1 }, "id": { + "title": "Organization ID", + "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", "type": [ "string", "integer" - ], - "description": "The id of the party being referenced. This must match the id of an entry in the parties section. Although an integer is allowed, it is recommended to use a string.", - "title": "Organization ID" + ] }, "identifier": { "title": "Primary identifier", @@ -1330,41 +1333,38 @@ "$ref": "#/definitions/Identifier" }, "address": { + "title": "Address", + "description": "(Deprecated outside the parties section)", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and address information should only be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, - "$ref": "#/definitions/Address", - "description": "(Deprecated outside the parties section)", - "title": "Address" + "$ref": "#/definitions/Address" }, "additionalIdentifiers": { - "type": "array", + "title": "Additional identifiers", + "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Identifier" }, - "title": "Additional identifiers", - "uniqueItems": true, - "wholeListMerge": true, - "description": "(Deprecated outside the parties section) A list of additional / supplemental identifiers for the organization, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier." + "wholeListMerge": true }, "contactPoint": { + "title": "Contact point", + "description": "(Deprecated outside the parties section)", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and contact point information for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, - "$ref": "#/definitions/ContactPoint", - "description": "(Deprecated outside the parties section)", - "title": "Contact point" + "$ref": "#/definitions/ContactPoint" } - }, - "type": "object", - "description": "The id and name of the party being referenced. Used to cross-reference to the parties section", - "title": "Organization reference" + } }, "Organization": { "title": "Organization", @@ -1380,9 +1380,9 @@ ] }, "id": { - "type": "string", + "title": "Entity ID", "description": "The ID used for cross-referencing to this party from other sections of the release. This field need only be unique within the scope of the contracting process, but should be built with the following structure {identifier.scheme}-{identifier.id}(-{department-identifier}) where an organization identifier is available.", - "title": "Entity ID" + "type": "string" }, "identifier": { "title": "Primary identifier", @@ -1393,10 +1393,10 @@ "title": "Additional identifiers", "description": "A list of additional / supplemental identifiers for the organization or participant, using the [organization identifier guidance](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/identifiers/). This can be used to provide an internally used identifier for this organization in addition to the primary legal entity identifier.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Identifier" }, - "uniqueItems": true, "wholeListMerge": true }, "address": { @@ -1423,12 +1423,12 @@ "openCodelist": true }, "details": { + "title": "Details", + "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", "type": [ "object", "null" - ], - "description": "Additional classification information about parties can be provided using partyDetail extensions that define particular fields and classification schemes.", - "title": "Details" + ] } }, "patternProperties": { @@ -1442,8 +1442,8 @@ }, "Item": { "title": "Item", - "type": "object", "description": "A good, service, or work to be contracted.", + "type": "object", "required": [ "id" ], @@ -1474,10 +1474,10 @@ "title": "Additional classifications", "description": "An array of additional classifications for the item.", "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Classification" }, - "uniqueItems": true, "wholeListMerge": true }, "quantity": { @@ -1505,8 +1505,8 @@ }, "Amendment": { "title": "Amendment", - "type": "object", "description": "Amendment information", + "type": "object", "properties": { "date": { "title": "Amendment date", @@ -1526,40 +1526,44 @@ ] }, "id": { + "title": "ID", "description": "An identifier for this amendment: often the amendment number", "type": [ "string", "null" - ], - "title": "ID" + ] }, "description": { + "title": "Description", "description": "A free text, or semi-structured, description of the changes made in this amendment.", "type": [ "string", "null" - ], - "title": "Description" + ] }, "amendsReleaseID": { + "title": "Amended release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **before** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amended release (identifier)" + ] }, "releaseID": { + "title": "Amending release (identifier)", "description": "Provide the identifier (release.id) of the OCDS release (from this contracting process) that provides the values for this contracting process **after** the amendment was made.", "type": [ "string", "null" - ], - "title": "Amending release (identifier)" + ] }, "changes": { "title": "Amended fields", "description": "An array of change objects describing the fields changed, and their former values. (Deprecated in 1.1)", + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -1582,10 +1586,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -1705,43 +1705,43 @@ "properties": { "streetAddress": { "title": "Street address", + "description": "The street address. For example, 1600 Amphitheatre Pkwy.", "type": [ "string", "null" - ], - "description": "The street address. For example, 1600 Amphitheatre Pkwy." + ] }, "locality": { "title": "Locality", + "description": "The locality. For example, Mountain View.", "type": [ "string", "null" - ], - "description": "The locality. For example, Mountain View." + ] }, "region": { "title": "Region", + "description": "The region. For example, CA.", "type": [ "string", "null" - ], - "description": "The region. For example, CA." + ] }, "postalCode": { "title": "Postal code", + "description": "The postal code. For example, 94043.", "type": [ "string", "null" - ], - "description": "The postal code. For example, 94043." + ] }, "countryName": { "title": "Country name", + "description": "The country name. For example, United States.", "type": [ "string", "null" - ], - "description": "The country name. For example, United States." + ] } }, "patternProperties": { @@ -1755,48 +1755,48 @@ }, "ContactPoint": { "title": "Contact point", - "type": "object", "description": "A person, contact point or department to contact in relation to this contracting process.", + "type": "object", "properties": { "name": { "title": "Name", + "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process.", "type": [ "string", "null" - ], - "description": "The name of the contact person, department, or contact point, for correspondence relating to this contracting process." + ] }, "email": { "title": "Email", + "description": "The e-mail address of the contact point/person.", "type": [ "string", "null" - ], - "description": "The e-mail address of the contact point/person." + ] }, "telephone": { "title": "Telephone", + "description": "The telephone number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The telephone number of the contact point/person. This should include the international dialing code." + ] }, "faxNumber": { "title": "Fax number", + "description": "The fax number of the contact point/person. This should include the international dialing code.", "type": [ "string", "null" - ], - "description": "The fax number of the contact point/person. This should include the international dialing code." + ] }, "url": { "title": "URL", + "description": "A web address for the contact point/person.", "type": [ "string", "null" ], - "description": "A web address for the contact point/person.", "format": "uri" } }, @@ -2163,17 +2163,17 @@ "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", + "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.", "type": [ "string", "null" - ] + ], + "format": "date-time" }, "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)", + "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.", "type": [ "integer", "null" @@ -2207,9 +2207,9 @@ } }, "RelatedProcess": { + "title": "Related Process", "description": "A reference to a related contracting process: generally one preceding or following on from the current process.", "type": "object", - "title": "Related Process", "properties": { "id": { "title": "Relationship ID", @@ -2217,21 +2217,21 @@ "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", + "description": "The type of relationship, using the open [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process) codelist.", "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, "title": { - "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "title": "Related process title", + "description": "The title of the related process, where referencing an open contracting process, this field should match the tender/title field in the related process.", "type": [ "string", "null" @@ -2248,21 +2248,21 @@ "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", + "description": "The identifier of the related process. If the scheme is 'ocid', this must be an open contracting process identifier (ocid).", "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", + "description": "A URI pointing to a machine-readable document, release or record package containing the identified related process.", "type": [ "string", "null" - ] + ], + "format": "uri" } } }, @@ -2305,11 +2305,11 @@ "uri": { "title": "URI", "description": "The machine-readable URI for the unit of measure, provided by the scheme.", - "format": "uri", "type": [ "string", "null" - ] + ], + "format": "uri" }, "weight": { "title": "Weight", diff --git a/schema/versioned-release-validation-schema.json b/schema/versioned-release-validation-schema.json index 0fdb6f90f..e3cc3cf8a 100644 --- a/schema/versioned-release-validation-schema.json +++ b/schema/versioned-release-validation-schema.json @@ -22,11 +22,11 @@ }, "value": { "type": "string", + "codelist": "initiationType.csv", + "openCodelist": false, "enum": [ "tender" - ], - "codelist": "initiationType.csv", - "openCodelist": false + ] }, "releaseTag": { "type": "array", @@ -39,10 +39,10 @@ }, "parties": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Organization" - }, - "uniqueItems": true + } }, "buyer": { "$ref": "#/definitions/OrganizationReferenceVersionedId" @@ -55,17 +55,17 @@ }, "awards": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Award" - }, - "uniqueItems": true + } }, "contracts": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Contract" - }, - "uniqueItems": true + } }, "language": { "type": "array", @@ -97,11 +97,11 @@ } }, "relatedProcesses": { + "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/RelatedProcess" - }, - "type": "array" + } }, "ocid": { "type": "string", @@ -234,10 +234,10 @@ }, "items": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "value": { "$ref": "#/definitions/Value" @@ -402,6 +402,10 @@ "type": "string" }, "value": { + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes." + }, "type": [ "array", "null" @@ -410,11 +414,7 @@ "type": "string" }, "codelist": "submissionMethod.csv", - "openCodelist": true, - "deprecated": { - "description": "This field is deprecated, because all codes from the submissionMethod codelist are deprecated. Refer to the Deprecation note of individual codes.", - "deprecatedVersion": "1.2" - } + "openCodelist": true }, "releaseTag": { "type": "array", @@ -477,14 +477,14 @@ "type": "string" }, "value": { + "deprecated": { + "deprecatedVersion": "1.2", + "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds." + }, "type": [ "string", "null" - ], - "deprecated": { - "description": "This field had unclear semantics and used ambiguous terms, and is deprecated in favor of exclusionGrounds.", - "deprecatedVersion": "1.2" - } + ] }, "releaseTag": { "type": "array", @@ -536,10 +536,10 @@ }, "tenderers": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/OrganizationReference" - }, - "uniqueItems": true + } }, "documents": { "type": "array", @@ -560,11 +560,11 @@ } }, "amendment": { - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -648,15 +648,15 @@ "string", "null" ], + "codelist": "awardStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", "cancelled", "unsuccessful", null - ], - "codelist": "awardStatus.csv", - "openCodelist": false + ] }, "releaseTag": { "type": "array", @@ -684,28 +684,28 @@ }, "suppliers": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/OrganizationReference" - }, - "uniqueItems": true + } }, "items": { "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "contractPeriod": { "$ref": "#/definitions/Period" }, "documents": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } }, "amendments": { "type": "array", @@ -714,11 +714,11 @@ } }, "amendment": { - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -801,6 +801,8 @@ "string", "null" ], + "codelist": "contractStatus.csv", + "openCodelist": false, "enum": [ "pending", "active", @@ -809,9 +811,7 @@ "terminatedEarly", "terminatedSuccessfully", null - ], - "codelist": "contractStatus.csv", - "openCodelist": false + ] }, "releaseTag": { "type": "array", @@ -840,30 +840,30 @@ "items": { "type": "array", "minItems": 1, + "uniqueItems": true, "items": { "$ref": "#/definitions/Item" - }, - "uniqueItems": true + } }, "period": { "$ref": "#/definitions/Period" }, "documents": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } }, "implementation": { "$ref": "#/definitions/Implementation" }, "relatedProcesses": { + "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/RelatedProcess" - }, - "type": "array" + } }, "milestones": { "type": "array", @@ -878,11 +878,11 @@ } }, "amendment": { - "$ref": "#/definitions/Amendment", "deprecated": { - "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "The single amendment object has been deprecated in favour of including amendments in an amendments (plural) array." + }, + "$ref": "#/definitions/Amendment" } }, "patternProperties": { @@ -905,24 +905,24 @@ "properties": { "transactions": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Transaction" - }, - "uniqueItems": true + } }, "milestones": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Milestone" - }, - "uniqueItems": true + } }, "documents": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } } } }, @@ -1003,15 +1003,15 @@ "string", "null" ], + "codelist": "milestoneStatus.csv", + "openCodelist": false, "enum": [ "scheduled", "met", "notMet", "partiallyMet", null - ], - "codelist": "milestoneStatus.csv", - "openCodelist": false + ] }, "releaseTag": { "type": "array", @@ -1023,15 +1023,15 @@ } }, "documents": { - "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." }, + "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/Document" - }, - "uniqueItems": true + } } }, "patternProperties": { @@ -1264,14 +1264,14 @@ "type": "string" }, "value": { - "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." }, + "type": [ + "string", + "null" + ], "format": "uri" }, "releaseTag": { @@ -1337,29 +1337,30 @@ "$ref": "#/definitions/StringNullUriVersioned" }, "amount": { - "$ref": "#/definitions/Value", "deprecated": { - "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.value` field for consistency with the use of value and amount elsewhere in the standard." + }, + "$ref": "#/definitions/Value" }, "providerOrganization": { - "$ref": "#/definitions/Identifier", "deprecated": { - "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payer` field to resolve ambiguity arising from 'provider' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, + "$ref": "#/definitions/Identifier" }, "receiverOrganization": { - "$ref": "#/definitions/Identifier", "deprecated": { - "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties.", - "deprecatedVersion": "1.1" - } + "deprecatedVersion": "1.1", + "description": "This field has been replaced by the `transaction.payee` field to resolve ambiguity arising from 'receiver' being interpreted as relating to the goods or services procured rather than the flow of funds between the parties." + }, + "$ref": "#/definitions/Identifier" } } }, "OrganizationReference": { + "type": "object", "properties": { "name": { "type": "array", @@ -1422,15 +1423,15 @@ "type": "string" }, "value": { - "type": "array", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/IdentifierUnversioned" - }, - "uniqueItems": true + } }, "releaseTag": { "type": "array", @@ -1448,8 +1449,7 @@ }, "$ref": "#/definitions/ContactPoint" } - }, - "type": "object" + } }, "Organization": { "type": "object", @@ -1477,10 +1477,10 @@ }, "value": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/IdentifierUnversioned" - }, - "uniqueItems": true + } }, "releaseTag": { "type": "array", @@ -1599,10 +1599,10 @@ }, "value": { "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/ClassificationUnversioned" - }, - "uniqueItems": true + } }, "releaseTag": { "type": "array", @@ -1678,6 +1678,10 @@ "$ref": "#/definitions/StringNullVersioned" }, "changes": { + "deprecated": { + "deprecatedVersion": "1.1", + "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. " + }, "type": "array", "items": { "type": "object", @@ -1696,10 +1700,6 @@ ] } } - }, - "deprecated": { - "description": "A free-text or semi-structured string describing the changes made in each amendment can be provided in the amendment.description field. To provide structured information on the fields that have changed, publishers should provide releases indicating the state of the contracting process before and after the amendment. ", - "deprecatedVersion": "1.1" } } }, @@ -2357,13 +2357,13 @@ "type": "string" }, "value": { - "items": { - "type": "string" - }, "type": [ "array", "null" ], + "items": { + "type": "string" + }, "codelist": "relatedProcess.csv", "openCodelist": true }, @@ -2684,6 +2684,7 @@ } }, "OrganizationReferenceVersionedId": { + "type": "object", "properties": { "name": { "type": "array", @@ -2767,15 +2768,15 @@ "type": "string" }, "value": { - "type": "array", "deprecated": { "deprecatedVersion": "1.1", "description": "From version 1.1, organizations should be referenced by their identifier and name in a document, and additional identifiers for an organization should be provided in the relevant cross-referenced entry in the parties section at the top level of a release." }, + "type": "array", + "uniqueItems": true, "items": { "$ref": "#/definitions/IdentifierUnversioned" - }, - "uniqueItems": true + } }, "releaseTag": { "type": "array", @@ -2793,8 +2794,7 @@ }, "$ref": "#/definitions/ContactPoint" } - }, - "type": "object" + } }, "ClassificationUnversioned": { "type": "object", diff --git a/tests/test_schema_integrity.py b/tests/test_schema_integrity.py index d0111fa7f..1e7b5ab1d 100644 --- a/tests/test_schema_integrity.py +++ b/tests/test_schema_integrity.py @@ -5,12 +5,24 @@ import json import os.path import sys +from collections import OrderedDict import jsonref sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) -from manage import get_dereferenced_release_schema, get_metaschema, get_versioned_release_schema # noqa isort:skip +from manage import (get_dereferenced_release_schema, get_metaschema, get_versioned_release_schema, + sort_keywords) # noqa isort:skip + +message = 'Run: python manage.py pre-commit' + +def test_release_schema_is_ordered(): + with open('schema/release-schema.json') as f: + actual = json.load(f, object_pairs_hook=OrderedDict) + + expected = sort_keywords(actual) + + assert actual == expected, message def test_versioned_release_schema_is_in_sync(): @@ -20,7 +32,7 @@ def test_versioned_release_schema_is_in_sync(): with open('schema/release-schema.json') as f: expected = get_versioned_release_schema(json.load(f)) - assert actual == expected, 'Run: python manage.py pre-commit' + assert actual == expected, message def test_dereferenced_release_schema_is_in_sync(): @@ -28,13 +40,13 @@ def test_dereferenced_release_schema_is_in_sync(): actual = json.load(f) with open('schema/release-schema.json') as f: - expected = get_dereferenced_release_schema(jsonref.load(f)) + expected = sort_keywords(get_dereferenced_release_schema(jsonref.load(f, object_pairs_hook=OrderedDict))) - assert actual == expected, 'Run: python manage.py pre-commit' + assert actual == expected, message def test_meta_schema_is_in_sync(): with open('schema/meta-schema.json') as f: actual = json.load(f) - assert actual == get_metaschema(), 'Run: python manage.py pre-commit' + assert actual == get_metaschema(), message