Skip to content

Latest commit

 

History

History
430 lines (262 loc) · 12.5 KB

File metadata and controls

430 lines (262 loc) · 12.5 KB

Tutorial

Exploring basic rules

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.

Tender

Creating tender

Let's create tender with the minimal (only required) data set:

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. Pay attention to the procurementMethodType. Note that tender is created with draft status.

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 don't see internal id of tender, because tender appears in the listing from active.enquiries status.

Tender activating

For activating tender you should update status to active.enquiries:

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.

Creating second tender

The previous tender contained only required fields. Let's try creating tender with more data (tender has status created):

And again we have 201 Created response code, Location header and body with extra id, tenderID, and dateModified properties.

Let's check what tender registry contains:

And indeed we have 2 tenders now.

We can create tender with optional funders field:

Modifying tender

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 set bid guarantee:

Also we can modify tender by adding funders field data:

Document

Uploading documentation

Procuring entity can upload PDF files into the created tender. Uploading should follow the 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 are two documents uploaded.

Let’s add new documentType field with technicalSpecifications parameter to the previously uploaded document:

Success! Response code is 200 OK and it confirms that documentType field with technicalSpecifications parameter was added .

Now let’s try to modify any field in our document. For example, `description`:

200 OK response was returned. The description was modified successfully.

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:

Enquiries, Question, Answer

Enquiries

When tender is in active.enquiry status, interested parties can ask questions:

Procuring entity can answer them:

And one can retrieve the questions list:

And individual answer:

Bidding

Registering bid

Step-by-step registration

When Tender.tenderingPeriod.startDate comes, Tender switches to active.tendering status that allows registration of bids.

Bidder can register a bid in draft status:

and approve to pending status:

And upload proposal document:

It is possible to check the uploaded documents:

Batch-mode registration

Register bid with documents using one request:

Awarding, Qualification

Auction

After auction is scheduled anybody can visit it to watch. The auction can be reached at `Tender.auctionUrl`:

And 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:

Confirming qualification

Qualification comission registers its decision via the following call:

Setting contract value

Let's see the created contract with next request:

By default contract value amount and amountNet is set based on the award value amount, but there is a possibility to set custom contract value.

You can update value amount and amountNet following next rules:

+-------------------------+------------------------------------------------------------------------+ | valueAddedTaxIncluded | | +------------+------------+ Validation + | contract | award | | +------------+------------+------------------------------------------------------------------------+ | | true/false | Amount should be greater than amountNet and differ by no more than 20% | + +------------+------------------------------------------------------------------------+ | true | true | Amount should be less or equal to awarded amount | + +------------+------------------------------------------------------------------------+ | | false | AmountNet should be less or equal to awarded amount | +------------+------------+------------------------------------------------------------------------+ | | true/false | Amount and amountNet should be equal | + false +------------+------------------------------------------------------------------------+ | | true/false | Amount should be less or equal to awarded amount | +------------+------------+------------------------------------------------------------------------+

Let's set contract contract value with next request:

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. Let's upload contract document:

201 Created response code and Location header confirm document was added.

Let's see the list of contract documents:

We can add another contract document:

201 Created response code and Location header confirm second document was uploaded.

Let's see the list of all added contract documents:

Set contract signature date

There is a possibility to set custom contract signature date. If the date is not set it will be generated on contract registration.

Contract registration

Cancelling tender

Tender creator can cancel tender anytime (except when tender has terminal status e.g. usuccesfull, canceled, complete).

The following steps should be applied:

  1. Prepare cancellation request
  2. Fill it with the protocol describing the cancellation reasons
  3. Cancel the tender with the reasons prepared.

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 cancellation data structure for details.

Preparing the cancellation request

You should pass reason and reasonType, status defaults to draft.

id is autogenerated and passed in the Location header of response.

Filling cancellation with protocol and supplementary documentation

This step is required. Without documents you can't update tender status.

Upload the file contents

Change the document description and other properties

Upload new version of the document

Activating the request and cancelling tender