![]() | Описание XML-шлюза для работы с объявлениями на сайте Новосёл.руОбщая информация |
Версия 2.3 от 24.03.2023 г.
Постоянный адрес документа: https://novosel.ru/xmlinfo.php
XML-шлюз для работы с объявлениями предназначен для удобной работы с большим количеством часто обновляемых объявлений. Прежде всего его удобно использовать организациям, например агентствам недвижимости, автосалонам, кадровым агентствам, турфирмам и др. для быстрой публикации своих предложений в интернете. XML-шлюз позволяет в автоматическом режиме, а значит очень быстро и безошибочно, публиковать объявления, изменять их (синхронизировать данные с данными клиента), удалять устаревшие объявления. Для обычного пользователя все те же функции доступны на сайте novosel.ru через обычный интернет-браузер.
Для того чтобы начать работу с XML-шлюзом необходимо:
Поскольку выгрузка объявлений на сайт через XML-шлюз как правило используется только коммерческими организациями, данная услуга платная. Стоимость услуги зависит от объёмов выгрузки объявлений. При подключении в формате сайта Новосёл.ру плата за период тестирования и первый месяц работы не взимается!
Объём выгрузки | Цена в месяц* |
до 100 объявлений | 500 руб. |
до 300 объявлений | 1 000 руб. |
до 500 объявлений | 2 000 руб. |
до 1 000 объявлений | 3 000 руб. |
до 5 000 объявлений | 5 000 руб. |
до 10 000 объявлений | 9 000 руб. |
до 50 000 объявлений | 15 000 руб. |
*При оплате услуг по XML-выгрузке объявлений на длительный срок (от полугода и более) предоставляются дополнительные индивидуальные скидки.
Схема оплаты услуги по выгрузке объявлений следующая. При наличии на счету клиента суммы, соответствующей минимальному тарифу, выгрузка объявлений разрешается. Со счёта клиента списывается сумма, соответствующая минимальному тарифу и объявления выгружаются до достижения разрешённого объёма выгрузки. Если количество выгружаемых объявлений клиента превышает разрешённый объём, проверяется наличие на его счету суммы, соответствующей следующему по объёму тарифу выгрузки (за вычетом уже списанной по предыдущему тарифу). Если сумма на счету клиента позволяет, со счёта списывается недостающая до нового тарифа сумма и выгрузка продолжается. Если суммы на счету клиента недостаточно для перехода на повышенный тариф, то выгрузка останавливается, клиент получает по почте извещение о недостатке средств.
Если в процессе выгрузки старые объявления клиента удаляются и заменяются новыми, учитывается только то количество объявлений, которое находится на сайте в текущий момент. Количество обновлений объявлений и их замены в течение месяца не лимитируется.
Таким образом, клиент всегда платит лишь за тот объём объявлений, который реально есть на сайте в этом месяце, и автоматически переходит на пониженный тариф, если это количество снижается до уровня данного тарифа.
Деньги списываются со счёта клиента в момент первой (за данный календарный месяц) выгрузки на сайт (тестовые выгрузки не учитываются) и выгрузка по данному тарифу считается оплаченной до того-же числа следующего месяца. Например, первая рабочая выгрузка была сделана 15-го апреля. Следующее списание со счёта клиента за услугу по выгрузке будет произведено 15-го мая. Таким образом не имеет смысла ожидать начала месяца для начала работы с XML-выгрузкой. Начинать работу можно в любой день.
В качестве основного формата для обмена данными мы используем универсальный XML-формат, разработанный специалистами портала Доски.ру. В отличие от большинства распространённых форматов данный формат универсален, может использоваться для обмена данными об объектах из любой предметной области (недвижимость, автомобили, бытовая техника, другие товары и услуги).
Если Вы не можете использовать предлагаемый XML-формат, но уже используете для XML-обмена другие популярные форматы, например, Яндекс.Недвижимость, Яндекс.Маркет, Циaн, Aвитo и другие, мы имеем возможность быстрой настройки нашего XML-шлюза на работу и с ними. Главное требование к импортируемым в нашу систему данным - объекты, товары и услуги должны иметь полноценное текстовое описание, а не просто наименование с ценой.
Для ручной загрузки объявлений через личный кабинет пользователя могут использоваться файлы формата MS Office Excel и текстовые файлы с разделителями, формата .CSV (см. описание ниже).
В случае использования Вами перечисленных или любого другого формата обмена процедура подключения XML-выгрузки следующая:
1. Вы делаете запрос на подключение к нашему сервису в Вашем формате через форму обратной связи. В запросе Вы указываете ссылку на файл с Вашими данными и примерное количество объявлений, которые Вы планируете выгружать на наш сайт.
2. Мы проверяем файл, оцениваем реализуемость подобной выгрузки, выявляем наличие технических и логических ошибок в файле, и сообщаем Вам о готовности реализовать XML-обмен.
3. Вы пополняете Ваш кошелёк на сайте на сумму, достаточную для оплаты минимального периода XML-выгрузки (1 месяц).
4. Мы настраиваем XML-импортёр под Ваш формат, загружаем Ваши объявления и сообщаем Вам о готовности ежедневной автоматической загрузки Ваших данных. Так же Вам предоставляется ссылка на отчет о загрузке данных, содержащий ссылки на размещённые на нашем сайте объявления.
Возможны два способа обмена XML-данными:
В таблице представлено сравнение двух способов обмена XML-данными по наиболее важным аспектам.
Двунаправленный XML-обмен | Файловая (фид) выгрузка |
Мгновенное обновление данных | Периодическое (1 раз в сутки) обновление данных |
Каждый запрос добавляет/изменяет/удаляет одно объявление | Вся база объявлений клиента выгружается в одном файле |
Возможно оперативное удаление устаревших объявлений | Отсутствующие в файле объявления считаются удалёнными |
Предусмотрена автоматическая передача данных клиенту о структуре каталога разделов, кодах регионов, состоянии объявлений клиента | Однонаправленный обмен от клиента к сайту. Получение клиентом данных о структуре каталога разделов, кодах регионов, состоянии объявлений возможна только в ручном режиме. |
При этом в обоих способах используется один и тот же формат данных об объявлении с той лишь разницей, что при файловой выгрузке массив объявлений упаковывается в общий XML-контейнер Offers.
Адрес шлюза https://novosel.ru/xmlgate.php
Шлюз обрабатывает шесть типов запросов:
Передача данных осуществляется по протоколу HTTP, по стандартной схеме: клиент передает шлюзу XML-запрос в теле запроса POST, шлюз обрабатывает данные, и возвращает ответ в формате XML. Используемая кодировка UTF-8. Простейший пример PHP-функции отправки XML-запроса в теле запроса POST Вы можете посмотреть здесь.
Для авторизации пользователя в API-шлюзе запрос любого типа содержит теги:
UserID - код клиента в системе Новосёл.ру.
UserHash - хеш-ключ, полученный функцией crc32 из строки, содержащей код клиента в системе Новосёл.ру и пароль клиента. Крайне не рекомендуется использовать кириллические символы в пароле на доступ к сайту!
При использовании обмена данными через XML-файл данные поля не обязательны, поскольку настройки обмена выполняются уже авторизованными пользователями.
В любом запросе в атрибуте Type тега Request указывается тип запроса (режим работы шлюза).
В любом запросе тег Request может содержать атрибут TestMode, не нулевое значение которого указывает на тестовый режим работы шлюза, при котором шлюз возвращает корректные ответы, но никаких изменений в данных при этом не производится, плата за начало использования XML-обмена не взымается.
При подключении к нашей системе для тестирования XML-запросов, которые будет отправлять ваше программное обеспечение, Вы можете использовать интерфейс проверки XML-запросов.
Атрибут Type тега Request имеет значение "ShowCategories"
Пример запроса списка разделов сайта:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="ShowCategories" UserID="23" UserHash="90823996" />
Ответ шлюза в теге Response содержит полный перечень разделов и рубрик сайта Новосёл.ру, в которых доступна публикация объявлений в теге Categories. Теги Class содержат атрибут ClassName - название раздела сайта. Теги Category содержат атрибуты:
CategoryID - код рубрики, который необходимо указывать при публикации объявления;
CategoryName - название рубрики.
Пример ответа на запрос списка разделов сайта:
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Success"> <Categories> <Class ClassName="Недвижимость"> <Class ClassName="Жилая"> <Category CategoryID="24" CategoryName="Дома, дачи"/> <Category CategoryID="22" CategoryName="Квартиры"/> <Category CategoryID="23" CategoryName="Комнаты"/> </Class> <Class ClassName="Коммерческая"> <Category CategoryID="27" CategoryName="Офисные помещения"/> <Category CategoryID="28" CategoryName="Производственные помещения"/> <Category CategoryID="30" CategoryName="Свободного назначения"/> <Category CategoryID="31" CategoryName="Складские помещения"/> <Category CategoryID="32" CategoryName="Торговые помещения"/> </Class> <Class ClassName="Земельные участки"> <Category CategoryID="35" CategoryName="Дачные участки"/> <Category CategoryID="38" CategoryName="Промышленного назначения"/> <Category CategoryID="36" CategoryName="Сельхозугодья"/> <Category CategoryID="37" CategoryName="Участки под ИЖС и ЛПХ"/> <Category CategoryID="39" CategoryName="Земли прочего использования"/> </Class> </Class> <Category CategoryID="200" CategoryName="Прочее разное"/> <Category CategoryID="305" CategoryName="Отдам даром / приму"/> </Categories> </Response>
Полный список разделов в виде XML-файла можно посмотреть здесь
В случае неверной авторизации при обращении к шлюзу клиент может получить следующий ответ:
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Error" ErrorType="1" HumanStatus="Неверный код клиента или неправильный хеш-ключ." />
Атрибут Type тега Request имеет значение "ShowLocations"
Пример запроса списка географических объектов
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="ShowLocations" UserID="23" UserHash="90823996" />
Ответ шлюза в теге Locations содержит полный перечень регионов и их кодов, используемых на сайте Новосёл.ру с учётом их иерархии. Некоторые географические объекты объединены в группы, привязка объявлений к которым невозможна. Информация о таких группах передаётся тегами Class, которые содержат единственный атрибут ClassName - название группы географических объектов. Теги Location содержат атрибуты:
LocationID - код географического объекта в базе сайта Новосёл.ру, который необходимо указывать при публикации объявления;
LocationName - название географического объекта.
Пример ответа на запрос списка географических объектов:
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Success"> <Locations> <Location LocationName="Россия" LocationID="1"> <Location LocationName="Центральный регион" LocationID="1845"> <Location LocationName="Москва и Московская область" LocationID="55"> <Location LocationName="Москва" LocationID="140"> <Class ClassName="Административные округа"> <Location LocationName="Восточный округ" LocationID="282"/> <Location LocationName="Западный округ" LocationID="286"/> <Location LocationName="Зеленоград" LocationID="288"/> <Location LocationName="Северный округ" LocationID="280"/> <Location LocationName="Северо-Восточный округ" LocationID="281"/> <Location LocationName="Северо-Западный округ" LocationID="287"/> <Location LocationName="Центральный округ" LocationID="279"/> <Location LocationName="Юго-Восточный округ" LocationID="283"/> <Location LocationName="Юго-Западный округ" LocationID="285"/> <Location LocationName="Южный округ" LocationID="284"/> </Class> </Location> </Location> </Location> </Location> </Location> </Response>
Полный список географических объектов в виде XML-файла можно посмотреть здесь
В качестве значений аттрибутов тега Location должны использоваться полные официальные названия соответствующих объектов, используемые в официальных классификаторах географических, административно-территориальных объектов без использования сокращений. Например, не "Центральный р-н", а "Центральный район", не "МО", не "Моск. обл.", а "Московская область" и т.д.
В запросе на публикацию объявления атрибут Type тега Request в запросе имеет значение "SendOffer". В теле запроса передаётся объект Offer, имеющий следующие элементы
Элемент | Описание | Тип данных | Обязательность |
InternalID | Уникальный идентификатор объявления в базе данных клиента | Целое положительное число | Обязателен для всех типов объявлений |
CategoryID | Рубрика, в которой публикуется объявление | Число. Значение выбирается из списка | Обязателен для всех типов объявлений |
Locations | Привязка объявления к одному или нескольким географическим объектам | Контейнер, содержащий элементы Location. Способ формирования приведён ниже | Обязателен для всех типов объявлений |
OfferType | Тип предложения (куплю, продам, сниму, сдам и т.д.) | Контейнер. Способ задания и перечень возможных значений приведён ниже | Обязательность и список возможных значений зависит от выбранной для публикации рубрики |
Title | Заголовок объявления | Строка до 80 символов | Обязателен для всех типов объявлений |
Description | Тело объявления. Подробное текстовое описание предложения | Строка до 3000 символов; | Обязателен для всех типов объявлений |
UserType | Тип пользователя | 1 - Частное лицо (собственник), 2 - Компания (посредник, агент) | Обязателен для всех типов объявлений |
CompanyName | Название компании | Строка до 50 символов | Элемент обязателен если UserType имеет значение 2 |
ContactName | Контактное лицо, имя автора объявления | Строка до 50 символов | Обязателен для всех типов объявлений |
ContactMail | Контактный E-mail | Строка до 50 символов | Обязателен при отсутствии элемента Phone |
Phone | Контактный телефон | Строка до 50 символов | Обязателен при отсутствии элемента ContactMail |
Price | Цена объекта объявления | Контейнер. Элементы: Value - значение цены. Положительное число, точность 2 знака; Currency - код валюты (RUR, EUR, USD, UAH) При отсутствии элемента Currency принимается валюта по умолчанию - рубли. | Обязательность зависит от выбранной для публикации рубрики |
Pass1 | Пароль для редактирования объявления | Строка до 20 символов | Не обязателен |
Images | Список фотографий и видео объекта объявления. | Контейнер. Содержит теги Image и Video с URL фотографий и видео объекта | Не обязателен |
DaysPromote2 | Количество дней платного продвижения данного объявления | Целое положительное число | Не обязателен |
PublicDate | Видимая пользователям дата/время публикации объявления | Дата/время в формате YYYY-MM-DD HH:mm:ss | Не обязателен |
ExpireDate | Дата/время окончания действия объявления. По истечении этой даты объявление удаляется с сайта | Дата/время в формате YYYY-MM-DD HH:mm:ss | Не обязателен |
Parms | Дополнительные параметры, описывающие объект объявления | Контейнер. Содержит теги Parm. Для каждого раздела и каждого типа объявлений может быть определён свой набор параметров. Способ задания и перечень возможных значений приведён ниже | Обязательность и список возможных значений зависит от выбранной для публикации рубрики |
Порядок следования тегов не имеет значения, за исключением тегов Image и Video, порядок следования которых определяет порядок следования фотографий и видео в объявлении.
В теге Video должна быть ссылка на видеоролик, выложенный на публичных видеохостингах RuTube или YouTube. Видеоролик должен быть доступен для публичного просмотра, или просмотра по ссылке.
Каждое объявление на сайте Новосёл.ру должно иметь как минимум одну привязку к региону или конкретному географическому месту. Для объявлений, публикуемых в разделе "Недвижимость", такая привязка должна быть одна и она должна как можно точнее описывать местоположение объекта. Привязка здесь возможна только к географическим объектам нижнего уровня (город, район города, станция метро). Если для данного региона, например зарубежье, не определён список городов, то возможна привязка к странам. Для объявлений, публикуемых в прочих разделах, например, "Услуги" допустима привязка объявлений к нескольким географическим местам, где данные услуги могут быть оказаны, а так же к географическим объектам верхнего уровня (страны, регионы).
Для задания географической привязки объявления используется контейнер Locations, в котором могут содержаться один или несколько тегов Location, каждый из которых задаёт привязку к одному географическому месту. Тег Location может содержать следующие элементы:
Элемент | Описание | Тип данных |
LocationID | Код географического объекта в базе сайта Новосёл.ру | Число. Значение выбирается из списка |
Country | Название страны | Текстовое поле |
Region | Регион указанной страны | Текстовое поле |
District | Район указанного региона | Текстовое поле |
Locality | Название населенного пункта, города, посёлка | Текстовое поле |
SubLocality | Район населенного пункта | Текстовое поле |
Metro | Название ближайшей станции метро | Текстовое поле |
Address | Адрес объекта, включающий улицу, номер дома, корпус, строение | Текстовое поле |
Latitude | Географическая широта | Число. Рекомендуемая точность до 6 знаков после запятой |
Longitude | Географическая долгота | Число. Рекомендуемая точность до 6 знаков после запятой |
Ни один из перечисленных выше элементов не является обязательным, однако их набор в теге Location должен позволять нашей информационной системе определять местонахождение объекта хотя бы одним из трех возможных способов:
Ниже приведены примеры формирования тега Location.
Минимальный вариант, полностью определяющий привязку объявления к Центральному Административному округу Москвы через код географического объекта:
<Location LocationID="279"/>
Тот же вариант, дополненный географическими координатами объекта (вариант, желательный для использования с объектами недвижимости):
<Location LocationID="279" Latitude="55.756458" Longitude="37.623211"/>
Для описания объектов недвижимости при любом из вариантов указания привязки лучше дополнять его точными географическими координатами.
Вариант с использованием набора элементов, определяющих расположение объекта:
<Location> <Country>Россия</Country> <Region>Московская область</Region> <District>Дмитровский район</District> <Locality>Дмитров</Locality> <Address>Чекистская улица, дом 8</Address> <Latitude>56.338536</Latitude> <Longitude>37.532012</Longitude> </Location>
Полный вариант с использованием всего возможного набора элементов (тег LocationID содержит код ближайшего к объекту метро Пушкинская):
<Location> <LocationID>411</LocationID> <Country>Россия</Country> <Region>Московская область</Region> <Locality>Москва</Locality> <SubLocality>Центральный округ</SubLocality> <Metro>Пушкинская</Metro> <Address>Тверская улица, 18а</Address> <Latitude>55.765969</Latitude> <Longitude>37.604034</Longitude> </Location>
В зависимости от выбранной для публикации рубрики объявлению может быть присвоен один из нескольких типов, который передаётся в теге OfferType. Данный тег должен содержать хотя бы один из двух атрибутов (можно оба), определяющих выбранный тип:
Элемент | Описание | Тип данных |
TypeID | Код типа объявления | Число. Значение выбирается из списка |
TypeName | Название типа объявления | Текстовое поле. Значение выбирается из списка |
Например, ниже в таблице приведены возможные типы объявлений для рубрик раздела "Недвижимость":
Рубрика | Типы объявлений |
Коммерческая недвижимость | 1 - Продам 2 - Куплю 4 - Сдаю 5 - Сниму |
Земельные участки | 1 - Продам 2 - Куплю |
Примеры возможных вариантов заполнения тега OfferType (варианты эквивалентны)3:
<OfferType> <TypeID>1</TypeID> <TypeName>Продам</TypeName> </OfferType> | <OfferType TypeID="1"/> | <OfferType TypeName="Продам"/> |
Чтобы получить информацию о возможных значениях типов объявлений для интересующей Вас рубрики, выберите её название в дереве рубрик ниже
Выберите рубрику![]() |
В контейнере Parms в элементах Parm передаются дополнительные параметры, характеризующие объект, описываемый в объявлении. Например, для объявлений о продаже квартиры такими параметрами будут количество комнат в квартире, общая и жилая площади, этаж, состояние ремонта...
Плохая новость состоит в том, что для каждого сочетания "тематическая рубрика - тип объявления" может быть определён свой (в том числе и пустой) набор параметров, часть из которых обязательна для указания. Таким образом не очень просто точно настроить экспорт данных на каждую рубрику и каждый тип объявления.
Хорошие же новости состоят в том, что, во-первых, общий перечень дополнительных параметров не такой большой. Во-вторых, при экспорте данных в структуре объявления можно передавать и те параметры, которые для данной рубрики и данного типа объявлений не используются. Это не вызовет фатальной ошибки и не прервёт обработку данного объявления. Лишние параметры будут просто проигнорированы.
Таким образом при реализации экспорта данных в множество разных рубрик сайта допустим подход при котором система клиента для каждого из объявлений передаёт всё множество параметров, которыми описываются предложения клиента в его базе, а уже на этапе импорта система Новосёл.ру выбирает из них только требуемые для данного объявления. Разумеется, при этом не следует передавать пустые теги для тех параметров, которые в базе данных клиента не определены.
Элемент Parm формируется следующим образом:
Элемент | Описание | Тип данных | Обязательность |
ParmID | ID параметра | Число. Значение выбирается из списка | Не обязателен, если присутствует ParmName |
ParmName | Название параметра | Текстовое поле. Значение выбирается из списка | Не обязателен, если присутствует ParmID |
Value | Значение параметра | Тип данных определяется типом параметра | Не обязателен, если присутствует ValueID |
ValueID | ID значения параметра. Может использоваться для параметров, возможные значения которых ограничены списком, вместо самих значений | Число | Не обязателен, если присутствует Value |
Unit | Единица измерения параметра | Текстовое поле. Значение выбирается из списка:
| Не обязателен, если параметр не измеримый, или значение Value указано в единицах измерения, использующихся для данного параметра по умолчанию |
Примеры возможных вариантов заполнения тега Parm (варианты эквивалентны):
<Parm> <ParmID>1</ParmID> <ParmName>FlatArea</ParmName> <Value>34.3</Value> <Unit>кв.м</Unit> </Parm> | <Parm ParmID="1" Value="34.3"/> | <Parm ParmName="FlatArea" Value="34.3"/> |
Примеры возможных вариантов заполнения тега Parm для перечислимых типов (варианты эквивалентны):
<Parm> <ParmID>36</ParmID> <ParmName>Condition</ParmName> <ValueID>3</ValueID> <Value>Требует ремонта</Value> </Parm> | <Parm> <ParmID>36</ParmID> <ValueID>3</ValueID> </Parm> | <Parm> <ParmName>Condition</ParmName> <Value>Требует ремонта</Value> </Parm> |
<Parm ParmID="36" ValueID="3"/> | <Parm ParmName="Condition" Value="Требует ремонта"/> |
На данных примерах видно, что при использовании только ParmID и ValueID получаем более компактный код, а при использовании ParmName и Value более читаемый.
Список используемых на сайте Новосёл.ру дополнительных параметров:
Параметр | ID параметра (ParmID) | XML-имя параметра (ParmName) | Тип данных | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Новостройка | 9 | NewFlat | Логическое поле. Возможные значения Value: "да" или "нет", "true" или "false", "1" или "0", "+" или "-". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Балкон/лоджия | 10 | Balcony | Логическое поле. Возможные значения Value: "да" или "нет", "true" или "false", "1" или "0", "+" или "-". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Общая площадь [ м2] | 11 | TotalArea | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Жилая площадь [ м2] | 12 | LivingArea | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Площадь комнаты [ м2] | 13 | RoomArea | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Площадь [ м2] | 1 | Area | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество комнат | 2 | Rooms | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Этаж | 14 | Floor | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Этажей в доме | 25 | FloorsTotal | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип дома | 35 | BuildingType | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Гараж | 30 | Garage | Логическое поле. Возможные значения Value: "да" или "нет", "true" или "false", "1" или "0", "+" или "-". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Год постройки | 26 | BuiltYear | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вид строения | 34 | BuildType | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Состояние | 33 | HouseCondition | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Состояние | 36 | Condition | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Площадь строения [ м2] | 24 | BuildArea | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Класс | 39 | BuildClass | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Площадь участка [ ГА] | 5 | LotAreaGa | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Площадь участка [ соток] | 6 | LotAreaSot | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип дома | 40 | HouseType | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Возраст [ лет] | 4 | Age | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Зарплата | 7 | Salary | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Охрана | 42 | Guard | Логическое поле. Возможные значения Value: "да" или "нет", "true" или "false", "1" или "0", "+" или "-". | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип места | 44 | ParkingType | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тип гаража | 43 | GarageType | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Марка | 46 | AutoMark | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Модель | 56 | AutoModel | Текст. Максимум символов: 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Год выпуска | 47 | YearMade | Число | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Порода | 57 | CatBreed | Значение выбирается из списка:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Порода | 58 | DogBreed | Значение выбирается из списка:
|
Параметры площади участка LotArea, LotAreaSot и LotAreaGa являются взаимозаменяемыми. Не найдя требуемого для данной рубрики параметра XML-парсер пытается определить его значение по наличию другого параметра площади участка с нужным коэффициэнтом пересчёта.
Для примера ниже приведена таблица использования дополнительных параметров в рубриках раздела "Недвижимость":
Рубрика | Тип объявления | Используемые параметры | |||
Параметр | ParmID | ParmName | Обязательный | ||
Коммерческая недвижимость \ Автонедвижимость | Продам | Дополнительные признаки не определены | |||
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Дополнительные признаки не определены | ||||
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Бары, рестораны, кафе, клубы | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Залы для мероприятий | Сдаю | Дополнительные признаки не определены | |||
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Медицинские учреждения, аптеки | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Открытые площадки | Продам | Площадь участка [ соток] | 6 | LotAreaSot | Нет |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь участка [ соток] | 6 | LotAreaSot | Нет | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Офисные помещения | Продам | Площадь [ м2] | 1 | Area | Да |
Класс | 39 | BuildClass | Нет | ||
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Класс | 39 | BuildClass | Нет | ||
Сниму | Дополнительные признаки не определены | ||||
Посуточно | Площадь [ м2] | 1 | Area | Нет | |
Класс | 39 | BuildClass | Нет | ||
Коммерческая недвижимость \ Производственные помещения | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Салоны красоты, сауны | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Свободного назначения | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Складские помещения | Продам | Площадь [ м2] | 1 | Area | Да |
Класс | 39 | BuildClass | Нет | ||
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Класс | 39 | BuildClass | Нет | ||
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Торговые помещения | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Турбазы, гостиницы, дома отдыха | Продам | Площадь строения [ м2] | 24 | BuildArea | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь строения [ м2] | 24 | BuildArea | Да | |
Сниму | Дополнительные признаки не определены | ||||
Коммерческая недвижимость \ Прочие помещения | Продам | Площадь [ м2] | 1 | Area | Да |
Куплю | Дополнительные признаки не определены | ||||
Сдаю | Площадь [ м2] | 1 | Area | Да | |
Сниму | Дополнительные признаки не определены | ||||
Земельные участки \ Дачные участки | Продам | Площадь участка [ соток] | 6 | LotAreaSot | Да |
Куплю | Дополнительные признаки не определены | ||||
Земельные участки \ Промышленного назначения | Продам | Площадь участка [ ГА] | 5 | LotAreaGa | Да |
Куплю | Дополнительные признаки не определены | ||||
Земельные участки \ Сельхозугодья | Продам | Площадь участка [ ГА] | 5 | LotAreaGa | Да |
Куплю | Дополнительные признаки не определены | ||||
Аренда | Дополнительные признаки не определены | ||||
Земельные участки \ Участки под ИЖС и ЛПХ | Продам | Площадь участка [ соток] | 6 | LotAreaSot | Да |
Куплю | Дополнительные признаки не определены | ||||
Земельные участки \ Земли прочего использования | Продам | Площадь участка [ соток] | 6 | LotAreaSot | Да |
Куплю | Дополнительные признаки не определены |
Чтобы получить информацию об использовании дополнительных параметров в интересующей Вас рубрике, выберите её название в дереве рубрик ниже
Выберите рубрику![]() |
Минимальный вариант. Реклама услуг, предоставляемых удалённо по всей территории России. Без типа объявления, без цены, без фото, без дополнительных параметров.
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="SendOffer" UserID="23" UserHash="90823996"> <Offer> <InternalID>123456</InternalID> <CategoryID>385</CategoryID> <Locations> <Location LocationID="1"/> </Locations> <Title>Удалённая разработка и продвижение сайтов</Title> <Description>Создаю недорогие сайты для малого и среднего бизнеса. Полный спектр услуг: разработка, дизайн, вёрстка, продвижение. Без предоплаты, оплата по факту.</Description> <UserType>1</UserType> <ContactName>Анатолий Ефремович</ContactName> <ContactMail>novoselcev@site.my</ContactMail> </Offer> </Request>
Полноценный вариант. Продажа квартиры.
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="SendOffer" UserID="23" UserHash="90823996"> <Offer> <InternalID>654321</InternalID> <CategoryID>22</CategoryID> <Locations> <Location> <LocationID>325</LocationID> <Country>Россия</Country> <Locality>Москва</Locality> <SubLocality>Западный округ</SubLocality> <Metro>Славянский бульвар</Metro> <Address>Кутузовский проспект, 52</Address> <Latitude>55.730944</Latitude> <Longitude>37.483443</Longitude> </Location> </Locations> <OfferType> <TypeID>1</TypeID> <TypeName>Продам</TypeName> </OfferType> <Title>Продается трехкомнатная квартира, Кутузовский проспект</Title> <Description>Продается трехкомнатная квартира на 5 этаже 17 этажного кирпичного дома. Общая площадь 74м, жилая 52м, кухня 9м, с/у совмещенный, балкон, в зале два окна. Стеклопакеты, теплые и толстые стены. Приличные соседи. Уютный двор. Более 3 лет в собственности. Оперативный показ.</Description> <UserType>2</UserType> <CompanyName>МИАНЭЛЬ</CompanyName> <ContactName>Светлана</ContactName> <ContactMail>2345683@mianel.mi</ContactMail> <Phone>+7(495)2345683</Phone> <Price Value="17000000.00" Currency="RUR"/> <Pass>qwerty123</Pass> <Images> <Image>https://novosel.ru/xmlpict1.png</Image> <Image>https://novosel.ru/xmlpict2.png</Image> <Video>https://youtu.be/IpBjJ0dp2mc</Video> <Video>https://rutube.ru/video/105ab2437eda642af56912c5ec173332/?r=wd</Video> </Images> <DaysPromote>30</DaysPromote> <PublicDate>2023-11-29 01:13:40</PublicDate> <ExpireDate>2023-12-29 01:13:40</ExpireDate> <Parms> <Parm ParmName="NewFlat" Value="0"/> <Parm ParmName="Rooms" Value="3"/> <Parm ParmName="TotalArea" Value="74"/> <Parm ParmName="LivingArea" Value="52"/> <Parm ParmName="Floor" Value="5"/> <Parm ParmName="Condition" Value="После ремонта"/> </Parms> </Offer> </Request>
Единственный тег ответа на запрос Response содержит следующие атрибуты:
Status - статус обработки запроса. Success - в случае, если объявление принято к публикации, Error - если в публикации отказано.
OfferID - уникальный идентификатор нового объявления в базе сайта Новосёл.ру, в случае, если объявление принято к публикации. Данный идентификатор можно, например, использовать для формирования запросов на обновление и удаление объявления, поиска объявления на сайте и т.п.
ErrorType - код ошибки, в случае, если в публикации отказано.
HumanStatus - текстовое описание результата обработки объявления для удобства восприятия ответа шлюза и для отладки.
Примеры ответа на запрос на публикацию объявления
<?xml version="1.0" encoding="UTF-8" ?> <Response OfferID="77723" Status="Success" HumanStatus="Объявление опубликовано" />
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Error" ErrorType="5" HumanStatus="Отсутствует обязательное поле 'Заголовок'." />
В запросе на обновление объявления атрибут Type тега Request в запросе имеет значение "UpdateOffer".
В теле запроса передаётся объект Offer, в котором должны содержаться как минимум один из двух обязательных тегов InternalID или OfferID, соответственно внутренний (для клиента) или внешний идентификатор объявления, которое необходимо обновить. При наличии обоих тегов, используется идентификатор Новосёл.ру из тега OfferID.
Остальные теги запроса соответствуют тегам запроса на публикацию объявления, с той лишь разницей, что любой из них может быть опущен.
Так же следует иметь в виду, что после публикации объявления игнорируется значение тегов CategoryID и OfferType, т.е. изменение рубрики, в которой изначально опубликовано объявление, и типа объявления заблокировано.
Примеры запроса на обновление объявления
Обновление заголовка объявления:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="UpdateOffer" UserID="23" UserHash="90823996"> <Offer> <OfferID>77723</OfferID> <Title>Срочно продается трехкомнатная квартира, Кутузовский проспект</Title> </Offer> </Request>
Включение продвижения объявления на 50 дней:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="UpdateOffer" UserID="23" UserHash="90823996"> <Offer> <OfferID>77723</OfferID> <DaysPromote>50</DaysPromote> </Offer> </Request>
Изменение порядка следования фотографий и видео в объявлении:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="UpdateOffer" UserID="23" UserHash="90823996"> <Offer> <InternalID>654321</InternalID> <Images> <Video>https://youtu.be/IpBjJ0dp2mc</Video> <Image>https://novosel.ru/xmlpict2.png</Image> <Image>https://novosel.ru/xmlpict1.png</Image> </Images> </Offer> </Request>
Удаление фотографий и видео в объявлении:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="UpdateOffer" UserID="23" UserHash="90823996"> <Offer> <OfferID>77723</OfferID> <InternalID>654321</InternalID> <Images /> </Offer> </Request>
Как видно из последних двух примеров содержимое контейнеров Images считается полным набором фотографий и видео для данного объявления. Таким образом, при добавлении новой фотографии или видео к объявлению информацию о ней нужно передавать вместе с информацией о ранее добавленных фото и видео. Все фотографии и видео, которых нет в контейнере Images, удаляются. Если контейнер Images пуст, удаляются все фотографии и видео в данном объявлении. Если контейнер Images отсутствует в запросе на обновление объявления, фотографии и видео к объявлению (если они были) не изменяются.
То же относится к другим элементам-контейнерам Locations и Parms, которые могут содержать несколько одинаковых дочерних элементов - Location и Parm соответственно. При обновлении хотя бы одного дочернего элемента в родительском элементе-контейнере необходимо передавать полный набор дочерних элементов, включая те, которые не изменялись. Так удаётся избежать двойственности трактования отсутствия дочернего элемента, когда непонятно, удалён он, или не изменялся. При отсутствии родительских элементов Locations и Parms в запросе на обновление объявление подразумевается, что соответствующие данные не изменялись. При наличии пустого элемента Parms подразумевается, что необходимо удалить все дополнительные параметры объявления. Наличие пустого элемента Locations не допустимо, т.к. объявление обязательно должно быть привязано хотя бы к одной географической точке.
В запросе на удаление объявления атрибут Type тега Request в запросе имеет значение "DeleteOffer".
Так же в теге Request должен содержаться как минимум один из двух обязательных тегов InternalID или OfferID, соответственно внутренний (для клиента) или внешний идентификатор объявления, которое необходимо удалить. При наличии обоих тегов, используется идентификатор Новосёл.ру из тега OfferID.
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="DeleteOffer" UserID="23" UserHash="90823996" OfferID="77723"/>
Или так:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="DeleteOffer" UserID="23" UserHash="90823996" InternalID="654321"/>
При удалении объявления, на счету которого остались денежные средства на продвижение объявления, эти средства возвращаются на кошелёк клиента.
В запросе на получение списка объявлений и других данных клиента атрибут Type тега Request в запросе имеет значение "ShowMyOffers".
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="ShowMyOffers" UserID="23" UserHash="90823996" />
Ответ шлюза содержит контейнер Offers c полным перечнем объявлений клиента с их внутренними и внешними (если они были указаны при публикации) идентификаторами, кодами рубрик, статусами на сайте, и суммой на счету каждого объявления. Теги Offer содержат атрибуты:
OfferID - идентификатор объявления на сайте Новосёл.ру;
InternalID - идентификатор объявления в системе клиента;
CreatedDate - дата и время первой публикации объявления (в формате YYYY-MM-DD HH:mm:ss);
CategoryID - код рубрики в которой находится объявление;
Status - статус объявления (на проверке, опубликовано, изменено);
Amount - сумма на счету данного объявления.
Link - ссылка на объявление на сайте Новосёл.ру.
Пример ответа на запрос списка объявлений клиента:
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Success"> <Offers> <Offer OfferID="77723" InternalID="12777" CreatedDate="2014-08-30 21:55:30" CategoryID="12" Status="InCheck" Amount="150.00" Link="https://novosel.ru/-lot77723.htm"/> <Offer OfferID="77724" InternalID="12779" CreatedDate="2014-08-30 21:55:31" CategoryID="23" Status="Checked" Link="https://novosel.ru/-lot77724.htm"/> <Offer OfferID="77725" InternalID="12778" CreatedDate="2014-08-30 21:55:32" CategoryID="132" Status="Changed" Amount="220.00" Link="https://novosel.ru/-lot77725.htm"/> </Offers> </Response>
Данный список можно так же получить обычным GET-запросом с теми же параметрами: https://novosel.ru/xmlinfo.xml?type=ShowMyOffers&UserID=23&UserHash=90823996
Данная схема обмена более традиционна и проста по сравнению с описанной выше схемой двунаправленного XML-обмена, однако необходимо понимать её недостатки и ограничения. Реализуется обмен следующим образом. Чтобы интерфейс управления XML-обменом на сайте Новосёл.ру был доступен клиенту, ему необходимо выполнить организационное подключение. Клиент в своём интерфейсе указывает адрес постоянного местонахождения файла с данными (фида). После этого с заданной периодичностью (не реже 1 раза в сутки) система Новосёл.ру обрабатывает этот файл и импортирует данные клиента в свою базу.
При этом предполагается, что файл с данными клиента содержит полный набор его объявлений, а значит объявления клиента, которые уже есть на сайте Новосёл.ру и которые не вошли в обрабатываемый файл удаляются.
Обмен с помощью файловой (фид) выгрузки не предполагает автоматическое получение и обработку информационной системой клиента результатов импорта данных из фида. При желании клиент может посмотреть результаты обработки в интерфейсе управления XML-обменом на сайте Новосёл.ру.
Формат данных об объявлениях при обмене с помощью файловой (фид) выгрузки в точности соответствует формату данных, используемому при двунаправленном XML-обмене, с той лишь разницей, что при файловой выгрузке массив объявлений упаковывается в общий XML-контейнер Offers.
Таким образом файл, передающий данные о двух объявлениях, рассматриваемых в предыдущем разделе, будет выглядеть так:
<?xml version="1.0" encoding="UTF-8" ?> <Request Type="SendOffer"> <Offers> <Offer> <InternalID>123456</InternalID> <CategoryID>385</CategoryID> <Locations> <Location LocationID="1"/> </Locations> <Title>Удалённая разработка и продвижение сайтов</Title> <Description>Создаю недорогие сайты для малого и среднего бизнеса. Полный спектр услуг: разработка, дизайн, вёрстка, продвижение. Без предоплаты, оплата по факту.</Description> <UserType>1</UserType> <ContactName>Анатолий Ефремович</ContactName> <ContactMail>novoselcev@site.my</ContactMail> </Offer> <Offer> <InternalID>654321</InternalID> <CategoryID>22</CategoryID> <Locations> <Location> <LocationID>325</LocationID> <Country>Россия</Country> <Locality>Москва</Locality> <SubLocality>Западный округ</SubLocality> <Metro>Славянский бульвар</Metro> <Address>Кутузовский проспект, 52</Address> <Latitude>55.730944</Latitude> <Longitude>37.483443</Longitude> </Location> </Locations> <OfferType> <TypeID>1</TypeID> <TypeName>Продам</TypeName> </OfferType> <Title>Продается трехкомнатная квартира, Кутузовский проспект</Title> <Description>Продается трехкомнатная квартира на 5 этаже 17 этажного кирпичного дома. Общая площадь 74м, жилая 52м, кухня 9м, с/у совмещенный, балкон, в зале два окна. Стеклопакеты, теплые и толстые стены. Приличные соседи. Уютный двор. Более 3 лет в собственности. Оперативный показ.</Description> <UserType>2</UserType> <CompanyName>МИАНЭЛЬ</CompanyName> <ContactName>Светлана</ContactName> <ContactMail>2345683@mianel.mi</ContactMail> <Phone>+7(495)2345683</Phone> <Price Value="17000000.00" Currency="RUR"/> <Pass>qwerty123</Pass> <Images> <Image>https://novosel.ru/xmlpict1.png</Image> <Image>https://novosel.ru/xmlpict2.png</Image> <Video>https://youtu.be/IpBjJ0dp2mc</Video> <Video>https://rutube.ru/video/105ab2437eda642af56912c5ec173332/?r=wd</Video> </Images> <DaysPromote>30</DaysPromote> <PublicDate>2023-11-29 01:13:40</PublicDate> <ExpireDate>2023-12-29 01:13:40</ExpireDate> <Parms> <Parm ParmName="NewFlat" Value="0"/> <Parm ParmName="Rooms" Value="3"/> <Parm ParmName="TotalArea" Value="74"/> <Parm ParmName="LivingArea" Value="52"/> <Parm ParmName="Floor" Value="5"/> <Parm ParmName="Condition" Value="После ремонта"/> </Parms> </Offer> </Offers> </Request>
Перед началом обработки данных файл проверяется на валидность XML-кода и завершённость (распространённая проблема больших файлов с данными - их частичное формирование и запись). Если файл не корректен или не завершён, его обработка откладывается на некоторое время, по истечение которого система снова пытается обработать файл, находящийся по данному адресу.
Если файл был успешно обработан, и из него удалось получить код клиента, подтвердить его через UserHash, и получить список объектов, то дальнейшие результаты обработки, включающие статус обработки, найденные критичные и некритичные ошибки, записываются в лог, получить который в XML-формате можно GET-запросом следующего вида:
<?xml version="1.0" encoding="UTF-8" ?> <Response Status="Success"> <Logs> <Log InternalID="5237" Status="Approved" DateTime="2014-10-29 18:52:02" OfferID="1127753" Link="https://novosel.ru/uchastki-5000-sotka-98km-v-dp-raduzhnaya-dolina-lot1127753.htm" /> <Log InternalID="5247" Status="Approved" DateTime="2014-10-29 18:52:04" OfferID="1127755" Link="https://novosel.ru/10-sotok-39-000-pyblei-sotka-u-mozhaiskogo-morya-lot1127755.htm" /> <Log InternalID="9930" Status="Rejected" DateTime="2014-10-29 18:43:18"> <CriticalError>Отсутствует обязательный для выбранной рубрики и типа объявления параметр: "Состояние" (ParmID="33" ParmName="HouseCondition").</CriticalError> </Log> <Log InternalID="9932" Status="Rejected" DateTime="2014-10-29 18:43:18"> <CriticalError>Отсутствует обязательный для выбранной рубрики и типа объявления параметр: "Количество этажей" (ParmID="25" ParmName="FloorsTotal"). Отсутствует обязательный для выбранной рубрики и типа объявления параметр: "Состояние" (ParmID="33" ParmName="HouseCondition"). </CriticalError> </Log> <Log InternalID="30491" Status="Approved" DateTime="2014-10-29 18:52:45" OfferID="1127820" Link="https://novosel.ru/sdam-2-k-kv-posutochno-m-babushkinskaya-lot1127820.htm"> <NonCriticalError>Параметр ParmName="TotalArea" не используется для выбранной рубрики и типа объявления, или отсутствует в списке дополнительных параметров. Значение будет проигнорировано. Параметр ParmName="LivingArea" не используется для выбранной рубрики и типа объявления, или отсутствует в списке дополнительных параметров. Значение будет проигнорировано. </NonCriticalError> </Log> </Logs> </Response>
Объект CriticalError содержит текст критических ошибок, наличие которых приводит к отказу в публикации данного объявления. Объект NonCriticalError содержит текст НЕ критических ошибок, наличие которых не приводит к отказу в публикации данного объявления, однако исправление которых может быть полезно для полноты предоставления данных читателям объявления. Атрибут Link содержит ссылку на опубликованное объявление на сайте Новосёл.ру.
1. При заданном значении необязательного элемента Pass (пароль для редактирования объявления) объявление можно редактировать как через аккаунт пользователя, залогинившись на сайте, так и непосредственно, введя пароль для доступа к объявлению. Пароль на редактирования объявления и пароль для аккаунта пользователя могут (рекомендуется) отличаться друг от друга. Данной возможностью можно пользоваться в случае, когда клиент, выгружающий объявления, является посредником для многих, подающих объявления в базу клиента частных лиц. Таким образом доступ к объявлению может получить как клиент, так и сам автор объявления независимо друг от друга.
2. Действие тега DaysPromote при любом типе запросов (добавление или обновление объявления) следующее: из кошелька пользователя на сайте на счёт объявления переводится сумма, необходимая для продвижения объявления в течение указанного тегом DaysPromote количества дней. Если на счету пользователя находится сумма меньше необходимой, то переводится сумма, равная остатку средств на кошельке пользователя. Если на счету объявления уже находится сумма, которая больше суммы, необходимой для продвижения объявления на указанное количество дней, то разница между этими суммами возвращается на кошелёк пользователя. При нулевом значении тега DaysPromote на кошелёк пользователя возвращается вся сумма, за вычетом суммы за продвижение в текущем дне, когда услуга по продвижению уже оказывалась. Отсутствие тега DaysPromote не меняет состояние счёта объявления.
3. Для обеспечения возможности сокращения объёма передаваемой в фид-файлах и POST-запросах информации XML-гейт разбирает передаваемые ему данные по следующему правилу: дочерние элементы, вложенные в родительские, считаются эквивалентными одноимённым атрибутам родительских элементов. Таким образом:
запись | <Price> <Value>10000</Value> <Currency>RUR</Currency> </Price> | можно заменить более компактным вариантом: | <Price Value="1" Currency="RUR"/> |
запись | <Parm> <ParmID>1</ParmID> <Value>34.3</Value> <Unit>кв.м</Unit> </Parm> | можно заменить на: | <Parm ParmID="1" Value="34.3"/> | и т.д. |
Данная возможность не обеспечивается стандартами XML, а является полезной особенностью нашего XML-гейта.
Для работы со списком объявлений через личный кабинет пользователя (ручная не автоматическая выгрузка) наряду с XML-файлами могут использоваться табличные форматы файлов, такие как файлы MS Office Excel (.XLS, .XLSX) и текстовые файлы с разделителями .CSV. Ограничение на использование их только в ручном режиме определяется тем, что при всей простоте работы с ними, они имеют существенные недостатки по гибкости, и объёму передаваемых данных.
Для файлов Excel обрабатывается только один активный лист, данные на листе должны быть расположены вначале, с первой строчки.
Первая строка файла Excel и файла с разделителями должна содержать названия полей. Вся поля кроме поля "Код объявления" могут следовать в любом порядке, хотя рекомендуется порядок, определённый в приведённом ниже перечислении полей. Поле "Код объявления" должно располагаться в начале строки, перед остальными импортируемыми полями, в противном случае не гарантируется правильно определение идентификатора объявления (разные форматы и разные информационные системы используют разные поля в качестве идентификатора). Для названий полей можно выбрать русский или нерусский вариант. Регистр названий полей не важен.
Название поля | Описание | Тип данных | Обязательность | |
---|---|---|---|---|
Русское | Нерусское | |||
Код объявления | OfferID | Уникальный идентификатор объявления в базе данных клиента | Число или строка | Обязателен для всех типов объявлений |
Код категории | CategoryID | ID рубрики, в которой публикуется объявление | Число. Значение выбирается из списка | Категория обязательно должна быть задана или с помощью кода категории, или с помощью её названия |
Название категории | CategoryName | Название рубрики, в которой публикуется объявление | Строка. Значение выбирается из списка | |
Тип объявления | OfferType | Тип объявления (куплю, продам, сниму, сдам и т.д.) | Текстовое поле. Перечень возможных значений зависит от рубрики | Обязательность и список возможных значений зависит от выбранной для публикации рубрики |
Код региона | LocationID | Код региона (в базе сайта Новосёл.ру), к которому необходимо привязать объявление | Число. Значение выбирается из списка | Привязка к региону обязательно должна быть задана хотя бы одним из способов:
|
Адрес | Address | Адрес объекта, включающий область/республику, город, улицу, номер дома, корпус, строение | Текстовое поле | |
Широта | Latitude | Географическая широта | Число. Рекомендуемая точность до 6 знаков после запятой | |
Долгота | Longitude | Географическая долгота | Число. Рекомендуемая точность до 6 знаков после запятой | |
Тип пользователя | UserType | Тип пользователя | Строка. Значение из списка: собственник, компания, агент | Обязателен для всех типов объявлений |
Название компании | CompanyName | Название компании | Строка до 50 символов | Элемент обязателен если тип пользователя имеет значение компания, агент |
Контактное лицо | ContactName | Контактное лицо, имя автора объявления | Строка до 50 символов | Обязателен для всех типов объявлений |
Почта | Контактный E-mail | Строка до 50 символов | Обязательно наличие хотя бы одного из двух полей, E-mail или Телефона | |
Телефон | Phone | Контактный телефон | Строка до 50 символов | |
Цена | Price | Значение цены | Положительное число, точность 2 знака | Обязательность зависит от выбранной для публикации рубрики |
Валюта | Currency | Валюта цены | Текстовое поле. Значение выбирается из списка кодов валют: RUR, EUR, USD. | При отсутствии принимается валюта по умолчанию - рубли |
Фотографии | Images | Список фотографий | Текстовое поле. Содержит ссылки на одну или несколько фотографий. При указании нескольких фотографий, они должны быть отделены друг от друга пробелом или переносом строки | Не обязателен |
Видео | Video | Список видео | Текстовое поле. Содержит ссылки на одно или несколько видео. При указании нескольких видео, они должны быть отделены друг от друга пробелом или переносом строки | Не обязателен |
Заголовок | Title | Заголовок объявления | Строка до 80 символов | Обязателен для всех типов объявлений |
Текст объявления | OfferText | Тело объявления. Подробное текстовое описание предложения | Строка до 3000 символов; | Обязателен для всех типов объявлений |
В зависимости от категории, в которой публикуется объявление, необходимо указывать дополнительные параметры объявления, из списка дополнительных параметров.
Ниже Вы можете скачать шаблон Excel-файла для импорта, и использовать его либо для заполнения, либо в качестве примера, для создания файла аналогичного формата. Обращаем внимание, что в файле несколько закладок:
Данные с объявлениями для загрузки необходимо заполнить на одном из двух первых листов, оставив его активным на момент сохранения файла. Поскольку набор дополнительных полей-параметров, зависит от рубрики, в которую импортируются объявления, и типа объявления, для скачивания Excel-шаблона необходимо выбрать рубрику и тип объявления. Если в одном файле предполагается подавать объявления в несколько различных рубрик, набор дополнительных полей-параметров содержит объединение полей-параметров используемых рубрик.
![]() | Выберите рубрику для скачивания Excel-шаблона![]() |
Вопросы, возникающие при подключении Вашей организации к нашей системе обмена объявлениями, Вы можете задавать по E-mail: fs5novosel.ru и через форму обратной связи.
© Новосёл.ру 2014