// Code generated by ocdsgen from extensions.json. DO NOT EDIT. // Package tenders contains Go types for OCDS releases with these extensions applied // (dependencies first, in the order their patches were merged): // // - Lots (declared) // https://raw.githubusercontent.com/open-contracting-extensions/ocds_lots_extension/master/extension.json // - Suitability (declared) // https://raw.githubusercontent.com/open-contracting-extensions/ocds_suitability_extension/master/extension.json package tenders import ( "encoding/json" "fmt" "time" ) // DeclaredExtensions are the extension URLs to list in ReleasePackage.Extensions. var DeclaredExtensions = []string{ "https://raw.githubusercontent.com/open-contracting-extensions/ocds_lots_extension/master/extension.json", "https://raw.githubusercontent.com/open-contracting-extensions/ocds_suitability_extension/master/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"` } // 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"` } // 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"` } 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"` // The identifiers of the lots to which this award relates. RelatedLots []string `json:"relatedLots,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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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"` } // 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 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"` } // Lot: A lot is a grouping of items within a tender that can be bid on or awarded together. type Lot struct { // 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 how, when and where tenderers need to submit their bids. SubmissionTerms json.RawMessage `json:"submissionTerms,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 { // 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 suitability of the lot group to different types of tenderers. Suitability *Suitability `json:"suitability,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"` } // 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 map[string]any `json:"details,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"` } // 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"` } // 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"` } // 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 identifiers of the lots in the related process to which this process relates. RelatedLots []string `json:"relatedLots,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"` } // 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"` } // 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"` // 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"` // Information about the suitability of the contracting process to different types of // tenderers. Suitability *Suitability `json:"suitability,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"` } // 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 }