Create Lesson
Створення нового уроку з учасниками та скіпасами.
Endpoint
POST /api/v1/lessons/
Authentication
Required: Yes (Token Authentication)
Request Body
{
"booking_number": "HMS-12345",
"description": "Індивідуальний урок для сім'ї (6 годин)",
"start_datetime": "2025-11-05T09:00:00Z",
"end_datetime": "2025-11-05T15:00:00Z",
"instructor_name": "Петро Іванович",
"location": "Буковель-1",
"status": "active",
"participants": [
{
"customer": {
"name": "Іван",
"surname": "Петренко",
"phone_number": "+380501234567",
"email_adress": "ivan@example.com"
},
"notes": "Досвідчений лижник",
"skipasses": [
{
"skipass_number": "12-2323-2323231",
"valid_from": "2025-11-05T09:00:00Z",
"valid_until": "2025-11-05T12:00:00Z",
"skipass_type": "3-годинний",
"skipass_price": 100.00,
"skipass_category": "Дорослий",
"notes": "Перша половина дня"
},
{
"skipass_number": "12-2323-2323232",
"valid_from": "2025-11-05T12:00:00Z",
"valid_until": "2025-11-05T15:00:00Z",
"skipass_type": "3-годинний",
"skipass_price": 100.00,
"skipass_category": "Дорослий",
"notes": "Друга половина дня"
}
]
},
{
"customer": {
"name": "Марія",
"surname": "Петренко",
"phone_number": "+380501234568",
"email_adress": "maria@example.com"
},
"notes": "Початківець",
"skipasses": [
{
"skipass_number": "12-2323-2323233",
"valid_from": "2025-11-05T09:00:00Z",
"valid_until": "2025-11-05T15:00:00Z",
"skipass_type": "6-годинний",
"skipass_price": 180.00,
"skipass_category": "Дорослий",
"notes": "Повний день"
}
]
}
]
}
Request Parameters
| Parameter |
Type |
Required |
Description |
| booking_number |
string |
Yes |
Номер бронювання з готелю/системи |
| description |
string |
No |
Опис уроку |
| start_datetime |
datetime |
Yes |
Початок уроку (ISO 8601) |
| end_datetime |
datetime |
Yes |
Закінчення уроку (ISO 8601) |
| instructor_name |
string |
No |
Ім'я інструктора |
| location |
string |
No |
Локація проведення |
| status |
string |
No |
Статус: active, cancelled, completed (default: active) |
| participants |
array |
Yes |
Список учасників |
Participant Object
| Parameter |
Type |
Required |
Description |
| customer |
object |
Yes |
Дані клієнта |
| notes |
string |
No |
Примітки про учасника |
| skipasses |
array |
Yes |
Список скіпасів учасника |
Customer Object
| Parameter |
Type |
Required |
Description |
| name |
string |
Yes |
Ім'я |
| surname |
string |
Yes |
Прізвище |
| phone_number |
string |
Yes |
Телефон (унікальний) |
| email_adress |
string |
No |
Email |
Skipass Object
| Parameter |
Type |
Required |
Description |
| skipass_number |
string |
Yes |
Номер скіпасу |
| valid_from |
datetime |
No |
Початок дії скіпасу |
| valid_until |
datetime |
No |
Закінчення дії скіпасу |
| skipass_type |
string |
No |
Тип: "3-годинний", "6-годинний" |
| skipass_price |
decimal |
No |
Ціна скіпасу |
| skipass_category |
string |
No |
Категорія: "Дорослий", "Дитячий" |
| notes |
string |
No |
Примітки |
Response
Success Response (201 CREATED)
{
"status": "success",
"lesson_id": 123,
"lesson": {
"id": 123,
"booking_number": "HMS-12345",
"description": "Індивідуальний урок для сім'ї (6 годин)",
"start_datetime": "2025-11-05T09:00:00Z",
"end_datetime": "2025-11-05T15:00:00Z",
"instructor_name": "Петро Іванович",
"location": "Буковель-1",
"status": "active",
"participants": [
{
"id": 456,
"customer": {
"name": "Іван",
"surname": "Петренко",
"phone_number": "+380501234567",
"email_adress": "ivan@example.com"
},
"notes": "Досвідчений лижник",
"skipasses": [
{
"id": 789,
"skipass_number": "12-2323-2323231",
"valid_from": "2025-11-05T09:00:00Z",
"valid_until": "2025-11-05T12:00:00Z",
"skipass_type": "3-годинний",
"skipass_price": "100.00",
"skipass_category": "Дорослий",
"notes": "Перша половина дня"
}
]
}
],
"created_at": "2025-11-03T12:00:00Z",
"updated_at": "2025-11-03T12:00:00Z"
}
}
Error Response (400 BAD REQUEST)
{
"status": "error",
"message": "Missing required field: 'booking_number'"
}
Notes
- Якщо
customer з таким phone_number вже існує, буде використаний існуючий запис
- У одного учасника може бути кілька скіпасів (наприклад, 2×3год для 6-годинного уроку)
- Якщо
valid_from/valid_until не вказані, валідація буде відбуватись по часу уроку
- Всі дати в форматі ISO 8601 (UTC)
Example cURL
curl -X POST "https://bukovelvipentry.breport.site/api/v1/lessons/" \
-H "Authorization: Token YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"booking_number": "HMS-12345",
"start_datetime": "2025-11-05T09:00:00Z",
"end_datetime": "2025-11-05T15:00:00Z",
"participants": [
{
"customer": {
"name": "Іван",
"surname": "Петренко",
"phone_number": "+380501234567"
},
"skipasses": [
{
"skipass_number": "12-2323-2323231"
}
]
}
]
}'