API Сервис Ostrovok

Материал из Megatec
Перейти к: навигация, поиск

Введение

Сервис отдает запросы посредством API.
Сервис позволяет получать информацию об отелях, типах питания, вариантах размещения, бронирования, аннуляции и получения статусов заявок.
Для работы сервиса необходимо установить службу Windows.

Установка и настройка

Перед установкой API необходимо настроить конфигурационный файл appsettings.json.

  • Подключение к базе данных ПК «Мастер-Interlook»:
  {
  "ConnectionParameters": {
    "databaseType": 1, - тип используемой базы данных, 1 - MSSQL, 2 - PostgreSQL (пока не реализовано)
    "server": "", - адрес SQL сервера
    "database": "", - название БД Interlook
    "user": "", - логин пользователя
    "password": "", - пароль пользователя
    "appName": "MegatecInterlookGDSService" - название приложения при подключении к SQL-серверу
  },
  • Подключение к сервису бронирования:
  "BookingServiceUrl": "", - адрес BookingService
  "ServiceType": 0, - режим работы сервиса с ограничением отображения информации с Swagger. 0 - без ограничений доступны все методы сервиса, 1 - режим работы с поисковыми системами, 2 - режим поиска для разработки собственного интернет-магазина,
  • Параметры загрузки сервиса:
   "Cache": {
    "ParallelismDegree": 20, -  степень параллелизма при инициализации кэша сервиса. Рекомендуемое значение - 80-90% от общего количества ядер процессора
    "CalculationParallelizmDegree": 90, - параллелизм при обработке запросов поиска
    "CacheUpdateTime": 90, - периодичность обновления кэша в секундах.
    // developer settings, costs cache - "[days before now for ckeck(in\out) costs]" or "[date from-date to]"
    // example: "7" - price date end, checkin end and checkout end greater than today minus 7 days
    // example: "20.03.2023-30.04.2023" - the price action date interval crosses the date interval from 20.03.2023 to 30.04.2023
    // example: "20.03.2023" - the price action date interval crosses the date 20.03.2023
    "CostsRestrictions": "7"
  },
  • Ограничители для запросов поиска:
    "Restrictions": {
    "MaxRooms": 0, - максимальное количество комнат в запросе (0 - без ограничений)
    "MaxAdults": 0, - максимальное количество взрослых в запросе (0 - без ограничений)
    "MaxChildren": 0, - максимальное количество детей в запросе (0 - без ограничений)
    "WithAddressOnly": false, - метод hotels при значении false отдаёт информацию по всем отелям, при значении true - только отели с заполненным адресом расположения.
    "QuotaTypes": [ 1 ], - ограничение по наличию мест. Возможные варианты: [0,1,2] 0 - отели под запрос, 1 - отели на гарантии, 2 - отели на стопе. В параметре перечисляются те значения, которые надо отображать.
    "CPDateFromDaysEarlierShow": 1, - сколько дней в результатах поиска добавлять к дате наступления штрафных санкций
    "IsAlwaysConfirmed": false, - автоматическое подтверждение бронирования, новой заявке по умолчанию ставится статус confirmed, независимо от наличия свободных мест по услугам.
    "IsAddHotsWithCosts": false, - учитывать ли добавочные услуги при поиске. Относится к дополнительным услугам типа Новогодних ужинов с типом услуги "With costs"
    "NearestHotelsDistance": 3, - определяет расстояние для обнаружения ближайших отелей к выбранному в поиске, км
  • Ограничение количества "тяжелых запросов" в единицу времени. Запросы, вышедшие за ограничители, получат сообщение о превышении количества запросов в единицу времени:
     "SearchRequest": {
      "HotelsCount": 100, - минимальное количество ключей отелей в запросе
      "TimeWindow": 0, - промежуток времени в секундах, за который принимаем несколько "тяжелых" запросов
      "MaxRequests": 0 - количество "тяжелых" запросов в течении интервала в параметре "TimeWindow"
    }
  },
  • Логирование работы сервиса:
   "Logger": {
    "EnableConsole": false, - вывод логов в консоль, при работе в режиме "приложение"
    "EnableFile": true, - запись логов в файл
    "FilePath": "",  - расположение файла логов.
    "MaxLogFileSize": 10, // МБ - максимальный размер файла логов
    "MaxOldLogFilesCount": 30 - максимальное количество файлов логов. При превышении начинают перезаписываться.
    "EnableLogService": false, - запись логов через сервис логирования
    "LogServiceAddress": "", - адрес сервиса логирования
  },
  • Параметры подключения к сервису:
   "Install": {
    "ServiceName": "MegatecInterlookGDSService", - название службы при работе в режиме "служба"
    "ServiceAddress": [ "http://*:7700" ], - адрес/порт, на котором работает сервис
    "IPAddress": "IPAddress.IPv6Any" - служебный параметр сервиса, другие значения на текущий момент не используются
  },

  "AllowedHosts": "*" - определяет доступность сервиса из внешних сетей, * - любые

Описание методов

Получение информации обо всех отелях (Hotels)

Метод возвращает список отелей в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля.

  • Формат запроса:
    • GET .../ostrovok/v1/hotels
  • Принимаемые параметры: отсутствуют
  • Возвращаемый результат:
    • id * – идентификатор отеля
    • name * – название отеля
    • description – описание отеля
    • region_id – идентификатор региона отеля
    • geo_coordinates * – координаты отеля
    • atitude * – широта (например, 35.346193)
    • longitude * – долгота (например, 33.191205)
    • address * – адрес отеля
    • postal_code – почтовый индекс
    • contacts – контактная информация
    • phone – телефонный номер
    • email – адрес электронной почты
    • webpage – сайт
    • currency – валюта
    • stars – звездность отеля
    • rating_certificate_info – подтверждение рейтинга (звездности) отеля
    • id – номер документа
    • expiration_date * – срок действия
    • important_info – важная информация по отелю для гостей
    • check_in_instructions – информация по заезду
    • check_in_time – время заезда (например, 14:00)
    • check_in_before_time – время окончания заезда (например, 18:00)
    • check_out_time – время выезда
    • images – список фотографий отеля
    • category – категория фотографии
    • url * – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage)
    • amenities – список наименований удобств (например, "Beach/pool towels", "Airport transportation")
    • rooms – список комнат
    • name * – наименование комнаты (тип) (например, «Deluxe Room»)
    • description – описание комнаты
    • occupancy – максимальное количество человек
    • area – площадь комнаты
    • bed_groups – список групп размещений
    • id * – идентификатор размещения
    • name – наименование размещения (например, «double + twin»)
    • bed_types – список вариантов спальных мест
    • name * – наименование (например, «double»)
    • quantity – количество мест
    • images – список фотографий комнаты, аналогично с фотографиями отеля
    • category – категория фотографии (например, «Ванная комната»)
    • url * – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing")
развернутьПример


Получение информации об отеле по его ключу (Hotels)

Метод возвращает информацию по отелю по ключу отеля в формате ndjson в сжатом виде. Формат каждого отеля в результате идентичен результату запроса одного отеля..

  • Формат запроса:
    • GET .../ostrovok/v1/hotels/hotel_id
  • Принимаемые параметры:
    • hotel_id * – идентификатор отеля (ключ)
  • Возвращаемый результат:
    • id * – идентификатор отеля
    • name * – название отеля
    • description – описание отеля
    • region_id – идентификатор региона отеля
    • geo_coordinates * – координаты отеля
    • atitude * – широта (например, 35.346193)
    • longitude * – долгота (например, 33.191205)
    • address * – адрес отеля (например, «Bademli Sok. No: 1, Alsancak, Cyprus»)
    • postal_code – почтовый индекс
    • contacts – контактная информация
    • phone – телефонный номер
    • email – адрес электронной почты
    • webpage – сайт
    • currency – валюта
    • stars – звездность отеля
    • rating_certificate_info – подтверждение рейтинга (звездности) отеля
    • id – номер документа
    • expiration_date * – срок действия
    • important_info – важная информация по отелю для гостей
    • check_in_instructions – информация по заезду
    • check_in_time – время заезда (например, 14:00)
    • check_in_before_time – время окончания заезда (например, 18:00)
    • check_out_time – время выезда (например, 12:00)
    • images – список фотографий отеля
    • category – категория фотографии
    • url * – сетевой путь к файлу фотографии (например, https://www.test.com/almond/almond-holiday-village-mp-500x249.jpgImage)
    • amenities – список наименований удобств (например, "Beach/pool towels", "Airport transportation")
    • rooms – список комнат
    • name * – наименование комнаты (тип) (например, «Deluxe Room»)
    • description – описание комнаты
    • occupancy – максимальное количество человек
    • area – площадь комнаты
    • bed_groups – список групп размещений
    • id * – идентификатор размещения
    • name – наименование размещения (например, «double + twin»)
    • bed_types – список вариантов спальных мест
    • name * – наименование (например, «double»)
    • quantity – количество мест
    • images – список фотографий комнаты, аналогично с фотографиями отеля
    • category – категория фотографии (например, «Ванная комната»)
    • url * – путь к файлу фотографии amenities (список наименований удобств, "shower", "tv", "soundproofing")
развернутьПример


Получение информации о типах питания (Meals)

Метод возвращает список типов питания в формате ndjson в сжатом виде.

  • Формат запроса:
    • GET .../ostrovok/v1/meals
  • Принимаемые параметры: отсутствуют
  • Возвращаемый результат:
    • id * – идентификатор типа питания
    • name * – наименование типа питания
развернутьПример


Получение информации о типах размещений по отелям или региону с учетом цен (Search)

Метод возвращает список типов размещений по отелям или региону с учетом цен.

  • Формат запроса:
    • POST .../ostrovok/v1/search
  • Принимаемые параметры:
    • check_in * – дата планируемого заезда
    • check_out * – дата выезда
    • residency * – страна (рынок)
    • guests_groups * – список групп гостей для отбора размещений
      • adults – взрослых
      • children_ages – список возрастов детей
    • region_id – ключ региона (город)
    • hotel_ids – ключи отелей, если заданы, то ключ региона не учитывается
  • Возвращаемый результат:
    • hotel_id * – идентификатор отеля
    • rates – список вариантов размещения
      • id * – идентификатор размещения, формируется сервисом
      • price * – цена
      • commission – комиссия
      • payment_type * – тип платежа (предоплата или по заезду)
      • currency * – валюта
      • meals – список типов питания
        • id * – идентификатор питания
        • name * – наименование питания,
      • cancellation_policies – список штрафов
        • from * – начало действия штрафа
        • amount * – величина штрафа
      • rooms * – список комнат
        • id * – идентификатор, генерируемый системой
        • name * – наименование комнаты (например, «Deluxe Room»)
        • bed_groups – список групп размещений
          • id * – идентификатор размещения
          • name – наименование размещения (например, «double + twin»)
          • bed_types – список вариантов спальных мест
            • name * – наименование (например, «double»)
            • quantity – количество мест
развернутьПример


Получение информации о вариантах размещений по конкретному отелю (Search)

Метод возвращает список типов размещений по отелям или региону с учетом цен.

  • Формат запроса:
    • POST .../ostrovok/v1/search/hotel_id
  • Принимаемые параметры:
    • hotel_id * – ключ отеля
    • check_in * – дата планируемого заезда
    • check_out * – дата выезда
    • guests_groups * – список групп гостей для отбора размещений
      • adults – взрослых
      • children_ages – список возрастов детей
  • Возвращаемый результат:
    • hotel_id * – идентификатор отеля
    • rates – список вариантов размещения
      • id * – идентификатор размещения, формируется сервисом
      • price * – цена
      • commission – комиссия
      • payment_type * – тип платежа (предоплата или по заезду)
      • currency * – валюта
      • meals – список типов питания
        • id * – идентификатор питания
        • name * – наименование питания
      • cancellation_policies – список штрафов
        • from * – начало действия штрафа
        • amount * – величина штрафа
      • rooms * – список комнат
        • id * – идентификатор, генерируемый системой
        • name * – наименование комнаты (например, «Deluxe Room»)
        • bed_groups – список групп размещений
          • id * – идентификатор размещения
          • name – наименование размещения (например, «double + twin»)
          • bed_types – список вариантов спальных мест
            • name * – наименование (например, «double»)
            • quantity – количество мест
развернутьПример


Бронирование (Book)

Метод возвращает список типов размещений по отелям или региону с учетом цен.

  • Формат запроса:
    • POST .../ostrovok/v1/book
  • Принимаемые параметры:
    • hotel_id * – ключ отеля
    • rate_id * – идентификатор размещения из результатов запроса search
    • client_reference_id * – ключ бронирования, сгенерированный провайдером
    • reservation_holder * – лицо, бронирующее номер
      • first_name * – имя
      • last_name * – фамилия
    • contact_info * – контактные данные бронирующего
      • email * – электронная почта
      • phone * – телефон
    • price * – цена, по которой бронируют
    • rooms * – список, комнаты из результата search, выбранные для бронирования
    • id * – идентификатор комнаты из результатов search
    • guests * – список гостей – параметры туристов в комнате
      • first_name * – имя гостя
      • last_name * – фамилия гостя
      • is_child * – ребенок или нет
    • comments – комментарии к заезду
  • Возвращаемый результат:
    • reservation_id * – идентификатор заявки в базе данных
    • client_reference_id * – идентификатор заявки, назначенный провайдером
    • status * – статус заявки (принята, аннулирована, ожидает)
развернутьПример


Получение статуса заявки (Status)

Метод возвращает статус заявки.

  • Формат запроса:
    • POST .../ostrovok/v1/status
  • Принимаемые параметры:
    • reservation_id – идентификатор заявки в базе данных
    • client_reference_id * – идентификатор заявки, назначенный провайдером
  • Возвращаемый результат:
    • reservation_id * – идентификатор заявки в базе данных
    • client_reference_id * – идентификатор заявки, назначенный провайдером
    • status * – статус заявки (принята, аннулирована, ожидает)
    • check_in * – дата планируемого заезда
    • check_out * – дата выезда
    • reservation_holder * – лицо, бронирующее номер
      • first_name * – имя
      • last_name * – фамилия
    • contact_info * – контактные данные бронирующего
      • email * – электронная почта
      • phone * – телефон
    • hotel_id * – ключ отеля
    • hotel_name * – название отеля
    • rate – вариант размещения
      • id * – идентификатор размещения, формируется сервисом
      • price * – цена
      • commission – комиссия
      • payment_type * – тип платежа (предоплата или по заезду)
      • currency * – валюта
      • meals - список типов питания в формате:
        • id * – идентификатор питания
        • name * – наименование питания
      • cancellation_policies – список штрафов
        • from * – начало действия штрафа
        • amount * – величина штрафа
      • rooms * – список комнат
        • id * – идентификатор, генерируемый системой
        • name * – наименование комнаты (тип) (например, «Deluxe Room»)
        • bed_groups – список групп размещений
          • id * – идентификатор размещения
          • name – наименование размещения (например, «double + twin»)
          • bed_types – список вариантов спальных мест
            • name * – наименование (например, «double»)
            • quantity – количество мест
развернутьПример


Аннуляция заявки (Cancel)

Метод аннулирует заявку.

  • Формат запроса:
    • POST .../ostrovok/v1/cancel
  • Принимаемые параметры:
    • reservation_id – идентификатор заявки в базе данных
    • client_reference_id * – идентификатор заявки, назначенный провайдером
  • Возвращаемый результат:
    • reservation_id * – идентификатор заявки в базе данных
    • client_reference_id * – идентификатор заявки, назначенный провайдером
    • status * – статус заявки (принята, аннулирована, ожидает)
развернутьПример