Versions Compared

Key

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

Призначення

Ендпоінт надає довідкову інформацію щодо того, з якої дати (і, за наявності, до якої дати)Організатор може встановити auctionPeriod.startDate для процедури з конкретним sellingMethod.

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

URL

GET /api/procedures/{sellingMethod}/auctionPeriod

де {sellingMethod} — технічна назва напрямку (наприклад, basicSell-english, legitimatePropertyLease-english тощо)

Відповідь

Ендпоінт повертає JSON з об’єктом startDate, який містить:

  • minDateнайраніша допустима дата/час для auctionPeriod.startDate

  • maxDateнайпізніша допустима дата/час (повертається лише якщо для sellingMethod у конфігу задано validation.max)

Приклад (тільки minDate)

Code Block
languagejs
{
  "startDate": {
    "minDate": "2026-03-04T09:00:00+00:00"
  }
}

Приклад (minDate + maxDate)

Code Block
languagejs
{
  "startDate": {
    "minDate": "2026-03-02T09:00:00+00:00",
    "maxDate": "2026-03-31T10:00:00+00:00"
  }
}

Джерело правил: конфіг specs

Посилання на конфіг: https://procedure.prozorro.sale/api/specs

Розрахунок дат виконується на основі конфігурації конкретного sellingMethod, секція: periods.procedure.auctionPeriod.startDate.validation

Ключові параметри:

Робочий/неробочий день

is_business_day: true означає, що результуюча дата має припадати на робочий день (після застосування diff і direction).

Мінімальна дата (validation.min)

Описує правило, як отримати minDate:

Code Block
"min": {
	"diff": "8 days",
	"direction": "forward",
	"from": "now",
	"time": "11:00"
}

Логіка:

  1. Береться базова точка відліку from (у прикладах це now — поточна дата/час на момент запиту).

  2. Застосовується зміщення diff у напрямку direction:

    • forward — вперед від базової точки

    • backward — назад (для цього ендпоінту зазвичай не використовується, але механізм конфігураційно можливий)

  3. Якщо задано is_business_day: true — дата нормалізується/підбирається так, щоб потрапити на робочий день.

  4. Встановлюється час:

    • якщо time вказаний як одна година ("11:00") — використовується цей час;

    • якщо вказано інтервал ("11:00 - 13:00") — для minDate використовується початок інтервалу (логіка “найраніший можливий час”).

  5. Результат повертається в ISO-8601.

Максимальна дата (validation.max)

Якщо в конфігу присутній блок validation.max, ендпоінт додатково обчислює та повертає maxDate.

Приклад:

Code Block
"max": {
	"diff": "35 days",
	"direction": "forward",
	"from": "now",
	"time": "13:00",
	"is_business_day": true
}

Логіка аналогічна min, але:

  • для maxDate береться “найпізніший допустимий час”.

  • якщо time — інтервал, то для maxDate використовується кінець інтервалу (логіка “найпізніший можливий час”).

Про startDate.time та conditions

У деяких sellingMethod у startDate додатково є:

  • time: "11:00 - 13:00" — допустиме вікно часу проведення аукціону (впливає на вибір часу в межах доби)

  • conditions[] — правила для автовстановлення або альтернативної логіки (наприклад, коли auto_set: true і case.isPerishable: true)

Практичне використання на майданчиках

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

  • обмеження вибору дати в UI:

    • minDate як мінімально доступна дата,

    • maxDate як максимально доступна дата (якщо присутня)

  • валідації введеного значення до відправки в API запиті

  • відображення підказки Організатору типу:

    • “Найраніша дата початку аукціону: …”

    • “Дозволений діапазон: … – …”

Висновок

  • Ендпоінт повертає розрахунок на момент запиту (прив’язаний до now).

  • Ендпоінт є допоміжним: фінальна валідність auctionPeriod.startDate все одно перевіряється ЦБД при створенні/оновленні процедури згідно тих самих правил конфігу.

  • Якщо для sellingMethod не визначено validation.max, то maxDate не повертається.