Приклад для плану закупівлі

Зміна власника плану закупівлі

Переглянемо приклад зміни власника для плану.

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

Спочатку створимо план закупівлі:

POST /api/2.5/plans?opt_pretty=1 HTTP/1.0
Authorization: Bearer brokerx
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {
    "rationale": {
      "description": "Недостатньо змістовне обгрунтування"
    },
    "tender": {
      "procurementMethod": "open",
      "procurementMethodType": "belowThreshold",
      "tenderPeriod": {
        "startDate": "2027-01-08T00:00:00+02:00"
      }
    },
    "items": [
      {
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "deliveryAddress": {
          "countryName": "Україна",
          "postalCode": "79000",
          "region": "м. Київ",
          "locality": "м. Київ",
          "streetAddress": "вул. Банкова 1"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.92",
            "description": "Насіння гірчиці"
          }
        ],
        "unit": {
          "code": "KGM",
          "name": "кг"
        },
        "classification": {
          "scheme": "ДК021",
          "description": "Mustard seeds",
          "id": "03111600-8"
        },
        "quantity": 1000,
        "description": "Насіння гірчиці"
      },
      {
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "deliveryAddress": {
          "countryName": "Україна",
          "postalCode": "79000",
          "region": "м. Київ",
          "locality": "м. Київ",
          "streetAddress": "вул. Банкова 1"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.95",
            "description": "Насіння соняшнику"
          }
        ],
        "unit": {
          "code": "KGM",
          "name": "кг"
        },
        "classification": {
          "scheme": "ДК021",
          "description": "Sunflower seeds",
          "id": "03111300-5"
        },
        "quantity": 2000,
        "description": "Насіння соняшнику"
      },
      {
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "deliveryAddress": {
          "countryName": "Україна",
          "postalCode": "79000",
          "region": "м. Київ",
          "locality": "м. Київ",
          "streetAddress": "вул. Банкова 1"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.84",
            "description": "Насіння бавовнику"
          }
        ],
        "unit": {
          "code": "KGM",
          "name": "кг"
        },
        "classification": {
          "scheme": "ДК021",
          "description": "Cotton seeds",
          "id": "03111400-6"
        },
        "quantity": 3000,
        "description": "Насіння бавовнику"
      }
    ],
    "classification": {
      "scheme": "ДК021",
      "description": "Seeds",
      "id": "03111000-2"
    },
    "additionalClassifications": [
      {
        "scheme": "КЕКВ",
        "id": "2000",
        "description": "Поточні видатки"
      }
    ],
    "procuringEntity": {
      "identifier": {
        "scheme": "UA-EDR",
        "id": "111983",
        "legalName": "ДП Державне Управління Справами"
      },
      "name": "ДУС",
      "address": {
        "countryName": "Україна",
        "postalCode": "01220",
        "region": "м. Київ",
        "locality": "м. Київ",
        "streetAddress": "вул. Банкова, 11, корпус 1"
      },
      "kind": "general",
      "signerInfo": {
        "name": "Test Testovich",
        "telephone": "+380950000000",
        "email": "example@email.com",
        "iban": "111111111111111",
        "authorizedBy": "Статут компанії",
        "position": "Генеральний директор"
      }
    },
    "buyers": [
      {
        "identifier": {
          "scheme": "UA-EDR",
          "id": "111983",
          "legalName": "ДП Державне Управління Справами"
        },
        "name": "ДУС",
        "address": {
          "countryName": "Україна",
          "postalCode": "01220",
          "region": "м. Київ",
          "locality": "м. Київ",
          "streetAddress": "вул. Банкова, 11, корпус 1"
        },
        "kind": "general",
        "signerInfo": {
          "name": "Test Testovich",
          "telephone": "+380950000000",
          "email": "example@email.com",
          "iban": "111111111111111",
          "authorizedBy": "Статут компанії",
          "position": "Генеральний директор"
        }
      }
    ],
    "budget": {
      "project": {
        "name": "proj_name",
        "id": "123"
      },
      "amount": 10000,
      "amountNet": 12222,
      "currency": "UAH",
      "id": "12303111000-2",
      "description": "budget_description",
      "period": {
        "startDate": "2027-01-01T00:00:00",
        "endDate": "2027-12-31T00:00:00"
      },
      "breakdown": [
        {
          "title": "other",
          "description": "Breakdown other description.",
          "value": {
            "amount": 1500,
            "currency": "UAH"
          }
        }
      ]
    },
    "project": {
      "title": "DREAMs come true",
      "uri": "https://dream.gov.ua/ua/project/DREAM-UA-030524-EE48E08C/profile"
    }
  }
}
HTTP/1.0 201 Created
Content-Type: application/json
Location: http://lb-api-sandbox.prozorro.gov.ua/api/2.5/plans/5e6819d2385c4c6a8a7877b87488074c
{
  "data": {
    "status": "scheduled",
    "procuringEntity": {
      "id": "634ca17a96ee43b49a273a81ee1730fa",
      "name": "ДУС",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "111983",
        "legalName": "ДП Державне Управління Справами"
      },
      "address": {
        "streetAddress": "вул. Банкова, 11, корпус 1",
        "locality": "м. Київ",
        "region": "м. Київ",
        "postalCode": "01220",
        "countryName": "Україна"
      },
      "kind": "general",
      "signerInfo": {
        "name": "Test Testovich",
        "email": "example@email.com",
        "telephone": "+380950000000",
        "iban": "111111111111111",
        "position": "Генеральний директор",
        "authorizedBy": "Статут компанії"
      }
    },
    "tender": {
      "procurementMethod": "open",
      "procurementMethodType": "belowThreshold",
      "tenderPeriod": {
        "startDate": "2027-01-08T00:00:00+02:00"
      }
    },
    "budget": {
      "id": "12303111000-2",
      "description": "budget_description",
      "amount": 10000.0,
      "currency": "UAH",
      "amountNet": 12222.0,
      "project": {
        "id": "123",
        "name": "proj_name"
      },
      "period": {
        "startDate": "2027-01-01T00:00:00+02:00",
        "endDate": "2027-12-31T00:00:00+02:00"
      },
      "breakdown": [
        {
          "id": "79ab7a5b3d174eebb9db7f95a1d9db02",
          "title": "other",
          "description": "Breakdown other description.",
          "value": {
            "amount": 1500.0,
            "currency": "UAH"
          }
        }
      ]
    },
    "classification": {
      "description": "Seeds",
      "scheme": "ДК021",
      "id": "03111000-2"
    },
    "additionalClassifications": [
      {
        "scheme": "КЕКВ",
        "id": "2000",
        "description": "Поточні видатки"
      }
    ],
    "items": [
      {
        "id": "6e9e9fdc76034547ae8e5fd0fe3c2e37",
        "classification": {
          "description": "Mustard seeds",
          "scheme": "ДК021",
          "id": "03111600-8"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.92",
            "description": "Насіння гірчиці"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 1000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння гірчиці"
      },
      {
        "id": "fc0a16bffbcb46aabba00fa2de5262eb",
        "classification": {
          "description": "Sunflower seeds",
          "scheme": "ДК021",
          "id": "03111300-5"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.95",
            "description": "Насіння соняшнику"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 2000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння соняшнику"
      },
      {
        "id": "b23ab41b6d7a4d12b2bf88f3e935372b",
        "classification": {
          "description": "Cotton seeds",
          "scheme": "ДК021",
          "id": "03111400-6"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.84",
            "description": "Насіння бавовнику"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 3000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння бавовнику"
      }
    ],
    "buyers": [
      {
        "id": "79de7466f3374c8690d63b572715a112",
        "name": "ДУС",
        "identifier": {
          "scheme": "UA-EDR",
          "id": "111983",
          "legalName": "ДП Державне Управління Справами"
        },
        "address": {
          "streetAddress": "вул. Банкова, 11, корпус 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "01220",
          "countryName": "Україна"
        },
        "kind": "general",
        "signerInfo": {
          "name": "Test Testovich",
          "email": "example@email.com",
          "telephone": "+380950000000",
          "iban": "111111111111111",
          "position": "Генеральний директор",
          "authorizedBy": "Статут компанії"
        }
      }
    ],
    "rationale": {
      "description": "Недостатньо змістовне обгрунтування",
      "date": "2027-01-01T00:00:00+02:00"
    },
    "project": {
      "title": "DREAMs come true",
      "uri": "https://dream.gov.ua/ua/project/DREAM-UA-030524-EE48E08C/profile"
    },
    "planID": "UA-P-2027-01-01-000001-a",
    "owner": "brokerx",
    "datePublished": "2027-01-01T00:00:00+02:00",
    "dateCreated": "2027-01-01T00:00:00+02:00",
    "dateModified": "2027-01-01T00:00:00+02:00",
    "id": "5e6819d2385c4c6a8a7877b87488074c"
  },
  "access": {
    "token": "f45f0273c2ea4d52bde81c4f30b09376",
    "transfer": "9192aab96d4b4959affa7d7644f539a6"
  }
}

Майданчик broker є поточним власником owner плану закупівлі.

Зверніть увагу, що секція відповіді access містить ключ transfer, який використовується для зміни власника плану закупівлі.

Після реєстрація плану закупівлі в ЦБД майданчик повинен довести ключ transfer до відома клієнта.

Ініціація зміни власника

Майданчик, що стане новим власником плану закупівлі, повинен створити об’єкт Transfer.

POST /api/2.5/transfers HTTP/1.0
Authorization: Bearer broker1
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {}
}
HTTP/1.0 201 Created
Content-Type: application/json
{
  "data": {
    "date": "2027-01-01T00:00:00+02:00",
    "id": "6681cf91ab4c4f1e919c18d368a16c25"
  },
  "access": {
    "token": "387cfff9b93243ddaa148e5ea350ceb5",
    "transfer": "cc5488fbcc4f4313bf04bd2aea88d16c"
  }
}

Об’єкт Transfer містить новий ключ доступу token та новий ключ transfer для об’єкта, власник якого буде змінений.

Об’єкт Transfer можна переглянути за допомогою ідентифікатора id:

GET /api/2.5/transfers/6681cf91ab4c4f1e919c18d368a16c25 HTTP/1.0
Authorization: Bearer broker1
Host: public-api-sandbox.prozorro.gov.ua
HTTP/1.0 200 OK
Content-Type: application/json
{
  "data": {
    "date": "2027-01-01T00:00:00+02:00",
    "id": "6681cf91ab4c4f1e919c18d368a16c25"
  }
}

Зміна власника плану закупівлі

Можливість зміни власника плану закупівлі залежить від статусу плану закупівлі:

Дозволено

Не дозволено

scheduled

draft

cancelled

complete

Щоб змінити власника плану закупівлі новий майданчик повинен надіслати POST запит на відповідний /plans/id/ з секцією data, що міститиме ідентифікатор id для Transfer та ключ transfer отриманий від клієнта:

POST /api/2.5/plans/5e6819d2385c4c6a8a7877b87488074c/ownership HTTP/1.0
Authorization: Bearer broker1
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {
    "id": "6681cf91ab4c4f1e919c18d368a16c25",
    "transfer": "9192aab96d4b4959affa7d7644f539a6"
  }
}
HTTP/1.0 200 OK
Content-Type: application/json
{
  "data": {
    "owner": "broker1",
    "id": "5e6819d2385c4c6a8a7877b87488074c"
  }
}

Оновлене значення властивості owner вказує, що власник був успішно змінений.

Зверніть увагу, що новий майданчик повинен довести до відома клієнта новий ключ transfer (згенерований в об’єкті Transfer).

Після того, як об’єкт Transfer було застосовано, для нього генерується властивість usedFor (вказується шлях до об’єкта, власника якого було змінено):

GET /api/2.5/transfers/6681cf91ab4c4f1e919c18d368a16c25 HTTP/1.0
Authorization: Bearer broker1
Host: public-api-sandbox.prozorro.gov.ua
HTTP/1.0 200 OK
Content-Type: application/json
{
  "data": {
    "date": "2027-01-01T00:00:00+02:00",
    "usedFor": "/plans/5e6819d2385c4c6a8a7877b87488074c",
    "id": "6681cf91ab4c4f1e919c18d368a16c25"
  }
}

„Використаний“ об’єкт Transfer вже не можна застосувати до іншого об’єкта.

Спробуємо змінити план закупівлі за допомогою ключа token, отриманого при створенні об’єкта Transfer.

PATCH /api/2.5/plans/5e6819d2385c4c6a8a7877b87488074c?acc_token=387cfff9b93243ddaa148e5ea350ceb5 HTTP/1.0
Authorization: Bearer broker1
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {
    "budget": {
      "project": {
        "name": "proj_name",
        "id": "123"
      },
      "amount": 10000,
      "amountNet": 12222,
      "currency": "UAH",
      "id": "12303111000-2",
      "description": "broker1 now can change the plan",
      "period": {
        "startDate": "2027-01-01T00:00:00",
        "endDate": "2027-12-31T00:00:00"
      },
      "breakdown": [
        {
          "title": "other",
          "description": "Breakdown other description.",
          "value": {
            "amount": 1500,
            "currency": "UAH"
          }
        }
      ]
    }
  }
}
HTTP/1.0 200 OK
Content-Type: application/json
{
  "data": {
    "status": "scheduled",
    "procuringEntity": {
      "id": "634ca17a96ee43b49a273a81ee1730fa",
      "name": "ДУС",
      "identifier": {
        "scheme": "UA-EDR",
        "id": "111983",
        "legalName": "ДП Державне Управління Справами"
      },
      "address": {
        "streetAddress": "вул. Банкова, 11, корпус 1",
        "locality": "м. Київ",
        "region": "м. Київ",
        "postalCode": "01220",
        "countryName": "Україна"
      },
      "kind": "general",
      "signerInfo": {
        "name": "Test Testovich",
        "email": "example@email.com",
        "telephone": "+380950000000",
        "iban": "111111111111111",
        "position": "Генеральний директор",
        "authorizedBy": "Статут компанії"
      }
    },
    "tender": {
      "procurementMethod": "open",
      "procurementMethodType": "belowThreshold",
      "tenderPeriod": {
        "startDate": "2027-01-08T00:00:00+02:00"
      }
    },
    "budget": {
      "id": "12303111000-2",
      "description": "broker1 now can change the plan",
      "amount": 10000.0,
      "currency": "UAH",
      "amountNet": 12222.0,
      "project": {
        "id": "123",
        "name": "proj_name"
      },
      "period": {
        "startDate": "2027-01-01T00:00:00+02:00",
        "endDate": "2027-12-31T00:00:00+02:00"
      },
      "breakdown": [
        {
          "id": "c0fa57eb925847ae90cd1a60befefeb6",
          "title": "other",
          "description": "Breakdown other description.",
          "value": {
            "amount": 1500.0,
            "currency": "UAH"
          }
        }
      ]
    },
    "classification": {
      "description": "Seeds",
      "scheme": "ДК021",
      "id": "03111000-2"
    },
    "additionalClassifications": [
      {
        "scheme": "КЕКВ",
        "id": "2000",
        "description": "Поточні видатки"
      }
    ],
    "planID": "UA-P-2027-01-01-000001-a",
    "items": [
      {
        "id": "6e9e9fdc76034547ae8e5fd0fe3c2e37",
        "classification": {
          "description": "Mustard seeds",
          "scheme": "ДК021",
          "id": "03111600-8"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.92",
            "description": "Насіння гірчиці"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 1000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння гірчиці"
      },
      {
        "id": "fc0a16bffbcb46aabba00fa2de5262eb",
        "classification": {
          "description": "Sunflower seeds",
          "scheme": "ДК021",
          "id": "03111300-5"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.95",
            "description": "Насіння соняшнику"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 2000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння соняшнику"
      },
      {
        "id": "b23ab41b6d7a4d12b2bf88f3e935372b",
        "classification": {
          "description": "Cotton seeds",
          "scheme": "ДК021",
          "id": "03111400-6"
        },
        "additionalClassifications": [
          {
            "scheme": "ДКПП",
            "id": "01.11.84",
            "description": "Насіння бавовнику"
          }
        ],
        "unit": {
          "name": "кг",
          "code": "KGM"
        },
        "quantity": 3000.0,
        "deliveryAddress": {
          "streetAddress": "вул. Банкова 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "79000",
          "countryName": "Україна"
        },
        "deliveryDate": {
          "startDate": "2027-01-03T00:00:00+02:00",
          "endDate": "2027-01-06T00:00:00+02:00"
        },
        "description": "Насіння бавовнику"
      }
    ],
    "buyers": [
      {
        "id": "79de7466f3374c8690d63b572715a112",
        "name": "ДУС",
        "identifier": {
          "scheme": "UA-EDR",
          "id": "111983",
          "legalName": "ДП Державне Управління Справами"
        },
        "address": {
          "streetAddress": "вул. Банкова, 11, корпус 1",
          "locality": "м. Київ",
          "region": "м. Київ",
          "postalCode": "01220",
          "countryName": "Україна"
        },
        "kind": "general",
        "signerInfo": {
          "name": "Test Testovich",
          "email": "example@email.com",
          "telephone": "+380950000000",
          "iban": "111111111111111",
          "position": "Генеральний директор",
          "authorizedBy": "Статут компанії"
        }
      }
    ],
    "rationale": {
      "description": "Недостатньо змістовне обгрунтування",
      "date": "2027-01-01T00:00:00+02:00"
    },
    "project": {
      "title": "DREAMs come true",
      "uri": "https://dream.gov.ua/ua/project/DREAM-UA-030524-EE48E08C/profile"
    },
    "owner": "broker1",
    "dateCreated": "2027-01-01T00:00:00+02:00",
    "dateModified": "2027-01-01T00:00:00+02:00",
    "datePublished": "2027-01-01T00:00:00+02:00",
    "id": "5e6819d2385c4c6a8a7877b87488074c"
  }
}

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

POST /api/2.5/plans/5e6819d2385c4c6a8a7877b87488074c/ownership HTTP/1.0
Authorization: Bearer broker2
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {
    "id": "69e7667db8714df587ebd82b2da752d5",
    "transfer": "9192aab96d4b4959affa7d7644f539a6"
  }
}
HTTP/1.0 403 Forbidden
Content-Type: application/json
{
  "status": "error",
  "errors": [
    {
      "location": "url",
      "name": "accreditation",
      "description": "Broker Accreditation level does not permit ownership change"
    }
  ]
}

Зміна власника дозволена тільки якщо поточний власник тендера має спеціальний рівень акредетації, що дозволяє зміну:

POST /api/2.5/plans/5e6819d2385c4c6a8a7877b87488074c/ownership HTTP/1.0
Authorization: Bearer brokerx
Content-Type: application/json
Host: lb-api-sandbox.prozorro.gov.ua
{
  "data": {
    "id": "ea8708a2c6f046d39672eb4ddae4aefd",
    "transfer": "9192aab96d4b4959affa7d7644f539a6"
  }
}
HTTP/1.0 403 Forbidden
Content-Type: application/json
{
  "status": "error",
  "errors": [
    {
      "location": "url",
      "name": "accreditation",
      "description": "Owner Accreditation level does not permit ownership change"
    }
  ]
}