Exploring basic rules
Let's try to explore the /tenders endpoint:
Just invoking it reveals an empty set.
Now let's attempt to create a tender:
Error states that the only accepted Content-Type is application/json.
Let's satisfy the Content-type requirement:
Error states that no data has been found in JSON body.
.. index:: Tender
Creating a tender
Let's provide the data attribute in the submitted body :
Success! Now we can see that a new object was created. Response code is 201 and Location response header reports the location of the created object. The body of the response reveals the information about the created tender: its internal id (that matches the Location segment), its official tenderID and dateModified datestamp stating the moment in time when tender was last modified. Note that tender is created with active.tendering status. Note that 'complaintPeriod' in seconds, because complaints have been temporarily disabled. 'enquiryPeriod' ends the day before 'tenderPeriod' and 'enquiryPeriod:clarificationUnitl == enquiryPeriod:endDate'
Let's access the URL of the created object (the Location header of the response):
We can see the same response we got after creating the tender.
Let's see what listing of tenders reveals to us:
We do see the internal id of a tender (that can be used to construct full URL by prepending http://api-sandbox.openprocurement.org/api/0/tenders/) and its dateModified datestamp.
Modifying the tender
Let's update the tender by supplementing it with all other essential properties:
We see the added properies have merged with the existing tender data. Additionally, the dateModified property was updated to reflect the last modification datestamp.
Checking the listing again reflects the new modification date:
Procuring entity cannot change the tender if there are less than 3 days before tenderPeriod ends. Changes will not be accepted by API.
That is why tenderPeriod has to be extended by 3 days.
Procuring entity can set bid guarantee:
.. index:: Document
Procuring entity can upload PDF files into the created tender. Uploading should follow the :ref:`upload` rules.
201 Created response code and Location header confirm document creation. We can additionally query the documents collection API endpoint to confirm the action:
The single array element describes the uploaded document. We can upload more documents:
And again we can confirm that there have been two documents uploaded.
In case we made an error, we can reupload the document over the older version:
And we can see that it is overriding the original version:
.. index:: Enquiries, Question, Answer
When tender has
active.tendering status and
Tender.enqueryPeriod.endDate hasn't come yet, interested parties can ask questions:
Procuring entity can answer them:
One can retrieve either questions list:
or an individual answer:
Enquiries can be made only during
Tender.enqueryPeriod, which ends a day before t``enderPeriod:endDate``
.. index:: Bidding
Registering a bid
active.tendering allows registration of bids.
Bidder can register a bid with
and approve to
Then bidder should upload proposal technical document(s):
Documents can be either public or private:
- Privacy settings can be changed only for the latest version of the document.
- When you upload a new version of the document, privacy settings are copied from the previous version.
- Privacy settings can be changed only during tenderPeriod (with active.tendering status).
- If tender has status active.qualification winner can upload only public documents.
Let's upload private document:
To define the document as "private" - confidentiality and confidentialityRationale fields should be set.
confidentiality field value can be either buyerOnly (document is private) or public (document is publicly accessible).
Content of private documents (buyerOnly) can be accessed only by procuring entity or by participant who uploaded them.
confidentialityRationale field is required only for private documents and should contain at least 30 characters.
Let's mark the document as "private":
It is possible to check the uploaded documents:
Financial documents uploading
Financial documents are a part of Bid but are located in different end-points.
In order to create and/or get financial document
financial_documents end-point should be used:
Get financial documents:
Financial documents will be publicly accessible after the auction.
If tender is modified, status of all bid proposals will be changed to
invalid. Bid proposal will look the following way after tender has been modified:
Bidder should confirm bid proposal:
Open Two Stage procedure demands at least two bidders, so there should be at least two bid proposals registered to move to auction stage:
Register one more bid:
.. index:: Awarding, Qualification
Open Two Stage procedure requires bid qualification.
Let's list qualifications:
Approve first two bids through qualification objects:
We can also reject bid:
And check that qualified bids are switched to active:
Rejected bid is not shown in bids/ listing.
We can access rejected bid by id:
Procuring entity approves qualifications by switching to next status:
If qualification has been cancelled, new Qualification object is generated for this participant.
After auction is scheduled anybody can visit it to watch. The auction can be reached at Tender.auctionUrl:
Bidders can find out their participation URLs via their bids:
See the Bid.participationUrl in the response. Similar, but different, URL can be retrieved for other participants:
Qualification commission registers its decision via the following call:
Setting contract value
By default contract value is set based on the award, but there is a possibility to set custom contract value.
If you want to lower contract value, you can insert new one into the amount field.
200 OK response was returned. The value was modified successfully.
Setting contract signature date
There is a possibility to set custom contract signature date. You can insert appropriate date into the dateSigned field.
If this date is not set, it will be auto-generated on the date of contract registration.
Setting contract validity period
Setting contract validity period is optional, but if it is needed, you can set appropriate startDate and endDate.
Uploading contract documentation
You can upload contract documents for the Open Two Stage procedure.
Let's upload contract document:
201 Created response code and Location header confirm that this document was added.
Let's see the list of contract documents:
We can upload another contract document:
201 Created response code and Location header confirm that the second document was uploaded.
By default, document language is Ukrainian. You can can change it and set another language for the document by assigning appropriate language code to the language field (available options:
ru). You can also set document's title (e.g. title_en) and description (e.g. description_en) fields. See :ref:`Document` data structure for details.
Let's see the list of all added contract documents:
Let's view separate contract document:
Cancelling a tender
PE can cancel the tender anytime. The following steps should be applied:
- Prepare a cancellation request.
- Fill it with the protocol describing the cancellation reasons.
- Cancel the tender with the prepared reasons.
Only the request that has been activated (3rd step above) has power to cancel tender. I.e. you have to not only prepare cancellation request but to activate it as well.
See :ref:`cancellation` data structure for details.
Preparing the cancellation request
You should pass reason, status defaults to pending.
id is autogenerated and passed in the Location header of response.
There are two possible types of cancellation reason: tender was cancelled or unsuccessful. By default
reasonType value is cancelled.
You can change
reasonType value to unsuccessful.
Filling cancellation with protocol and supplementary documentation
Upload the file contents
Change the document description and other properties
Upload new version of the document