Импорт туров в XML


Импорт туров в XML (пакетная загрузка)

Пакетная загрузка позволяет автоматизировать процесс размещения информации о туристических предложениях агентств на сайте НГС.ТУРИЗМ. Благодаря такой автоматизации нет необходимости добавлять предложения вручную через Личный кабинет. Несколько раз в сутки данные будут автоматически выгружаться с вашего сайта и импортироваться в базу НГС.ТУРИЗМ с привязкой к вашей турфирме.

Как подключить пакетный XML-импорт
Для подключения этого механизма необходимо на стороне сайта турагентства написать программный код, формирующий XML-файл в формате, описанном ниже.
XML-файл должен быть доступен по постоянному url-адресу из Интернета.
Отправить запрос на подключение механизма XML-импорта в Отдел продаж НГС.ТУРИЗМ.
После положительного ответа Отдела продаж зайти в раздел Мои контакты своего Личного кабинета на сайте НГС.ТУРИЗМ. В блоке Настройки импорта указать url размещения XML-файла на сайте агентства, а также, по необходимости, логин и пароль доступа к нему из Интернета.

Далее дано описание XML-формата данных, который используется НГС.ТУРИЗМ для импорта данных турфирм. Формат основан на YML (язык описания товаров и услуг в Яндекс-Маркете), однако имеет ряд особенностей.
Для публикации своих туристических предложений свяжитесь, пожалуйста, с отделом продаж НГС.ТУРИЗМ.
Пример файла:
<!DOCTYPE yml_catalog SYSTEM "http://turizm.ngs.ru/static/data/tours.dtd">
<yml_catalog date="2014-01-22 16:23">
	<shop>
		<offers>
			<offer id="10001" type="tour">
				<city>54</city>
				<direction>pattaya</direction>
				<direction>bangkok</direction>
				<date>2014-04-01</date>
				<days>11</days>
				<price>40000</price>
				<name>Shakespeare Inn</name>
				<hotel_stars>3*</hotel_stars>
				<url>http://www.tophotels.ru/main/hotel/al14136/</url>
				<title>Пляжный отдых в Паттайе</title>
				<room>DBL</room>
				<roomType>Luxe</roomType>
				<windowView>SEA VIEW</windowView>
				<adults>3</adults>
				<option>accommodation</option>
				<option>transfer</option>
				<option>flight</option>
				<option>medical_insurance</option>
				<option>cancel_insurance</option>
			</offer>
			<offer id="10002" type="tour">
				<city>55</city>
				<direction>phuket</direction>
				<date>2014-04-10</date>
				<days>14</days>
				<priceTotal>1800</priceTotal>
				<currencyId>USD</currencyId>
				<name>Phuket Graceland Resort &amp; Spa</name>
				<hotel_stars>4*</hotel_stars>
				<url>http://tophotels.ru/main/hotel/al14376</url>
				<activity>48</activity>
				<option>accommodation</option>
				<option>transfer</option>
				<option>flight</option>
				<option>medical_insurance</option>
			</offer>
		</offers>
	</shop>
</yml_catalog>

Описание формата данных

<yml_catalog>

Корневым тегом документа является тег <yml_catalog>. Тег должен иметь атрибут date, значение которого соответствовать дате и времени генерации каталога на стороне турфирмы в формате YYYY-MM-DD hh:mm. Дата генерации каталога проверяется при каждой итерации импорта. Если дата меньше, чем дата предыдущей итерации, импорт не осуществляется.
Тег <yml_catalog> должен иметь единственный вложенных тег <shop>, который содержит остальные элементы.
Пример использования:
<yml_catalog date="2010-04-01 17:00">
<shop>
...
</shop>
</yml_catalog>

<shop>

Тег <shop> содержит параметры, соответствующие общим сведениям о турфирме и параметрах загружаемых данных. Далее приведено описание соответствующих тегов.

<offers>

Список туров фирмы. Должен содержать теги <offers>, соответствующие импортируемым турам.

<offer>

Тег содержит параметры импортируемого тура. Тег должен содержать атрибут id, а также набор тегов соответствующих параметрам импортируемого тура.
Атрибут id содержит идентификатор тура на стороне турфирмы. Он должен быть уникальным в рамках одного файла каталога. При импорте тура с определенным идентификатором старый тур с таким же идентификатором будет перезаписан. Обратите внимание, НГС.ТУРИЗМ при импорте присваивает туру свой идентификатор, который не соответствует указанному этим атрибутом.
Атрибут type должен иметь значение tour. В ином случае элемент не будет считаться туром и не будет импортирован.
Пример использования:
<offer id="111" type="tour">

</offer>

<city>

Город отправления тура.
Возможные значения[xml]:
Индентификатор Город
54 Новосибирск
22 Барнаул
24 Красноярск
66 Екатеринбург
42 Кемерово
77 Москва
55 Омск
78 Санкт-Петербург
70 Томск
38 Иркутск
72 Тюмень
23 Краснодар
93 Сочи
02 Уфа
74 Челябинск
101 Новокузнецк
Если определить город не удалось, генерируется ошибка «Не найден город отправления». Рекомендуется обязательно указывать город отправления в теге city.
Пример использования:
<city>54</city>

<direction>

Направление тура. Тег должен содержать числовое значение, соответствующее идентификатору направления. Обязательный тег. В случае комбинированного тура указывается несколько тегов <direction> с соответствующими идентификаторами направления. Однако не следует указывать несколько направлений, одно из которых является родительским направлением по отношению к другому — достаточно указать направление самого нижнего уровня. Например, если тур в Таиланд в Паттайю, в качестве направления следует указать Паттайю. В случае комбинированного тура Паттайя + Бангкок следует указать направления Паттайя и Бангкок.
Пример использования:

<direction>pattaya</direction>
<direction>bangkok</direction>

<date>

Дата отправления в формате гггг-мм-дд. Обязательный тег. Если формат даты не соответствует указанному, генерируется ошибка «Неверная дата тура», тур не добавляется. Если указанная дата меньше текущей даты, генерируется ошибка «Дата отправления тура не может быть меньше текущей», соответствующий тур не импортируется.
Пример использования:
<date>2014-04-01</date>

<days>

Продолжительность тура в днях, включая дорогу. Обязательный тег.
Пример использования:
<days>12</days>

<price>

Цена тура за человека. Если этот параметр не указан, а указан параметр общей стоимости тура (priceTotal), в качестве цены за человека принимается значение общей стоимости, деленное на количество взрослых человек в туре (параметр adults). Если не указана ни общая стоимость тура, ни стоимость за человека, генерируется ошибка «Не указана цена», тур не импортируется. Валюта цены определяется значением в поле currencyId.
Пример использования:
<price>23500</price>

<priceTotal>

Общая стоимость тура. Если параметр не указан, а указан параметр цены за человека (price), в качестве общей стоимости тура принимается цена за человека, умноженная на количество взрослых человек в туре (параметр adults). Если не указана ни общая стоимость тура, ни стоимость за человека, генерируется ошибка «Не указана цена», тур не импортируется. Валюта определяется значением в поле currencyId.
Пример использования:
<priceTotal>27000</priceTotal>

<currencyId>

Валюта, в которой задана стоимость тура (цена за человека и общая стоимость). Необязательный тег. По-молчанию принимается значение RUR.
Возможные значения[xml]:
  • RUR
  • USD
  • EUR
Если задано иное значение, генерируется ошибка «Неподдерживаемая валюта» и соответствующий тур не импортируется. Обратите внимание, что для туров, стоимость которых задана в иностранной валюте, действуют правила формирования курса, заданные в личном кабинете пользователя (на основании курса ЦБ РФ, либо задается вручную).
Пример использования:
<currencyId>RUR</currencyId>

<name>

Название отеля (или иного места размещения). Категорию звездности отеля здесь указывать не следует, она должна быть указана тегом hotel_stars. Обязательный тег.
Пример использования:
<name>Shakespeare Inn</name>

<hotel_stars>

Категория отеля. Обязательный тег.
Возможные значения[xml]:
  • 1*
  • 2*
  • 3*
  • 4*
  • 5*
  • 3*+
  • 4*+
  • HV-1*
  • HV-2*
  • Apts
  • Villas
Пример использования:
<hotel_stars>5*</hotel_stars>

<url>

Ссылка на описание отеля на сайте турфирмы (или другом внешнем сайте). По ссылке должно находиться описание отеля, название которого приведено тегом name. Необязательный тег.
Пример использования:
<url>http://example.com/hotels/456</url>

<title>

Название тура, которое будет выводиться пользователю. Необязательный тег. По-умолчанию заголовок формируется автоматически на основании города вылета и направления тура.
Пример использования:
<title>Пляжный отдых в Паттайе</title>

<activity>

Вид отдыха, соответствующий туру. Необязательный тег. По-умолчанию применяется «Пляжный отдых».
Возможные значения[xml]:
Индентификатор Вид отдыха
25 Экскурсии
29 Событийный туризм
40 Автобусные туры
13 Автотуризм
7 Конные туры
44 Семейный отдых
2 Активный туризм
45 Молодежный отдых
12 Горнолыжные туры
38 Туры выходного дня
47 Корпоративный отдых
22 Охота и рыбалка
35 Санаторно-курортное лечение
6 Велотуризм
24 Пляжный отдых
55 Трансфер и доставка
41 Круизы
26 Экотуризм
46 Детский отдых
48 Свадебные туры
56 Рекламные туры
34 Шоп-туры
Пример использования:
<activity>47</activity>

<room>

Тип размещения туристов. Необязательный тег.
Возможные значения[xml]:
Индентификатор Тип размещения
SNG одноместное размещение
SNG+CHD взрослый с ребенком
SNG+2CHD взрослый с 2 детьми
DBL 2 взрослых, стандартное размещение
DBL+CHD 2 взрослых с ребенком
DBL+2CHD 2 взрослых с 2 детьми
DBL+3CHD 2 взрослых с 3 детьми
Triple 3 взрослых
Triple+CHD 3 взрослых с ребенком
Triple+2CHD 3 взрослых с 2 детьми
Quadruple 4 взрослых
5 Pax 5 взрослых
6 Pax 6 взрослых
Пример использования:
<room>SNG</room>

<roomType>

Тип номера при размещении туристов. Необязательный тег.
Возможные значения[xml]:
  • Standard
  • Superior
  • Deluxe
  • Luxe
  • Junior Suite
  • Family Room
  • Economy Room
  • Annex Room
  • Villa
  • Bungalow
  • ROH
  • Club room
Пример использования:
<roomType>Bungalow</roomType>

<windowView>

Вид из окна номера. Необязательный тег.
Возможные значения[xml]:
  • RUN OF THE HOUSE
  • BEACH VIEW
  • CITY VIEW
  • DUNE VIEW
  • SEA VIEW
Пример использования:
<windowView>SEA VIEW</windowView>

<meal>

Тип питания. Обязательный тег. Если питание в туре отсутствует, следует указывать соответствующее значение.
Возможные значения[xml]:
  • RO
  • BB
  • HB
  • HB+
  • FB
  • FB+
  • FBT
  • AI
  • UAI
  • LRO
  • LHB
  • LAI
  • LBB
  • LHB2
  • LHH
Пример использования:
<meal>UAI</meal>

<adults>

Количество взрослых туристов, на которое рассчитан тур. Должен содержать положительное число. Необязательный тег. По-умолчанию принимается значение 2.
Пример использования:
<adults>3</adults>

<children>

Количество детей, на которое рассчитан тур. Должен содержать положительное число или ноль. Необязательный тег. По-умолчанию принимается значение 0.
Пример использования:
<children>1</children>

<option>

Информация о том, что какая-либо опция включена в тур. Должен содержать один из допустимых идентификаторов опции. Обязательно наличие хотя бы одного тега <option>.
Возможные значения[xml]:
Индентификатор Опция
accommodation Проживание
transfer Трансфер
flight А/б
train Ж/д
medical_insurance Медицинская страховка
cancel_insurance Страховка от невыезда
excursion Экскурсии
visa Виза
skipass Ски-пасс
guide Услуги гида
medical_treatment Лечение
sport_insurance Спортивная страховка
insure Страховка
fuel Топливный сбор
Пример использования:
<option>accommodation</option>
<option>transfer </option>
<option>flight</option>
<option>medical_insurance</option>
<option>cancel_insurance</option>

<description>

Текстовое описание тура. Может содержать дополнительную информацию, для которой не предусмотрено соответствующего поля. Не рекомендуется дублировать информацию, которая уже есть в других полях. Необязательный тег.
Пример использования:
<description>Групповой автобусный тур из Новосибирска.</description>
Максимальный допустимый объем файла для импорта составляет 2 Мб.