Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Code Block
SACJSC (master object)
   ├── Procedure #1 (англійський)
   ├── Procedure #2 (-50% від стартової)
   ├── Procedure #3 (голландський з -50% від першого)
   └── Procedure status controller

...

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


Info

Реалізація найбільше схожа на Інформаційні Повідомлення (announcement), які використовуються для Приватизаційних процедур

Бізнес назва - Процес реалізації санкційного активу


Посилання

Постанова

Вимоги до Майданчиків

ТЗ Процедури SAE

ТЗ Процедури SAD

Глоссарій

ТермінПояснення
Ланцюжок

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

Ланцюжок створюється Організатором як первинний об’єкт процесу реалізації активу та містить:

  • всі вихідні дані, необхідні для створення процедур
  • автоматично створює до трьох процедур продажу активу
  • зберігає ідентифікатори всіх процедур, що належать цьому процесу
  • керує логікою створення наступної процедури у випадку неуспішності попередньої
  • має власний життєвий цикл та статус (pending, active, sold, dissolved)

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

Master-об’єкт

це основна сутність, яка:

  • містить всі дані процесу

  • управляє створенням дочірніх процедур

  • зберігає зв’язок між процедурами

У цьому ТЗ master-об’єктом є SACJSC.

Автоматично створена процедураце процедура, створена ЦБД без участі Організатора на основі правил Ланцюжка.
Попередня процедура

це процедура, на основі якої була створена наступна процедура в Ланцюжку.

В розрізі данного ТЗ "Попередня процедура" може бути лише процедурою цього самого одного ланцюжка і вона не може бути створена раніше до ланцюжка.

Стартова ціна

це початкова ціна продажу активу для конкретної процедури.

Особливості:

  • задається Організатором для першої процедури

  • для другої процедури автоматично зменшується на 50%

  • для третьої процедури використовується стартова ціна другої процедури

Розрахунок і округлення виконуються автоматично ЦБД.

Гарантійний внесок

це сума коштів, яку учасник повинен сплатити для участі в аукціоні.

Розмір:

  • 5% стартової ціни, якщо стартова ціна ≥ 250 млн грн;

  • 20% стартової ціни, якщо стартова ціна < 250 млн грн.

Гарантійний внесок:

  • задається для першої процедури;

  • для наступних процедур розраховується автоматично

Реєстраційний внесок

це плата за реєстрацію заяви на участь в аукціоні.

Цей внесок:

  • передається Майданчиком в запиті на публікації обʼєкта SACJSC

  • не валідується на ЦБД (окрім перевірки, що значення > 0)

...

Створення та робота із ланцюжком:

  • При створенні ланцюжка немає НЕМАЄ повʼязаного обʼєкта типу "Обʼєкт реєстру". "Ланцюжок" - перший обʼєкт, який створюється на ЦБД в процесі реалізації Санкційного майна
  • При створенні ланцюжка Організатор має вказати:
    • Дату аукціону для першої процедури
    • Період експозиції (tenderPeriod) для другої і третьої процедури в ланцюжку (присутні валідації, які детально описані нижче)
  • При створенні ланцюжка Організатор має вказати:
    • Стартову ціну реалізації для першого аукціону, а для другого і третього ЦБД розрахує автоматично згідно описаних нижче правил
    • розмір Гарантійного внеску для першого аукціону, а для другого і третього ЦБД розрахує автоматично згідно описаних нижче правил
    • Мінімальний крок для першого аукціону, а для другого і третього ЦБД розрахує як 1% від стартової ціни відповідного аукціону
  • В ланцюжку зберігаються ідентифікатори Процедур, які були автоматично створені цим ланцюжком (в producedEntities)
  • Лацюжок складається максимум з трьох процедур, де кожна наступна процедура створюється автоматично за умови, що попередня процедура "неуспішна" (unsuccessful з будь-якої причини)
  • Якщо будь-яка процедура в Ланцюжку успішна - ланцюжок не продовжується.

Обʼєкт SanctionedAuctionChain

...

draw.io Diagram
bordertrue
diagramNameSAC_statuses
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth347
revision45


techУКР назваАНГЛ назваПерехід зЗа умовиКоментар
pendingОпублікованоCreated-перший статус, який отримує обʼєкт при публікації

Статус, в якому перебуває обʼєкт до моменту створення першої процедури в ланцюжку

Протягом 5 хвилин має автоматично опублікуватися Перша процедура SAE

activeПроходить аукціонAuctionpendingСтворено першу процедуру в ланцюжкуОбʼєкт має цей статус з моменту створення першої процедури в ланцюжку і до моменту, поки:
  • третя в ланцюжку процедура не набуває термінального статусу (procedure.status: complete OR unsuccessful)
    АБО
  • будь-яка процедура в цьому ланцюжку набуває статусу cancelled
soldПроданоSoldactive

Будь-яка процедура в цьому ланцюжку набуває статусу procedure.status: complete

Термінальний статус
dissolvedНе проданоDissolved active

Будь-яка процедура в цьому ланцюжку набуває статусу procedure.status: cancelled

Третя в ланцюжку процедура набуває статусу procedure.status: unsuccessful

Термінальний статус

...

Періоди відсутні

Документи обʼєкта

Відсутні обовʼязкові документи. "Ланцюжок" можна створити з пустим масивом documents[]

При публікації обʼєкта "ланцюжка" необхідно передати Організатор за потреби додає документи першої Процедури ланцюжка. Тобто, при авто-публікації процедури всі документи будуть скопійовані в Першу процедуру.

В другу і третю процедури модель documents[] копіюється із попередньої процедури цього ланцюжка . (не із JSC, а саме з попередньої процедури)

Перелік документів описано в ТЗ до Процедури ТУТ

documentTypeНазва УКРНазва АНГЛОписОбовʼязковістьПублічність

illustration

Ілюстрація

IllustrationЗображення, що можуть додаватися Організатором до оголошення

ні

так

technicalSpecifications

Копії документів та матеріалів на лотTechnical specificationsДетальна інформація про лотнітак

evaluationCriteria

Кваліфікаційні вимогиEvaluation criteriaІнформація про те, як будуть оцінюватись цінові пропозиції учасниківнітак

contractProforma

Типова форма договоруContract proformaШаблон договору купівлі-продажунітак

x_presentation

ПрезентаціяPresentationПрезентаціянітак

clarifications

Погодження змін до опису лоту. Опис причин редагування

ClarificationsДокумент не потрібно вносити до списку документів при створенні аукціону. Має бути доступний для завантаження протягом rectificationPeriod.ні (при редагуванні організатор може опціонально завантажити даний документ)так
digitalSignatureЦифровий підписDigital signature

Цифровий підпис

(

digitalSignatureЦифровий підписDigital signature

Цифровий підпис

(Особливості роботи із цифровим підписом)

нітак

Логіка роботи Ланцюжка

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

Організатор публікує обʼєкт "Ланцюжка", в якому передає:

  • всі поля, які потрібні для публікації англійської і голландської (initialProps)
    • включно зі Стартовою ціною та розміром Гарантійного внеску для першої процедури
  • період експозиції (в днях) для другої процедури (extraSpecs[1].periods)
  • період експозиції (в днях) для третьої процедури (extraSpecs[2].periods)
Info

Повний перелік полів з вказанням із обовʼязковості, назв і логіки нижче в таблиці

Обʼєкт створюється у статусі pending

В цьому статусі редагування полів "ланцюжка" недоступне.

Публікація першої процедури

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

Овнером процедури стає Майдачник, який опублікував обʼєкт ланцюжка.

Майданчик-овнер може отримати токен від автоматично створеної процедури за по endpoint: 

...

...

 {{baseUrl}}/api/jobber/sanctionedAuctionChain/

...

jsc/{{object_id}}/produced_entities?acc_token=

...

{{object_acc_token}}

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

В цьому статусі "ланцюжка" Організатор може редагувати поля:

...

Організатор може редагувати поля створеної процедури протягом 48 годин. Зміни потрібно робити безпосередньо в створеній процедурі, а не в обʼєкті SACJSC. В SAC JSC редагуються тільки два вищевказані параметри.

Редагування Процедури згідно ТЗ процедури ТУТ (окрім поля tenderAttemps!)Вся логіка процедури залишається без змін. Немає різниці чи Процедура була створена руками до запуску "ланцюжків" чи створена автоматично "ланцюжком".

Публікація другої процедури

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

...

При авто-створенні другої процедури у ланцюжку ЦБД має автоматично для другої процедури проставити tenderAttempt: 2 та у полі previousAuctionId проставити ID першої процедури із ланцюжка.

Публікація третьої процедури

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

...

Info
titleПриклад

Організатор створює ланцюжок, де передає:

  • Стартова ціна = 100 000 грн
  • Гарантійний внесок = 10 000 грн (згідно нормативки має бути 20 000 грн, але ЦБД не валідує і пропустить такий обʼєкт)
  • Мінімальний крок = 1200 грн (згідно нормативки має бути 1% від Стартової, але ЦБД не валідує і пропустить такий обʼєкт)

Протягом 5 хвилин створилася перша процедура SAE.

Організатор протягом 48 годин редагує в Процедурі SAE:

  • Стартова ціна = 80 000 грн

В обʼєкті SAC JSC залишиться першочергова Стартова ціна 100 000 грн, а в першіій процедурі SAE Організатор змінив на 80 000 грн.

За результатами - Перша процедура SAE НЕ успішна і отримує статус unsuccessful.

ЦБД протягом 5 хвилин, після отримання Першою процедурою статуса unsuccessful автоматично створює другу процедуру SAE

ЦБД автоматично розраховує:

  • Стартова ціна = 40 000 грн (зверніть увагу, що взяли 50% від останньої ціни, а не від першочергової)
  • Гарантійний внесок = Гарантійний внесок = 20% від Стартової ціни = 8 000 грн
  • Мінімальний крок = 1% від Стартової ціни = 400 грн

Організатор протягом 48 годин редагує в другій Процедурі SAE:

  • Стартова ціна = 38 000 грн
  • Гарантійний внесок = 7 000 грн

В обʼєкті SAC JSC залишиться першочергова Стартова ціна 100 000 грн і першочерговий Гарантійний внесок 10 000 грн.

За результатами - Друга процедура SAE НЕ успішна і отримує статус unsuccessful.

ЦБД протягом 5 хвилин, після отримання Другою процедурою статуса unsuccessful автоматично створює третью процедуру SAD

ЦБД автоматично розраховує:

  • Стартова ціна = 38 000 грн
  • Гарантійний внесок = 20% від Стартової ціни = 7 600 грн
  • Мінімальний крок = 1% від Стартової ціни = 380 грн

Організатор протягом 48 годин від моменту створення процедури може редагувати Стартову ціну, Гарантійку, Мінімальний крок і інші поля згідно ТЗ процедури.

Скасування

Скасувати "ланцюжок" окремим запитом неможливо.

При скасуванні будь-якої процедури ланцюжка - автоматично скасовується ланцюжок.


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

Відповідно до пунктів 70 та 71 Порядку реалізації санкційних активів, ЦБД автоматично створює наступні процедури у разі, якщо попередня процедура визнана такою, що не відбулася.

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

Стартова ціна (initialProps.value)

Перша процедура

При публікації об’єкта SAC JSC Організатор зобов’язаний передати стартову ціну активу у полі initialProps.value

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

Друга процедура

У разі якщо перша процедура набуває статусу unsuccessful, ЦБД автоматично створює другу процедуру протягом 5 хвилин.

Стартова ціна другої процедури розраховується за формулою:

...

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

Третя процедура

У разі якщо друга процедура набуває статусу unsuccessful, ЦБД автоматично створює третю процедуру протягом 5 хвилин.

Стартова ціна третьої процедури встановлюється рівною стартовій ціні другої процедури:

...

Розрахунок виконується ЦБД автоматично без участі Організатора.

Anchor
guarantee
guarantee
Гарантійний внесок

...

Info
titleПостанова

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

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

Перша процедура

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

Перша процедура

Розмір гарантійного внеску для першої процедури автоматично втановлюється той, який Організатор вказав при публікації обʼєкта SACJSC

Друга та третя процедура

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

...

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

Номер спроби продажу (tenderAttempts)

При публікації обʼєкта SAC JSC Організатор НЕ передає параметр tenderAttempts

...

3-й процедурі: tenderAttempts = 3 та у полі previousAuctionId значення auctionId від другої процедури цього ланцюжка

Скасування

Скасувати "ланцюжок" окремим запитом неможливо.

При скасуванні будь-якої процедури ланцюжка - автоматично скасовується ланцюжок.

...

Anchor
minimalStep
minimalStep
Мінімальний крок аукціону

При публікації обʼєкта JSC Організатор передає параметр minimalStep.amount та minimalStep.currency

При автоматичній публікації першої процедури ЦБД встановлює значення поля minimalStep.amount та minimalStep.currency точно таким, як вказав Організатор при публікації JSC

При автоматичній публікації другої процедури ЦБД розраховує значення поля minimalStep.amount, як 1% від Стартової ціни другої процедури (minimalStep.amount == value.amount * 0,01)

minimalStep.currency копіюється із першої процедури.

При автоматичній публікації третьої процедури ЦБД розраховує значення поля minimalStep.amount, як 1% від Стартової ціни третьої процедури (minimalStep.amount == value.amount * 0,01)

minimalStep.currency копіюється із другої процедури.


Anchor
sac_model
sac_model
Структура даних обʼєкта JSC

Field nameRequired for publishingTypereadOnly

Field nameRequired for publishingTypereadOnly
x-legalNameUax-legalNameEncomment
1owner-stringtrueІдентифікатор майданчикаBroker Name
2ownerToken-string($uuid)true

x-default: hex
3_id-string

trueВнутрішній ідентифікаторIDx-default: object_id
x-serialize_when_none: false

x-format: object-id
4datePublished-string($date-time)
trueДата публікаціїPublished datex-default: now
5dateModified-string($date-time)
trueОстання дата зміниDate modified
6objectId-string
trueІдентифікатор ланцюжкаChain IDexample:
SAC001
JSC001-UA-20260217-12345
7status-stringtrueСтатус процедуриProcedure status

enum:

  • pending
  • active
  • sold
  • dissolved
8pipelineMethod+
stringfalseТипChain type

enum:

  • sanctionedAuctionChain
  • sanctionedAuctionChain-fast
  • sanctionedAuctionChain-manual
  • sanctionedAuctionChain-ultrafast
  • sanctionedAuctionChain-fast-prod
  • sanctionedAuctionChain-fast-prod-fast-first
9initialProps+objectfalseЗагальна інформація про процедуриProcedure informantion


10extraSpecs+list[ ] of objectsfalseІнформація для базових специфікаційBase informationminItems: 3
11producedEntities-list[ ] of objectstrueСтворені обʼєктиProduced entitiesbase.ProducedEntity{
type

string
readOnly: true

default: procedure

Тип зв'язку

_idstring
readOnly: true

x-legalNameUa: Внутрішній ідентифікатор створеної сутності

x-legalNameEn: ID

x-default: object_id

x-serialize_when_none: false

x-format: object-id
objectIdstring
readOnly: true

example: SAE001-UA-20260320-12345

x-legalNameUa: идентифікатор створеної сутності

x-legalNameEn: produced entity id

Людиночитаємий идентифікатор створеної сутності

ownerTokenstring($uuid)
readOnly: true

x-default: hex

Token used for get access to produced entity

urlstring
readOnly: true

Direct url to produced entity.


12_
meta
specs-
    Використовується стандартна логіка
objecttrueРозрахункові даніCalculated data

 

13
additionalInformation
_meta- object
 
true  

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

14
metaInfo
additionalInformation- object
 
true  

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

...

15activeScenario-stringtrue  

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

Відображається поточний стан JSC

16archiveId-stringtrue  

x-format: object-id
x-serialize_when_none: false

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

17_protected-booleantrue  

default: false

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

18_version-integer($int64)true  

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

19timer
string($date-time)true  

x-format: timer
x-serialize_when_none: false

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

20periods-

object

base.Period

trueЧас до створення першої процедуриFirst procedure creation time
тех назваRequiredTypeБізнес назва УКРБізнес назва АНГЛ
rectificationPeriod
startDate-string($date-time)Дата та час початкуStart time
endDate-string($date-time)Дата та час завершенняEnd time

 


Anchor
initialProps
initialProps
initialProps


field nameRequired for publishingtypereadOnlyx-legalNameUax-legalNameEncomment
1sellingEntity +base.SellingEntity falseІнформація про Організатора аукціонуOrganizer information

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

field namerequired for publishingtypereadOnlyx-legalNameUax-legalNameEncomment1sellingEntity base.SellingEntity Інформація про Організатора аукціонуOrganizer information

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

Очікуємо цей параметр в запиті на публікації SAC

При авто-створенні першої процедури копіюємо значення в неї.

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

2title+base.MultiLangfalseНазва аукціонуAuction title

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

Очікуємо цей параметр в запиті на публікації SAC

При авто-створенні першої процедури копіюємо значення в неї.

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

3description+base.MultiLangfalseОпис аукціонуAuction description

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

Очікуємо цей параметр в запиті на публікації SAC

При авто-створенні першої процедури копіюємо значення в неї.

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

4x_documentRequirements-base.MultiLangfalseПерелік та вимоги до оформлення документівList and requirements of registration documents

Очікуємо цей параметр в запиті на публікації SAC

При авто-створенні першої процедури копіюємо значення в неї.

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

5x_additionalInformation-base.MultiLangfalseДодаткові відомостіOther requirements and additional information

Очікуємо цей параметр в запиті на публікації

SAC

JSC

При авто-створенні першої процедури копіюємо значення в неї.

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

6
2
saleCondition
lotId+
stringfalse
Наявність умов продажуSale conditions

enum:

Номер лотаLot number
  • yes
  • no

    Очікуємо цей параметр в запиті на публікації

    SAC

    JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    7
    3
    value
    title+base.
    ValueWithTax
    MultiLangfalse
    Стартова ціна
    Назва аукціонуAuction title
    Start price

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

    nametypereadOnly

    Comment

    currency *string
    false

    default: UAH
    x-legalNameUa: Валюта

    x-legalNameEn: Currency

    Enum:
    [ UAH, USD, EUR ]

    amount *number($float)falseexample: 10
    minimum: 2

    exclusiveMinimum: true

    x-format: decimal-float

    x-legalNameUa: Сума

    x-legalNameEn: Amount

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    4description+base.MultiLangfalseОпис аукціонуAuction description

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

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    5saleCondition+stringfalseНаявність умов продажуSale conditions

    enum:

    • yes
    • no
    valueAddedTaxIncludedbooleanfalsedefault: true
    x-legalNameUa: Податок

    x-legalNameEn: Tax

    Очікуємо цей параметр в запиті на публікації

    SAC

    JSC

    При авто-створенні першої процедури копіюємо значення в неї.

    При авто-створенні другої та\або третьої процедури в ланцюжку

    відбувається авторозрахунок згідно правил8valueAddedTaxCharged-booleanfalseНа фінальну суму нараховується ПДВValue added tax charged

    default: false

    При авто-створенні першої процедури копіюємо значення в неї.

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

    копіюємо це значення із попередньої процедури ланцюжка

    9
    6
    guarantee
    value+base.
    Valuefield
    ValueWithTaxfalse
    Розмір гарантійного внескуGuarantee Fee
    Стартова ціна лотаStart price

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

    nametypereadOnly
    comment

    Comment

    currency *string
    false

    default: UAH
    x-legalNameUa: Валюта

    x-legalNameEn: Currency

    Enum:
    [ UAH, USD, EUR ]

    amount *number($float)falseexample: 10
    minimum:
    0
    2
    exclusiveMinimum: true

    x-format: decimal-float

    x-legalNameUa: Сума

    x-legalNameEn: Amount

    При авто-створенні першої процедури копіюємо значення в неї.

    valueAddedTaxIncludedbooleanfalsedefault: true
    x-legalNameUa: Податок

    x-legalNameEn: Tax

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

    При авто-створенні другої та\або третьої процедури в ланцюжку відбувається авторозрахунок згідно правил

    info
    7
    titleгарантійний внесок
    valueAddedTaxCharged
    Постанова
    -
    сума коштів:
    • 5 % стартової ціни, якщо вона дорівнює або перевищує 250 млн. гривень
    • 20 % стартової ціни, якщо вона є меншою, ніж 250 млн. гривень
    10registrationFee
    booleanfalseНа фінальну суму нараховується ПДВValue added tax charged

    default: false

    При авто-створенні першої процедури копіюємо значення в неї.

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

    8minimalStep
    +base.ValuefalseРозмір
    реєстраційного внескуfield nametypereadOnlycomment
    кроку аукціонуMinimal step

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

    • Для Першої Процедури - значення, що вказав Організатор при створенні ланцюжка у initialProps.minimalStep
    • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
    • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.

    Описано ТУТ

    9guarantee+

    base.Value

    falseРозмір гарантійного внескуGuarantee Fee


    field nametypereadOnlycomment
    currency *string
    false

    default: UAH
    x-legalNameUa: Валюта

    x-legalNameEn

    currency *string
    falsedefault: UAH
    x-legalNameUa: Валюта

    x-legalNameEn

    : Currency

    Enum:
    [ UAH, USD, EUR ]

    amount *number($float)falseexample: 10
    minimum:
     0

    При авто-створенні першої процедури копіюємо значення в неї.

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

    11minNumberOfQualifiedBids-integer($int64)falseМінімальна кількість заявMinimal number of bidsdefault: 1
    minimum: 1

    maximum: 2

    При публікації обʼєкта можна не передавати. ЦБД автоматично згенерує == 1.

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

    При авто-створенні першої процедури копіюємо значення в неї.

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

    12minimalStep+base.ValuefalseРозмір кроку аукціонуMinimal step

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

    При авто-створенні першої процедури копіюємо значення в неї.

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

    13accessDetails-base.MultiLangfalseПорядок ознайомлення з майном, час і місце проведення огляду об’єктаAuction access details

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

    Очікуємо цей параметр в запиті на публікації SAC

    0
    exclusiveMinimum: true

    x-format: decimal-float

    x-legalNameUa: Сума

    x-legalNameEn: Amount
    Info
    titleПостанова

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

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

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

    Тільки, що значення >0

    При авто-створенні першої процедури копіюємо значення в неї.

    При авто-створенні другої та\або третьої процедури в ланцюжку відбувається авторозрахунок згідно правил

    Info
    titleПостанова

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

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

    Логіка розрахунку описана ТУТ

    10registrationFee-base.ValuefalseРозмір реєстраційного внеску
    field nametypereadOnlycomment
    currency *string
    false

    default: UAH
    x-legalNameUa: Валюта

    x-legalNameEn: Currency

    Enum:
    [ UAH, USD, EUR ]

    amount *number($float)falseexample: 10
    minimum: 0

    exclusiveMinimum: true

    x-format: decimal-float

    x-legalNameUa: Сума

    x-legalNameEn: Amount


    Info
    titleПостанова

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

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

    ЦБД не перевіряє відповідність registrationFee нормативному значенню. Відповідальність за коректність лежить на майданчику.

    Значення >0

    При авто-створенні першої процедури копіюємо значення в неї.

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

    14
    11bankAccounts+sanctionedAssets.BankAccountsByTypefalseБанківські рахунки
    організатора
    Bank accounts

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

    Обов'язково один банківський рахунок з типом guarantee і валютою UAH. Рахунків для кожного типу в UAH/USD/EUR може бути безліч. 

    field nametypecomment
    accountTypestring

    x-dictionaries: List [ "accountType" ]

    Enum:
    [ registrationFee, guarantee, other, payment ]

    accountscommercialSell.BankAccountWithCurrencyx-baseClass: "prozorro_sale.procedure.models.base.BankAccount"

    Очікуємо цей параметр в запиті на публікації

    SAC

    JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    15
    12
    tenderAttempts
     items+
    integer($int64)
    trueЛот виставляєтьсяAttempt number

    Не повинно відображатися в моделі SAC як окреме поле, але має авто-розраховуватись і відображатись в Процедурі

    При публікації SAC не очікуємо в запиті поля tenderAttempts.

    При авто-публікації першої процедури ЦБД має проставити:

    1-й процедурі: tenderAttempts = 1

    2-й процедурі: tenderAttempts = 2 та у полі previousAuctionId значення auctionId від першої процедури цього ланцюжка

    3-й процедурі: tenderAttempts = 3 та у полі previousAuctionId значення auctionId від другої процедури цього ланцюжка

    16lotId+
    stringfalseНомер лотаLot number
    sanctionedAssets.ItemfalseСклад лотаLot composition

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

    x-format: list-object
    minItems: 1

    default: List []

    При авто-створенні другої та\або третьої процедури в ланцюжку копіюємо items із попередньої процедури ланцюжка

    13documents- base.DocumentsfalseВсі документи аукціону та пов'язані додаткиDocuments

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

    x-format: list-object
    default: List []

    Очікуємо цей параметр в запиті на публікації SAC

    При авто-створенні першої процедури копіюємо значення в неї.

    При авто-створенні другої та\або третьої процедури в ланцюжку копіюємо

    це значення

    documents із попередньої процедури ланцюжка

    17
    14
     items
    minNumberOfQualifiedBids
     +
    -integer($int64)
    sanctionedAssets.Item
    false
    Склад лотаLot composition

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

    x-format: list-object
    Мінімальна кількість заявMinimal number of bidsdefault: 1
    minimum

    minItems
    : 1
    default
    maximum:
     List []18documents + base.DocumentsfalseВсі документи аукціону та пов'язані додаткиDocuments

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

    x-format: list-object
    default: List []

    ...

    enum:

    • auctionPeriod
    • tenderPeriod

    ...

    • b_day
    • c_day
    • hour
    • minute
    • second

    ...

    При публікації "ланцюжка", ЦБД очікує, що в extraSpecs обовʼязково буде передано обʼєкт для кожної процедури.

    Тобто, всього три обʼєкта в extraSpecs, бо процедур в ланцюжку три.

    Валідації

    На рівні ЦБД необхідно встановити валідації для pipelineMethod: sanctionedAuctionChain:

    Якщо tenderAttempts = 1

    ТА 
    value.amount < 250 000 000 (двісті п'ятдесят мільйонів)
    ТО 
    ЦБД має приймати тільки значення для auctionPeriod.startDate в діапазоні  currentDate+25 c_day <= auctionPeriod.startDate <=  currentDate+35 c_day

    ЦБД повинна відхилити запит, якщо auctionPeriod.startDate знаходиться поза цим діапазоном.

    Якщо tenderAttempts = 1

    ТА 

    value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)
    ТО
    currentDate + 60 c_day <= auctionPeriod.startDate <= currentDate + 90 c_day

    Якщо tenderAttempts > 1
    ТА
    value.amount < 250 000 000 (двісті п'ятдесят мільйонів)
    ТО 
    Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 20 КД, максимальна - на 35 КД

    Якщо tenderAttempts > 1
    ТА 
    value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)
    ТО
    Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 30 КД, максимальна - на 90 КД

    Приклад:

    Code Block
    "extraSpecs": [
    	{
    		"periods": [
    			{
    				"periodName": "auctionPeriod",
    				"startDate": "2026-04-20T10:00:00.000000Z"
    			}
    		]
    	},
    	{
    		"periods": [
    			{
    				"periodName": "tenderPeriod",
    				"duration": [
    					{
    						"unit": "b_day",
    						"quantity": 25
    					}
    				]
    			}
    		]
    	},
    	{
    		"periods": [
    			{
    				"periodName": "tenderPeriod",
    				"duration": [
    					{
    						"unit": "b_day",
    						"quantity": 25
    					}
    				]
    			}
    		],
    		"dutchStep": {
    			"dutchStepQuantity": 99
    		}
    	}
    ]
     2

    При публікації обʼєкта можна не передавати. ЦБД автоматично згенерує == 1.

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

    При авто-створенні першої процедури копіюємо значення в неї.

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

    15accessDetails-base.MultiLangfalseПорядок ознайомлення з майном, час і місце проведення огляду об’єктаAuction access details

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

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    16x_documentRequirements-base.MultiLangfalseПерелік та вимоги до оформлення документівList and requirements of registration documents

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    17x_additionalInformation-base.MultiLangfalseДодаткові відомостіOther requirements and additional information

    Очікуємо цей параметр в запиті на публікації JSC

    При авто-створенні першої процедури копіюємо значення в неї.

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

    18tenderAttempts-integer($int64)
    trueЛот виставляєтьсяAttempt number

    Не повинно відображатися в моделі JSC як окреме поле, але має авто-розраховуватись і відображатись в Процедурі

    При публікації JSC не очікуємо в запиті поля tenderAttempts.

    При авто-публікації першої процедури ЦБД має проставити:

    1-й процедурі: tenderAttempts = 1

    2-й процедурі: tenderAttempts = 2 та у полі previousAuctionId значення auctionId від першої процедури цього ланцюжка

    3-й процедурі: tenderAttempts = 3 та у полі previousAuctionId значення auctionId від другої процедури цього ланцюжка

    Anchor
    extraSpecs
    extraSpecs
    extraSpecs[ ]

    field namerequired for publishingtypereadOnlyx-legalNameUax-legalNameEncomment
    periods+base.PeriodSpecfalseІнформація про періоди аукціонівPeriods info
    field nametypenamecomment
    periodNamestringx-legalNameUa: Назва періода
    x-legalNameEn: Period name

    enum:

    • auctionPeriod
    • tenderPeriod
    startDatestring($date-time)

    x-legalNameUa: Дата та час початку
    x-legalNameEn: Start date

    endDatestring($date-time)

    x-legalNameUa: Дата та час завершення
    x-legalNameEn: End date

    durationbase.Durationx-legalNameUa: Тривалість періоду
    x-legalNameEn: Period duration
    nametypecomment
    unitstringEnum:
    • b_day
    • c_day
    • hour
    • minute
    • second
    quantityinteger($int64)

    minimum: 1

    При публікації "ланцюжка", ЦБД очікує, що в extraSpecs обовʼязково буде передано обʼєкт для кожної процедури.

    Тобто, всього три обʼєкта в extraSpecs, бо процедур в ланцюжку три.

    Валідації

    На рівні ЦБД необхідно встановити валідації для pipelineMethod: sanctionedAuctionChain:

    Для першої процедури приймається значення:

    extraSpecs.[0].periods.periodName=="auctionPeriod"

    extraSpecs.[0].periods.startDate ==

    if value.amount < 250 000 000 (двісті п'ятдесят мільйонів)

    then 
    ЦБД має приймати тільки значення для extraSpecs.[0].periods[0].startDate в діапазоні  currentDate+25 c_day <= startDate <=  currentDate+35 c_day

    ЦБД повинна відхилити запит, якщо знчення extraSpecs.[0].periods[0].startDate, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

    then
    ЦБД має приймати тільки значення для auctionPeriod.startDate в діапазоні  currentDate+60 c_day <= startDate <=  currentDate+90 c_day

    ЦБД повинна відхилити запит, якщо знчення extraSpecs.[0].periods[0].startDate, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    При цьому дата початку аукціону не може припадати на святковий чи вихідний день! 

    Для другої процедури приймається значення:

    extraSpecs.[1].periods.periodName=="tenderPeriod"

    extraSpecs.[1].periods.duration ==

    if value.amount < 250 000 000 (двісті п'ятдесят мільйонів) ВАЖЛИВО! value.amount 2-ї процедури = value.amount із JSC*0,5 (тобто, 50% від стартової ціни, яку передає Організатор)

    then 
    ЦБД має приймати тільки значення для extraSpecs.[1].periods[0].duration в діапазоні  20 c_day <= duration <=  35 c_day

    ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

    then
    ЦБД має приймати тільки значення для extraSpecs.[1].periods[0].duration в діапазоні  30 c_day <= duration <=  90 c_day

    ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    При цьому дата початку аукціону не може припадати на святковий чи вихідний день! 

    Для третьої процедури приймається значення:

    extraSpecs.[2].periods.periodName=="tenderPeriod"

    extraSpecs.[2].periods.duration ==

    if value.amount < 250 000 000 (двісті п'ятдесят мільйонів) ВАЖЛИВО! value.amount 3-ї процедури = value.amount із JSC*0,5 (тобто, 50% від стартової ціни, яку передає Організатор)

    then 
    ЦБД має приймати тільки значення для extraSpecs.[2].periods[0].duration в діапазоні  20 c_day <= duration <=  35 c_day

    ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    else if value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)

    then
    ЦБД має приймати тільки значення для extraSpecs.[2].periods[0].duration в діапазоні  30 c_day <= duration <=  90 c_day

    ЦБД повинна відхилити запит, якщо знчення duration, яке передають в запиті на публікацію JSC знаходиться поза цим діапазоном.

    При цьому дата початку аукціону не може припадати на святковий чи вихідний день! 

    Note
    titleВАЖЛИВО

    tenderPeriod валідується тільки один рах при створенні і якщо Організатор редагує value.amount то tenderPeriod вже не перераховується і не валідується


    Приклад для value.amount < 250 000 000 (двісті п'ятдесят мільйонів):

    Code Block
    "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
    		}
    	}
    ]


    dutchStep+base.DutchStepfalseКрок голландського раундуDutch step

    Поля dutchStepPercent та dutchStepValue автогенеруються на рівні ЦБД, без можливості внесення змін Організатором
    Для поля dutchStepQuantity ЦБД формує дефолтне значення згідно процедури, Організатор має можливість змінити дефолтне значення.

    field nametypenamecomment
    dutchStepQuantity

    integer($int64)

    x-legalNameUa: Кількість кроків
    x-legalNameEn: Dutch steps quantity
    default: 99
    maximum: 99

    minimum: 1
    dutchStepPercent

    integer($int64)

    x-legalNameUa: Відсоток зниження, %
    x-legalNameEn: Percentage reduction, %
    default: 1
    readOnly: true
    dutchStepValuebase.Value

    x-legalNameUa: Розмір кроку голландського раунду, грн

    x-legalNameEn: Dutch step value

    автогеровано, розраховується як 1 % від стартової ціни

    currencystring
    default: UAH

    x-legalNameUa: Валюта

    x-legalNameEn: Currency
    Enum:
    enum: UAH, USD, EUR
    amountnumber($float)
    example: 10

    minimum: 0

    x-format: decimal-float

    x-legalNameUa: Сума

    x-legalNameEn: Amount
     

    Anchor
    _specs
    _specs
    _specs

    1. Коли тільки створено ланцюжок (status: pending), відповідь на запит має містити:

    • Кількість Процедур у ланцюжку - три;
    • Порядковий номер кожної процедури:
      • Для Першої Процедури tenderAttempts == 1
      • Для Другої Процедури tenderAttempts == 2
      • Для Третьої Процедури tenderAttempts == 3
    • Статус кожної Процедури - scheduled;
    • sellingMethod:
      • Перша Процедура - sanctionedAsset-english
      • Друга Процедура - sanctionedAsset-english
      • Третя Процедура - sanctionedAsset-dutch
    • Стартова ціна Об'єкта (value):
      • Перша Процедура - initialProps.value
      • Друга Процедура - initialProps.value *0.5
      • Третя Процедура - initialProps.value *0.5 
    • Крок аукціону (minimalStep):
      • Для Першої Процедури - значення, що вказав Організатор при створенні в  initialProps.minimalStep
      • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
      • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
    • Дата проведення аукціону (periods.periodName:auctionPeriod:startDate):
      • Для Першої Процедури це дата, яку вказав Організатор у полі extraSpecs.periods:"auctionPeriod".startDate при створенні ланцюжка
      • Для Другої і Третьої Процедури ця дата не визначена і поле виводити не потрібно.
    • Період між аукціонами (periods.periodName:"tenderPeriod".duration):
      • Для Першої Процедури - відсутній
      • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у extraSpecs.periods.periodName:"tenderPeriod".duration
    • Розмір гарантійного внеску (guarantee):
      • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
      • Для Другої і Третьої Процедури по формулі: initialProps.guarantee == розраховується по формулі, залежить від Стартової ціни. Формули ТУТ

    2. Коли створено Першу Процедуру (status: active), відповідь має містити:

    • Кількість Процедур у ланцюжку - три;
    • Порядковий номер кожної процедури (tenderAttempts):
      • Для Першої Процедури tenderAttempts == 1
      • Для Другої Процедури tenderAttempts == 2
      • Для Третьої Процедури tenderAttempts == 3
    • Статус Процедури (status):
      • Перша Процедура - active
      • Друга і Третя Процедура - scheduled
    • sellingMethod (sellingMethod):
      • Перша Процедура - sanctionedAsset-english
      • Друга Процедура - sanctionedAsset-english
      • Третя Процедура - sanctionedAsset-dutch
    • Стартова ціна Об'єкта (value):
      • Перша Процедура - initialProps.value
      • Друга Процедура - initialProps.value *0.5
      • Третя Процедура - initialProps.value *0.5 
    • Крок аукціону (minimalStep):
      • Для Першої Процедури - значення, що вказав Організатор при створенні ланцюжка у initialProps.minimalStep
      • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
      • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
    • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
      • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
      • Для Другої і Третьої Процедури ця дата не визначена і поле виводити не потрібно.
    • Період між аукціонами (periods.periodName:tenderPeriod.duration):
      • Для Першої Процедури - відсутній
      • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжку у tenderPeriodDuration
    • Розмір гарантійного внеску (guarantee):
      • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
      • Для Другої і Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ
    • auctionID створеної Першої Процедури (relatedEntities)
      • Для першої Процедури вказано
      • Для другої і третьої - ні

    3. Коли створено Другу Процедуру (status: active), відповідь має містити:

    • Кількість Процедур у ланцюжку - три;
    • Порядковий номер кожної процедури (tenderAttempts):
      • Для Першої Процедури tenderAttempts == 1
      • Для Другої Процедури tenderAttempts == 2
      • Для Третьої Процедури tenderAttempts == 3
    • Статус Процедури (status):
      • Перша Процедура - unsuccessful
      • Друга Процедура - active
      • Третя Процедура - scheduled
    • sellingMethod (sellingMethod):
      • Перша Процедура - sanctionedAsset-english
      • Друга Процедура - sanctionedAsset-english
      • Третя Процедура - sanctionedAsset-dutch
    • Стартова ціна Об'єкта (value):
      • Перша Процедура - initialProps.value
      • Друга Процедура - initialProps.value *0.5
      • Третя Процедура - initialProps.value *0.5
    • Крок аукціону (minimalStep):
      • Для Першої Процедури - значення, що вказав Організатор при створенні ланцюжка у initialProps.minimalStep
      • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури
      • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури
    • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
      • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
      • Для Другої і Третьої Процедури поле виводити не потрібно.
    • Період між аукціонами (periods.periodName:"tenderPeriod".duration):
      • Для Першої Процедури - відсутній
      • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у tenderPeriod.duration
    • Розмір гарантійного внеску (guarantee):
      • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
      • Для Другої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Другої створеної процедури)
      • Для Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ
    • auctionID створеної Першої Процедури (relatedEntities)
      • Для першої і другої Процедури вказано
      • Для третьої - ні

    4. Коли створено Третю Процедуру (status: active), відповідь має містити:

    • Кількість Процедур у ланцюжку - три;
    • Порядковий номер кожної процедури (tenderAttempts):
      • Для Першої Процедури tenderAttempts == 1
      • Для Другої Процедури tenderAttempts == 2
      • Для Третьої Процедури tenderAttempts == 3
    • Статус Процедури (status):
      • Перша Процедура - unsuccessful
      • Друга Процедура - unsuccessful
      • Третя Процедура - active
    • sellingMethod (sellingMethod):
      • Перша Процедура - sanctionedAsset-english
      • Друга Процедура - sanctionedAsset-english
      • Третя Процедура - sanctionedAsset-dutch
    • Стартова ціна Об'єкта (value):
      • Перша Процедура - initialProps.value
      • Друга Процедура - initialProps.value *0.5
      • Третя Процедура - initialProps.value *0.5 
    • Крок аукціону (minimalStep):
      • Для Першої Процедури - значення, що вказав Організатор при створенні у initialProps.minimalStep
      • Для Другої Процедури - значення, що дорівнює 1% від value Поточної Другої Процедури.
      • Для Третьої Процедури - значення, що дорівнює 1% від value Поточної Третьої Процедури.
    • Дата проведення аукціону (periods.periodName:"auctionPeriod":startDate):
      • Для Першої Процедури це дата, яку вказав Організатор у полі auctionPeriod.startDate при створенні ланцюжка
      • Для Другої і Третьої Процедури поле виводити не потрібно.
    • Період між аукціонами (periods.periodName:tenderPeriod.duration):
      • Для Першої Процедури - відсутній
      • Для Другої і Третьої Процедури значення, що вказав Організатор при створенні ланцюжка у tenderPeriod.duration
    • Розмір гарантійного внеску (guarantee):
      • Для Першої Процедури значення, що Організатор вніс у initialProps.guarantee
      • Для Другої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Другої створеної процедури)
      • Для Третьої Процедури initialProps.guarantee розраховується по формулі, залежить від Стартової ціни. Формули ТУТ (Варто в розрахунок брати Стартову ціну Третьої створеної процедури)
    • auctionID Першої Процедури, auctionID Другої Процедури і auctionID створеної Третьої Процедури


    Note
    titleВАЖЛИВО!

    Значення в _specs розраховується один раз під час публікації JSC і далі є “замороженим” прогнозом/планом, а не “дзеркалом” фактичних значень процедур.

    При публікаії кожної наступної процедури змінюється тільки Статус і заповнюється producedEntities.

    Інші значення НЕ перезаписуються.


    Приклад:

    Code Block
    "_specs": {
    	"pipeline": {
    		"stages": [
    			{
    				"producedEntities": [
    					{
    						"type": "procedure",
    						"_id": "69945eec410e8611f93bb132",
    						"objectId": "SAE001-UA-20260320-17748",
    						"url": "/api/procedures/69945eec410e8611f93bb132"
    					}
    				],
    				"status": "unsuccessful",
    				"name": "sa-english-first",
    				"calculatedData": {
    					"value": {
    						"currency": "UAH",
    						"amount": 100000,
    						"valueAddedTaxIncluded": true
    					},
    					"guarantee": {
    						"currency": "UAH",
    						"amount": 10000
    					},
     					"tenderAttempts": 1, 
                        "auctionPeriod": {
    						"startDate": "2026-03-20T14:30:31.326000+02:00"
    					},
    					"sellingMethod": "sanctionedAsset-english",
    					"minimalStep": {
    						"currency": "UAH",
    						"amount": 1200
    					}
    				}
    			},
    			{
    				"producedEntities": [
    					{
    						"type": "procedure",
    						"_id": "69945f5d410e8611f93bb134",
    						"objectId": "SAE001-UA-20260417-44432",
    						"url": "/api/procedures/69945f5d410e8611f93bb134"
    					}
    				],
    				"status": "active",
    				"name": "sa-english-second",
    				"calculatedData": {
    					"value": {
    						"currency": "UAH",
    						"amount": 50000,
    						"valueAddedTaxIncluded": true
    					},
     					"guarantee": {
    						"currency": "UAH",
    						"amount": 10000
    					},
    					"sellingMethod": "sanctionedAsset-english",
    					"tenderAttempts": 2,
    					"tenderPeriod": [
    						{
    							"unit": "с_day",
    							"quantity": 25
    						}
    					],
    					"minimalStep": {
    						"currency": "UAH",
    						"amount": 500
    					}
    				}
    			},
    			{
    				"producedEntities": [],
    				"status": "sheduled",
    				"name": "sa-dutch-first",
    				"calculatedData": {
    					"value": {
    						"currency": "UAH",
    						"amount": 50000,
    						"valueAddedTaxIncluded": true
    					},
     					"guarantee": {
    						"currency": "UAH",
    						"amount": 10000
    					},
    					"sellingMethod": "sanctionedAsset-dutch",
    					"tenderAttempts": 3,
    					"tenderPeriod": [
    						{
    							"unit": "c_day",
    							"quantity": 35
    						}
    					],
    					"minimalStep": {
    						"currency": "UAH",
    						"amount": 500
    					}
    				}
    			}
    		]
    	}
    }

    Search

    Потрібно реалізувати публічні ендпоінти, які будуть давати можливість отримувати перелік JSC обʼєктів за заданим пошуком

    POST {{baseUrl}}/api/search/sanctionedAuctionChain

    Мають бти реалізовані фільтри:

    Code Block
    languagejs
    {
        "page": 1,
        "limit": 10,
        "filters": [
            {
                "field": "dateModified",
                "operator": "gt",
                "value": "2020-01-01T05:12:47.00Z"
            },
            {
                "field": "dateModified",
                "operator": "gte",
                "value": "2020-01-01T05:12:47.00Z"
            },
            {
                "field": "dateModified",
                "operator": "lte",
                "value": "2022-01-01T05:12:47.00Z"
            },
            {
                "field": "dateModified",
                "operator": "lt",
                "value": "2026-04-01T05:12:47.00Z"
            },
            {
                "field": "datePublished",
                "operator": "lt",
                "value": "2026-04-01T05:12:47.00Z"
            },
            {
                "field": "owner",
                "operator": "eq",
                "value": "auction"
            },
            {
                "field": "producedEntities.type",
                "operator": "eq",
                "value": "procedure"
            },
            {
                "field": "producedEntities.objectId",
                "operator": "eq",
                "value": "SAE001-UA-20221216-99328"
            },
            {
                "field": "producedEntities._id",
                "operator": "eq",
                "value": "639c8a6a8646c52cb6413d2c"
            },
            {
                "field": "extended_filters.human_id",
                "operator": "eq",
                "value": "JSC001-UA-20221216-41456"
            }
        ]
    }

    Має бути можливість отримувати обʼєкти з сортуванням:

    POST {{baseUrl}}/api/search/sanctionedAuctionChain

    Code Block
    languagejs
    {
        "page": 1,
        "limit": 10,
        "sort": [
            {
                "field": "dateModified",
                "direction": "desc"
            }
        ]
    }

    Mirror

    Має бути реалізована можливість майданчикам отримувати обʼєкти JSC по Mirror для сервісу Jobber

    Допрацювання процедур SAE SAD

    В модель обʼєкта процедури необхідно додати поле relatedEntities (base.RelatedEntity)

    field namerequired for publishingtypereadOnlyx-legalNameUax-legalNameEncomment
    type-stringtrueТип спорідненняRelate typeenum: sanctioned_auction_chain
    _id-stringtrueВнутрішній ідентифікатор повʼязаного обʼєктаInternal related object id

    x-default: object_id
    x-serialize_when_none: false

    x-format: object-id

    Поле має заповнитися значенням _id повʼязаного JSC обʼєкта

    objectId-stringtrueІдентифікатор повʼящаного обʼєктаRelated object id

    example: SAE001-UA-20260220-12345

    Поле має заповнитися значенням objectId повʼязаного JSC обʼєкта

    url-stringtrueПосилання на повʼязаний обʼєктURLПосилвання на JSC обʼєкт


    Note

    Важливо врахувати, що на рівні процедури ці поля мають бути НЕ обовʼязкові, бо публікація процедури SAE та SAD можлива ДО запровадження ланцюжків.

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

    Процедури, які будуть авто-публікуватися Джоббером - повинні мати заповнені поля в relatedEntities

    Вимоги до Адмінки ЦБД

    Додаткова інформація

    Функціонал "Додавання додаткової інформації" не вимагається, але може автоматично працювати для JSC. Бізнес запиту на додвання ДІ до JSC не буде, бо бізнесово не існує сутності JSC а також інфо з JSC не буде виводитися на жодному фронті, відповідно і ДІ з JSC також не буде виводитися, якщо ДІ буде додано до обʼєкта.
    Але має бути можливість додавати ДІ до авто-опублікованих процедур SAE та SAD за стандартною логікою.

    Перенесення обʼєкта з одного Майданчика на інший

    Бізнес запит на перенесення обʼєкта буде надходити тільки відносно Процедури. Але реальна бізнес-потреба, однозначно, - в перенесенні всього ланцюжка (обʼєкта JSC)

    НЕ реалізовуємо перенос "звʼязки".

    Кожен обʼєкт має переноситись індивідуально, незалежно від того, чи це Процедура, чи обʼєкт Джоббера.
    Інструкція буде містити інформацію, що для коректного переносу, окрім вказання ідентифікатора Процедури також необхідно вказати ідентифікатор батьківського обʼєкта-ланцюжка.

    Організатор на інтерфейсах Майданчика чи на Порталі НЕ має бачити ID ланцюжка. Нормативно ланцюжка не існує, це виключно технічний обʼєкт.

    Для переносу всіх повʼязаних обʼєктів їх ID-шники має доповнити в заявку представник зі сторони Prozorro.Sale, який обробляє запит, який надійшов від Організатора.
    Організатор точно в своїй заяві не вкаже ID обʼєкта JSC. Його має знайти і дозаповнити представник від Prozorro.Sale



    Note
    titleПИТАННЯ
    1. Чи будемо відображати сутність "Процес реалізації санкційного активу" на Порталі, Майданчику чи на будь-якому іншому фронті? - На фронті має відображатися період експозиції для майбутніх Процедур, а ця інформація міститься тільки в JSC
    2. Реєстраційний внесок поривʼязаний до мін ЗП і ми його не валідуємо, а віддаємо на Майданчик.
    3. Валідації на Періоди? - так, робимо у нас
    4. ендпоінт на мінСтартДейт робимо пізніше окремою таскою.

    ...

    Поля dutchStepPercent та dutchStepValue автогенеруються на рівні ЦБД, без можливості внесення змін Організатором
    Для поля dutchStepQuantity ЦБД формує дефолтне значення згідно процедури, Організатор має можливість змінити дефолтне значення.

    ...

    integer($int64)

    ...

    integer($int64)

    ...

    x-legalNameUa: Розмір кроку голландського раунду, грн

    x-legalNameEn: Dutch step value

    автогеровано, розраховується як 1 % від стартової ціни

    ...

    Note
    titleПИТАННЯ
    1. Чи будемо відображати сутність "Процес реалізації санкційного активу" на Порталі, Майданчику чи на будь-якому іншому фронті? - На фронті має відображатися період експозиції для майбутніх Процедур, а ця інформація міститься тільки в SAC
    2.  Реєстраційний внесок поривʼязаний до мін ЗП і ми також його не валідуємо, а віддаємо на Майданчик.
    3. Валідації на Період?

    На ЦБД буде присутня валідація лише на мінімальний термін тривалості tenderPeriod в 19 днів (тобто найближча дата проведення аукціону (auctionPeriod.startDate) може бути на 20 день від дати створення процедури). Майданчик зі своєї сторони має реалізувати валідацію на проміжок, в який може бути призначено дату початку аукціону (auctionPeriod.startDate) за наступною логікою: 

    1. Якщо tenderAttempts > 1
      ТА
      value.amount < 250 000 000 (двісті п'ятдесят мільйонів)
      ТО 
      Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 20 КД, максимальна - на 35 КД
    2. Якщо tenderAttempts > 1
      ТА
      value.amount >= 250 000 000 (двісті п'ятдесят мільйонів)
      ТО
      Необхідно відобразити організатору часовий проміжок, коли можна обрати дату початку аукціону (auctionPeriod.startDate). Мінімальна дата початку - на 30 КД, максимальна - на 90 КД
    При цьому дата початку аукціону не може припадати на святковий чи вихідний день!
    1.