// Code generated by ocdsgen from extensions.json. DO NOT EDIT. // Package eu 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 package eu 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", } // 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"` } // 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"` } 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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. DeliveryLocation *Location `json:"deliveryLocation,omitempty"` // The address to which, or where, goods or services related to this tender, contract or // license will be delivered. DeliveryAddress *Address `json:"deliveryAddress,omitempty"` // The identifier of the lot to which this item relates. RelatedLot string `json:"relatedLot,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: The location where activity related to this tender, contract or license will be // delivered, or will take place. type Location struct { // A name or description of this location. Description string `json:"description,omitempty"` // We follow the [GeoJSON standard](http://geojson.org/) to express basic location // information, using longitude, latitude, and optional elevation values in the // [WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) (EPSG:4326) projection. 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 activity location. URI string `json:"uri,omitempty"` } // LocationGeometry: We follow the [GeoJSON standard](http://geojson.org/) to express basic // location information, using longitude, latitude, and optional elevation values in the // [WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) (EPSG:4326) projection. type LocationGeometry struct { // The type of [GeoJSON Geometry // Objects](http://geojson.org/geojson-spec.html#geometry-objects) 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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 }