Let's try exploring the /tenders endpoint:
Just invoking it reveals empty set.
Now let's attempt creating some 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
Let's provide the data attribute in the submitted body :
Success! Now we can see that new object was created. Response code is 201 and Location response header reports the location of the created object. The body of 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.
The peculiarity of the CompetitiveDialogue procedure is that procurementMethodType
can be CompetitiveDialogueEU
or CompetitiveDialogueUA
.
If you choice CompetitiveDialogueEU
on second stage will be created procedure which similar on Open EU, if
CompetitiveDialogueUA
then on Open UA.
Also there is no opportunity to set up enquiryPeriod
, it will be assigned automatically.
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 tender.
Let's see what listing of tenders reveals 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.
Let's update tender by supplementing it with all other essential properties:
We see the added properies have merged with 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 can not change tender if there are less than 7 days before tenderPeriod ends. Changes will not be accepted by API.
That is why tenderPeriod has to be extended by 7 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:
And again we can confirm that there are two documents uploaded.
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 individual answer:
Enquiries can be made only during Tender.enqueryPeriod
.. index:: Bidding
Tender status active.tendering
allows registration of bids.
Bidder can register a bid with draft status:
and approve to pending status:
Then bidder should upload proposal technical document(s):
Document can be type descriptive decision. If you want that document be descriptive decision need set isDescriptionDecision
First upload file
Then set isDescriptionDecision
Documents can be either public or private:
- Privacy settings can be changed only for the latest version of the document.
- When you upload 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":
When documents with parameter isDescriptionDecision
set to privacy confidentialityRationale
must be missed.
Let's mark the document as "private":
It is possible to check the uploaded documents:
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:
Competitive Dialogue procedure demands at least three bidders:
Register two more bid:
Register one more bid with documents using single request (batch-mode):
.. index:: Qualification
Competitive Dialogue procedure requires bid qualification.
Let's list qualifications:
Approve first three 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:
You may notice 10 day stand-still time set in qualificationPeriod.
When qualification period end tender will has status active.stage2.pending
Lets look on your tender
Hoт purchasing can set that he is ready for second stage, by setting status to active.stage2.waiting
.
When tender status is complete
, we can get id new stage.
First lets look on tender and find field stage2TenderID
Form making changes in second stage we need token
Good, now we get token, and can make changes, so lets change status from draft.stage2
to active.tendering
.. toctree:: :maxdepth: 1 tutorial_stage2EU
.. toctree:: :maxdepth: 1 tutorial_stage2UA
Tender creator can cancel tender anytime. The following steps should be applied:
- Prepare 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.
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.
Upload the file contents
Change the document description and other properties
Upload new version of the document