Files
go-ocds/profiles/uk/ocds_gen.go
T

1982 lines
103 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Code generated by ocdsgen from extensions.json. DO NOT EDIT.
// Package uk contains Go types for OCDS releases with these extensions applied
// (dependencies first, in the order their patches were merged):
//
// - OCDS for the European Union (declared)
// https://standard.open-contracting.org/profiles/eu/latest/en/extension.json
// - Award criteria breakdown (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_awardCriteria_extension/master/extension.json
// - Bid statistics and details (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_bid_extension/v1.1.5/extension.json
// - Communication (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_communication_extension/master/extension.json
// - Location (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_location_extension/master/extension.json
// - Other Requirements (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_otherRequirements_extension/master/extension.json
// - Performance Failures (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_performance_failures_extension/master/extension.json
// - Subcontracting (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_subcontracting_extension/master/extension.json
// - Suitability (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_suitability_extension/master/extension.json
// - Techniques (dependency)
// https://raw.githubusercontent.com/open-contracting-extensions/ocds_techniques_extension/master/extension.json
// - United Kingdom (declared)
// https://raw.githubusercontent.com/cabinetoffice/ocds_uk_extension/main/extension.json
package uk
import (
"encoding/json"
"fmt"
"time"
)
// DeclaredExtensions are the extension URLs to list in ReleasePackage.Extensions.
var DeclaredExtensions = []string{
"https://standard.open-contracting.org/profiles/eu/latest/en/extension.json",
"https://raw.githubusercontent.com/cabinetoffice/ocds_uk_extension/main/extension.json",
}
// ReleasePackage: The release package contains a list of releases along with some publishing
// metadata.
type ReleasePackage struct {
// The URI of this package that identifies it uniquely in the world.
URI string `json:"uri"`
// The version of the OCDS schema used in this package, expressed as major.minor For example:
// 1.0 or 1.1
Version string `json:"version"`
// An array of OCDS extensions used in this package, in which each array item is the URL of an
// extension.json file.
Extensions []string `json:"extensions,omitempty"`
// The date that this package was published.
PublishedDate time.Time `json:"publishedDate"`
// An array of one or more OCDS releases.
Releases []Release `json:"releases"`
// Information to uniquely identify the publisher of this package.
Publisher *ReleasePackagePublisher `json:"publisher"`
// A link to the license that applies to the data in this package.
License string `json:"license,omitempty"`
// A link to a document describing the publishers [publication
// policy](https://standard.open-contracting.org/{{version}}/{{lang}}/guidance/publish/#finalize-your-publication-policy).
PublicationPolicy string `json:"publicationPolicy,omitempty"`
}
// ReleasePackagePublisher: Information to uniquely identify the publisher of this package.
type ReleasePackagePublisher struct {
// The name of the organization or department responsible for publishing this data.
Name string `json:"name"`
// The scheme that holds the unique identifiers used to identify the item being identified.
Scheme string `json:"scheme,omitempty"`
// The unique ID for this entity under the given ID scheme.
Uid string `json:"uid,omitempty"`
// A URI to identify the publisher.
URI string `json:"uri,omitempty"`
}
// Release: Each release provides data about a single contracting process at a particular
// point in time.
type Release struct {
// A globally unique identifier for this Open Contracting Process.
OCID string `json:"ocid"`
// An identifier for this particular release of information.
ID string `json:"id"`
// The date on which the information contained in the release was first recorded in, or
// published by, any system.
Date time.Time `json:"date"`
// One or more values from the closed
// [releaseTag](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#release-tag)
// codelist. Codelist: releaseTag.csv (closed).
Tag []string `json:"tag"`
// 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. Codelist: initiationType.csv (closed).
InitiationType string `json:"initiationType"`
// Information on the parties (organizations, economic operators and other participants) who
// are involved in the contracting process and their roles, e.g.
Parties []Organization `json:"parties,omitempty"`
// A buyer is an entity whose budget will be used to pay for goods, works or services related
// to a contract.
Buyer *OrganizationReference `json:"buyer,omitempty"`
// Information from the planning phase of the contracting process.
Planning *Planning `json:"planning,omitempty"`
// The activities undertaken in order to enter into a contract.
Tender *Tender `json:"tender,omitempty"`
// Information from the award phase of the contracting process.
Awards []Award `json:"awards,omitempty"`
// Information from the contract creation phase of the procurement process.
Contracts []Contract `json:"contracts,omitempty"`
// The default language of the data using either two-letter
// [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or extended [BCP47
// language tags](https://www.w3.org/International/articles/language-tags/).
Language string `json:"language,omitempty"`
// The details of related processes: for example, if this process follows on from one or more
// other processes, represented under a separate open contracting identifier (ocid).
RelatedProcesses []RelatedProcess `json:"relatedProcesses,omitempty"`
// The bid section is used to publish summary statistics, and where applicable, individual bid
// information.
Bids *Bids `json:"bids,omitempty"`
// A overall title for this contracting process or release.
Title string `json:"title,omitempty"`
// An overall description of this contracting process or release.
Description string `json:"description,omitempty"`
}
// Address: An address.
type Address struct {
// The street address.
StreetAddress string `json:"streetAddress,omitempty"`
// The locality.
Locality string `json:"locality,omitempty"`
// The region.
Region string `json:"region,omitempty"`
// The postal code.
PostalCode string `json:"postalCode,omitempty"`
// The country name.
CountryName string `json:"countryName,omitempty"`
// The country, from the closed country codelist. Codelist: country.csv (closed).
Country string `json:"country,omitempty"`
// The description of the address.
Description string `json:"description,omitempty"`
}
// Amendment: Amendment information
type Amendment struct {
// The date of this amendment.
Date *time.Time `json:"date,omitempty"`
// An explanation for the amendment.
Rationale string `json:"rationale,omitempty"`
// An identifier for this amendment: often the amendment number
ID string `json:"id,omitempty"`
// A free text, or semi-structured, description of the changes made in this amendment.
Description string `json:"description,omitempty"`
// 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.
AmendsReleaseID string `json:"amendsReleaseID,omitempty"`
// 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.
ReleaseID string `json:"releaseID,omitempty"`
// An array of change objects describing the fields changed, and their former values.
// Deprecated: since OCDS 1.1. A free-text or semi-structured string describing the changes
// made in each amendment can be provided in the amendment.description field.
Changes []AmendmentChanges `json:"changes,omitempty"`
// The identifiers of the lots to which this amendment relates.
RelatedLots []string `json:"relatedLots,omitempty"`
// Unstructured or semi-structured changes to an earlier notice.
UnstructuredChanges []UnstructuredChange `json:"unstructuredChanges,omitempty"`
// Whether the period between the publication of this notice and the estimated contract
// amendment date constitute a formal standstill period.
Standstill *bool `json:"standstill,omitempty"`
// The classifications of the rationale for amending the contract.
RationaleClassifications []Classification `json:"rationaleClassifications,omitempty"`
// The period for which the amended contract will be in force.
Period *Period `json:"period,omitempty"`
// Whether the buyer reserves the right to renew the contract.
HasRenewal *bool `json:"hasRenewal,omitempty"`
// The total value of the amended contract.
Value *Value `json:"value,omitempty"`
// Whether the amended contract value is above the relevant threshold.
AboveThreshold *bool `json:"aboveThreshold,omitempty"`
// The suppliers that will be added to the amended contract when it is signed.
SuppliersAdded []OrganizationReference `json:"suppliersAdded,omitempty"`
// The suppliers that will be removed from the amended contract when it is signed.
SuppliersRemoved []OrganizationReference `json:"suppliersRemoved,omitempty"`
}
type AmendmentChanges struct {
// The property name that has been changed relative to the place the amendment is.
Property string `json:"property,omitempty"`
// The previous value of the changed property, in whatever type the property is.
FormerValue json.RawMessage `json:"former_value,omitempty"`
}
// Award: An award for the given procurement.
type Award struct {
// The identifier for this award.
ID ID `json:"id"`
// Award title
Title string `json:"title,omitempty"`
// Award description
Description string `json:"description,omitempty"`
// The current status of the award, from the closed
// [awardStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#award-status)
// codelist. Codelist: awardStatus.csv (closed).
Status string `json:"status,omitempty"`
// The date of the contract award.
Date *time.Time `json:"date,omitempty"`
// The total value of this award.
Value *Value `json:"value,omitempty"`
// The suppliers awarded this award.
Suppliers []OrganizationReference `json:"suppliers,omitempty"`
// The goods and services awarded in this award, broken into line items wherever possible.
Items []Item `json:"items,omitempty"`
// The period for which the contract has been awarded.
ContractPeriod *Period `json:"contractPeriod,omitempty"`
// All documents and attachments related to the award, including any notices.
Documents []Document `json:"documents,omitempty"`
// An award amendment is a formal change to the details of the award, and generally involves
// the publication of a new award notice/release.
Amendments []Amendment `json:"amendments,omitempty"`
// The use of individual amendment objects has been deprecated.
// Deprecated: since OCDS 1.1. The single amendment object has been deprecated in favour of
// including amendments in an amendments (plural) array.
Amendment *Amendment `json:"amendment,omitempty"`
// Where bid details are used, a cross reference to the entry in the bids array to which this
// award relates.
RelatedBid string `json:"relatedBid,omitempty"`
// Any details relevant to the value of the concession according to article 8(3) of Directive
// 2014/23/EU on concession contracts.
ValueCalculationMethod string `json:"valueCalculationMethod,omitempty"`
// The identifiers of the lots to which this award relates.
RelatedLots []string `json:"relatedLots,omitempty"`
// Any target metrics set out as part of the contract award.
AgreedMetrics []Metric `json:"agreedMetrics,omitempty"`
// A description of the options.
Options *Options `json:"options,omitempty"`
// Whether the buyer is expected to reserve the right to make additional purchases from the
// supplier.
HasOptions *bool `json:"hasOptions,omitempty"`
// Whether the buyer is expected to reserve the right to renew the future contract(s).
HasRenewal *bool `json:"hasRenewal,omitempty"`
// The options for the renewal of the contract(s).
Renewal *Renewal `json:"renewal,omitempty"`
// Additional detail on the status of the award.
StatusDetails string `json:"statusDetails,omitempty"`
// Whether a part of the contract will be subcontracted.
HasSubcontracting *bool `json:"hasSubcontracting,omitempty"`
// Information about the parts of the contract that the supplier will subcontract to third
// parties.
Subcontracting *Subcontracting `json:"subcontracting,omitempty"`
// The period before the contract signature during which the award decision can be challenged.
StandstillPeriod *Period `json:"standstillPeriod,omitempty"`
// The date on which the award reached its final status.
FinalStatusDate *time.Time `json:"finalStatusDate,omitempty"`
// The date on which assessment summaries were sent to tenderers.
AssessmentSummariesDateSent *time.Time `json:"assessmentSummariesDateSent,omitempty"`
// Whether the award value is above the relevant threshold.
AboveThreshold *bool `json:"aboveThreshold,omitempty"`
// The primary category describing the main object of this award, from the closed
// [procurementCategory](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#procurement-category)
// codelist. Codelist: procurementCategory.csv (closed).
MainProcurementCategory string `json:"mainProcurementCategory,omitempty"`
// Any additional categories describing the objects of this award, using the open
// [extendedProcurementCategory](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#extended-procurement-category)
// codelist. Codelist: extendedProcurementCategory.csv (open).
AdditionalProcurementCategories []string `json:"additionalProcurementCategories,omitempty"`
}
// AwardCriteria: Information about the award criteria.
type AwardCriteria struct {
// When the weighting cannot be expressed per criterion, the mathematical equation (or other
// description) that expresses the complicated (e.g.
WeightingDescription string `json:"weightingDescription,omitempty"`
// The justification for only indicating the award criteria's order of importance, not their
// weighting.
OrderRationale string `json:"orderRationale,omitempty"`
// The award criteria.
Criteria []AwardCriterion `json:"criteria,omitempty"`
// An overall description of all award criteria.
Description string `json:"description,omitempty"`
}
// AwardCriterion: Information about the award criterion.
type AwardCriterion struct {
// The aspect of the bid that the criterion concerns. Codelist: awardCriterionType.csv (open).
Type string `json:"type,omitempty"`
// The name of the criterion.
Name string `json:"name,omitempty"`
// The description of the criterion.
Description string `json:"description,omitempty"`
// Numbers linked to the criterion.
Numbers []CriterionNumber `json:"numbers,omitempty"`
}
// Bid: For representing a bid in response to the tender or qualification stage in this
// contracting process.
type Bid struct {
// A local identifier for this bid
ID string `json:"id"`
// The date when this bid was received.
Date *time.Time `json:"date,omitempty"`
// The status of the bid. Codelist: bidStatus.csv (closed).
Status string `json:"status,omitempty"`
// The party, or parties, responsible for this bid.
Tenderers []OrganizationReference `json:"tenderers,omitempty"`
// The total value of the bid.
Value *Value `json:"value,omitempty"`
// All documents and attachments related to the bid and its evaluation.
Documents []Document `json:"documents,omitempty"`
// The measures applied under the Foreign Subsidies Regulation (EU) 2022/2560. Codelist:
// foreignSubsidyMeasures.csv (closed).
ForeignSubsidyMeasures string `json:"foreignSubsidyMeasures,omitempty"`
// Whether a part of the contract will be subcontracted to third parties.
HasSubcontracting *bool `json:"hasSubcontracting,omitempty"`
// Information about the parts of the contract that will be subcontracted to third parties.
Subcontracting *Subcontracting `json:"subcontracting,omitempty"`
}
// BidOpening: The date, time, place and other details of the public bid opening.
type BidOpening struct {
// The date and time of the bid opening.
Date *time.Time `json:"date,omitempty"`
// The place where the bid opening occurs.
Location *Location `json:"location,omitempty"`
// The address of the place where the bid opening occurs.
Address *Address `json:"address,omitempty"`
// Any other details about the bid opening (who can participate, whether authorization is
// needed, etc.).
Description string `json:"description,omitempty"`
}
// Bids: Summary and detailed information about bids received and evaluated as part of this
// contracting process.
type Bids struct {
// Summary statistics on the number and nature of bids received.
Statistics []BidsStatistic `json:"statistics,omitempty"`
// An array of bids, providing information on the bidders, and where applicable, bid status,
// bid values and related documents.
Details []Bid `json:"details,omitempty"`
}
// BidsStatistic: For reporting aggregate statistics about the bids related to a tender.
type BidsStatistic struct {
// An internal identifier for this statistic.
ID string `json:"id"`
// The statistic reported in the value. Codelist: bidStatistics.csv (open).
Measure string `json:"measure"`
// The date when this statistic was last updated.
Date *time.Time `json:"date,omitempty"`
// The value for the measure in question.
Value *float64 `json:"value"`
// The currency of the amount in the `value` field, if the statistic has a monetary value.
// Codelist: currency.csv (closed).
Currency string `json:"currency,omitempty"`
// Any notes needed to understand or interpret the given statistic.
Notes string `json:"notes,omitempty"`
// Where lots are in use, if this statistic relates to bids on a particular lot, provide the
// lot identifier here.
RelatedLot string `json:"relatedLot,omitempty"`
}
// Budget: This section contains information about the budget line, and associated projects,
// through which this contracting process is funded.
type Budget struct {
// An identifier for the budget line item which provides funds for this contracting process.
ID ID `json:"id,omitempty"`
// A short free text description of the budget source.
Description string `json:"description,omitempty"`
// The value reserved in the budget for this contracting process.
Amount *Value `json:"amount,omitempty"`
// The name of the project through which this contracting process is funded (if applicable).
Project string `json:"project,omitempty"`
// An external identifier for the project that this contracting process forms part of, or is
// funded via (if applicable).
ProjectID ID `json:"projectID,omitempty"`
// A URI pointing directly to a machine-readable record about the budget line-item or
// line-items that fund this contracting process.
URI string `json:"uri,omitempty"`
// (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.
// Deprecated: since OCDS 1.1. 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.
Source string `json:"source,omitempty"`
// Information about financing arrangements for a future contracting process.
Finance []Finance `json:"finance,omitempty"`
}
// Charge: A charge to be incurred by users or government over the course of the contract.
type Charge struct {
// A local identifier for this specific charge.
ID string `json:"id"`
// A descriptive title for this charge.
Title string `json:"title,omitempty"`
// Is this a user charge (paid by businesses or citizens using the facilities provided by the
// contract), or a charge paid by the government? Codelist: chargePaidBy.csv (closed).
PaidBy string `json:"paidBy,omitempty"`
// The period to which this charge applies.
Period *Period `json:"period,omitempty"`
// What is the estimated total value to be raised from this charge during this period.
EstimatedValue *Value `json:"estimatedValue,omitempty"`
// In the implementation section, this field may be updated with the total revenue raised from
// this charge during this period.
ActualValue *Value `json:"actualValue,omitempty"`
// Any notes on this charge.
Notes string `json:"notes,omitempty"`
}
// Classification: 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.
type Classification struct {
// The scheme or codelist from which the classification code is taken. Codelist:
// itemClassificationScheme.csv (open).
Scheme string `json:"scheme,omitempty"`
// The classification code taken from the scheme.
ID ID `json:"id,omitempty"`
// A textual description or title for the classification code.
Description string `json:"description,omitempty"`
// A URI to uniquely identify the classification code.
URI string `json:"uri,omitempty"`
}
// Communication: Modalities of communication about key events.
type Communication struct {
// The name of the tools and devices that are not generally available and that are required to
// communicate electronically with the buyer.
AtypicalToolName string `json:"atypicalToolName,omitempty"`
// The URL of the tools and devices that are not generally available and that are required to
// communicate electronically with the buyer.
AtypicalToolURL string `json:"atypicalToolUrl,omitempty"`
// The buyer's preferred date of publication of the notice (e.g.
NoticePreferredPublicationDate *time.Time `json:"noticePreferredPublicationDate,omitempty"`
// The estimated date of publication of the next sequential notice.
FutureNoticeDate *time.Time `json:"futureNoticeDate,omitempty"`
// The estimated date of dispatch from the buyer to potential suppliers of the invitations to
// confirm interest.
InvitationToConfirmInterestDispatchDate *time.Time `json:"invitationToConfirmInterestDispatchDate,omitempty"`
// The period during which documents can be accessed, or during which requests for access to
// documents can be submitted.
DocumentAvailabilityPeriod *Period `json:"documentAvailabilityPeriod,omitempty"`
// Who the next sequential notice will be provided to, if not published.
FutureNoticeRecipients string `json:"futureNoticeRecipients,omitempty"`
}
// ContactPoint: A person, contact point or department to contact in relation to this
// contracting process.
type ContactPoint struct {
// The name of the contact person, department, or contact point, for correspondence relating
// to this contracting process.
Name string `json:"name,omitempty"`
// The e-mail address of the contact point/person.
Email string `json:"email,omitempty"`
// The telephone number of the contact point/person.
Telephone string `json:"telephone,omitempty"`
// The fax number of the contact point/person.
FaxNumber string `json:"faxNumber,omitempty"`
// A web address for the contact point/person.
URL string `json:"url,omitempty"`
// The languages the contact point operates in, using either two-letter
// [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or extended [BCP47
// language tags](http://www.w3.org/International/articles/language-tags/).
AvailableLanguage []string `json:"availableLanguage,omitempty"`
// The address of the contact point.
Address *Address `json:"address,omitempty"`
}
// Contract: Information regarding the signed contract between the buyer and supplier(s).
type Contract struct {
// The identifier for this contract.
ID ID `json:"id"`
// The award.id against which this contract is being issued.
AwardID ID `json:"awardID"`
// Contract title
Title string `json:"title,omitempty"`
// Contract description
Description string `json:"description,omitempty"`
// The current status of the contract, from the closed
// [contractStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#contract-status)
// codelist. Codelist: contractStatus.csv (closed).
Status string `json:"status,omitempty"`
// The start and end date for the contract.
Period *Period `json:"period,omitempty"`
// The total value of this contract.
Value *Value `json:"value,omitempty"`
// The goods, services, and any intangible outcomes in this contract.
Items []Item `json:"items,omitempty"`
// The date the contract was signed.
DateSigned *time.Time `json:"dateSigned,omitempty"`
// All documents and attachments related to the contract, including any notices.
Documents []Document `json:"documents,omitempty"`
// Information related to the implementation of the contract in accordance with the
// obligations laid out therein.
Implementation *Implementation `json:"implementation,omitempty"`
// The details of related processes: for example, if this process is followed by one or more
// contracting processes, represented under a separate open contracting identifier (ocid).
RelatedProcesses []RelatedProcess `json:"relatedProcesses,omitempty"`
// A list of milestones associated with the finalization of this contract.
Milestones []Milestone `json:"milestones,omitempty"`
// 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.
Amendments []Amendment `json:"amendments,omitempty"`
// The use of individual amendment objects has been deprecated.
// Deprecated: since OCDS 1.1. The single amendment object has been deprecated in favour of
// including amendments in an amendments (plural) array.
Amendment *Amendment `json:"amendment,omitempty"`
// The rationale for the duration of the contract.
PeriodRationale string `json:"periodRationale,omitempty"`
// The number of kilometers of public passenger transport services provided by a public
// service contract.
PublicPassengerTransportServicesKilometers *float64 `json:"publicPassengerTransportServicesKilometers,omitempty"`
// Information about financing arrangements for this contract.
Finance []Finance `json:"finance,omitempty"`
// Any target metrics set out as part of the contract documents.
AgreedMetrics []Metric `json:"agreedMetrics,omitempty"`
// A description of the options.
Options *Options `json:"options,omitempty"`
// Whether the buyer reserves the right to make additional purchases from the supplier.
HasOptions *bool `json:"hasOptions,omitempty"`
// Whether the buyer reserves the right to renew the contract.
HasRenewal *bool `json:"hasRenewal,omitempty"`
// The options for the renewal of the contract.
Renewal *Renewal `json:"renewal,omitempty"`
// Additional detail on the status of the contract.
StatusDetails string `json:"statusDetails,omitempty"`
// Whether the contract value is above the relevant threshold.
AboveThreshold *bool `json:"aboveThreshold,omitempty"`
// The classifications of the rationales for terminating the contract.
TerminationRationaleClassifications []Classification `json:"terminationRationaleClassifications,omitempty"`
// (Deprecated.
TerminationRationaleClassification *Classification `json:"terminationRationaleClassification,omitempty"`
// The rationale for not publishing agreed metrics, in the UK known as key performance
// indicators.
NoAgreedMetricsRationale string `json:"noAgreedMetricsRationale,omitempty"`
// Amendments that have been proposed but at this point have not been signed.
ProposedAmendments []Amendment `json:"proposedAmendments,omitempty"`
}
// ContractTerms: Information about the terms governing the future contracts.
type ContractTerms struct {
// Whether electronic payment is used.
HasElectronicPayment *bool `json:"hasElectronicPayment,omitempty"`
// Whether electronic ordering is used.
HasElectronicOrdering *bool `json:"hasElectronicOrdering,omitempty"`
// Whether the buyer will require, allow or not allow electronic invoices. Codelist:
// permission.csv (closed).
ElectronicInvoicingPolicy string `json:"electronicInvoicingPolicy,omitempty"`
// Whether the execution of the contract is restricted to the framework of sheltered
// employment programmes.
ReservedExecution *bool `json:"reservedExecution,omitempty"`
// The main information about the performance of the contract (e.g.
PerformanceTerms string `json:"performanceTerms,omitempty"`
// The main information about financing and payment and/or reference to any provisions that
// govern them.
FinancialTerms string `json:"financialTerms,omitempty"`
// A certain legal form that must be taken by a group of tenderers that is awarded a contract.
TendererLegalForm string `json:"tendererLegalForm,omitempty"`
// A right entitling a public service operator to operate certain public passenger transport
// services on a particular route or network or in a particular area, to the exclusion of any
// other such operator.
HasExclusiveRights *bool `json:"hasExclusiveRights,omitempty"`
// The nature and extent of the exclusive rights granted by the procuring entity to the
// supplier.
ExclusiveRights string `json:"exclusiveRights,omitempty"`
// The proportion of revenue from the sale of tickets allocated to the supplier, expressed as
// a decimal between 0 and 1.
OperatorRevenueShare *float64 `json:"operatorRevenueShare,omitempty"`
// Other contract terms that do not fit the semantics of any other OCDS field.
OtherTerms string `json:"otherTerms,omitempty"`
// Information about rewards and penalties relating to quality targets.
RewardsAndPenalties string `json:"rewardsAndPenalties,omitempty"`
// The required social standards, for example: detail of the contractual rights of the staff
// concerned, and conditions under which employees are considered to be linked to the
// services.
SocialStandards string `json:"socialStandards,omitempty"`
// Whether contract execution requires a non-disclosure agreement.
HasNonDisclosureAgreement *bool `json:"hasNonDisclosureAgreement,omitempty"`
// A description of the non-disclosure agreement required for contract execution.
NonDisclosureAgreement string `json:"nonDisclosureAgreement,omitempty"`
// Information about customer service requirements.
CustomerServices []CustomerService `json:"customerServices,omitempty"`
}
// CriterionNumber: Information about a number linked to a criterion.
type CriterionNumber struct {
// The number.
Number *float64 `json:"number,omitempty"`
// Whether the number is a type of weight. Codelist: criterionWeight.csv (closed).
Weight string `json:"weight,omitempty"`
// Whether the number is a fixed value. Codelist: awardCriterionFixed.csv (closed).
Fixed string `json:"fixed,omitempty"`
// Whether the number is a type of threshold. Codelist: criterionThreshold.csv (closed).
Threshold string `json:"threshold,omitempty"`
}
// CustomerService: A customer service requirement.
type CustomerService struct {
// The type of this customer service requirement.
Type string `json:"type,omitempty"`
// A name for this customer service requirement.
Name string `json:"name,omitempty"`
// A description of this customer service requirement.
Description string `json:"description,omitempty"`
}
// DesignContest: Information about the organization of a design contest.
type DesignContest struct {
// The organizations that have already been selected to participate in the design contest.
SelectedParticipants []OrganizationReference `json:"selectedParticipants,omitempty"`
// Whether prizes will be awarded in the design contest.
HasPrizes *bool `json:"hasPrizes,omitempty"`
// Information about the prizes awarded in the design contest.
Prizes *Prizes `json:"prizes,omitempty"`
// The details and conditions of the payments to be made to the participants.
RewardsDetails string `json:"rewardsDetails,omitempty"`
// Whether any contracts following the design contest will be awarded to the winner or winners
// of the design contest.
FollowUpContracts *bool `json:"followUpContracts,omitempty"`
// Whether the jury’s decision is binding on the procuring entity.
BindingJuryDecision *bool `json:"bindingJuryDecision,omitempty"`
// The members of the jury.
JuryMembers []JuryMember `json:"juryMembers,omitempty"`
}
// Document: Links to, or descriptions of, external documents can be attached at various
// locations within the standard.
type Document struct {
// A local, unique identifier for this document.
ID ID `json:"id"`
// A classification of the document described, using the open
// [documentType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#document-type)
// codelist. Codelist: documentType.csv (open).
DocumentType string `json:"documentType,omitempty"`
// The document title.
Title string `json:"title,omitempty"`
// A short description of the document.
Description string `json:"description,omitempty"`
// A direct link to the document or attachment.
URL string `json:"url,omitempty"`
// The date on which the document was first published.
DatePublished *time.Time `json:"datePublished,omitempty"`
// Date that the document was last modified
DateModified *time.Time `json:"dateModified,omitempty"`
// The format of the document, using the open [IANA Media
// Types](https://www.iana.org/assignments/media-types/media-types.xhtml) codelist (see the
// values in the 'Template' column), or using the 'offline/print' code if the described
// document is published offline.
Format string `json:"format,omitempty"`
// The language of the linked document using either two-letter
// [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or extended [BCP47
// language tags](https://www.w3.org/International/articles/language-tags/).
Language string `json:"language,omitempty"`
// The identifiers of the lots to which this document relates.
RelatedLots []string `json:"relatedLots,omitempty"`
// The notice type published, more specific than the OCDS document type.
NoticeType string `json:"noticeType,omitempty"`
}
// DynamicPurchasingSystem: Information about the dynamic purchasing system.
type DynamicPurchasingSystem struct {
// In the case of central purchasing bodies, whether the dynamic purchasing system can be used
// by buyers not listed in the contracting process. Codelist: dynamicPurchasingSystemType.csv
// (closed).
Type string `json:"type,omitempty"`
// The status of the dynamic purchasing system. Codelist: dynamicPurchasingSystemStatus.csv
// (closed).
Status string `json:"status,omitempty"`
}
// ElectronicAuction: Information about the electronic auction.
type ElectronicAuction struct {
// The internet address of the electronic auction.
URL string `json:"url,omitempty"`
// Any additional information about the electronic auction.
Description string `json:"description,omitempty"`
}
// EssentialAsset: Information about the asset used for the provision of public services.
type EssentialAsset struct {
// Description of the essential asset.
Description string `json:"description,omitempty"`
// Estimated percentage share of the essential asset provided in relation to the overall asset
// needed for the provision of the public services.
Significance string `json:"significance,omitempty"`
// Estimated percentage share of asset provided compared to asset used for activities other
// than the public services.
Predominance string `json:"predominance,omitempty"`
}
type ExclusionGrounds struct {
// The sources in which the exclusion grounds are defined. Codelist: sources.csv (closed).
Sources []string `json:"sources,omitempty"`
}
// Finance: An arrangement between two parties for raising money.
type Finance struct {
// An identifier for this financing arrangement.
ID string `json:"id"`
// A short title for this financing arrangement.
Title string `json:"title,omitempty"`
// A short description of this financing arrangement.
Description string `json:"description,omitempty"`
// The total value of this finance.
Value *Value `json:"value,omitempty"`
// The organization providing this financing arrangement.
FinancingParty *OrganizationReference `json:"financingParty,omitempty"`
// The type of the financing organization, from the closed financingPartyType codelist.
// Codelist: financingPartyType.csv (closed).
FinancingPartyType string `json:"financingPartyType,omitempty"`
// The source of funds for this financing arrangement.
Source string `json:"source,omitempty"`
// The asset classes used in this financing arrangement, from the closed assetClass codelist.
// Codelist: assetClass.csv (closed).
AssetClass []string `json:"assetClass,omitempty"`
// The type of this financing arrangement, from the closed financingArrangementType codelist.
// Codelist: financingArrangementType.csv (closed).
Type string `json:"type,omitempty"`
// The order in which the debt in this financing arrangement will be repaid in case of
// default, from the closed debtRepaymentPriority codelist. Codelist:
// debtRepaymentPriority.csv (closed).
RepaymentPriority string `json:"repaymentPriority,omitempty"`
// Whether this financing arrangement is provided below market rate in order to accelerate
// climate or development objectives.
Concessional *bool `json:"concessional,omitempty"`
// Whether payments under this financing arrangement are contingent on the achievement of
// pre-defined results.
ResultsBased *bool `json:"resultsBased,omitempty"`
// The period covered by this financing arrangement.
Period *Period `json:"period,omitempty"`
// The period over which the borrower in this financing arrangement is obliged to make
// payments.
PaymentPeriod *Period `json:"paymentPeriod,omitempty"`
// The average payment frequency (in days) of this financing arrangement.
PaymentFrequency *float64 `json:"paymentFrequency,omitempty"`
// The interest rate associated with this finance.
InterestRate *FinanceInterestRate `json:"interestRate,omitempty"`
// Whether there is an associated exchange rate guarantee with this source of finance.
ExchangeRateGuarantee *bool `json:"exchangeRateGuarantee,omitempty"`
// Whether provision of this finance confers any step in rights to the financing organization.
StepInRights *bool `json:"stepInRights,omitempty"`
// The identifiers of the lots to which this financing arrangement relates.
RelatedLots []string `json:"relatedLots,omitempty"`
}
// FinanceInterestRate: The interest rate associated with this finance.
type FinanceInterestRate struct {
// The variable to which an additional margin amount is added to get the interest amount.
Base json.RawMessage `json:"base,omitempty"`
// The variable added to the base to give the interest amount, expressed as a decimal (for
// example, 0.1) and not as a percentage (for example, 10).
Margin *float64 `json:"margin,omitempty"`
// A boolean field.
Fixed *bool `json:"fixed,omitempty"`
// Any explanatory notes concerning the interest rate.
Notes string `json:"notes,omitempty"`
}
// FrameworkAgreement: Information about the framework agreement.
type FrameworkAgreement struct {
// The minimum number of participants in the framework agreement.
MinimumParticipants *float64 `json:"minimumParticipants,omitempty"`
// The maximum number of participants in the framework agreement.
MaximumParticipants *float64 `json:"maximumParticipants,omitempty"`
// Whether contracts are awarded with, without, or both with and without the reopening of
// competition. Codelist: frameworkAgreementMethod.csv (closed).
Method string `json:"method,omitempty"`
// The justification for exceptional cases when the duration of a framework agreement exceeds
// the legal limits.
PeriodRationale string `json:"periodRationale,omitempty"`
// Any additional categories of buyers participating in the framework agreement and not
// mentioned by name (e.g.
BuyerCategories string `json:"buyerCategories,omitempty"`
// The total upper estimated value of the framework agreement.
Value *Value `json:"value,omitempty"`
// The period over which the framework agreement is estimated to be active.
Period *Period `json:"period,omitempty"`
// A summary description of the framework agreement.
Description string `json:"description,omitempty"`
// Whether the framework agreement is an open framework.
IsOpenFrameworkScheme *bool `json:"isOpenFrameworkScheme,omitempty"`
// The date on which the final framework agreement in the open framework ends.
OpenFrameworkSchemeEndDate *time.Time `json:"openFrameworkSchemeEndDate,omitempty"`
// Whether the framework agreement can be used by buyers not listed in the contracting
// process. Codelist: dynamicPurchasingSystemType.csv (closed).
Type string `json:"type,omitempty"`
// The classifications of buyers who can use the framework agreement.
BuyerClassificationRestrictions []Classification `json:"buyerClassificationRestrictions,omitempty"`
// Restrictions on the location of buyer who can use the framework agreement.
BuyerLocationRestrictions []Location `json:"buyerLocationRestrictions,omitempty"`
}
// Identifier: A unique identifier for a party (organization).
type Identifier struct {
// Organization identifiers should be taken from an existing organization identifier list.
Scheme string `json:"scheme,omitempty"`
// The identifier of the organization in the selected scheme.
ID ID `json:"id,omitempty"`
// The legally registered name of the organization.
LegalName string `json:"legalName,omitempty"`
// A URI to identify the organization, such as those provided by [Open
// Corporates](https://opencorporates.com) or some other relevant URI provider.
URI string `json:"uri,omitempty"`
}
// Implementation: Information during the performance / implementation stage of the contract.
type Implementation struct {
// A list of the spending transactions made against this contract
Transactions []Transaction `json:"transactions,omitempty"`
// As milestones are completed, the milestone's status and dates should be updated.
Milestones []Milestone `json:"milestones,omitempty"`
// Documents and reports that are part of the implementation phase e.g.
Documents []Document `json:"documents,omitempty"`
// Information on the revenue to be raised through charges, as set out in the contract or as
// subsequently revised during the life of the project.
Charges []Charge `json:"charges,omitempty"`
// Reported results from the delivery of the contracted goods, works or services.
Metrics []Metric `json:"metrics,omitempty"`
// An array of performance failure disclosures, detailing performance failures for different
// periods and categories.
PerformanceFailures []PerformanceFailure `json:"performanceFailures,omitempty"`
}
// Item: A good, service, or work to be contracted.
type Item struct {
// A local identifier to reference and merge the items by.
ID ID `json:"id"`
// A description of the goods, services to be provided.
Description string `json:"description,omitempty"`
// The primary classification for the item.
Classification *Classification `json:"classification,omitempty"`
// An array of additional classifications for the item.
AdditionalClassifications []Classification `json:"additionalClassifications,omitempty"`
// The number of units to be provided.
Quantity *float64 `json:"quantity,omitempty"`
// A description of the unit in which the supplies, services or works are provided (e.g.
Unit *ItemUnit `json:"unit,omitempty"`
// The location where activity related to this tender, contract or license will be delivered,
// or will take place.
// Deprecated: since OCDS 1.2.0. This field is deprecated in favour of `.deliveryLocations` to
// support items with multiple delivery locations.
DeliveryLocation *Location `json:"deliveryLocation,omitempty"`
// The address to which, or where, goods or services related to this tender, contract or
// license will be delivered.
// Deprecated: since OCDS 1.2.0. This field is deprecated in favour of `.deliveryAddresses` to
// support items with multiple delivery locations.
DeliveryAddress *Address `json:"deliveryAddress,omitempty"`
// The identifier of the lot to which this item relates.
RelatedLot string `json:"relatedLot,omitempty"`
// The locations where activity related to this tender, contract or license will be delivered.
DeliveryLocations []Location `json:"deliveryLocations,omitempty"`
// The addresses to which, or where, goods or services related to this tender, contract or
// license will be delivered.
DeliveryAddresses []Address `json:"deliveryAddresses,omitempty"`
}
// ItemUnit: A description of the unit in which the supplies, services or works are provided
// (e.g.
type ItemUnit struct {
// The list from which identifiers for units of measure are taken, using the open
// [unitClassificationScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#unit-classification-scheme)
// codelist. Codelist: unitClassificationScheme.csv (open).
Scheme string `json:"scheme,omitempty"`
// The identifier from the codelist referenced in the `scheme` field.
ID string `json:"id,omitempty"`
// Name of the unit.
Name string `json:"name,omitempty"`
// The monetary value of a single unit.
Value *Value `json:"value,omitempty"`
// The machine-readable URI for the unit of measure, provided by the scheme.
URI string `json:"uri,omitempty"`
}
// JuryMember: Member of the jury.
type JuryMember struct {
// The name of the jury member.
Name string `json:"name,omitempty"`
}
// LegislativeReference: Legislative reference and associated contact point
type LegislativeReference struct {
// The title of the legislative reference
Title string `json:"title,omitempty"`
// A link to the Web page of the legislative reference.
URL string `json:"url,omitempty"`
// An organization that can provide information about the legislative reference.
InformationService *OrganizationReference `json:"informationService,omitempty"`
}
// Location: A physical or virtual location.
type Location struct {
// A name or description of this location.
Description string `json:"description,omitempty"`
// We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946) to express basic
// location information, using longitude, latitude, and optional elevation values in the
// [WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) (EPSG:4326) projection.
Geometry *LocationGeometry `json:"geometry,omitempty"`
// Identifiers from a gazetteer (a geographical index or directory) for the location.
Gazetteer *LocationGazetteer `json:"gazetteer,omitempty"`
// A URI to a further description of the location.
URI string `json:"uri,omitempty"`
}
// LocationGeometry: We follow the [GeoJSON standard](https://www.rfc-editor.org/rfc/rfc7946)
// to express basic location information, using longitude, latitude, and optional elevation
// values in the [WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) (EPSG:4326)
// projection.
type LocationGeometry struct {
// The type of [GeoJSON Geometry Objects](https://www.rfc-editor.org/rfc/rfc7946#section-3.1)
// being provided. Codelist: geometryType.csv (closed).
Type string `json:"type,omitempty"`
// The relevant array of points, e.g.
Coordinates []json.RawMessage `json:"coordinates,omitempty"`
}
// LocationGazetteer: Identifiers from a gazetteer (a geographical index or directory) for the
// location.
type LocationGazetteer struct {
// The identifier of the gazetteer. Codelist: locationGazetteers.csv (open).
Scheme string `json:"scheme,omitempty"`
// An array of one or more codes drawn from the gazetteer indicated by the `scheme` field.
Identifiers []string `json:"identifiers,omitempty"`
}
// Lot: A lot is a grouping of items within a tender that can be bid on or awarded together.
type Lot struct {
// Information about the award criteria for the lot.
AwardCriteria *AwardCriteria `json:"awardCriteria,omitempty"`
// The date, time, place and other details of the public bid opening.
BidOpening *BidOpening `json:"bidOpening,omitempty"`
// Modalities of communication about key events for this lot.
Communication *Communication `json:"communication,omitempty"`
// Information about the terms governing the future contracts for the lot.
ContractTerms *ContractTerms `json:"contractTerms,omitempty"`
// The international legal instruments that the lot is covered by. Codelist: coveredBy.csv
// (open).
CoveredBy []string `json:"coveredBy,omitempty"`
// Information about the organization of a design contest.
DesignContest *DesignContest `json:"designContest,omitempty"`
// Information about the assets used for the provision of public services.
EssentialAssets []EssentialAsset `json:"essentialAssets,omitempty"`
// Whether there is information about the assets used for the provision of public services.
HasEssentialAssets *bool `json:"hasEssentialAssets,omitempty"`
// The period for decision making regarding the contract award for the lot.
AwardPeriod *Period `json:"awardPeriod,omitempty"`
// Whether the technical specifications for the lot include accessibility criteria for people
// with disabilities.
HasAccessibilityCriteria *bool `json:"hasAccessibilityCriteria,omitempty"`
// The rationale for not including accessibility criteria when the object of the lot is
// intended for use by natural persons.
NoAccessibilityCriteriaRationale string `json:"noAccessibilityCriteriaRationale,omitempty"`
// Precise information concerning the time limits for the review procedures for the lot or
// contact information from which it can be obtained.
ReviewDetails string `json:"reviewDetails,omitempty"`
// A local identifier for this lot, such as a lot number.
ID string `json:"id"`
// Identifiers for this lot.
Identifiers []SimpleIdentifier `json:"identifiers,omitempty"`
// A title for this lot.
Title string `json:"title,omitempty"`
// A description of this lot.
Description string `json:"description,omitempty"`
// The current status of the process related to this lot. Codelist: tenderStatus.csv (closed).
Status string `json:"status,omitempty"`
// The maximum estimated value of this lot.
Value *Value `json:"value,omitempty"`
// The estimated minimum value of the lot.
MinimumValue *Value `json:"minimumValue,omitempty"`
// The period when this lot is open for submissions.
TenderPeriod *Period `json:"tenderPeriod,omitempty"`
// The period over which the contract is estimated or specified to be active.
ContractPeriod *Period `json:"contractPeriod,omitempty"`
// The organization aiming to conclude a contract with a supplier or to use the goods, works
// or services in this lot.
Buyer *OrganizationReference `json:"buyer,omitempty"`
// Additional classifications for this lot.
AdditionalClassifications []Classification `json:"additionalClassifications,omitempty"`
// The primary category describing the main object of this lot, using the closed
// procurementCategory codelist. Codelist: procurementCategory.csv (closed).
MainProcurementCategory string `json:"mainProcurementCategory,omitempty"`
// Any additional categories describing the objects of this lot, using the open
// extendedProcurementCategory codelist. Codelist: extendedProcurementCategory.csv (open).
AdditionalProcurementCategories []string `json:"additionalProcurementCategories,omitempty"`
// The period during which potential bidders may submit questions and requests for
// clarification about this lot to the buyer or the procuring entity.
EnquiryPeriod *Period `json:"enquiryPeriod,omitempty"`
// Milestones associated with this lot.
Milestones []Milestone `json:"milestones,omitempty"`
// Information about the methods by which bids are submitted for this lot.
SubmissionMethodDetails string `json:"submissionMethodDetails,omitempty"`
// Information about the submission terms to describe how, when and where the tenderers need
// to submit their bids or expressions of interest for the lot.
SubmissionTerms *SubmissionTerms `json:"submissionTerms,omitempty"`
// A description of the options.
Options *Options `json:"options,omitempty"`
// Whether the buyer is expected to reserve the right to make additional purchases from the
// supplier.
HasOptions *bool `json:"hasOptions,omitempty"`
// Other requirements to participate in the lot.
OtherRequirements *OtherRequirements `json:"otherRequirements,omitempty"`
// Information on the recurrence of the lot.
Recurrence *Recurrence `json:"recurrence,omitempty"`
// Whether the contracting process is recurrent.
HasRecurrence *bool `json:"hasRecurrence,omitempty"`
// Whether the buyer is expected to reserve the right to renew the future contract(s) related
// to the lot.
HasRenewal *bool `json:"hasRenewal,omitempty"`
// The options for the renewal of the contract(s) related to the lot.
Renewal *Renewal `json:"renewal,omitempty"`
// Information about the second stage of a two-stage procedure (e.g.
SecondStage *SecondStage `json:"secondStage,omitempty"`
// Information about the conditions for participation in a lot.
SelectionCriteria *SelectionCriteria `json:"selectionCriteria,omitempty"`
// Information about the terms governing subcontracting.
SubcontractingTerms *SubcontractingTerms `json:"subcontractingTerms,omitempty"`
// Information about the use of techniques, such as framework agreements, dynamic purchasing
// systems and electronic auctions.
Techniques *Techniques `json:"techniques,omitempty"`
// Information about the suitability of the lot to different types of tenderers.
Suitability *Suitability `json:"suitability,omitempty"`
}
// LotGroup: Where the buyer reserves the right to combine lots, or wishes to specify the
// total value for a group of lots, a lot group is used to capture this information.
type LotGroup struct {
// Information about the award criteria for the lot.
AwardCriteria *AwardCriteria `json:"awardCriteria,omitempty"`
// A local identifier for this group of lots.
ID string `json:"id"`
// Identifiers for this lot group.
Identifiers []SimpleIdentifier `json:"identifiers,omitempty"`
// A title for this lot group.
Title string `json:"title,omitempty"`
// A description of this lot group.
Description string `json:"description,omitempty"`
// A list of the identifiers of the lots that form this group.
RelatedLots []string `json:"relatedLots,omitempty"`
// The buyer reserves the right to combine the lots in this group when awarding a contract.
OptionToCombine *bool `json:"optionToCombine,omitempty"`
// The maximum estimated value of the lots in this group.
MaximumValue *Value `json:"maximumValue,omitempty"`
// Information about the use of techniques, such as framework agreements, dynamic purchasing
// systems and electronic auctions.
Techniques *Techniques `json:"techniques,omitempty"`
// Information about the suitability of the lot group to different types of tenderers.
Suitability *Suitability `json:"suitability,omitempty"`
}
// Metric: Metrics are used to set out targets and results from a contracting process.
type Metric struct {
// An identifier for this metric.
ID string `json:"id"`
// The title of this metric
Title string `json:"title,omitempty"`
// A short description of the metric.
Description string `json:"description,omitempty"`
// An array of target or actual values for this metric.
Observations []Observation `json:"observations,omitempty"`
}
// Milestone: The milestone block can be used to represent a wide variety of events in the
// lifetime of a contracting process.
type Milestone struct {
// A local identifier for this milestone, unique within this block.
ID ID `json:"id"`
// Milestone title
Title string `json:"title,omitempty"`
// The nature of the milestone, using the open
// [milestoneType](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#milestone-type)
// codelist. Codelist: milestoneType.csv (open).
Type string `json:"type,omitempty"`
// A description of the milestone.
Description string `json:"description,omitempty"`
// Milestone codes can be used to track specific events that take place for a particular kind
// of contracting process.
Code string `json:"code,omitempty"`
// The date the milestone is due.
DueDate *time.Time `json:"dueDate,omitempty"`
// The date on which the milestone was met.
DateMet *time.Time `json:"dateMet,omitempty"`
// The date the milestone was last reviewed or modified and the status was altered or
// confirmed to still be correct.
DateModified *time.Time `json:"dateModified,omitempty"`
// The status that was realized on the date provided in `dateModified`, from the closed
// [milestoneStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#milestone-status)
// codelist. Codelist: milestoneStatus.csv (closed).
Status string `json:"status,omitempty"`
// List of documents associated with this milestone (Deprecated in 1.1).
// Deprecated: since OCDS 1.1. Inclusion of documents at the milestone level is now
// deprecated.
Documents []Document `json:"documents,omitempty"`
// The identifiers of the lots to which this milestone relates.
RelatedLots []string `json:"relatedLots,omitempty"`
}
// MilestoneReference: A block used to reference a milestone, including the ID and title of
// the milestone being referenced.
type MilestoneReference struct {
// The ID of the milestone being referenced, this must match the ID of a milestone described
// elsewhere in a release about this contracting process.
ID string `json:"id"`
// The title of the milestone being referenced, this must match the title of a milestone
// described elsewhere in a release about this contracting process.
Title string `json:"title,omitempty"`
}
// Observation: An actual or target observation.
type Observation struct {
// A local identifier for this specific observation.
ID string `json:"id"`
// The period over which this observation is measured.
Period *Period `json:"period,omitempty"`
// For financial metrics, the value of this forecast, target or actual observation.
Value *Value `json:"value,omitempty"`
// For non-financial metrics, the measure of this forecast, target or actual observation.
Measure json.RawMessage `json:"measure,omitempty"`
// Unit
Unit *ObservationUnit `json:"unit,omitempty"`
// Any number of dimensions can be recorded within this object.
Dimensions map[string]any `json:"dimensions,omitempty"`
// Any notes on this observation.
Notes string `json:"notes,omitempty"`
// A link to the milestone in the implementation section of OCDS to which this forecast,
// target or actual observation relates.
RelatedImplementationMilestone *MilestoneReference `json:"relatedImplementationMilestone,omitempty"`
// The classification of the measure.
MeasureClassification *Classification `json:"measureClassification,omitempty"`
}
// ObservationUnit: Unit
type ObservationUnit struct {
// The name of the unit.
Name string `json:"name,omitempty"`
// The list from which units of measure identifiers are taken. Codelist:
// unitClassificationScheme.csv (open).
Scheme string `json:"scheme,omitempty"`
// The identifier from the codelist referenced in the scheme field.
ID string `json:"id,omitempty"`
// If the scheme used provide a machine-readable URI for this unit of measure, this can be
// given.
URI string `json:"uri,omitempty"`
}
// Options: A description of the options.
type Options struct {
// A description of the options.
Description string `json:"description,omitempty"`
// The period over which the options can be used.
Period *Period `json:"period,omitempty"`
}
// Organization: A party (organization)
type Organization struct {
// A common name for this organization or other participant in the contracting process.
Name string `json:"name,omitempty"`
// The ID used for cross-referencing to this party from other sections of the release.
ID string `json:"id,omitempty"`
// The primary identifier for this organization or participant.
Identifier *Identifier `json:"identifier,omitempty"`
// 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/).
AdditionalIdentifiers []Identifier `json:"additionalIdentifiers,omitempty"`
// An address.
Address *Address `json:"address,omitempty"`
// Contact details that can be used for this party.
ContactPoint *ContactPoint `json:"contactPoint,omitempty"`
// The party's role(s) in the contracting process, using the open
// [partyRole](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#party-role)
// codelist. Codelist: partyRole.csv (open).
Roles []string `json:"roles,omitempty"`
// Additional classification information about parties can be provided using partyDetail
// extensions that define particular fields and classification schemes.
Details *OrganizationDetails `json:"details,omitempty"`
// An array of additional contact points that may be consulted for information.
AdditionalContactPoints []ContactPoint `json:"additionalContactPoints,omitempty"`
// The organization's URL for the exchange of data and documents with eDelivery.
EDeliveryGateway string `json:"eDeliveryGateway,omitempty"`
// Shareholdings in the organization: used to provide company ownership information for firms,
// primarily in the case of large and complex contracts, like public private partnerships,
// that require disclosure of this information by bidders or suppliers.
Shareholders []Shareholder `json:"shareholders,omitempty"`
// A summary of the organization’s role in this procurement.
RoleDetails string `json:"roleDetails,omitempty"`
// Information on other organizations or people that have a controlling interest in the
// organization.
Control *OrganizationControl `json:"control,omitempty"`
}
// OrganizationDetails: Additional classification information about parties can be provided
// using partyDetail extensions that define particular fields and classification schemes.
type OrganizationDetails struct {
// The website of the organization.
URL string `json:"url,omitempty"`
// The Web address of the buyer profile.
BuyerProfile string `json:"buyerProfile,omitempty"`
// The classifications that categorize the organization.
Classifications []Classification `json:"classifications,omitempty"`
// The size or scale of the organization. Codelist: partyScale.csv (closed).
Scale string `json:"scale,omitempty"`
// Whether an organization is a voluntary, community or social enterprise (VCSE).
Vcse *bool `json:"vcse,omitempty"`
// Whether an organization is a public service mission organization.
PublicServiceMissionOrganization *bool `json:"publicServiceMissionOrganization,omitempty"`
// Whether an organization is a sheltered workshop.
ShelteredWorkshop *bool `json:"shelteredWorkshop,omitempty"`
// Information about an excluded supplier being awarded a contract.
ExcludedSupplier *OrganizationDetailsExcludedSupplier `json:"excludedSupplier,omitempty"`
}
// OrganizationDetailsExcludedSupplier: Information about an excluded supplier being awarded a
// contract.
type OrganizationDetailsExcludedSupplier struct {
// The exclusion grounds that apply to the supplier or an associated person.
ExclusionGrounds *OrganizationDetailsExcludedSupplierExclusionGrounds `json:"exclusionGrounds,omitempty"`
// The rationale for awarding the contract to the excluded supplier.
AwardRationale string `json:"awardRationale,omitempty"`
// The classification of the rationale for awarding the contract to the excluded supplier.
AwardRationaleClassification *Classification `json:"awardRationaleClassification,omitempty"`
}
// OrganizationDetailsExcludedSupplierExclusionGrounds: The exclusion grounds that apply to
// the supplier or an associated person.
type OrganizationDetailsExcludedSupplierExclusionGrounds struct {
// The array of exclusion criteria.
Criteria []OrganizationDetailsExcludedSupplierExclusionGroundsCriteria `json:"criteria,omitempty"`
}
type OrganizationDetailsExcludedSupplierExclusionGroundsCriteria struct {
// The type of exclusion.
Type string `json:"type,omitempty"`
// Whether the legal basis for the exclusion grounds is UK-based.
DomesticLegalBasis *bool `json:"domesticLegalBasis,omitempty"`
}
// OrganizationControl: Information on other organizations or people that have a controlling
// interest in the organization.
type OrganizationControl struct {
// Textual description of who has what control over the organization.
Description string `json:"description,omitempty"`
}
// OrganizationReference: The id and name of the party being referenced.
type OrganizationReference struct {
// The name of the party being referenced.
Name string `json:"name,omitempty"`
// The id of the party being referenced.
ID ID `json:"id,omitempty"`
// The primary identifier for this organization.
// Deprecated: since OCDS 1.1. 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.
Identifier *Identifier `json:"identifier,omitempty"`
// (Deprecated outside the parties section)
// Deprecated: since OCDS 1.1. 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.
Address *Address `json:"address,omitempty"`
// (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/).
// Deprecated: since OCDS 1.1. 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.
AdditionalIdentifiers []Identifier `json:"additionalIdentifiers,omitempty"`
// (Deprecated outside the parties section)
// Deprecated: since OCDS 1.1. 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.
ContactPoint *ContactPoint `json:"contactPoint,omitempty"`
}
// OtherRequirements: Other requirements to participate in the procedure or lot.
type OtherRequirements struct {
// Whether the bidders are obligated to indicate the names and professional qualifications of
// the staff assigned to performing the contract.
RequiresStaffNamesAndQualifications *bool `json:"requiresStaffNamesAndQualifications,omitempty"`
// The types of organizations to which participation is reserved. Codelist:
// reservedParticipation.csv (open).
ReservedParticipation []string `json:"reservedParticipation,omitempty"`
// The conditions to be fulfilled by candidates in view of their qualification for the system.
QualificationSystemConditions []string `json:"qualificationSystemConditions,omitempty"`
// The methods according to which each of the qualification system conditions will be
// verified.
QualificationSystemMethods []string `json:"qualificationSystemMethods,omitempty"`
// The criteria or rules for selecting a limited number of qualified candidates to submit
// bids.
ReductionCriteria string `json:"reductionCriteria,omitempty"`
// Information about the required security clearance (e.g.
SecurityClearance string `json:"securityClearance,omitempty"`
// The location of organizations to which participation is reserved.
ReservedParticipationLocation *Location `json:"reservedParticipationLocation,omitempty"`
}
// ParticipationFee: A fee applicable to bidders wishing to participate in the tender process.
type ParticipationFee struct {
// The locally unique identifier for the fee.
ID string `json:"id"`
// The type of the fee. Codelist: participationFeeType.csv (closed).
Type []string `json:"type,omitempty"`
// The monetary value of the fee.
Value *Value `json:"value,omitempty"`
// The value of the fee, as a proportion of a monetary value.
RelativeValue *RelativeValue `json:"relativeValue,omitempty"`
// Additional information about the fee, for example: the specific cases in which the fee is
// applicable (e.g.
Description string `json:"description,omitempty"`
// The accepted ways to pay the fee. Codelist: methodOfPayment.csv (open).
MethodOfPayment []string `json:"methodOfPayment,omitempty"`
// The physical address to which to submit non-electronic payments.
PaymentAddress *Address `json:"paymentAddress,omitempty"`
// The organization that receives the fee.
Payee *OrganizationReference `json:"payee,omitempty"`
}
// PerformanceFailure: Details of the performance failures for a given period and category.
type PerformanceFailure struct {
// A local identifier for this specific category and period of performance failure.
ID string `json:"id"`
// The reporting period for the performance failures.
Period *Period `json:"period,omitempty"`
// The category of the performance failures.
Category string `json:"category,omitempty"`
// The number of performance failures for this period and category.
Events *float64 `json:"events,omitempty"`
// A description of the penalty or abatement provided for in the contract for this period,
// category and number of performance failures.
PenaltyContracted string `json:"penaltyContracted,omitempty"`
// A description of the penalty or abatement imposed for this period, category and number of
// performance failures.
PenaltyImposed string `json:"penaltyImposed,omitempty"`
// Whether the penalty imposed for this period, category and number of performance failures
// has been paid.
PenaltyPaid *bool `json:"penaltyPaid,omitempty"`
// A description of the requirement that has not been carried out successfully.
Requirement string `json:"requirement,omitempty"`
// A description of the performance failure.
Description string `json:"description,omitempty"`
// The date of the decision that the supplier had failed to improve its performance.
DecisionDate *time.Time `json:"decisionDate,omitempty"`
// The date of the penalty for the performance failure.
PenaltyDate *time.Time `json:"penaltyDate,omitempty"`
// The basis on which the penalty for the performance failure was decided, from the closed
// penaltyType codelist. Codelist: penaltyType.csv (closed).
PenaltyType string `json:"penaltyType,omitempty"`
// The basis on which the penalty for the performance failure was decided, entered as free
// text.
PenaltyTypeEntered string `json:"penaltyTypeEntered,omitempty"`
// The value of any financial element to the penalty for the performance failure.
PenaltyValue *Value `json:"penaltyValue,omitempty"`
// A description of the partial termination of the contract that resulted from the performance
// failure.
PartialTermination string `json:"partialTermination,omitempty"`
// The suppliers that were responsible for the performance failure, especially if the contract
// is with multiple suppliers and not all of them are responsible.
Suppliers []OrganizationReference `json:"suppliers,omitempty"`
// A list of documents related to the performance failure.
Documents []Document `json:"documents,omitempty"`
}
// Period: Key events during a contracting process may have a known start date, end date,
// duration, or maximum extent (the latest date the period can extend to).
type Period struct {
// The start date for the period.
StartDate *time.Time `json:"startDate,omitempty"`
// The end date for the period.
EndDate *time.Time `json:"endDate,omitempty"`
// The period cannot be extended beyond this date.
MaxExtentDate *time.Time `json:"maxExtentDate,omitempty"`
// The maximum duration of this period in days.
DurationInDays *int `json:"durationInDays,omitempty"`
// The description of the period.
Description string `json:"description,omitempty"`
// The maximum duration of this period in months.
DurationInMonths *int `json:"durationInMonths,omitempty"`
}
// Planning: Information from the planning phase of the contracting process.
type Planning struct {
// The rationale for the procurement provided in free text.
Rationale string `json:"rationale,omitempty"`
// Details of the budget that funds this contracting process.
Budget *Budget `json:"budget,omitempty"`
// A list of documents related to the planning process.
Documents []Document `json:"documents,omitempty"`
// A list of milestones associated with the planning stage.
Milestones []Milestone `json:"milestones,omitempty"`
// Any forecasts metrics for a future contracting process.
Forecasts []Metric `json:"forecasts,omitempty"`
// The rationale for not publishing an engagement notice before the tender notice, if
// engagement has been carried out.
NoEngagementNoticeRationale string `json:"noEngagementNoticeRationale,omitempty"`
}
// Prize: Information about an individual prize awarded in a design contest.
type Prize struct {
// The locally unique identifier for the prize.
ID string `json:"id"`
// The description of the prize.
Description string `json:"description,omitempty"`
// The value of the prize.
Value *Value `json:"value,omitempty"`
}
// Prizes: Information about the prizes awarded in a design contest.
type Prizes struct {
// The description of the prizes.
Description string `json:"description,omitempty"`
// Information about the individual prizes.
Details []Prize `json:"details,omitempty"`
}
// Procedure: Information about the procurement procedure.
type Procedure struct {
// Whether the time limit for receipt of bids or expressions of interest can be reduced due to
// a state of urgency.
IsAccelerated *bool `json:"isAccelerated,omitempty"`
// The justification for using an accelerated procedure.
AcceleratedRationale string `json:"acceleratedRationale,omitempty"`
// The main features of the procedure (e.g.
Features string `json:"features,omitempty"`
}
// Recurrence: Information on the recurrence of the contracting process.
type Recurrence struct {
// An estimate of the timing of subsequent initiations of contracting processes (e.g.
Dates []Period `json:"dates,omitempty"`
// Any further information on the recurrence of the contracting process.
Description string `json:"description,omitempty"`
}
// RelatedProcess: A reference to a related contracting process: generally one preceding or
// following on from the current process.
type RelatedProcess struct {
// A local identifier for this relationship, unique within this array.
ID string `json:"id,omitempty"`
// The type of relationship, using the open
// [relatedProcess](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process)
// codelist. Codelist: relatedProcess.csv (open).
Relationship []string `json:"relationship,omitempty"`
// 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 string `json:"title,omitempty"`
// The identification scheme used by this cross-reference, using the open
// [relatedProcessScheme](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#related-process-scheme)
// codelist. Codelist: relatedProcessScheme.csv (open).
Scheme string `json:"scheme,omitempty"`
// The identifier of the related process.
Identifier string `json:"identifier,omitempty"`
// A URI pointing to a machine-readable document, release or record package containing the
// identified related process.
URI string `json:"uri,omitempty"`
// The identifier of a part of a prior information notice, or another similar notice, that
// describes a planning process.
Part string `json:"part,omitempty"`
// The identifiers of the lots in the related process to which this process relates.
RelatedLots []string `json:"relatedLots,omitempty"`
}
// RelativeValue: The value of the participation fee, as a proportion of a monetary value.
type RelativeValue struct {
// The proportion of the monetary value, expressed as a decimal between 0 and 1.
Proportion *float64 `json:"proportion"`
// The name of the monetary value. Codelist: monetaryValue.csv (closed).
MonetaryValue string `json:"monetaryValue"`
}
// Renewal: Information about the options for the renewal of a contract.
type Renewal struct {
// A description of the options for the renewal of the contract.
Description string `json:"description,omitempty"`
// The minimum number of renewals.
MinimumRenewals *float64 `json:"minimumRenewals,omitempty"`
// The maximum number of renewals.
MaximumRenewals *float64 `json:"maximumRenewals,omitempty"`
// The period over which the contract can be renewed.
Period *Period `json:"period,omitempty"`
}
// SecondStage: Information about the second stage of a two-stage procedure (e.g.
type SecondStage struct {
// The minimum number of candidates to be invited for the second stage of the procedure.
MinimumCandidates *float64 `json:"minimumCandidates,omitempty"`
// The maximum number of candidates to be invited for the second stage of the procedure.
MaximumCandidates *float64 `json:"maximumCandidates,omitempty"`
// The procedure will take place in successive stages.
SuccessiveReduction *bool `json:"successiveReduction,omitempty"`
// The buyer or procuring entity reserves the right to award the contract on the basis of the
// initial bids without any further negotiations.
NoNegotiationNecessary *bool `json:"noNegotiationNecessary,omitempty"`
// The estimated date of dispatch of the invitations to participate or to submit bids.
InvitationDate *time.Time `json:"invitationDate,omitempty"`
}
// SelectionCriteria: Information about conditions for participation.
type SelectionCriteria struct {
// The sources in which the selection criteria are defined. Codelist: sources.csv (closed).
Sources []string `json:"sources,omitempty"`
// The selection criteria.
Criteria []SelectionCriterion `json:"criteria,omitempty"`
// The description of the criteria.
Description string `json:"description,omitempty"`
}
// SelectionCriterion: Information about the selection criterion.
type SelectionCriterion struct {
// The type of the criterion. Codelist: selectionCriterionType.csv (closed).
Type string `json:"type,omitempty"`
// The subtype of the criterion.
SubType string `json:"subType,omitempty"`
// The description of the criterion.
Description string `json:"description,omitempty"`
// The minimum value or level of compliance a candidate needs to meet in order to participate.
Minimum string `json:"minimum,omitempty"`
// Whether the criterion applies to suppliers, subcontractors, or both. Codelist:
// appliesTo.csv (closed).
AppliesTo []string `json:"appliesTo,omitempty"`
// Whether the criterion is used to select the potential suppliers to be invited to the second
// stage of the contracting process, if the number of invitations is limited.
ForReduction *bool `json:"forReduction,omitempty"`
// Numbers linked to the criterion.
Numbers []CriterionNumber `json:"numbers,omitempty"`
// The methods the buyer or procuring entity uses to verify the potential supplier satisfies
// the criterion.
VerificationMethod string `json:"verificationMethod,omitempty"`
}
// Shareholder: A shareholding in an organization.
type Shareholder struct {
// A local identifier for this shareholding, unique within this array.
ID string `json:"id"`
// The organization holding the share.
Shareholder *OrganizationReference `json:"shareholder,omitempty"`
// The proportion of the organization's shares held by the shareholder, expressed as a decimal
// between 0 and 1.
Shareholding *float64 `json:"shareholding,omitempty"`
// The type of voting rights associated with the shareholder's shares. Codelist:
// votingRights.csv (closed).
VotingRights string `json:"votingRights,omitempty"`
// Detailed information about the voting rights associated with the shareholder's shares: for
// example, when the shareholder voting rights are restricted, additional or enhanced.
VotingRightsDetails string `json:"votingRightsDetails,omitempty"`
// Additional notes on the shareholding or shareholder: for example, details on any caps on
// equity transfer, or lock-in arrangements, applicable to the shareholder.
Notes string `json:"notes,omitempty"`
}
// SimpleIdentifier: An unambiguous reference to a resource within a given context.
type SimpleIdentifier struct {
// The list, register or system from which the identifier is taken.
Scheme string `json:"scheme,omitempty"`
// The identifier taken from the scheme.
ID string `json:"id,omitempty"`
}
// Subcontract: A relationship that suppliers establish with a third party to perform part of
// the contract on their behalf.
type Subcontract struct {
// The locally unique identifier for the subcontract.
ID string `json:"id"`
// The organization that performs part of the contract on behalf of the suppliers.
Subcontractor *OrganizationReference `json:"subcontractor,omitempty"`
// The organizations to which the subcontractor will be subcontracted, if they are a subset of
// the tenderers submitting the bid or the suppliers receiving the award.
MainContractors []OrganizationReference `json:"mainContractors,omitempty"`
// A description of the subcontract, including any subcontractor information only available as
// free text.
Description string `json:"description,omitempty"`
}
// Subcontracting: Information about the parts of the contract that will be subcontracted to
// third parties.
type Subcontracting struct {
// The description of the part of the contract that will be subcontracted to third parties.
Description string `json:"description,omitempty"`
// The maximum percentage of the contract value that will be subcontracted, expressed as a
// decimal proportion between 0 and 1.
MaximumPercentage *float64 `json:"maximumPercentage,omitempty"`
// The minimum percentage of the contract value that will be subcontracted, expressed as a
// decimal proportion between 0 and 1.
MinimumPercentage *float64 `json:"minimumPercentage,omitempty"`
// The maximum percentage of the contract value that the buyer or procuring entity allows the
// supplier to subcontract to third parties through a competitive procedure, expressed as a
// decimal proportion between 0 and 1.
CompetitiveMaximumPercentage *float64 `json:"competitiveMaximumPercentage,omitempty"`
// The minimum percentage of the contract value that the buyer or procuring entity requires
// the supplier to subcontract to third parties through a competitive procedure, expressed as
// a decimal proportion between 0 and 1.
CompetitiveMinimumPercentage *float64 `json:"competitiveMinimumPercentage,omitempty"`
// The estimated value of the part of the contract that will be subcontracted to third
// parties.
Value *Value `json:"value,omitempty"`
// Whether the supplier will subcontract part of the contract to third parties through a
// competitive procedure.
Competitive *bool `json:"competitive,omitempty"`
// Information about the subcontracts that will be established.
Subcontracts []Subcontract `json:"subcontracts,omitempty"`
}
// SubcontractingTerms: The obligations of the suppliers who subcontract.
type SubcontractingTerms struct {
// A description of the terms governing subcontracting.
Description string `json:"description,omitempty"`
// The maximum percentage of the contract value that the buyer or procuring entity allows the
// supplier to subcontract to third parties through a competitive procedure, expressed as a
// decimal proportion between 0 and 1.
CompetitiveMaximumPercentage *float64 `json:"competitiveMaximumPercentage,omitempty"`
// The minimum percentage of the contract value that the buyer or procuring entity requires
// the supplier to subcontract to third parties through a competitive procedure, expressed as
// a decimal proportion between 0 and 1.
CompetitiveMinimumPercentage *float64 `json:"competitiveMinimumPercentage,omitempty"`
}
// SubmissionTerms: Information about the submission terms to describe how, when and where the
// tenderers need to submit their bids or expressions of interest.
type SubmissionTerms struct {
// Whether tenderers are required, allowed or not allowed to submit bids or expressions of
// interest electronically. Codelist: permission.csv (closed).
ElectronicSubmissionPolicy string `json:"electronicSubmissionPolicy,omitempty"`
// Whether tenderers are required, allowed or not allowed to submit bids which fulfill the
// buyer's needs differently than as proposed in the procurement documents. Codelist:
// permission.csv (closed).
VariantPolicy string `json:"variantPolicy,omitempty"`
// Whether tenderers are required, allowed or not allowed to submit bids as electronic
// catalogs. Codelist: permission.csv (closed).
ElectronicCatalogPolicy string `json:"electronicCatalogPolicy,omitempty"`
// One or more languages in which bids or expressions of interest can be submitted, using
// either two-letter [ISO639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), or
// extended [BCP47 language tags](http://www.w3.org/International/articles/language-tags/).
Languages []string `json:"languages,omitempty"`
// The period, from the bid submission deadline, for which bids must remain valid.
BidValidityPeriod *Period `json:"bidValidityPeriod,omitempty"`
// Information about the deposits or guarantees required from the tenderers.
DepositsGuarantees string `json:"depositsGuarantees,omitempty"`
// Whether an advanced or qualified electronic signature or seal is needed.
AdvancedElectronicSignatureRequired *bool `json:"advancedElectronicSignatureRequired,omitempty"`
// Whether tenderers can submit more than one bid.
MultipleBidsAllowed *bool `json:"multipleBidsAllowed,omitempty"`
// The information about subcontracting that needs to be provided in the bid.
SubcontractingClauses []string `json:"subcontractingClauses,omitempty"`
// Information about non-electronic submission requirements.
NonElectronicSubmission *SubmissionTermsNonElectronicSubmission `json:"nonElectronicSubmission,omitempty"`
}
// SubmissionTermsNonElectronicSubmission: Information about non-electronic submission
// requirements.
type SubmissionTermsNonElectronicSubmission struct {
// The rationale for electronic submission not being allowed.
Rationale string `json:"rationale,omitempty"`
// The address to which non-electronic bids or expressions of interest should be submitted.
Address *Address `json:"address,omitempty"`
}
// Suitability: Information about the suitability of a contracting process, lot or lot group
// to different types of tenderers.
type Suitability struct {
// Whether the contracting process, lot or lot group is suitable to small and medium
// enterprises.
SME *bool `json:"sme,omitempty"`
// Whether the contracting process, lot or lot group is suitable for voluntary, community or
// social enterprises.
Vcse *bool `json:"vcse,omitempty"`
}
// Techniques: Information about the use of techniques, such as framework agreements, dynamic
// purchasing systems and electronic auctions.
type Techniques struct {
// Whether a framework agreement is involved.
HasFrameworkAgreement *bool `json:"hasFrameworkAgreement,omitempty"`
// Information about the framework agreement.
FrameworkAgreement *FrameworkAgreement `json:"frameworkAgreement,omitempty"`
// Whether a dynamic purchasing system is involved.
HasDynamicPurchasingSystem *bool `json:"hasDynamicPurchasingSystem,omitempty"`
// Information about the dynamic purchasing system.
DynamicPurchasingSystem *DynamicPurchasingSystem `json:"dynamicPurchasingSystem,omitempty"`
// Whether an electronic auction is used.
HasElectronicAuction *bool `json:"hasElectronicAuction,omitempty"`
// Information about the electronic auction.
ElectronicAuction *ElectronicAuction `json:"electronicAuction,omitempty"`
}
// Tender: Data regarding tender process - publicly inviting prospective contractors to submit
// bids for evaluation and selecting a winner or winners.
type Tender struct {
// An identifier for this tender process.
ID ID `json:"id"`
// A title for this tender.
Title string `json:"title,omitempty"`
// A summary description of the tender.
Description string `json:"description,omitempty"`
// The current status of the tender, from the closed
// [tenderStatus](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#tender-status)
// codelist. Codelist: tenderStatus.csv (closed).
Status string `json:"status,omitempty"`
// The entity managing the procurement.
ProcuringEntity *OrganizationReference `json:"procuringEntity,omitempty"`
// The goods and services to be purchased, broken into line items wherever possible.
Items []Item `json:"items,omitempty"`
// The total upper estimated value of the procurement.
Value *Value `json:"value,omitempty"`
// The minimum estimated value of the procurement.
MinValue *Value `json:"minValue,omitempty"`
// The procurement method, from the closed
// [method](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#method)
// codelist. Codelist: method.csv (closed).
ProcurementMethod string `json:"procurementMethod,omitempty"`
// Additional detail on the procurement method used.
ProcurementMethodDetails string `json:"procurementMethodDetails,omitempty"`
// Rationale for the chosen procurement method.
ProcurementMethodRationale string `json:"procurementMethodRationale,omitempty"`
// The primary category describing the main object of this contracting process, from the
// closed
// [procurementCategory](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#procurement-category)
// codelist. Codelist: procurementCategory.csv (closed).
MainProcurementCategory string `json:"mainProcurementCategory,omitempty"`
// Any additional categories describing the objects of this contracting process, using the
// open
// [extendedProcurementCategory](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#extended-procurement-category)
// codelist. Codelist: extendedProcurementCategory.csv (open).
AdditionalProcurementCategories []string `json:"additionalProcurementCategories,omitempty"`
// The award criteria for the procurement, using the open
// [awardCriteria](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#award-criteria)
// codelist. Codelist: awardCriteria.csv (open).
AwardCriteria string `json:"awardCriteria,omitempty"`
// Any detailed or further information on the award or selection criteria.
AwardCriteriaDetails string `json:"awardCriteriaDetails,omitempty"`
// The methods by which bids are submitted, using the open
// [submissionMethod](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#submission-method)
// codelist. Codelist: submissionMethod.csv (open).
SubmissionMethod []string `json:"submissionMethod,omitempty"`
// Any detailed or further information on the submission method.
SubmissionMethodDetails string `json:"submissionMethodDetails,omitempty"`
// The period when the tender is open for submissions.
TenderPeriod *Period `json:"tenderPeriod,omitempty"`
// The period during which potential bidders may submit questions and requests for
// clarification to the entity managing procurement.
EnquiryPeriod *Period `json:"enquiryPeriod,omitempty"`
// A true/false field to indicate whether any enquiries were received during the tender
// process.
HasEnquiries *bool `json:"hasEnquiries,omitempty"`
// A description of any eligibility criteria for potential suppliers.
EligibilityCriteria string `json:"eligibilityCriteria,omitempty"`
// The period for decision making regarding the contract award.
AwardPeriod *Period `json:"awardPeriod,omitempty"`
// The period over which the contract is estimated or required to be active.
ContractPeriod *Period `json:"contractPeriod,omitempty"`
// The number of parties who submit a bid.
NumberOfTenderers *int `json:"numberOfTenderers,omitempty"`
// All parties who submit a bid on a tender.
Tenderers []OrganizationReference `json:"tenderers,omitempty"`
// All documents and attachments related to the tender, including any notices.
Documents []Document `json:"documents,omitempty"`
// A list of milestones associated with the tender.
Milestones []Milestone `json:"milestones,omitempty"`
// A tender amendment is a formal change to the tender, and generally involves the publication
// of a new tender notice/release.
Amendments []Amendment `json:"amendments,omitempty"`
// The use of individual amendment objects has been deprecated.
// Deprecated: since OCDS 1.1. The single amendment object has been deprecated in favour of
// including amendments in an amendments (plural) array.
Amendment *Amendment `json:"amendment,omitempty"`
// The date, time, place and other details of the public bid opening.
BidOpening *BidOpening `json:"bidOpening,omitempty"`
// Modalities of communication about key events.
Communication *Communication `json:"communication,omitempty"`
// Information about the terms governing the future contracts from the procedure.
ContractTerms *ContractTerms `json:"contractTerms,omitempty"`
// The international legal instruments that the contracting process is covered by. Codelist:
// coveredBy.csv (open).
CoveredBy []string `json:"coveredBy,omitempty"`
// Information about the organization of a design contest.
DesignContest *DesignContest `json:"designContest,omitempty"`
// Information about the assets used for the provision of public services.
EssentialAssets *EssentialAsset `json:"essentialAssets,omitempty"`
// Whether there is information about the assets used for the provision of public services.
HasEssentialAssets *bool `json:"hasEssentialAssets,omitempty"`
// Precise information concerning the time limits for the review procedures or contact
// information from which it can be obtained.
ReviewDetails string `json:"reviewDetails,omitempty"`
// The method used for calculating the estimated value of the concession.
ValueCalculationMethod string `json:"valueCalculationMethod,omitempty"`
// Legislative references and associated contact points for information.
LegislativeReferences []LegislativeReference `json:"legislativeReferences,omitempty"`
// In case of joint procurement, the public procurement legislation that applies to the
// procedure.
CrossBorderLaw string `json:"crossBorderLaw,omitempty"`
// The legal basis of the procedure.
LegalBasis *Classification `json:"legalBasis,omitempty"`
// A tender process can be divided into lots, where bidders can bid on one or more lots.
Lots []Lot `json:"lots,omitempty"`
// Details of any criteria that apply to bidding on the lots in this tender.
LotDetails *TenderLotDetails `json:"lotDetails,omitempty"`
// Where the buyer reserves the right to combine lots, or wishes to specify the total value
// for a group of lots, a lot group is used to capture this information.
LotGroups []LotGroup `json:"lotGroups,omitempty"`
// Any target metrics for this contracting process.
Targets []Metric `json:"targets,omitempty"`
// A description of the options.
Options *Options `json:"options,omitempty"`
// Whether the buyer is expected to reserve the right to make additional purchases from the
// supplier.
HasOptions *bool `json:"hasOptions,omitempty"`
// Other requirements to participate in the procedure.
OtherRequirements *OtherRequirements `json:"otherRequirements,omitempty"`
// Any fees applicable to bidders wishing to participate in the tender process.
ParticipationFees []ParticipationFee `json:"participationFees,omitempty"`
// Information about the procurement procedure.
Procedure *Procedure `json:"procedure,omitempty"`
// The classifications of the procurement method rationale.
ProcurementMethodRationaleClassifications []Classification `json:"procurementMethodRationaleClassifications,omitempty"`
// Information on the recurrence of the contracting process.
Recurrence *Recurrence `json:"recurrence,omitempty"`
// Whether the contracting process is recurrent.
HasRecurrence *bool `json:"hasRecurrence,omitempty"`
// Whether the buyer is expected to reserve the right to renew the future contract(s).
HasRenewal *bool `json:"hasRenewal,omitempty"`
// The options for the renewal of the contract(s).
Renewal *Renewal `json:"renewal,omitempty"`
// Information about the second stage of a two-stage procedure (e.g.
SecondStage *SecondStage `json:"secondStage,omitempty"`
// The minimum requirements for potential suppliers to participate in the contracting process.
SelectionCriteria *SelectionCriteria `json:"selectionCriteria,omitempty"`
// The local name of the Main Procurement Category
MainProcurementCategoryDetails string `json:"mainProcurementCategoryDetails,omitempty"`
// Additional detail on the status of the tender.
StatusDetails string `json:"statusDetails,omitempty"`
// Information about the terms governing subcontracting.
SubcontractingTerms *SubcontractingTerms `json:"subcontractingTerms,omitempty"`
// Information about the submission terms to describe how, when and where the tenderers need
// to submit their bids or expressions of interest for the procedure.
SubmissionTerms *SubmissionTerms `json:"submissionTerms,omitempty"`
// Information about the use of techniques, such as framework agreements, dynamic purchasing
// systems and electronic auctions.
Techniques *Techniques `json:"techniques,omitempty"`
// Whether this call-off is competitive or not.
Competitive *bool `json:"competitive,omitempty"`
// The primary classification of the contracting process.
Classification *Classification `json:"classification,omitempty"`
// Additional classifications of the contracting process.
AdditionalClassifications []Classification `json:"additionalClassifications,omitempty"`
// The locations where activity related to this tender will take place.
DeliveryLocations []Location `json:"deliveryLocations,omitempty"`
// The addresses to which, or where, goods or services related to this tender will be
// delivered.
DeliveryAddresses []Address `json:"deliveryAddresses,omitempty"`
// Information about the suitability of the contracting process to different types of
// tenderers.
Suitability *Suitability `json:"suitability,omitempty"`
// The date on which the tender reached its final status.
FinalStatusDate *time.Time `json:"finalStatusDate,omitempty"`
// The legal basis of the rationale for the chosen procurement method.
ProcurementMethodRationaleLegalBasis *Classification `json:"procurementMethodRationaleLegalBasis,omitempty"`
// The special regime that the tender is under.
SpecialRegime []string `json:"specialRegime,omitempty"`
// Whether the tender value is above the relevant threshold.
AboveThreshold *bool `json:"aboveThreshold,omitempty"`
// The submission deadline for expressions of interest.
ExpressionOfInterestDeadline *time.Time `json:"expressionOfInterestDeadline,omitempty"`
// Description of risks that could jeopardise the satisfactory performance of the contract.
RiskDetails string `json:"riskDetails,omitempty"`
}
// TenderLotDetails: Details of any criteria that apply to bidding on the lots in this tender.
type TenderLotDetails struct {
// The maximum number of lots that one supplier can bid on as part of this contracting
// process.
MaximumLotsBidPerSupplier *int `json:"maximumLotsBidPerSupplier,omitempty"`
// The maximum number of lots that can be awarded to one supplier as part of this contracting
// process.
MaximumLotsAwardedPerSupplier *int `json:"maximumLotsAwardedPerSupplier,omitempty"`
// Any detailed or further information on the award or selection criteria.
AwardCriteriaDetails string `json:"awardCriteriaDetails,omitempty"`
// The rationale for not dividing the tender into lots, if that would have been possible.
NoLotsDivisionRationale string `json:"noLotsDivisionRationale,omitempty"`
}
// Transaction: A spending transaction related to the contracting process.
type Transaction struct {
// A unique identifier for this transaction.
ID ID `json:"id"`
// Used to point either to a corresponding Fiscal Data Package, IATI file, or machine or
// human-readable source where users can find further information on the budget line item
// identifiers, or project identifiers, provided here.
Source string `json:"source,omitempty"`
// The date of the transaction
Date *time.Time `json:"date,omitempty"`
// The value of the transaction.
Value *Value `json:"value,omitempty"`
// An organization reference for the organization from which the funds in this transaction
// originate.
Payer *OrganizationReference `json:"payer,omitempty"`
// An organization reference for the organization which receives the funds in this
// transaction.
Payee *OrganizationReference `json:"payee,omitempty"`
// A URI pointing directly to a machine-readable record about this spending transaction.
URI string `json:"uri,omitempty"`
// (Deprecated in 1.1.
// Deprecated: since OCDS 1.1. This field has been replaced by the `transaction.value` field
// for consistency with the use of value and amount elsewhere in the standard.
Amount *Value `json:"amount,omitempty"`
// (Deprecated in 1.1.
// Deprecated: since OCDS 1.1. 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.
ProviderOrganization *Identifier `json:"providerOrganization,omitempty"`
// (Deprecated in 1.1.
// Deprecated: since OCDS 1.1. 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.
ReceiverOrganization *Identifier `json:"receiverOrganization,omitempty"`
}
// UnstructuredChange: Unstructured or semi-structured change to an earlier notice.
type UnstructuredChange struct {
// The identifier of the lot to which this change relates, if any.
RelatedLot string `json:"relatedLot,omitempty"`
// The value of the data element referenced by the `where` field, before the change.
OldValue *UnstructuredChangeValue `json:"oldValue,omitempty"`
// The value of the data element referenced by the `where` field, after the change.
NewValue *UnstructuredChangeValue `json:"newValue,omitempty"`
// A reference to a data element on an earlier notice that is being changed.
Where *UnstructuredChangeWhere `json:"where,omitempty"`
}
// UnstructuredChangeWhere: A reference to a data element on an earlier notice that is being
// changed.
type UnstructuredChangeWhere struct {
// The identifier of the section containing the data element, if the earlier notice is
// organized into sections.
Section string `json:"section,omitempty"`
// The label for the data element.
Label string `json:"label,omitempty"`
}
// UnstructuredChangeValue: A value of a data element.
type UnstructuredChangeValue struct {
// A text.
Text string `json:"text,omitempty"`
// A list of classifications.
Classifications []Classification `json:"classifications,omitempty"`
// A date.
Date string `json:"date,omitempty"`
}
// Value: Financial values should be published with a currency attached.
type Value struct {
// Amount as a number.
Amount *float64 `json:"amount,omitempty"`
// The currency of the amount, from the closed
// [currency](https://standard.open-contracting.org/{{version}}/{{lang}}/schema/codelists/#currency)
// codelist. Codelist: currency.csv (closed).
Currency string `json:"currency,omitempty"`
// The amount including all taxes.
AmountGross *float64 `json:"amountGross,omitempty"`
}
// ID is used for schema fields typed as ["string", "integer"], such as Item.id
// and Award.id. It accepts a JSON string or number and always encodes as a string.
type ID string
func (id *ID) UnmarshalJSON(b []byte) error {
if string(b) == "null" {
*id = ""
return nil
}
var s string
if err := json.Unmarshal(b, &s); err == nil {
*id = ID(s)
return nil
}
var n json.Number
if err := json.Unmarshal(b, &n); err != nil {
return fmt.Errorf("ID must be a string or integer, got %s", b)
}
*id = ID(n.String())
return nil
}