Загальна інформація

З метою автоматичного перевиставлення лотів, що відповідає Постанові №75 від 21 січня 2026 в системі Prozorro.Sale на сервісі Jobber реалізовано нову сутність з pipelineMethod: sanctionedAuctionChain

Сервіс, який вже вміє публікувати Процедури за певною логікою - Jobber. Саме на ньому реалізовані Інформаційні Повідомлення, які використовуємо в процесі Малої і Великої Приватизації. Тому для "ланцюжків" санкційного також використовуємо існуючий сервіс - Jobber.

Swagger можна знайти ТУТ на табі з відповідною назвою "Jobber" (зараз там ще нічого немає, але буде)

Майданчик повинен забезпечити можливість Організатору створити та керувати процесом реалізації санкційного активу шляхом публікації об'єкта типу: jobber.sanctionedAuctionChain

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

Майданчик не зобов'язаний реалізовувати конкретний дизайн інтерфейсу, але повинен забезпечити можливість введення, перегляду і редагування даних, визначених у цьому документі.

Шлях Організатора на Майданчику

Публікація ланцюжка

У Організатора повинна бути можливість запустити Процес реалізації санкційного активу (ланцюжок аукціонів) шляхом публікації в ЦБД першого аукціону.

Від Майданчика ЦБД буде очікувати запит на публікації обʼєкта jobber.sanctionedAuctionChain

Обовʼязкові поля

Оголосити електронний аукціон має право виключно організатор аукціону після затвердження стартових цін реалізації активу для всіх аукціонів.

Необхідно надати можливість Організатору заповнити поля, які вимагаються для публікації Першої процедури (перший англієць):

Назва поляfieldКоментар
Інформація про організатора аукціонуinitialProps.sellingEntityЯкщо якісь дані по організатору заповнюються автоматично або вручну Майданчиком, то це дозволяється
Номер лотуinitialProps.lotId
Назва аукціонуinitialProps.title
Опис аукціонуinitialProps.description
Наявність умов продажуinitialProps.saleConditions
Стартова ціна лотаinitialProps.value
На фінальну суму нараховується ПДВinitialProps.valueAddedTaxChargedОрганізатор може не передати це значення і тоді ЦБД автоматично проставить, що НЕ нараховується (false)
Розмір кроку аукціонуinitialProps.minimalStep

крок (мінімальний крок) аукціону, що встановлюється на рівні 1 відсотка стартової ціни активів для кожного аукціону;

ЦБД не валідує значення, яке передає Майданчик.


Майданчик може на своїй стороні розраховувати 1% від стратової автоматично без участі Організатора і передати в запиті розраховане значення в полі initialProps.minimalStep.amount

Це передане значення буде враховуватись для Першої процедури в ланцюжку.

Для другої і третьої процедур ЦБД розрахує значення автоматично, як 1% від Стартової відповідного аукціону

Деталі розрахунку описані в ТЗ до Ланцюжків санкційного

Розмір гарантійного внескуinitialProps.guarantee

гарантійний внесок - сума коштів

  • 5 відсотків стартової ціни, якщо вона дорівнює або перевищує 250 млн. гривень, або
  • 20 відсотків стартової ціни, якщо вона є меншою, ніж 250 млн. гривень),

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

Значення, яке вкаже Організатор, - на ЦБД не валідується.

Використовуватись буде тільки для першої Процедури.

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

Деталі розрахунку описані в ТЗ до Ланцюжків санкційного

Розмір реєстраційного внескуinitialProps.registrationFee

реєстраційний внесок - плата за реєстрацію заяви про участь в аукціоні, що вноситься особою, яка має намір взяти участь в аукціоні, на відповідний рахунок оператора, у розмірі

  • 0,2 мінімальної заробітної плати, встановленої станом на 1 січня поточного року, - для активів, стартова ціна яких є меншою, ніж 250 млн. гривень, та у розмірі
  • 10 мінімальних заробітних плат, встановлених станом на 1 січня поточного року, - для активів, стартова ціна яких дорівнює або перевищує 250 млн. гривень;

Поле не обовʼязкове для публікації Ланцюжка! Процедури можуть існувати без цього поля.

Майданчик може залишити право розрахувати значення автоматично без участі Організатора.

Значення, яке передається на ЦБД в запиті - не валідується.

Використовуватись буде для першої Процедури.

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

Банківські рахункиinitialProps.bankAccountsОбов'язково один банківський рахунок з типом guarantee і валютою UAH.
Склад лотаinitialProps.itemsВикористовується стандартна логіка (можна взяти із вже розробленої Процедури SAE)
Інформація про дати і періоди аукціонівextraSpecs.periods

Організатору необхідно заповнити образу декілька параметрів про Періоди. Для кожної із трьох процедур ланцюжка окремо:

Поле в інтерфейсіПоясненняВалідації
Дата початку першого аукціону (календарна дата)

Електронні аукціони з реалізації активів за методом підвищення ціни проводяться не раніше ніж через

  • 25 днів та не пізніше ніж 35 днів з дати опублікування відповідного оголошення (стосовно активу, стартова ціна якого становить менше 250 млн. гривень) або не раніше ніж через
  • 60, але не пізніше ніж через 90 днів з дати опублікування відповідного оголошення (стосовно активу, стартова ціна якого більше або дорівнює 250 млн. гривень).


На Майданчику, як мінімум, необхідно відобразити підказку Організатору, щоб він розумів які діапазони йому доступні.

На ЦБД буде валідація залежно від Стартової ціни


Ендпоінт допрацюємо пізніше і він буде повертати мін дату для першої процедури

Тривалість періоду експозиції лоту до другого аукціону (в днях)

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

  • на двадцятий та не пізніше ніж на тридцять п’ятий день з дати його оголошення (стосовно активу, стартова ціна якого становить менше 250 млн. гривень) або не раніше ніж
  • на тридцятий та не пізніше ніж на дев’яностий день з дати його оголошення (стосовно активу, стартова ціна якого більше або дорівнює 250 млн. гривень).


На Майданчику, як мінімум, необхідно відобразити підказку Організатору, щоб він розумів які діапазони йому доступні.

Наприклад, фронт аналізує Стартову ціну, яку ввів користувач в полі вище і відображає: "Для Стартової ціни менше 250 млн доступний період експозиції, який триває від 20 до 35 днів"

На ЦБД буде валідація залежно від Стартової ціни


Фактично, це кількість днів, яку буде тривати період експозиції (tenderPeriod) з моменту публікації другої процедури до Аукціону другої процедури.

Тривалість періоду експозиції лоту до третього аукціону (в днях)

Якщо повторний аукціон за методом підвищення ціни із зниженням стартової ціни на 50 відсотків визнаний таким, що не відбувся, електронна торгова система автоматично оголошує аукціон за методом покрокового зниження стартової ціни та подальшого подання цінових пропозицій за стартовою ціною, визначеною на рівні стартової ціни попереднього аукціону, який проводиться у строки, визначені в пункті 70 цього Порядку (це пункт вище)


На Майданчику, як мінімум, необхідно відобразити підказку Організатору, щоб він розумів які діапазони йому доступні.

Наприклад, фронт аналізує Стартову ціну, яку ввів користувач в полі вище і відображає: "Для Стартової ціни менше 250 млн доступний період експозиції, який триває від 20 до 35 днів"

На ЦБД буде валідація залежно від Стартової ціни


Фактично, це кількість днів, яку буде тривати період експозиції (tenderPeriod) з моменту публікації третьої процедури до Аукціону третьої процедури.


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


Приклад для < 250млн, як це передавати в запиті:

"extraSpecs": [
	{
		"periods": [
			{
				"periodName": "auctionPeriod",
				"startDate": "2026-03-20T10:00:00.000000Z"
			}
		]
	},
	{
		"periods": [
			{
				"periodName": "tenderPeriod",
				"duration": [
					{
						"unit": "c_day",
						"quantity": 25
					}
				]
			}
		]
	},
	{
		"periods": [
			{
				"periodName": "tenderPeriod",
				"duration": [
					{
						"unit": "c_day",
						"quantity": 35
					}
				]
			}
		],
		"dutchStep": {
			"dutchStepQuantity": 99
		}
	}
]
 Крок голландського раундуextraSpecs.dutchStep

Кількість кроків в голландському аукціоні, який авто-створюється на ЦБД третім в ланцюжку

Загальна кількість кроків, на які знижується стартова ціна на аукціоні за методом покрокового зниження стартової ціни та подальшого подання цінових пропозицій, - становить 99 кроків.

ЦБД прийме будь-яке значення.

Згідно постанови потрібно передавати 99 кроків.

В Прикладі вище останнім параметром приклад для dutchStep


Поля можуть передзаповнюватись представниками Майданчика, автоматично підтягуватись із кабінету Організатора, розраховуватись в якості допомоги Організатору.

На інтерфейсі Майданчика їх можна структурувати та розмістити поля для вводу логічно для зручності Організатора.

Основне - щоб в запиті на публікацію обʼєкта ЦБД були передані всі обовʼязкові поля вказані вище в таблиці

Не обовʼязкові поля

Назва поляfieldКоментар
Документи аукціону та пов'язані додаткиinitialProps.documents

Використовується стандартна логіка

Обовʼязкові документи для публікації ланцюжка відсутні. Описано в ТЗ

Мінімальна кількість заявinitialProps.minNumberOfQualifiedBids

Поле не обовʼязкове для заповнення

Організатор може передати явно 1 або 2 за необхідності

Якщо не заповнює, то ЦБД автоматично проставить 1

Порядок ознайомлення з майном, час і місце проведення огляду об’єктаinitialProps.accessDetails
Додаткові відомостіinitialProps.x_additionalInformation

Технічні поля, які необхідно передати в запиті "невидимо" для Організатора

НазваfieldКоментар
МетодpipelineMethod

Необхідно передати

"pipelineMethod": "sanctionAuctionChain"

Авто-створення першої процедури в ланцюжку

Коли Організатор заповнив всі обовʼязкові поля і Опублікував "ланцюжок", протягом 5-ти хвилин буде автоматично створено першу процедуру.

Власником (owner) обʼєкта стає Майданчик, який опублікував ланцюжок.

Редагування полів, які заповнив Організатор в "ланцюжку", до створення першої процедури - неможливо.

Майданчик має реалізувати логіку, яка буде окремим запитом, з використанням токена створеного ланцюжка, забрати id і токен автоматично створеної Процедури.

Можна робити перший запит через 10 секунд після публікації "ланцюжка". Якщо повернувся пустий масив[], то повторний запит через 30 секунд і далі з інтервалом в 1 хв.

Як варіант, отримання токену не автоматизовувати, а надати можливість Організатору отримувати по кнопці і переходити на Аукціон.

Можна завʼязатися на Mirror і "відловлювати" обʼєкт там. Фільтр - по полю "owner".

Ця реалізація на розсуд Майданчика, тут описані лише можливі варіанти.

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

  • перегляду процедури

  • редагування процедури

відповідно до стандартних правил роботи з процедурами.

Процедура нічим не відрізняється від стандартної процедури Prozorro.Sale.

Приклад запиту для отримання id і токену процедури:

 {{baseUrl}}/api/jobber/sanctionedAuctionChain/jsc/{{object_id}}/produced_entities?acc_token={{object_acc_token}}

Отримавши id і токен першої створеної процедури необхідно надати можливість Організатору переглянути обʼєкт.

Організатор має можливість редагувати поля процедури згідно стандартних правил, які описані в ТЗ по процедурі

Відбувається стандартна робота з процедурою, яка не відрізняється від існуючого процесу.

Особливості

Майданчик повинен забезпечити можливість Організатору переглянути інформацію про заплановані наступні аукціони.

Майданчик повинен відображати про наступні аукціони:

Технічно можна отримати цю інформацію з запиту до обʼєкта JSC в полі _specs. Деталі тут в ТЗ

Спосіб відображення визначається Майданчиком.

З моменту створення першої процедури "ланцюжок" набуває статусу active.

Редагування параметрів ланцюжка

Після створення першої процедури Майданчик повинен забезпечити можливість редагування Організатором:

Редагування можливе лише до створення відповідної процедури.

Інші поля JSC редагуванню не підлягають

Авто-створення другої  процедури в ланцюжку

Якщо перша процедура в ланцюжку отримала статус unsuccessful, то протягом 5 хвилин створюється друга процедура, в яку копіюються значення полів із першої процедури, а також встановлюється дата auctionPeriod.startDate відповідно до періода експозиції, який задав Організатор при публікації "ланцюжка"

Обʼєкт "ланцюжка" не змінює статус і залишаєтсья у статусі active

Деталі і приклади розрахунку стартової ціни описані в розділі "Поля що розраховуються автоматично при створенні другої і третьої процедури"

Такі поля, як:

Інформація про організатора аукціонуsellingEntity
Номер лотуlotId
Назва аукціонуtitle
Опис аукціонуdescription
Наявність умов продажуsaleConditions
Стартова ціна лотаvalue
На фінальну суму нараховується ПДВvalueAddedTaxCharged
Розмір кроку аукціонуminimalStep
Розмір гарантійного внескуguarantee
Розмір реєстраційного внескуregistrationFee
Банківські рахункиbankAccounts
Склад лотаitems
Документи аукціону та пов'язані додаткиdocuments
Мінімальна кількість заявminNumberOfQualifiedBids
Порядок ознайомлення з майном, час і місце проведення огляду об’єктаaccessDetails
Додаткові відомостіx_additionalInformation

автоматично скопіюються в другу процедуру із першої процедури! (не з "ланцюжка"!)

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

Авто-створення третьої процедури в ланцюжку

Якщо друга процедура в ланцюжку отримала статус unsuccessful, то протягом 5 хвилин створюється третя процедура, в яку копіюються значення полів із другої процедури, а також встановлюється дата auctionPeriod.startDate відповідно до періода експозиції, який задав Організатор при публікації "ланцюжка"

Обʼєкт "ланцюжка" не змінює статус і залишаєтсья у статусі active

Деталі і приклади розрахунку стартової ціни описані в розділі "Поля що розраховуються автоматично при створенні другої і третьої процедури"

Копіювання даних між процедурами

Поля копіюються з попередньої процедури, не з JSC.

Це означає, що якщо Організатор редагував першу процедуру, то друга процедура використовує відредаговані значення.

Поведінка інтерфейсу (обовʼязкова функціональність)

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