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

CreateBookingDto

clientIdnumber

ID клієнта (якщо клієнт вже існує)

Example: 1
client object

Дані для створення нового клієнта «на лету». Використовуйте замість clientId, якщо клієнт ще не створений.

phonestringrequired

Телефон клієнта

Example: +380501234567
firstNamestringrequired

Імʼя клієнта

Example: Марія
lastNamestring

Прізвище клієнта

Example: Іваненко
serviceIdnumberrequired

ID послуги

Example: 1
staffIdnumber

ID співробітника. Обовʼязковий для beauty-індустрії (IndustryConfig.booking.staffOptional=false). Для індустрій з opt-out (auto_service, fitness) може бути не вказаний — резерв тоді створюється без привʼязки до людини.

Example: 1
resourceIdsnumber[]

IDs ресурсів для бронювання (бокс, корт, кабінет…). Перевірка типів і capacity на бекенді.

Example: [1,2]
industryDataobject

Галузеспецифічні структуровані дані: vehicleVin, patientCaseId, horseId, courseModule тощо. Жодних валідацій схеми тут — кожна індустрія описує свою.

durationOverridenumber

Опційна тривалість у хвилинах для window_based послуг (auto_service). Для service_based ігнорується — береться з Service.duration.

Example: 90
sessionIdnumber

Sprint 4: ID групової сесії (yoga / lesson / workshop). Якщо вказано — startTime/endTime/staffId автоматично беруться з сесії, capacity перевіряється атомарно. Доступно лише для індустрій з IndustryConfig.features.groupSessions=true. Beauty — не використовує.

Example: 42
customPricenumber

Sprint E2: ціна, яку реально сплачує клієнт. Замінює service.price. Доступно лише для індустрій з IndustryConfig.features.customBookingPricing=true (equestrian тощо). Може бути 0 (безкоштовне заняття). Beauty — ігнорується.

Example: 500
trainerPayoutAmountnumber

Sprint E2: фіксована виплата виконавцю (тренеру) за цей запис. Взаємовиключно з trainerPayoutPercent.

Example: 200
trainerPayoutPercentnumber

Sprint E2: відсоток від price для виплати виконавцю (0..100). Взаємовиключно з trainerPayoutAmount.

Example: 40
startTimestring<date-time>required

Час початку запису у форматі ISO 8601 з явним часовим поясом (наприклад "2024-01-15T11:30:00+03:00" або "2024-01-15T08:30:00Z"). На бекенді нормалізується та зберігається в UTC (timestamptz).

Example: 2024-01-15T10:00:00.000Z
bookingSourcestring

Джерело запису

Possible values: [online, phone, walk_in, admin, api]

Example: online
notesstring

Нотатки клієнта

Example: Прошу майстра використовувати гіпоалергенні засоби
allowParallelStaffBookingboolean

CRM-онлі: дозволити паралельний запис на того самого тренера в той самий час (різні коні/клієнти) без створення групової сесії. Публічний запис ігнорує.

Default value: false
CreateBookingDto
{
"clientId": 1,
"client": {
"phone": "+380501234567",
"firstName": "Марія",
"lastName": "Іваненко"
},
"serviceId": 1,
"staffId": 1,
"resourceIds": [
1,
2
],
"industryData": {},
"durationOverride": 90,
"sessionId": 42,
"customPrice": 500,
"trainerPayoutAmount": 200,
"trainerPayoutPercent": 40,
"startTime": "2024-01-15T10:00:00.000Z",
"bookingSource": "online",
"notes": "Прошу майстра використовувати гіпоалергенні засоби",
"allowParallelStaffBooking": false
}