Двофазний коміт

Механізм створення двофазного коміта

Двофазний коміт пропонує механізм, завдяки якому в ЦБД будуть опубліковані тільки ті закупівлі, над якими майданчик має контроль і змогу самостійно скасувати їх дублікати.

Причиною виникнення дублікатів закупівель є ситуації, коли автор запиту на створення закупівлі не отримував відповіді від сервера про її створення, і, відповідно, повторював спробу, що призводило до дублювання закупівлі. Видалення таких закупівель вимагало адміністративного втручання.

Створення закупівлі за допомогою однофазного коміта

Відсилання однофазного запиту на створення закупівлі (POST /tenders), за “старим” механізмом, після якого закупівля створюється одразу в статусі active.enquiries:

Request

POST /api/2.5/tenders?opt_pretty=1 HTTP/1.0
Authorization: Bearer broker
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua

{
  "data": {
    "title": "футляри до державних нагород",
    "mainProcurementCategory": "goods",
    "procuringEntity": {
      "name": "Державне управління справами",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "00037256",
        "uri": "http://www.dus.gov.ua/"
      },
      "address": {
        "countryName": "Україна",
        "postalCode": "01220",
        "region": "м. Київ",
        "locality": "м. Київ",
        "streetAddress": "вул. Банкова, 11, корпус 1"
      },
      "contactPoint": {
        "name": "Державне управління справами",
        "telephone": "+0440000000"
      },
      "kind": "general"
    },
    "value": {
      "amount": 500,
      "currency": "UAH"
    },
    "minimalStep": {
      "amount": 15,
      "currency": "UAH"
    },
    "items": [
      {
        "id": "ffffffffffffffffffffffffffffffff",
        "description": "футляри до державних нагород",
        "description_en": "Cases with state awards",
        "description_ru": "футляры к государственным наградам",
        "classification": {
          "scheme": "ДК021",
          "id": "44617100-9",
          "description": "Cartons"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "17.21.1",
            "description": "папір і картон гофровані, паперова й картонна тара"
          }
        ],
        "unit": {
          "name": "кілограм",
          "code": "KGM",
          "value": {
            "amount": 6
          }
        },
        "quantity": 5
      }
    ],
    "enquiryPeriod": {
      "endDate": "2023-10-17T00:00:00+02:00"
    },
    "tenderPeriod": {
      "endDate": "2023-10-24T00:00:00+02:00"
    },
    "procurementMethodType": "belowThreshold",
    "milestones": [
      {
        "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "title": "signingTheContract",
        "code": "prepayment",
        "type": "financing",
        "duration": {
          "days": 2,
          "type": "banking"
        },
        "sequenceNumber": 0,
        "percentage": 45.55
      },
      {
        "title": "deliveryOfGoods",
        "code": "postpayment",
        "type": "financing",
        "duration": {
          "days": 900,
          "type": "calendar"
        },
        "sequenceNumber": 0,
        "percentage": 54.45
      }
    ]
  },
  "config": {
    "hasAuction": true,
    "hasAwardingOrder": true,
    "hasValueRestriction": true,
    "valueCurrencyEquality": true,
    "hasPrequalification": false,
    "minBidsNumber": 1,
    "hasPreSelectionAgreement": false,
    "hasTenderComplaints": false,
    "hasAwardComplaints": false,
    "hasCancellationComplaints": false,
    "restricted": false
  }
}

Response

HTTP/1.0 201 Created
Content-Type: application/json
Location: http://lb-api-sandbox.prozorro.gov.ua/api/2.5/tenders/2f5e224866d0459cbaa950a15be70946

{
  "data": {
    "mainProcurementCategory": "goods",
    "title": "футляри до державних нагород",
    "status": "draft",
    "awardCriteria": "lowestCost",
    "value": {
      "amount": 500.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "minimalStep": {
      "amount": 15.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "tenderPeriod": {
      "startDate": "2023-10-17T00:00:00+02:00",
      "endDate": "2023-10-24T00:00:00+02:00"
    },
    "items": [
      {
        "id": "ffffffffffffffffffffffffffffffff",
        "description": "футляри до державних нагород",
        "description_en": "Cases with state awards",
        "description_ru": "футляры к государственным наградам",
        "unit": {
          "name": "кілограм",
          "value": {
            "amount": 6.0,
            "currency": "UAH",
            "valueAddedTaxIncluded": true
          },
          "code": "KGM"
        },
        "quantity": 5.0,
        "classification": {
          "description": "Cartons",
          "scheme": "ДК021",
          "id": "44617100-9"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "17.21.1",
            "description": "папір і картон гофровані, паперова й картонна тара"
          }
        ]
      }
    ],
    "milestones": [
      {
        "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "title": "signingTheContract",
        "type": "financing",
        "code": "prepayment",
        "percentage": 45.55,
        "duration": {
          "days": 2,
          "type": "banking"
        },
        "sequenceNumber": 0
      },
      {
        "id": "f16bf86d70dd4592a01e33f03b2babd0",
        "title": "deliveryOfGoods",
        "type": "financing",
        "code": "postpayment",
        "percentage": 54.45,
        "duration": {
          "days": 900,
          "type": "calendar"
        },
        "sequenceNumber": 0
      }
    ],
    "procurementMethodType": "belowThreshold",
    "procuringEntity": {
      "name": "Державне управління справами",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "00037256",
        "uri": "http://www.dus.gov.ua/"
      },
      "address": {
        "streetAddress": "вул. Банкова, 11, корпус 1",
        "locality": "м. Київ",
        "region": "м. Київ",
        "postalCode": "01220",
        "countryName": "Україна"
      },
      "contactPoint": {
        "name": "Державне управління справами",
        "telephone": "+0440000000"
      },
      "kind": "general"
    },
    "enquiryPeriod": {
      "endDate": "2023-10-17T00:00:00+02:00",
      "startDate": "2023-10-10T01:00:00+03:00",
      "clarificationsUntil": "2023-10-19T00:00:00+03:00"
    },
    "tenderID": "UA-2023-10-10-000001-a",
    "owner": "broker",
    "procurementMethod": "open",
    "submissionMethod": "electronicAuction",
    "date": "2023-10-10T01:00:00+03:00",
    "dateCreated": "2023-10-10T01:00:00+03:00",
    "dateModified": "2023-10-10T01:00:00+03:00",
    "id": "2f5e224866d0459cbaa950a15be70946"
  },
  "config": {
    "hasAuction": true,
    "hasAwardingOrder": true,
    "hasValueRestriction": true,
    "valueCurrencyEquality": true,
    "hasPrequalification": false,
    "minBidsNumber": 1,
    "hasPreSelectionAgreement": false,
    "hasTenderComplaints": false,
    "hasAwardComplaints": false,
    "hasCancellationComplaints": false,
    "restricted": false
  },
  "access": {
    "token": "f220033fc2004e90a9398defdea66c9f",
    "transfer": "842e5674013b4f14abb7f87624dd4f80"
  }
}

Створення закупівлі за допомогою двофазного коміта

Закупівля стає доступною після успішного та послідовного виконання двох наступних запитів:

  1. Створення закупівлі у статусі draft.

  2. Переведення закупівлі в статус active.enquiries окремим запитом (публікація).

Створення закупівлі

При запиті POST /tenders передається закупівля зі статусом draft. В результаті виконання запиту віддається acc_token для подальшого управління закупівлею.

Request

POST /api/2.5/tenders?opt_pretty=1 HTTP/1.0
Authorization: Bearer broker
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua

{
  "data": {
    "title": "футляри до державних нагород",
    "mainProcurementCategory": "goods",
    "procuringEntity": {
      "name": "Державне управління справами",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "00037256",
        "uri": "http://www.dus.gov.ua/"
      },
      "address": {
        "countryName": "Україна",
        "postalCode": "01220",
        "region": "м. Київ",
        "locality": "м. Київ",
        "streetAddress": "вул. Банкова, 11, корпус 1"
      },
      "contactPoint": {
        "name": "Державне управління справами",
        "telephone": "+0440000000"
      },
      "kind": "general"
    },
    "value": {
      "amount": 500,
      "currency": "UAH"
    },
    "minimalStep": {
      "amount": 15,
      "currency": "UAH"
    },
    "items": [
      {
        "id": "ffffffffffffffffffffffffffffffff",
        "description": "футляри до державних нагород",
        "description_en": "Cases with state awards",
        "description_ru": "футляры к государственным наградам",
        "classification": {
          "scheme": "ДК021",
          "id": "44617100-9",
          "description": "Cartons"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "17.21.1",
            "description": "папір і картон гофровані, паперова й картонна тара"
          }
        ],
        "unit": {
          "name": "кілограм",
          "code": "KGM",
          "value": {
            "amount": 6
          }
        },
        "quantity": 5
      }
    ],
    "enquiryPeriod": {
      "endDate": "2023-10-17T00:00:00+02:00"
    },
    "tenderPeriod": {
      "endDate": "2023-10-24T00:00:00+02:00"
    },
    "procurementMethodType": "belowThreshold",
    "milestones": [
      {
        "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "title": "signingTheContract",
        "code": "prepayment",
        "type": "financing",
        "duration": {
          "days": 2,
          "type": "banking"
        },
        "sequenceNumber": 0,
        "percentage": 45.55
      },
      {
        "title": "deliveryOfGoods",
        "code": "postpayment",
        "type": "financing",
        "duration": {
          "days": 900,
          "type": "calendar"
        },
        "sequenceNumber": 0,
        "percentage": 54.45
      }
    ],
    "status": "draft"
  },
  "config": {
    "hasAuction": true,
    "hasAwardingOrder": true,
    "hasValueRestriction": true,
    "valueCurrencyEquality": true,
    "hasPrequalification": false,
    "minBidsNumber": 1,
    "hasPreSelectionAgreement": false,
    "hasTenderComplaints": false,
    "hasAwardComplaints": false,
    "hasCancellationComplaints": false,
    "restricted": false
  }
}

Response

HTTP/1.0 201 Created
Content-Type: application/json
Location: http://lb-api-sandbox.prozorro.gov.ua/api/2.5/tenders/757dd278bae24bd89b207b4ed11a4496

{
  "data": {
    "mainProcurementCategory": "goods",
    "title": "футляри до державних нагород",
    "status": "draft",
    "awardCriteria": "lowestCost",
    "value": {
      "amount": 500.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "minimalStep": {
      "amount": 15.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "tenderPeriod": {
      "startDate": "2023-10-17T00:00:00+02:00",
      "endDate": "2023-10-24T00:00:00+02:00"
    },
    "items": [
      {
        "id": "ffffffffffffffffffffffffffffffff",
        "description": "футляри до державних нагород",
        "description_en": "Cases with state awards",
        "description_ru": "футляры к государственным наградам",
        "unit": {
          "name": "кілограм",
          "value": {
            "amount": 6.0,
            "currency": "UAH",
            "valueAddedTaxIncluded": true
          },
          "code": "KGM"
        },
        "quantity": 5.0,
        "classification": {
          "description": "Cartons",
          "scheme": "ДК021",
          "id": "44617100-9"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "17.21.1",
            "description": "папір і картон гофровані, паперова й картонна тара"
          }
        ]
      }
    ],
    "milestones": [
      {
        "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "title": "signingTheContract",
        "type": "financing",
        "code": "prepayment",
        "percentage": 45.55,
        "duration": {
          "days": 2,
          "type": "banking"
        },
        "sequenceNumber": 0
      },
      {
        "id": "74c6d05cb02c444e908446d55a2de7f3",
        "title": "deliveryOfGoods",
        "type": "financing",
        "code": "postpayment",
        "percentage": 54.45,
        "duration": {
          "days": 900,
          "type": "calendar"
        },
        "sequenceNumber": 0
      }
    ],
    "procurementMethodType": "belowThreshold",
    "procuringEntity": {
      "name": "Державне управління справами",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "00037256",
        "uri": "http://www.dus.gov.ua/"
      },
      "address": {
        "streetAddress": "вул. Банкова, 11, корпус 1",
        "locality": "м. Київ",
        "region": "м. Київ",
        "postalCode": "01220",
        "countryName": "Україна"
      },
      "contactPoint": {
        "name": "Державне управління справами",
        "telephone": "+0440000000"
      },
      "kind": "general"
    },
    "enquiryPeriod": {
      "endDate": "2023-10-17T00:00:00+02:00",
      "startDate": "2023-10-10T01:00:00+03:00",
      "clarificationsUntil": "2023-10-19T00:00:00+03:00"
    },
    "tenderID": "UA-2023-10-10-000001-a",
    "owner": "broker",
    "procurementMethod": "open",
    "submissionMethod": "electronicAuction",
    "date": "2023-10-10T01:00:00+03:00",
    "dateCreated": "2023-10-10T01:00:00+03:00",
    "dateModified": "2023-10-10T01:00:00+03:00",
    "id": "757dd278bae24bd89b207b4ed11a4496"
  },
  "config": {
    "hasAuction": true,
    "hasAwardingOrder": true,
    "hasValueRestriction": true,
    "valueCurrencyEquality": true,
    "hasPrequalification": false,
    "minBidsNumber": 1,
    "hasPreSelectionAgreement": false,
    "hasTenderComplaints": false,
    "hasAwardComplaints": false,
    "hasCancellationComplaints": false,
    "restricted": false
  },
  "access": {
    "token": "41ea9ff1688a4270b3759cae1b82df73",
    "transfer": "458b550f618d45d4903635053e66458b"
  }
}

Закупівля зі статусом draft «невидима» в переліку GET /tenders. Її, зокрема, не помічає хронограф і не перемикає статуси.

Публікування закупівлі

Запит PATCH /tenders/{id}?acc_token=… {“data”:{“status”:”active.enquiries”}} змінює статус закупівлі (згідно із запитом) і, відповідно, цим публікує її (“візуалізує” її в переліку GET /tenders).

Request

PATCH /api/2.5/tenders/757dd278bae24bd89b207b4ed11a4496?acc_token=41ea9ff1688a4270b3759cae1b82df73 HTTP/1.0
Authorization: Bearer broker
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua

{
  "data": {
    "status": "active.enquiries"
  }
}

Response

HTTP/1.0 200 OK
Content-Type: application/json

{
  "data": {
    "date": "2023-10-10T01:00:00+03:00",
    "dateModified": "2023-10-10T01:00:00+03:00",
    "dateCreated": "2023-10-10T01:00:00+03:00",
    "tenderID": "UA-2023-10-10-000001-a",
    "status": "active.enquiries",
    "owner": "broker",
    "title": "футляри до державних нагород",
    "mainProcurementCategory": "goods",
    "procurementMethod": "open",
    "submissionMethod": "electronicAuction",
    "awardCriteria": "lowestCost",
    "value": {
      "amount": 500.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "minimalStep": {
      "amount": 15.0,
      "currency": "UAH",
      "valueAddedTaxIncluded": true
    },
    "tenderPeriod": {
      "startDate": "2023-10-17T00:00:00+02:00",
      "endDate": "2023-10-24T00:00:00+02:00"
    },
    "items": [
      {
        "id": "ffffffffffffffffffffffffffffffff",
        "description": "футляри до державних нагород",
        "description_en": "Cases with state awards",
        "description_ru": "футляры к государственным наградам",
        "unit": {
          "name": "кілограм",
          "value": {
            "amount": 6.0,
            "currency": "UAH",
            "valueAddedTaxIncluded": true
          },
          "code": "KGM"
        },
        "quantity": 5.0,
        "classification": {
          "description": "Cartons",
          "scheme": "ДК021",
          "id": "44617100-9"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "17.21.1",
            "description": "папір і картон гофровані, паперова й картонна тара"
          }
        ],
        "relatedLot": "21c927c942a143dda8d92601c0bf59c6"
      }
    ],
    "lots": [
      {
        "title": "lot title",
        "description": "lot description",
        "status": "active",
        "id": "21c927c942a143dda8d92601c0bf59c6",
        "date": "2023-10-10T01:00:00+03:00",
        "value": {
          "amount": 500.0,
          "currency": "UAH",
          "valueAddedTaxIncluded": true
        },
        "minimalStep": {
          "amount": 15.0,
          "currency": "UAH",
          "valueAddedTaxIncluded": true
        }
      }
    ],
    "milestones": [
      {
        "id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "title": "signingTheContract",
        "type": "financing",
        "code": "prepayment",
        "percentage": 45.55,
        "duration": {
          "days": 2,
          "type": "banking"
        },
        "sequenceNumber": 0
      },
      {
        "id": "74c6d05cb02c444e908446d55a2de7f3",
        "title": "deliveryOfGoods",
        "type": "financing",
        "code": "postpayment",
        "percentage": 54.45,
        "duration": {
          "days": 900,
          "type": "calendar"
        },
        "sequenceNumber": 0
      }
    ],
    "procurementMethodType": "belowThreshold",
    "procuringEntity": {
      "name": "Державне управління справами",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "00037256",
        "uri": "http://www.dus.gov.ua/"
      },
      "address": {
        "streetAddress": "вул. Банкова, 11, корпус 1",
        "locality": "м. Київ",
        "region": "м. Київ",
        "postalCode": "01220",
        "countryName": "Україна"
      },
      "contactPoint": {
        "name": "Державне управління справами",
        "telephone": "+0440000000"
      },
      "kind": "general"
    },
    "enquiryPeriod": {
      "startDate": "2023-10-10T01:00:00+03:00",
      "clarificationsUntil": "2023-10-19T00:00:00+03:00",
      "endDate": "2023-10-17T00:00:00+02:00"
    },
    "next_check": "2023-10-17T00:00:00+02:00",
    "id": "757dd278bae24bd89b207b4ed11a4496"
  },
  "config": {
    "hasAuction": true,
    "hasAwardingOrder": true,
    "hasValueRestriction": true,
    "valueCurrencyEquality": true,
    "hasPrequalification": false,
    "minBidsNumber": 1,
    "hasPreSelectionAgreement": false,
    "hasTenderComplaints": false,
    "hasAwardComplaints": false,
    "hasCancellationComplaints": false,
    "restricted": false
  }
}

Всі закупівлі, які були створені в ЦБД, але не опубліковані, не будуть відображатись на майданчику і, відповідно, не будуть призводити до їх оголошення.

Повторення запиту на публікацію, у випадку проблем з отриманням відповіді від сервера, не буде спричиняти помилок.

Новий механізм доступний паралельно зі “старим”. “Старий”, імовірно, буде вимкнено в одному з наступних release-ів.

Робота з помилками

У випадку неуспішності запиту та/або 5xx помилки, перевірте модифікований об’єкт (закупівлю, пропозицію, контракт і т.п.), оскільки 5xx помилка не обов’язково означає, що запит не відбувся. Варто повторювати запит з певним інтервалом, доки він не пройде успішно.

Детальніший опис помилок та рекомендацій щодо дій при їх виникненні описаний у розділі Коди стану.

Ось приклад помилки неправильно сформованого запиту. Ця помилка вказує, що data не знайдено у тілі JSON.

Request

POST /api/2.5/tenders?opt_pretty=1 HTTP/1.0
Authorization: Bearer broker
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua

{}

Response

HTTP/1.0 422 Unprocessable Entity
Content-Type: application/json

{
  "status": "error",
  "errors": [
    {
      "location": "body",
      "name": "data",
      "description": "Data not available"
    }
  ]
}