Мастер-Тур(15):API для отдачи цен в поисковые системы — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Выгрузка списка отелей (GetHotels))
(Установка)
 
(не показано 57 промежуточных версий 7 участников)
Строка 17: Строка 17:
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/searchApi?action="название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/searchApi?action=GetCountries'')
 +
 +
Для поддержки систем с большой нагрузкой можно использовать сторонние "балансировщики нагрузки".
 +
Пример настройки балансировщика [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]].
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Загрузка справочников==
 
==Загрузка справочников==
Строка 306: Строка 312:
 
** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]])
 
** '''departureCityIds *''' – идентификатор города(ов) отправления (из метода [[#Выгрузка списка городов вылета (GetDepartCities)|GetDepartCities]])
 
** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]])
 
** '''countryId *''' – идентификатор страны прибытия (из метода [[#Выгрузка списка стран (GetCountries)|GetCountries]])
** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' будут переданы все города в рамках данной страны
+
** '''resortIds *''' – идентификатор города(ов) прибытия (из метода [[#Выгрузка списка городов (GetResorts)|GetResorts]]), при значении ''-1'' передается город отправления "Без перелета"
 
** '''tourTypeIds *''' – идентификатор типа(ов) тура (из метода [[#Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4|GetTourTypes]]), при значении ''-1'' будут переданы все типы тура в рамках данной страны  
 
** '''tourTypeIds *''' – идентификатор типа(ов) тура (из метода [[#Выгрузка типов тура (GetTourTypes) начиная с релиза 15.4|GetTourTypes]]), при значении ''-1'' будут переданы все типы тура в рамках данной страны  
 
** '''fromDateTime''' – дата (в формате dd.MM.yyyy HH:mm:ss), начиная с которой будут выгружаться изменения (то есть будут получены только те доступные программы туров, которые изменялись, начиная с указанной даты)
 
** '''fromDateTime''' – дата (в формате dd.MM.yyyy HH:mm:ss), начиная с которой будут выгружаться изменения (то есть будут получены только те доступные программы туров, которые изменялись, начиная с указанной даты)
Строка 489: Строка 495:
 
** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
 
** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
 
** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
 
** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
 +
** '''timeFrom''' – заезд в отель (обрабатывается с релиза 15.7)
 +
** '''timeTo''' – выезд из отеля (обрабатывается с релиза 15.7)
 +
** '''countryId''' – идентификатор страны, в которой расположен отель (обрабатывается с релиза 15.9)
 +
** '''countryName''' – название страны, в которой расположен отель (обрабатывается с релиза 15.9)
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 503: Строка 513:
 
   "hotels":    [
 
   "hotels":    [
 
             {
 
             {
         "id": 672,
+
         "id": 112830,
        "name": "'Opal",
+
            "name": "0012",
        "hotelCategoryId": 59,
+
            "hotelCategoryId": 964,
        "hotelCategoryName": "4*+",
+
            "hotelCategoryName": "!!",
        "resortId": 35,
+
            "resortId": 1464,
        "resortName": "Вена",
+
            "resortName": "Адлер",
        "areaId": -1,
+
            "areaId": 1187,
        "areaName": "Без курорта",
+
            "areaName": "Amur Oblast",
        "address": "53 av, Sova str.",
+
            "address": "",
        "phone": "010(999)653-26-35",
+
            "phone": "",
        "email": "service@opal.net",
+
            "email": "",
        "fax": null,
+
            "fax": "",
        "http": null,
+
            "http": null,
        "latitude": "null",
+
            "latitude": "",
        "longitude": "null"
+
            "longitude": "",
 +
            "timeFrom": "",
 +
            "timeTo": "",
 +
            "countryId": 460,
 +
            "countryName": "Россия"
 
       },
 
       },
 
             {
 
             {
         "id": 106,
+
         "id": 111884,
        "name": "OPERA LAFAYETTE",
+
            "name": "111",
        "hotelCategoryId": 23,
+
            "hotelCategoryId": 964,
        "hotelCategoryName": "5*",
+
            "hotelCategoryName": "!!",
        "resortId": 35,
+
            "resortId": 35,
        "resortName": "Вена",
+
            "resortName": "Вена",
        "areaId": -1,
+
            "areaId": -1,
        "areaName": "Без курорта",
+
            "areaName": "Без курорта",
        "address": null,
+
            "address": "",
        "phone": null,
+
            "phone": null,
        "email": null,
+
            "email": "",
        "fax": null,
+
            "fax": null,
        "http": null,
+
            "http": null,
        "latitude": "null",
+
            "latitude": null,
        "longitude": "null"
+
            "longitude": null,
 +
            "timeFrom": "",
 +
            "timeTo": "",
 +
            "countryId": 90,
 +
            "countryName": "Австрия"
 
       },
 
       },
 
             {
 
             {
         "id": 709,
+
         "id": 112827,
        "name": "Am Brilliantengrund",
+
            "name": "11111",
        "hotelCategoryId": 23,
+
            "hotelCategoryId": 964,
        "hotelCategoryName": "5*",
+
            "hotelCategoryName": "!!",
        "resortId": 35,
+
            "resortId": 1313,
        "resortName": "Вена",
+
            "resortName": "Kazan",
        "areaId": -1,
+
            "areaId": -1,
        "areaName": "Без курорта",
+
            "areaName": "Без курорта",
        "address": null,
+
            "address": "",
        "phone": null,
+
            "phone": "",
        "email": null,
+
            "email": "",
        "fax": null,
+
            "fax": "",
        "http": null,
+
            "http": null,
        "latitude": "null",
+
            "latitude": "",
        "longitude": "null"
+
            "longitude": "",
 +
            "timeFrom": "",
 +
            "timeTo": "",
 +
            "countryId": 6259,
 +
            "countryName": "Russia"
 
       },
 
       },
 
             {
 
             {
         "id": 2362,
+
         "id": 12303,
        "name": "Gastehaus Franz Riml",
+
            "name": "4 Barcelona",
        "hotelCategoryId": 59,
+
            "hotelCategoryId": 964,
        "hotelCategoryName": "4*+",
+
            "hotelCategoryName": "!!",
        "resortId": 35,
+
            "resortId": 19,
        "resortName": "Вена",
+
            "resortName": "Барселона",
        "areaId": -1,
+
            "areaId": -1,
        "areaName": "Без курорта",
+
            "areaName": "Без курорта",
        "address": null,
+
            "address": null,
        "phone": null,
+
            "phone": null,
        "email": null,
+
            "email": null,
        "fax": null,
+
            "fax": null,
        "http": null,
+
            "http": null,
        "latitude": "null",
+
            "latitude": null,
        "longitude": "null"
+
            "longitude": null,
 +
            "timeFrom": "",
 +
            "timeTo": "",
 +
            "countryId": 84,
 +
            "countryName": "Испания"
 
       }             
 
       }             
 
   ]
 
   ]
Строка 608: Строка 634:
 
** '''ForChildren''' – для детей
 
** '''ForChildren''' – для детей
 
** '''AddCost''' – доплаты
 
** '''AddCost''' – доплаты
 +
** '''checkInTime''' – время заезда в отель (обрабатывается с релиза 15.6)
 +
** '''checkOutTime''' – время выезда из отеля (обрабатывается с релиза 15.6)
 +
** '''latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
 +
** '''longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 651: Строка 681:
 
       "AdditionalService": "<p>Дополнительные услуги<\/p>",
 
       "AdditionalService": "<p>Дополнительные услуги<\/p>",
 
       "ForChildren": "<p>Для детей<\/p>",
 
       "ForChildren": "<p>Для детей<\/p>",
       "AddCost": "<p>Доплата<\/p>"
+
       "AddCost": "<p>Доплата<\/p>",
 +
      "checkInTime": null,
 +
      "checkOutTime": null,
 +
      "latitude": null,
 +
      "longitude": null
 
   }
 
   }
 
}</syntaxhighlight>
 
}</syntaxhighlight>
Строка 667: Строка 701:
 
** '''code''' – код типа номера
 
** '''code''' – код типа номера
 
** '''name''' – название типа номера
 
** '''name''' – название типа номера
 +
** '''nameLat''' – латинское название типа номера
 
** '''mainplaces''' – количество основных мест
 
** '''mainplaces''' – количество основных мест
 
** '''extraplaces''' – количество дополнительных мест
 
** '''extraplaces''' – количество дополнительных мест
Строка 680: Строка 715:
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "version": "1.08",
+
    "version": "1.08",
  "rooms":   [
+
    "rooms": [
             {
+
        {
        "id": 129,
+
            "id": 1245,
        "code": "DBL",
+
            "code": "65",
        "name": "DBL",
+
            "name": "1-мест.",
        "mainplaces": 2,
+
            "nameLat": "1-мест.",
        "extraplaces": 1
+
            "mainplaces": 2,
      },
+
            "extraplaces": 3
             {
+
        },
        "id": 175,
+
        {
        "code": "DBL+CHD",
+
            "id": 2759,
        "name": "DBL+CHD",
+
            "code": "1BR",
        "mainplaces": null,
+
            "name": "1-местный номер",
        "extraplaces": null
+
            "nameLat": "1-bed room",
      },
+
            "mainplaces": 1,
             {
+
            "extraplaces": 0
        "id": 132,
+
        },
        "code": "DBL+EXB",
+
        {
        "name": "DBL+EXB",
+
            "id": 936,
        "mainplaces": 2,
+
            "code": "19",
        "extraplaces": 4
+
            "name": "2 bedroom apartment",
      },
+
            "nameLat": "2 bedroom apartment",
             {
+
            "mainplaces": 2,
        "id": 2,
+
             "extraplaces": 0
        "code": "Double1",
+
        },
        "name": "Double2",
+
        {
        "mainplaces": 2,
+
            "id": 1242,
        "extraplaces": 3
+
            "code": "61",
      },
+
            "name": "2-мест.",
             {
+
            "nameLat": "2-мест.",
        "id": 133,
+
            "mainplaces": 2,
        "code": "SNGL",
+
            "extraplaces": 3
        "name": "SNGL",
+
        },
        "mainplaces": null,
+
        {
        "extraplaces": null
+
            "id": 68,
      },
+
            "code": "APT",
             {
+
            "name": "Apartment",
        "id": 54,
+
            "nameLat": "Apartment",
        "code": "SNGL+2 Child ",
+
            "mainplaces": 3,
        "name": "Sngl+2 Child",
+
            "extraplaces": 3
        "mainplaces": 1,
+
        },
        "extraplaces": 0
+
        {
      },
+
            "id": 976,
             {
+
            "code": "APT",
        "id": 173,
+
            "name": "Apartment",
        "code": "TPL",
+
            "nameLat": "Apartment",
        "name": "TPL",
+
             "mainplaces": 2,
        "mainplaces": null,
+
            "extraplaces": 3
        "extraplaces": null
+
        },
      }    
+
        {
  ]
+
            "id": 1692,
 +
            "code": "DBL",
 +
            "name": "DBL",
 +
            "nameLat": null,
 +
            "mainplaces": 2,
 +
            "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 681,
 +
            "code": "1552485",
 +
            "name": "DeLuxe",
 +
            "nameLat": "DeLuxe",
 +
            "mainplaces": 2,
 +
             "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 928,
 +
            "code": "DBL",
 +
            "name": "Double",
 +
            "nameLat": "Double",
 +
            "mainplaces": 2,
 +
            "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 822,
 +
            "code": "FAM",
 +
            "name": "Family",
 +
             "nameLat": "Family",
 +
            "mainplaces": 2,
 +
            "extraplaces": 2
 +
        },
 +
        {
 +
            "id": 680,
 +
            "code": "1552486",
 +
            "name": "Junior Suite",
 +
            "nameLat": "Junior Suite",
 +
            "mainplaces": 2,
 +
            "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 38,
 +
            "code": "QDRPL",
 +
            "name": "Quadriple",
 +
            "nameLat": "Quadriple",
 +
            "mainplaces": 4,
 +
            "extraplaces": 3
 +
        },
 +
        {
 +
            "id": 1,
 +
            "code": "SGL",
 +
            "name": "Single",
 +
            "nameLat": "Single",
 +
             "mainplaces": 1,
 +
            "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 75,
 +
            "code": "EST",
 +
            "name": "Studio",
 +
            "nameLat": "Studio",
 +
            "mainplaces": 8,
 +
            "extraplaces": 4
 +
        },
 +
        {
 +
            "id": 31,
 +
            "code": "TRPL",
 +
            "name": "Triple",
 +
            "nameLat": "Triple",
 +
            "mainplaces": 3,
 +
             "extraplaces": 3
 +
        },
 +
        {
 +
            "id": 634,
 +
            "code": "1",
 +
            "name": "Без типа номера",
 +
            "nameLat": "Без типа номера",
 +
            "mainplaces": 20,
 +
            "extraplaces": 0
 +
        },
 +
        {
 +
            "id": 521,
 +
            "code": "354548",
 +
            "name": "Двухместный",
 +
            "nameLat": null,
 +
            "mainplaces": null,
 +
             "extraplaces": null
 +
        },
 +
        {
 +
            "id": 520,
 +
            "code": "356555",
 +
            "name": "Двухместный семейный",
 +
            "nameLat": null,
 +
            "mainplaces": null,
 +
            "extraplaces": null
 +
        },
 +
        {
 +
            "id": 2253,
 +
            "code": "20",
 +
            "name": "Двухместный стандарт",
 +
            "nameLat": null,
 +
            "mainplaces": 2,
 +
            "extraplaces": null
 +
        },
 +
        {
 +
            "id": 413,
 +
            "code": "349642",
 +
            "name": "Стандарт",
 +
            "nameLat": null,
 +
            "mainplaces": 2,
 +
            "extraplaces": 0
 +
        }
 +
    ]
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 737: Строка 883:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка типов номеров (GetRoomTypes) начиная с релиза 15.3===
+
===Выгрузка списка категорий номеров (GetRoomTypes) начиная с релиза 15.3===
 
Метод возвращает список всех доступных категорий номеров, на которые есть актуальные цены.
 
Метод возвращает список всех доступных категорий номеров, на которые есть актуальные цены.
 
* Формат запроса:
 
* Формат запроса:
Строка 747: Строка 893:
 
** '''code''' – код категории номера
 
** '''code''' – код категории номера
 
** '''name''' – название категории номера
 
** '''name''' – название категории номера
 +
** '''nameLat''' – латинское название категории номера
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 758: Строка 905:
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "version": "1.08",
+
    "version": "1.08",
  "roomTypes":   [
+
    "roomTypes": [
             {
+
        {
        "id": 4129,
+
            "id": 17754,
        "code": "Cottage Premier Deluxe",
+
            "code": "1BED",
        "name": "Cottage Premier Deluxe"
+
            "name": "1 room",
      },
+
            "nameLat": null
            {
+
        },
        "id": 39,
+
        {
        "code": "Deluxe",
+
            "id": 8908,
        "name": "Deluxe"
+
            "code": "10105",
      },
+
            "name": "1-комн. станд. (с доп.местом)",
             {
+
            "nameLat": null
        "id": 2711,
+
        },
        "code": "Luxe",
+
        {
        "name": "Luxe"
+
            "id": 8078,
      },
+
            "code": "2BED",
             {
+
            "name": "2 rooms",
        "id": 4470,
+
             "nameLat": null
        "code": "Standard Room",
+
        },
        "name": "Standard Room"
+
        {
      }
+
            "id": 7648,
  ]
+
            "code": "357625",
}
+
            "name": "357625",
</syntaxhighlight>
+
            "nameLat": null
 +
        },
 +</