API для туроператоров
Методы API, доступные для роли "touroperator".
Аутентификация
Authorization: Bearer <your-token>
Управление турами
Создать тур
POST /tours
Пример запроса:
{
"title": "Поход к Софийским озерам",
"description": "Незабываемое путешествие к горным озерам",
"duration_days": 3,
"difficulty_level": "средний",
"max_participants": 15,
"price_per_person": 12000,
"included_services": ["гид", "питание", "транспорт"],
"meeting_point": "База отдыха Архыз",
"season": ["лето", "осень"]
}
Обновить тур
PUT /tours/{id}
Получить мои туры
GET /tours/my
Удалить тур
DELETE /tours/{id}
Управление бронированиями туров
Просмотр бронирований
GET /tour-bookings?status=all&from=2024-01-01&to=2024-12-31&partner_id=uuid
Параметры запроса:
status- статус бронирования (pending, confirmed, cancelled, completed)from,to- период датpartner_id- фильтр по партнеруtour_id- фильтр по туруpayment_status- статус оплаты
Ответ:
{
"bookings": [
{
"id": "uuid",
"tour_id": 123,
"tour_name": "Поход к Софийским озерам",
"contact_name": "Петров Петр",
"contact_phone": "+7-900-123-45-67",
"contact_email": "petrov@mail.ru",
"participants_count": 3,
"total_price": 36000.00,
"status": "confirmed",
"payment_status": "paid",
"booking_date": "2024-07-01T10:30:00Z",
"tour_date": "2024-07-15T09:00:00Z",
"partner": {
"id": "uuid",
"name": "ТурАгентство Горизонт",
"commission": 5400.00
}
}
],
"total_count": 156,
"total_revenue": 1875000.00
}
Подтвердить бронирование
PUT /tour-bookings/{id}/confirm
Пример запроса:
{
"confirmation_notes": "Все документы проверены, место подтверждено",
"send_notification": true,
"assign_guide": "uuid"
}
Отменить бронирование
PUT /tour-bookings/{id}/cancel
Пример запроса:
{
"cancellation_reason": "Отмена по просьбе клиента",
"refund_amount": 30000.00,
"refund_reason": "Полный возврат согласно политике отмены"
}
Обновить статус оплаты
PUT /tour-bookings/{id}/payment-status
Пример запроса:
{
"payment_status": "paid",
"payment_method": "bank_card",
"payment_date": "2024-07-02T14:30:00Z",
"payment_reference": "TXN_123456789",
"notes": "Оплата получена через эквайринг"
}
Массовые операции с бронированиями
POST /tour-bookings/bulk-action
Пример запроса:
{
"action": "send_reminder",
"booking_ids": ["uuid1", "uuid2", "uuid3"],
"parameters": {
"message_template": "tour_reminder_24h",
"send_sms": true,
"send_email": true
}
}
Перенос бронирования
PUT /tour-bookings/{id}/transfer
Пример запроса:
{
"new_tour_date": "2024-07-22T09:00:00Z",
"reason": "Перенос по погодным условиям",
"notify_customer": true,
"price_adjustment": 0
}
История изменений бронирования
GET /tour-bookings/{id}/history
Ответ:
{
"booking_id": "uuid",
"changes": [
{
"timestamp": "2024-07-01T10:30:00Z",
"action": "created",
"user": "Система",
"details": "Бронирование создано"
},
{
"timestamp": "2024-07-01T11:15:00Z",
"action": "confirmed",
"user": "Иванов И.И.",
"details": "Бронирование подтверждено менеджером"
}
]
}