Документация API системы Plektan

Автор Юрій
Обновлено 9 месяцев назад

Взаимодействие с системой Plektan осуществляется с помощью POST запросов на URL.

http(s)://re.plektan.com/[lang]/[API_section]/[command]

Параметр [lang] может принимать значения 'ru' (русский) или 'uk' (украинский).

Параметры [API_section] и [command] будут описаны ниже в соответствующих разделах.

Пример:

Язык: ru (русский)
Секция: API_serp (списки объявлений)
Команда: search (поиск объявлений)
URL запроса: http(s)://re.plektan.com/ru/API_serp/search

В каждом POST запросе должны передаваться набор статических параметров, общих для всех запросов, и дополнительно — параметры, специфические для данного запроса.

В случае удачного запроса ответ приходит в json-формате.

1. Общие для всех запросов параметры

В каждом запросе должны передаваться параметры авторизации, версии API и др.
В таблице ниже описаны эти параметры. Звездочкой отмечены обязательные.

Параметр

Описание

Пример, заметки

*version

Версия протокола взаимодействия с API

Актуальная версия на данный момент —  '1.1'

*company

Идентификатор компании

Эти параметры уникальны для каждой компании, подключенной к системе Plektan. Для получения параметров нужно связаться со службой поддержки  Plektan.

*access_key Ключ доступа
*access_password Пароль доступа

2. Секция [API_serp]

Эта секция используется для получения серпа (списка) объявлений по заданным фильтрам.

2.1 Команда [search]

В таблице описаны параметры, передаваемые в этой команде. Звездочкой отмечены обязательные параметры.

Параметр

Описание

Пример, заметки

currentPage

Номер страницы (блока) объявлений

'3'

По умолчанию — '1'

rowsPerPage

Количество объявлений на странице

'10'

По умолчанию — '15'

Максимально — '20'

sorter[...]

Группа полей для сортировки результатов (описаны ниже, этот параметр — не передавать)

Если не передавать — сортируется по медиафайлам

*sorter[field]

Поле для сортировки

Только 'price' или 'area'

*sorter[direction]

Направление сортировки

Только 'asc' или 'desc'

sorter[prevent_media]

Объявления с медиафайлами (фото) — в начало списка (первичная сортировка)

'1' или пусто

API системы Plektan позволяет осуществлять поиск по номеру объявления или по параметрам объявления. Набор передаваемых параметров запроса зависит от типа поиска.
В результатах поиска не передаются неактуальные объявления: красные (устаревшие), отложенные, находящиеся в сделке и закрытые.

2.1.1 Поиск по номеру

Параметр

Описание

Пример, заметки

*deal

Тип поиска — по номеру объявления

Только 'by_number'

*regnumber

Номер объявления — (под)строка номера объявления или массив номеров объявлений

'SF-012'

['SF-012-854', 'SF-015-524']

show_all

В случае, если в параметре regnumber передан массив номеров объявлений, этот параметр позволяет получить полный список объявлений (в т.ч. неактаульные)

Deprecated — в скором времени перестанет работать.

'1' или пусто

price[currency_id]

Валюта списка объявлений. По умолчанию — 'USD'

Одно из 'UAH', 'USD', 'EUR'

2.1.2 Поиск по параметрам

Параметр

Описание

Пример, заметки

*deal

Тип сделки объявления (продажа или аренда)

Объявления о покупке или поиске аренды не предоставляются. Можно передавать как одно значение, так и массив.

Только 'sell', 'rent_long', 'rent_day'

*property

Тип недвижимости. Можно передавать как одно значение, так и массив.

Справочник property

*prop_kind

Вид недвижимости. Всегда передается массив значений.

Справочник prop_kind

area_total[value_from]

area_total[value_to]

Общая площадь (для всех типов недвижимости, кроме участков 'plot'), в м²

['50','80'] ['30',] [,'70']

area_lot[value_from]

area_lot[value_to]

Площадь участка (для домов 'house' и участков 'plot'), в сотках

price[value_from]

price[value_to]

Диапазон цен, в единицах валюты

price[currency_id]

Валюта списка объявлений и диапазона цен, если он задан. По умолчанию — 'USD'

Одно из 'UAH', 'USD', 'EUR'

price[kind]

Тип цены, к которой нужно применить фильтр-диапазон (за объект, за кв. метр (кроме участков), за сотку (только для участков))

Одно из 'per_object', 'per_sqrmeter', 'per_are'

storey[value_from]

storey[value_to]

Диапазон этажей (для квартир)

storey_dop

Расширенный параметр этажа. Можно передавать как одно значение, так и массив.

'-1' — подвал

'-2' — цоколь

'-3' — пентхаус

'-8' — только первый

'-9' — не первый

'-10' — не последний

room_count

Количество комнат. Передается массив

Только '1', '2', '3', '4', 'more'

housing_class

Класс жилья. Всегда передается массив значений.

Справочник housing_class

repair

Ремонт. Всегда передается массив значений.

Справочник repair

wall_material

Материал стен. Всегда передается массив значений.

Справочник wall_material

is_newbuilding

Только новострой

'1' или пусто

red_line

Красная линия

'1' или пусто

*country_id

Страна поиска

'Ukraine'

*region_id

Регион поиска. Значения идентификаторов можно получить из Команда [getRegion].

'Київська область', 'Васильківський район' и т.п.

*locality_id

Населенный пункт — центр региона поиска. Значения идентификаторов можно получить из  Команда [findCity].

'Київ', 'Васильків' и т.п.

*geo_search_by

Где искать объявления. 

Если выбрано значение 'city', дополнительно ожидаются параметры districts_id и subway_station. 

Если выбрано значение 'region', дополнительно ожидаются параметры regions_id и localities_id. 

Только 'city' или 'region'

districts_id

Список районов города (массив). Если не передавать, поиск ведется по всему городу. 

Значения идентификаторов можно получить из Команда [getDistricts]. Передаются только идентификаторы второго уровня, т. к. к ним привязаны объявления в системе Plektan.

['Алексеевка', 'Ивановка']

subway_station

Список станций метро (массив). Если не передавать, поиск ведется по всему городу.

Значения идентификаторов можно получить из Команда [getSubway].

['23 Августа', 'Алексеевская']

regions_id

Список районов области (массив). Если не передавать, поиск ведется по всей области.

Значения идентификаторов можно получить из  Команда [getRegion].

['Балаклійський район', 'Богодухівський район']

localities_id

Список населенных пунктов пригорода (массив). Если не передавать, поиск ведется по всей области.

Значения идентификаторов можно получить из Команда [getSuburb].

Населенные пункты передаются сгруппированными в подмассив, где верхним уровнем является элемент с ключом — идентификатором района области, в котором находится данный населенный пункт.

['Харківський район' => ['Васищеве', 'Високий'],


'Дергачівський район' => ['Караван', 'Комунар']]

without_fee

Только без комиссии

'1' или пусто

after_date

Показать объявления, обновленные или добавленные после указанной даты.

'2013-10-12 11:59'

site_id

Идентификатор сайта сотрудника в системе Plektan. Используется для получения данных на персональный сайт сотрудника. Если передан, то список объявлений ограничивается объявлениями сотрудника.

'nikolay'

Набор передаваемых поисковых параметров (фильтров) зависит от типа недвижимости (property).

Тип недвижимости

Параметры

Все типы (общие параметры)

deal, property, prop_kind, price, country_id, region_id, locality_id, geo_search_by, districts_id, subway_station, regions_id, localities_id, without_fee, after_date

flat

area_total, housing_class, repair, room_count, wall_material, is_newbuilding, storey_dop

house

area_total, area_lot, repair, room_count

commercial

area_total, red_line, storey_dop

plot

area_lot, red_line

Приведенный набор фильтров для разных типов недвижимости является рекомендуемым.

2.1.3 Формат ответа

Ответ на команду [search] приходит в следующем формате:

Array[2]
   data => Array[20]			// массив найденных объявлений
      0 => Array[39]
         [advert fields]		// поля объявления 1
      1 => Array[39]
         [advert fields]		// поля объявления 2
      ...
      19 => Array[39]
         [advert fields]		// поля объявления 20
   totalRows => "1370"			// общее количество найденных объявлений

Поля получаемых объявлений подробно описаны в пункте Формат объявлений в поиске.
Если в настройках API для данной компании включена функция получения статистики при поиске объявлений, дополнительно приходит список граничных значений цен и площадей для набора объявлений, ограниченного указанными фильтрами, в следующем формате:

 stat =>Array[6]
      price_max =>"8100000.38"
      price_min =>"25000.00"
      area_total_max =>"460.00"
      area_total_min =>"1.00"
      area_lot_max =>""
      area_lot_min =>""

При получении статистики фильтры по цене и площади игнорируются.

3. Секция [API_view]

В этой секции представлены команды получения подробных данных об объявлении (для карточки объявления — страницы «объявление подробно») и добавления объявлений в систему через сайт компании.

3.1 Команда [view]

Команда служит для получения данных карточки объявления.

Параметр

Описание

Пример, заметки

*adid

Номер объявления

'SF-025-885'

*currency_id

Валюта, в которой нужно вернуть цену объявления. Можно передавать массив валют

Одно из 'UAH', 'USD', 'EUR'

site_id

Идентификатор сайта сотрудника в системе Plektan. Используется для получения данных на персональный сайт сотрудника. Если передан, то объявление приходит в контексте сотрудника.

'nikolay'

Формат ответа описан в разделе Поля объявлений в объявлении подробно (карточке).

3.2 Команда [add_advert]

Команда служит для отправки объявления в систему Plektan. Такие объявления попадают в базу непроверенных объявлений (наводок) компании, с пометкой «С сайта компании».
Набор полей в объявлениях по продаже и сдаче в аренду отличается от набора полей объявлений по покупке и поиску для аренды.
Есть также поля, присущие всем подающимся объявлениям:

Параметр

Описание

Пример, заметки

*property

Тип недвижимости

Справочник property

*prop_kind

Вид недвижимости

Справочник prop_kind

*client_name

Имя клиента (отправляющего заявку-объявление)

'Григорий Петрович'

client_email

Email клиента (отправляющего заявку-объявление)

'mailbox@mail.com'

*phones[1]

Телефон клиента в десятизначном (или десятизначном) формате

{0}(dd) ddd-dd-dd

phones[2]

Еще один телефон клиента

advert_info

Дополнительная информация по объявлению в текстовом виде

pay_willingness

Готовность клиента оплачивать комиссионные АН

Справочник pay_willingness

site_id

Идентификатор сайта сотрудника в системе Plektan. Если передан, объявление в систему попадает с пометкой «С личного сайта сотрудника» и доступно только ему.

'nikolay'

В дополнительной информации можно присылать информацию, которая не представлена в других параметрах.

3.2.1 Объявление продажи и сдачи в аренду

Поля, передаваемые в команде, представлены в таблице.

Параметр

Описание

Пример, заметки

*deal

Тип сделки (продам, сдам, сдам посуточно)

Только 'sell', 'rent_long', 'rent_day'

*price[value]

Цена в единицах валюты

'50000'

*price[currency_id]

Валюта цены

Одно из 'UAH', 'USD', 'EUR'

*price[kind]

Тип цены

Одно из 'per_object', 'per_sqrmeter', 'per_are' (участки)

*room_count

Количество комнат (помещений — для нежилой). Обязательно — для всех кроме участков.

'6'

*area_total

Общая площадь, м². Обязательно — для всех кроме участков

'58'

*area_lot

Площадь участка (для участков), в сотках.

'10'

*repair

Ремонт. Обязательно — для всех кроме участков.

Справочник repair

*storey

Этаж (квартиры, нежилая недвижимость)

Номер этажа (>0) или 

'-1' — подвал

'-2' — цоколь

'-3' — пентхаус

*storeys

Этажность (все кроме участков)

'14'

red_line

Красная линия (коммерческая недвижимость, участки)

'1' или пусто

*geo_type

Тип географии (город или область). Для города дополнительно ожидаются поля district_id и street_id. Для области — в region_id и locality_id.

Только 'city' или 'region'

*district_id

Район города. Значения идентификаторов можно получить из Команда [getDistricts]. Передаются только идентификаторы второго уровня, т. к. к ним привязаны объявления в системе Plektan.

'Алексеевка'

street_id

Улица. Для ввода улицы рекомендуется использовать поле с интерактивным поиском, используя Команда [findStreet], как описано в Команда поиска географии.

'Деревянко ул.'

*locality_id

Населенный пункт области. Для ввода этого поля рекомендуется использовать поле с интерактивным поиском, используя Команда [findCity], как описано в Команды поиска географии.

'Мала Данилівка'

*region_id

Район области (в котором находится населенный пункт). Если использовать Команда [findCity], значение region_id приходит вместе со значением locality_id.

'Дергачівський район'

media

Массив в формате JSON.

Данные получают перед вызовом команды [addAdvert] с помощью Команда [uploadAdvertPhoto].

[{

media_id: 12545,

title: 'подпись',

src: 'http://site/p1.jpg'

}]

Формат ответа описан в Формат ответа.

3.2.2 Объявление покупки и поиска для аренды

Поля, передаваемые в команде, представлены в таблице.

Параметр

Описание

Пример, заметки

*deal

Тип сделки (куплю, сниму, сниму посуточно)

Только 'buy', 'hire_long', 'hire_day'

*price[value_from]

*price[value_to]

Диапазон цен, в единицах валюты. Может быть передано только одно из значений (from или to).

[,'50000']

['30000','40000']

*price[currency_id]

Валюта цены

Одно из 'UAH', 'USD', 'EUR'

*price[kind]

Тип цены

Одно из 'per_object', 'per_sqrmeter', 'per_are' (участки)

*room_count

Количество комнат (помещений для нежилой). Обязательно для всех кроме участков. Передается массив

Только '1', '2', '3', '4', 'more'

пример: ['3','more']

*area_total[value_from]

*area_total[value_to]

Общая площадь (для всех типов недвижимости, кроме участков 'plot'), в м²

['50','80'] ['30',] [,'70']

area_lot[value_from]

area_lot[value_to]

Площадь участка (для домов 'house' и участков 'plot'), в сотках. Для участков — обязательное поле.

*repair

Ремонт. Всегда передается массив значений. Обязательно — для всех кроме участков.

Справочник repair

storey[value_from]

storey[value_to]

Диапазон этажей (для квартир и нежилой недвижимости)

storey_dop

Расширенный параметр этажа. Можно передавать одно значение.

'-1' — подвал

'-2' — цоколь

'-3' — пентхаус

'-10' — не последний

storeys[value_from]

storeys[value_to]

Диапазон этажности (для квартир и нежилой недвижимости)

'14'

red_line

Красная линия (коммерческая недвижимость, участки)

'1' или пусто

*geo_type

Тип географии (город или область). Для города дополнительно ожидается поле districts_id. Для области — в regions_id и localities_id.

Только 'city' или 'region'

*districts_id

Район города. Передается массив. Значения идентификаторов можно получить из Команда [getDistricts]. Передаются только идентификаторы второго уровня, т. к. к ним привязаны объявления в системе Plektan.

['Алексеевка', 'Павлово Поле']

regions_id

Список районов области (массив). 

Значения идентификаторов можно получить из  Команда [getRegion].

['Балаклійський район', 'Богодухівський район']

localities_id

Список населенных пунктов пригорода (массив). 

Значения идентификаторов можно получить из Команда [getSuburb].

Населенные пункты передаются сгруппированными в подмассив, где верхним уровнем является элемент с ключом — идентификатором района области, в котором находится данный населенный пункт.

['Харківський район' => ['Васищеве', 'Високий'],


'Дергачівський район' => ['Караван', 'Комунар']]

autosends

Подписаться на автоматическую отправку предложений. Используется только в случае, если указано поле client_email. Если присылается, то при добавлении агентом объявления в систему поля настройки авторассылки в объявлении будут заполнены. После внесения объявления в систему клиенту будут автоматически отправляться на его электронный ящик подходящие предложения.

1

Формат ответа описан в Формат ответа.

3.2.3 Быстрая подача на основе существующего объявления

Таким путем можно подать только объявления покупки и поиска для аренды. Вместо отправки полей объявления «куплю» или «сниму», можно отправить регистрационный номер объявления «продам» или «сдам» соответственно, на основе которого система сама сформирует контр-объявление и добавит его в систему.
Поля, передаваемые в команде, представлены в таблице (они заменяют набор полей, указанный в начале раздела Команда [addAdvert]).

Параметр

Описание

Пример, заметки

*like_advert

Номер исходного объявления, заинтересовавшего клиента

'SF-312-508'

*client_name

Имя клиента (отправляющего заявку-объявление)

'Григорий Петрович'

*client_email

Email клиента (отправляющего заявку-объявление)

'mailbox@mail.com'

*phones[1]

Телефон клиента в десятизначном (или десятизначном) формате

{0}(dd) ddd-dd-dd

phones[2]

Еще один телефон клиента

advert_info

Дополнительная информация по объявлению в текстовом виде

pay_willingness

Готовность клиента оплачивать комиссионные АН

Справочник pay_willingness

site_id

Идентификатор сайта сотрудника в системе Plektan. Если передан, объявление в систему попадает с пометкой «С личного сайта сотрудника» и доступно только ему.

'nikolay'

autosends

Подписаться на автоматическую отправку предложений. Подробнее это поле описано в разделе Объявления покупки и поиска для аренды

1

Формат ответа описан в Формат ответа.

3.2.4 Формат ответа

Ответ на команду отправки объявления имеет следующий формат:

Array[3]
   result =>"ADDED"
   item_id =>"104908"
   message =>""Наводка" добавлена в систему с id 104908"

В поле result приходит результат добавления (ADDED, PARSE_ERROR и т. д.). В поле item_id приходит идентификатор (id, номер) наводки, добавленного в систему.
В поле message приходит описание ошибки в случае невозможности добавить наводку в систему.

3.3 Команда [uploadAdvertPhoto]

Вспомогательная команда, служит для отправки фотографий объекта в систему Plektan перед вызовом команды [addAdvert] (для объявлений типа «Продам» и «Сдам»).

Параметр

Описание

Пример, заметки

*photoUpload

Массив файлов, как при загрузке файлов через форму в браузере.

Функция загрузки медиафайлов предполагает возможность одновременной загрузки нескольких файлов. Поэтому даже при загрузке одного файла передаваемый параметр должен быть массивом — photoUpload[0].
Пример кода на PHP для «проброса» загруженных из браузера клиента файлов с использованием библиотеки CURL:

$files = $_FILES['photoUpload'];


for ($i = 0, $l = sizeof($files['tmp_name']); $i < $l; $i++) {
	$filename = basename($files['name'][$i]);
	$filetype = $files['type'][$i];
	$filepath = $files['tmp_name'][$i];


	$cfile = new \CURLFile($filepath, $filetype, $filename);
	$post["photoUpload[$i]"] = $cfile;
}
...
$ch = curl_init();
...
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
...
$result = curl_exec($ch);
...

Формат ответа на эту команду следующий:

Array[3]
   result =>"SAVED"						// результат загрузки
   data =>Array[2]						// отчет о загруженных файлах
      0 =>Array[3]
         media_id =>"17622"					// id медиафайла
         title =>""						// подпись к фото
         src =>"http://domain/p1.small.jpg"		// URL фото
      1 =>Array[3]
         media_id =>"17623"					// — - —
         title =>""
         src =>"http://domain/p2.small.jpg"	
      ...

Полученную информацию по media_id можно в дальнейшем использовать в команде [addAdvert] для добавления объявления с привязанными медиафалами.

4. Секция [API_geo]

4.1 Команда поиска географии

Команды поиска географии применяются для реализации полей интерактивного поиска в списках географии с большим количеством элементов (улицы, населенные пункты области). Такие списки нет смысла показывать посетителям сайта целиком ввиду их большого объема и неудобства ориентирования в таком списке.
Как правило, поля интерактивного поиска применяются на формах подачи объявлений с сайта. Поиск в таких полях есть смысл начинать, когда введено хотя бы три символа.
Отправляемая строка поиска автоматически конвертируется в кириллицу, если у пользователя в момент ввода стоит латинская раскладка. Поиск осуществляется как по идентификатору, так и по значению.
Максимальное количество элементов в ответе — 16. Первые 15 служат для отображения посетителю сайта, 16-й можно использовать для определения, все ли элементы, соответствующие искомой строке, пришли в ответе, или есть еще.

4.1.1 Команда [findCity]

Эта команда служит для получения списка населенных пунктов области по подстроке — начале названия населенного пункта.

Параметр

Описание

Пример, заметки

*locality_id

Населенный пункт

'Харків'

*region_id

Регион населенного пункта

'Харківська область'

*searchStr

Подстрока-начало названия

'ива'

Ответ приходит в следующем формате:

Array[8]
   0 =>Array[10]
      locality_id =>"Іванівка"			// идентификатор locality_id
      locality =>"Ивановка"				// отображаемое значение
      country_id =>"Ukraine"				// идентификатор country_id
      region_id =>"Чугуївський район"		// идентификатор region_id района
      region =>"Чугуевский район"			// отображаемое значение
      is_capital =>""					// является районным центром?
      parent_region_id =>"Харківська область"	// идентификатор region_id области
   1 =>Array[10]
      locality_id =>"Іванівка"
      locality =>"Ивановка"
      country_id =>"Ukraine"
      region_id =>"Барвінківський район"
      ...
   ...

Параметр is_capital можно использовать для того, чтобы в отображаемом посетителю списке населенных пунктов районные центры выделять каким-либо образом.
В ответе населенные пункты сортируются сначала по параметру is_capital (районные центры выше), потом по алфавиту.

4.1.2 Команда [findStreet]

Эта команда служит для получения списка улиц населенного пункта по подстроке — начале названия улицы.

Параметр

Описание

Пример, заметки

*locality_id

Населенный пункт

'Київ'

*region_id

Регион населенного пункта

'Київська область'

*searchStr

Подстрока-начало названия

'ленин'

Ответ приходит в следующем формате:

Array[6]
   0 =>Array[3]
      street_id =>"Дорошенка Петра вул."		// идентификатор улицы street_id
      street =>"Дорошенко Петра ул."		// отображаемое значение
      aliases =>"(Ленинская ул.)"			// старые названия (если есть)
   1 =>Array[3]
      street_id =>"Леніна вул."
      street =>"Ленина ул."
      aliases =>""
   ...

В ответе улицы сортируются по алфавиту.

4.2 Команды получение списка географии

Эта группа команд служит для получения полных списков географических элементов из системы Plektan. Так как география является достаточно редко изменяемой информацией, разработчикам приложений полезно реализовать кеширование данных списков для ускорения отклика сайта и уменьшения нагрузки на сервер API.
Для каждого элемента из списков географии представлено два параметра — value (значение id — идентификатора элемента, который можно использовать для поисковых запросов и при подаче объявления) и caption (отображаемое посетителю сайта значение, приходящее в локализации, указанной в запросе).

4.2.1 Команда [getDistricts]

Эта команда служит для получения списка районов города.

Параметр

Описание

Пример, заметки

*locality_id

Населенный пункт

'Харків'

*region_id

Регион населенного пункта

'Харківська область'

Ответ приходит в следующем формате:

Array[10]
   2459 =>Array[3]					// направление (группа районов)
      value =>"Алексеевское направление"		// идентификатор district_id
      caption =>"Алексеевское направление"	// отображаемое значение
      items =>Array[5]					// список районов
         2460 =>Array[2]					// район города
            value =>"Алексеевка"				// идентификатор district_id
            caption =>"Алексеевка"				// отображаемое значение
         2461 =>Array[2]					// — - —
            value =>"Ивановка"
            caption =>"Ивановка"
		...
   ...
   2405 =>Array[3]					//  — - —
      value =>"Прилегающие к центру"
      caption =>"Прилегающие к центру"
      items =>Array[10]
         2682 =>Array[2]					// район города
            value =>"Артема пос."				// идентификатор district_id
            caption =>"п. Артема"				// отображаемое значение
         2408 =>Array[2]
            value =>"Восстания площ."
            caption =>"пл. Восстания"
         2406 =>Array[2]
            value =>"Гагарина, р-н ст. метро"
            caption =>"район м. Гагарина"
		...
   ...

Список районов города двухуровневый. Районы сгруппированы в группы районов, поэтому структура районов города — древообразная. Цифра, стоящая перед каждой группой районов и районом (например, 2405 =>Array[3] …), является идентификатором (id) данного элемента в таблице, хранящей информацию о вложенности районов (дерево).

4.2.2 Команда [getSubway]

Эта команда служит для получения списка станций метро города.

Параметр

Описание

Пример, заметки

*locality_id

Населенный пункт

'Харків'

*region_id

Регион населенного пункта

'Харківська область'

Ответ приходит в следующем формате:

Array[3]
   0 =>Array[3]						// линия метро
      value =>"Алексеевская линия"			// идентификатор subway_line
      caption =>"Алексеевская линия"		// отображаемое значение
      items =>Array[8]					// список станций
         0 =>Array[2]						// станция метро
            value =>"23 Августа"				// идентификатор subway_station
            caption =>"23 Августа"				// отображаемое значение
         1 =>Array[2]						// — - —
            value =>"Алексеевская"
            caption =>"Алексеевская"
		...
   ...
   2 =>Array[3]						// — - —
      value =>"Холодногорско-Заводская линия"
      caption =>"Холодногорско-Заводская линия"
      items =>Array[13]
         0 =>Array[2]						// станция метро
            value =>"Завод имени Малышева"		// идентификатор subway_station
            caption =>"Завод Малышева"			// отображаемое значение
		...
         5 =>Array[2]
            value =>"Проспект Гагарина"
            caption =>"Пр. Гагарина"
		...

На первом уровне приходит список линий метрополитена указанного города. На втором уровне — список станций данной линии.

4.2.3 Команда [getSuburb]

Эта команда служит для получения списка населенных пунктов пригорода.

Параметр

Описание

Пример, заметки

*locality_id

Населенный пункт

'Харків'

*region_id

Регион населенного пункта

'Харківська область'

Ответ приходит в следующем формате:

Array[2]
   Харківський район =>Array[3]			// район области
      value =>"Харківський район"			// идентификатор region_id
      caption =>"Харьковский район"			// отображаемое значение
      items =>Array[58]					// список населенных пунктов
         0 =>Array[2]						// населенный пункт
            value =>"Олександрівка"				// идентификатор locality_id
            caption =>"Александровка"			// отображаемое значение
         1 =>Array[2]						// — - —
            value =>"Артемівка"
            caption =>"Артемовка"
		...
   Дергачівський район =>Array[3]			// — - —
      value =>"Дергачівський район"
      caption =>"Дергачёвский район"
      items =>Array[17]
         0 =>Array[2]						// населенный пункт
            value =>"Березівське"				// идентификатор locality_id
            caption =>"Березовское"				// отображаемое значение
         1 =>Array[2]
            value =>"Бермінводи"
            caption =>"Берминводы"
		...

На первом уровне приходит список пригородных районов области. На втором уровне — список населенных пунктов данного района области.

4.2.4 Команда [getRegion]

Эта команда служит для получения списка районов области (регионов первого уровня в стране).

Параметр

Описание

Пример, заметки

*country_id

Идентификатор страны

'Ukraine'

*region_id

Регион первого уровня страны (область)

'Харківська область'

Ответ приходит в следующем формате:

Array[1]
   Харківська область =>Array[3]			// область (регион первого уровня)
      value =>"Харківська область"			// идентификатор region_id
      caption =>"Харьковская область"		// отображаемое значение
      items =>Array[27]					// список районов области
         0 =>Array[2]						// район области
            value =>"Балаклійський район"			// идентификатор region_id
            caption =>"Балаклейский район"		// отображаемое значение
         1 =>Array[2]						// — - —
            value =>"Барвінківський район"
            caption =>"Барвенковский район"
		...

Область и районы области являются регионами в контексте системы Plektan и имеют отношения вложенности (дерево).

5. Секция [API_user]

5.1 Команда [getMasters]

Команда служит для получения списка «Мастеров качества» — сотрудников компании, зарегистрированных в системе Plektan и отмеченных как мастер качества.
Никаких дополнительных параметров эта команда не имеет.
Формат результата следующий:

Array[5]
   0 =>Array[7]
      user_id =>"80855"						// id сотрудника
      name =>"Мирослава Анатольевна"			// публичное имя
      greeting =>"Всегда готова помочь!"			// девиз — короткий текст
      phones =>Array[2]						// телефоны сотрудника
         0 =>"+380 (50) 000-00-01"
         1 =>"+380 (57) 000-00-02"
      email =>"miroslava@domain.com"			// электронный адрес
      url_small =>"http://domain/p1.small.jpg"		// URL фото
      site_id =>""						// id персонального сайта
   1 =>Array[7]
      user_id =>"80842"						// id сотрудника
      ...
   ...

Так как список мастеров качества является достаточно редко изменяемой информацией, разработчикам приложений полезно реализовать кеширование этих данных для ускорения отклика сайта и уменьшения нагрузки на сервер API.

5.2 Команда [sendMessage]

Команда служит для отправки посетителем сайта уведомления (на email) сотруднику компании, зарегистрированному в системе Plektan.

Параметр

Описание

Пример, заметки

*user_id

Идентификатор сотрудника

'12574'

*title

Заголовок письма

'Письмо с сайта'

*message

Текст письма

'Хочу купить квартиру'

email

Адрес посетителя сайта (обратный)

Любой email

*sendToEmail

На данный момент этот параметр обязателен и не должен быть пустым.

Только '1'

В случае удачной отправки письма сервер вернет ответ TRUE, неудачной — FALSE. Если будет передан неправильный user_id, сервер вернет строку 'user not found'.
Для работы команды нужна ее активация на стороне API Plektan. Для активации запрашивающая компания должна предоставить параметры доступа к одному из своих почтовых ящиков по протоколу SMTP. С этого ящика будут отправляться уведомления-письма сотрудникам компании.

5.3 Команда [getPublicInfo]

Команда позволяет получить публичную информацию о зарегистрированном в системе Plektan сотруднике компании. В команде обязателен один из параметров: user_id или site_id.

Параметр

Описание

Пример, заметки

user_id

Идентификатор сотрудника

'12574'

site_id

Идентификатор сайта сотрудника в системе Plektan. Используется для получения данных на персональный сайт сотрудника. Если передан, то параметр user_id игнорируется.

'nikolay'

Формат ответа следующий:

Array[7]
   user_id =>"12574"						// id сотрудника
   name =>"Оксана Васильевна"					// публичное имя
   greeting =>"Всегда готова помочь!"			// девиз — короткий текст
   phones =>Array[3]						// телефоны сотрудника
      0 =>"+380 (67) 000-00-01"
      1 =>"+380 (63) 000-00-02"
      2 =>"+380 (57) 000-00-03"
   email =>"oksana@domain.com"				// электронный адрес
   media =>Array[1]						// список фотографий
      0 =>Array[2]
         0 =>"В офисе"						// подпись к фото
         1 =>"http://domain/photo.jpg"			// URL фото
   about_self =>"10 лет опыта в сфере недвижимости"	// короткая информация о себе

Эта команду будет полезна для получения информации о сотруднике при реализации функционала персональных сайтов агентов на сайте компании.

6 Формат объявлений в ответах  API Plektan

6.1 Формат объявлений в поиске

Поля объявлений, приходящих в ответах сервера на поисковые запросы.

Array[39]
   adid =>"SF-912-319"						// номер объявления
   date_add =>"2019-01-29 14:18:17.020153+02"		// дата добавления объявления
   date_mod =>"2013-07-04 10:49:37.153962+03"		// дата последней модификации
   deferred_to =>""						// дата, до которой отложено 
   deal =>"Продам"						// тип сделки
   property =>"квартиру"					// тип недвижимости
   prop_kind =>"гостинку"					// вид недвижимости
   deal.value =>"sell"						// тип сделки (значение)
   property.value =>"flat"					// — - —
   prop_kind.value =>"gostinka"				// — - —
   media =>Array[4]						// медиафайлы
      src_small =>"http://domain/p1.small.jpg"		// URL фото
      src_middle =>"http://domain/p1.middle.jpg"	// — - —
      src_small_2 =>"http://domain/p2.small.jpg"
      src_middle_2 =>"http://domain/p2.middle.jpg"
   state =>"actual"						// состояние объявления (actual,
									// non_actual, deferred, closed)
   is_mls => ""							// true, если от партнера
   price =>Array[6]						// детализация цены
      value_m2 =>"&asymp;3 206 ₴"				// за кв. метр
      value_are =>"&asymp;320 622 ₴"			// за сотку (участки)
      value_obj =>"76 950 ₴"					// за объект
      kind =>"per_object"					// тип основной цены
      currency_id =>"UAH"					// валюта
      value =>"76 950 ₴"					// значение основной цены
   base_price =>"81 000 ₴"					// начальная цена
   discount =>"4 050 ₴"						// скидка (если есть)
   zone =>"Жилая"							// зона (жилая, отдыха, ...)
   red_line =>"1"							// красная линия (1 или "")
   housing_class =>"эконом"					// класс жилья
   is_newbuilding =>""						// новострой (1 или "")
   storey =>"6"							// этаж (номер или подвал, 
									// цоколь, пентхаус)
   storeys =>"6"							// этажность
   access_road =>"Асфальт"					// подъездная дорога
   standard_planning =>"хрущевка"				// планировка
   area_total =>"24"						// общая площадь, м²
   area_life =>"16"						// жилая площадь, м²
   area_kitchen =>""						// площадь кухни, м²
   area_lot =>""							// площадь участка, сот
   room_count =>"1"						// количество комнат
   repair =>"косметический ремонт"				// ремонт
   wall_material =>"кирпич"					// материал стен
   water =>""							// вода
   gas =>"есть"							// газ
   heating =>""							// отопление
   canalization =>""						// канализация
   legal_information =>""					// юридическая информация
   locality =>"Харьков"						// населенный пункт
   district =>"22-больница, Новые дома"			// район города
   street =>"Маршала Жукова просп."				// улица
   subway_station =>"Маршала Жукова"			// станция метро
   buyer_not_pay =>"1"						// клиент не платит (1 или "")

6.2 Поля объявлений в объявлении подробно (карточке)

Стандартные поля объявления, получаемые в команде [view] секции [API_view] описаны ниже. Набор полей одинаковый для всех типов недвижимости. Поля, не присущие данному типу недвижимости (например, число комнат для участков) — приходят пустыми.

Array[98]
   adid =>"SF-912-319"						// номер объявления
   advert_id =>"48682"						// id объявления
   date_mod =>"2013-11-14 16:29:20.894844+02"		// дата последней модификации
   deal =>"Продам"						// тип сделки
   property =>"квартиру"					// тип недвижимости
   prop_kind =>"гостинку"					// вид недвижимости
   deal.value =>"sell"						// тип сделки (значение)
   property.value =>"flat"					// — - —
   prop_kind.value =>"gostinka"				// — - —
   media =>Array[4]						// медиафайлы
      0 =>Array[2]
         src =>"http://domain/p1.jpg"			// URL фото
         title =>"прихожая"					// подпись фото
      ...
      2 =>Array[2]
         src =>"http://domain/p3.jpg"
         title =>"кухня"
      src_small =>"http://domain/p1.small.jpg"		// URL основного фото
   price =>Array[6]						// детализация цены
      value_m2 =>"&asymp;3 206 ₴"				// за кв. метр
      value_are =>"&asymp;320 622 ₴"			// за сотку (участки)
      value_obj =>"76 950 ₴"					// за объект
      kind =>"per_object"					// тип основной цены
      currency_id =>"UAH"					// валюта
      value =>"76 950 ₴"					// значение основной цены
   base_price =>"81 000 ₴"					// начальная цена
   discount =>"4 050 ₴"						// скидка (если есть)
   an_fee =>"100 $"						// комиссия АН (для аренды —
									// оплата при вселении)
   an_fee_preview =>""						// цена осмотра (аренда)
   ownership =>"частная"					// собственность
   legal_information =>"находится в залоге"		// юридическая информация
   purpose =>""							// целевое назначение (БТИ)
   inspection_possibility =>""				// возможность осмотра
   advert_info =>""						// доп. информация по объявлению
   housestr =>"15/2 корп. Б"					// номер дома
   orient =>"ЮСИ"							// ориентир
   zone =>"Жилая"							// зона (жилая, отдыха, ...)
   red_line =>""							// красная линия
   housing_class =>"эконом"					// класс жилья
   storeys =>"6"							// этажность
   lift =>"пассажирский, грузовой"				// лифты
   percentages =>""						// процент готовности (недострой)
   deadline =>""							// срок сдачи (недострой)
   developer =>"Строй-инвест"					// строительная компания
   year_built =>"после 2000"					// год постройки
   is_newbuilding =>"1"						// новострой (1 или "")
   wall_material =>"кирпич"					// материал стен
   floor_material =>"комбинированные"			// материал перекрытий
   roof =>""							// крыша
   access_road =>""						// подъездная дорога
   plot_covering =>""						// покрытие участка
   additionaly_params =>""					// дополнительные параметры (для
									// нежилой — жд-ветка и др.)
   standard_planning =>"сталинка"				// планировка
   room_layout =>"раздельная"					// схема комнат
   storey =>"6"							// этаж (номер или подвал, 
									// цоколь, пентхаус)
   fasing =>""							// внешняя отделка
   ceiling_height =>"3"						// высота потолков, м
   area_total =>"24"						// общая площадь, м²
   area_life =>"16"						// жилая площадь, м²
   area_kitchen =>"15"						// площадь кухни, м²
   area_lot =>""							// площадь участка, сот
   room_count =>"1"						// количество комнат
   bedroom_count =>"0"						// в т.ч. количество спален
   bathroom_count =>"1"						// количество санузлов
   balcony_count =>"1"						// количество балконов
   room_explication =>"- Кухня: 15 м&sup2;<br/>		// детализация по комнатам
- Комната: 20 м&sup2;<br/>
- Санузел: 2 м&sup2;, душевая кабина, унитаз, биде, умывальник<br/>
- Балкон: 2 м&sup2;, застеклен, утеплен<br/>
- Коридор: 3 м&sup2;"
   bathroom_equipment =>Array[2]				// сантехника
      rating =>"хорошее"					// состояние
      values =>"импортная"					// параметры
   tubing =>Array[2]						// трубы
      rating =>"удовлетворительное"				// — - —
      values =>"сталь"						// — - —
   floors =>Array[2]						// полы
      rating =>"хорошее"					// — - —
      values =>"паркет"						// — - —
   walls =>Array[2]						// стены
      rating =>"хорошее"
      values =>"обои, плитка на кухне, плитка в санузле"
   ceiling =>Array[2]						// потолки
      rating =>"хорошее"
      values =>"штукатурка"
   convector =>Array[2]						// батареи отопления
      rating =>"хорошее"
      values =>"алюминий"
   wires =>Array[2]						// проводка
      rating =>"хорошее"
      values =>"алюминий"
   windows =>Array[2]						// окна
      rating =>"удовлетворительное"
      values =>"дерево"
   outer_doors =>Array[2]					// входные двери
      rating =>"хорошее"
      values =>"бронированные"
   doors =>Array[2]						// межкомнатные двери
      rating =>"хорошее"
      values =>"дерево"
   repair =>"косметический ремонт"				// ремонт
   repair_date =>"до года назад"				// когда сделан ремонт
   water =>"центральная"					// вода
   gas =>"есть"							// газ
   heating =>""							// отопление
   canalization =>""						// канализация
   voltage =>""							// электрическое напряжение
   power =>""							// электрическая мощность
   phone =>"одна линия"						// телефон
   internet =>"локальная сеть"				// интернет
   television =>"кабельное ТВ"				// телевидение
   meters =>"холодная вода, горячая вода, газ"		// счетчики
   entrance =>"вход со двора, консьерж"			// подъезд
   floor_heating =>""						// теплые полы
   air_conditioning =>""					// кондиционирование воздуха
   alarm =>"пожарная"						// сигнализация
   waterheater =>""						// водонагреватель
   water_purification =>""					// система очистки воды
   household_appliances =>"телевизор, холодильник"	// бытовая техника
   additionaly =>"мусоропровод"				// дополнительное благоустройство
   parking =>"гаражный кооператив (10 мин.)"		// парковка
   transport =>"метро - Масельского (5 мин. Пешком)"	// общественный транспорт
   education =>"школа, детсад"				// образовательные учреждения
   banking_services =>""					// банковские услуги
   consumer_services =>"аптека, парикмахерская"		// бытовой сервис
   relaxation_services =>"бильярд, парк"			// релаксационные сервисы
   public_catering =>"кафе, ресторан"			// общепит
   construction_yard =>""					// дворовые постройки (дома)
									// рекламный текст
   promo_text =>"Продам гостинку. Чистый этаж, кухня, службы."
   state =>"actual"						// состояние объявления (actual,
									// non_actual, deferred, closed)
   locality =>"Харьков"						// населенный пункт
   district =>"ХТЗ, Роганское направление"		// район города
   street =>"2 Пятилетки ул."					// улица
   subway_station =>"Масельского"				// станция метро
   buyer_not_pay =>""						// клиент не платит (1 или "")
   users =>Array[1]						// список сотрудников, имеющих
      0 =>Array[7]						// отношение к объявлению
         user_id =>"835"					// id сотрудника
         name =>"Алена Николаевна"				// имя сотрудника
         greeting =>""						// приветствие (девиз)
         phones =>Array[3]					// телефоны сотрудника
            0 =>"+380 (66) 000-00-01"
            1 =>"+380 (63) 000-00-02"
         email =>"alena@domain.com"				// электронный адрес
         url_small =>""						// URL фото сотрудника
         site =>"http://alena.domain.com"			// если активирован — 
									// адрес персонального сайта
         status =>"offline"					// статус (offline, online)

Если в запросе карточки объявления в поле валюты передать массив валют, первый элемент массива считается основной валютой, а для остальных элементов приходят два дополнительных поля следующего формата:

  prices_list =>Array[2]					// список текущих цен
      0 =>Array[6]
         value_m2 =>"&asymp;590 $"
         value_are =>"&asymp;59 028 $"
         value_obj =>"8 500 $"
         kind =>"per_object"
         currency_id =>"USD"
         value =>"8 500 $"
      1 =>Array[6]
         value_m2 =>"&asymp;460 €"
         value_are =>"&asymp;46 042 €"
         value_obj =>"6 630 €"
         kind =>"per_object"
         currency_id =>"EUR"
         value =>"6 630 €"
   base_prices_list =>Array[2]				// список начальных цен
      0 =>"8 500 $"
      1 =>"6 630 €"

В случае, если в настройках API для данной компании включена функция получения списка «похожих» объявлений, в ответе на запрос карточки объявления приходит дополнительно поле со списком объявлений следующего формата:

 similar_adverts =>Array[1]
      0 =>Array[39]
         adid =>"SF-010-902"
         date_mod =>"2013-06-03 20:41:26.852807+03"
         deal =>"Продам"
         property =>"квартиру"
         prop_kind =>"гостинку"
         deal.value =>"sell"
         property.value =>"flat"
         prop_kind.value =>"gostinka"
         media =>""
         price =>Array[6]
            value_m2 =>"&asymp;5 400 ₴"
            value_are =>"&asymp;540 003 ₴"
            value_obj =>"64 800 ₴"
            kind =>"per_object"
            currency_id =>"UAH"
            value =>"64 800 ₴"
         base_price =>"64 800 ₴"
         discount =>""
         zone =>""
         red_line =>""
         housing_class =>"эконом"
         is_newbuilding =>""
         storey =>"6"
         storeys =>"6"
         access_road =>""
         standard_planning =>"нестандартная планировка"
         area_total =>"12"
         area_life =>""
         area_kitchen =>""
         area_lot =>""
         room_count =>"1"
         repair =>"косметический ремонт"
         wall_material =>""
         water =>""
         gas =>"нет"
         heating =>""
         canalization =>""
         promo_text =>""
         state =>"actual"
         legal_information =>""
         locality =>"Харьков"
         district =>"ХТЗ, Роганское направление"
         street =>"2 Пятилетки ул."
         subway_station =>""
         buyer_not_pay =>""

Формат и значения полей такие же, как и в описанном выше объявлении подробно.

7 Справочники

Справочники представляют собой поля со строго определенным набором значений. В этом разделе представлены справочники в формате JSON. Латинскими буквами до двоеточия написаны значения, после двоеточия — рекомендуемое русское значение.

7.1 Справочник property

Справочник Тип недвижимости:

(
	'flat': 'Квартиру',
	'house': 'Дом',
	'commercial': 'Коммерческую',
	'plot': 'Участок'
)

7.2 Справочник prop_kind

Справочник Вид недвижимости:

(
	'flat': (
		'isolated': "изолированную",
		'apartments': "апартаменты",
		'penthouse': "пентхаус",
		'studio': "студию",
		'gostinka': "гостинку",
		'another_sleeping': "подселение",
		'unfinished_new_build': "несданный новострой"
	),
	'house': (
		'single': "целый",
		'part': "часть",
		'town_house': "таунхаус",
		'palace': "особняк",
		'holiday_home': "дачный дом",
		'unfinished': "недострой",
	),
	'commercial': (
		'office': (
			'caption': "офисные помещения",
			'items': (
				'office_in_house': "офис в многоквартирном доме",
				'office_center': "офис в офисном центре",
				'office_free': "отдельно стоящий офис",
				'office_premise': "офисное помещение"
			),
		),
		'trade': (
			'caption': "объекты торговли",
			'items': (
				'pavilion': "павильон",
				'pharmacy': "аптеку",
				'shop': "магазин",
				'supermarket': "супермаркет",
				'mart': "торговый центр",
				'trade_premise': "торговое помещение"
			),
		),
		'public_catering': (
			'caption': "объекты общепита",
			'items': (
				'restaurant': "ресторан",
				'cafe': "кафе",
				'bar': "бар",
				'pizzeria': "пиццерию",
				'restaurant-fastfood': "ресторан-фастфуд",
				'catering_object': "объект питания"
			),
		),
		'service': (
			'caption': "объекты сервиса",
			'items': (
				'dry_cleaners': "химчистку",
				'beauty_parlor': "салон красоты",
				'hairdressing_saloon': "парикмахерскую",
				'dental_office': "стомат-кабинет",
				'clinic': "клинику",
				'car_service': "автосервис",
				'fitness_center': "фитнес центр",
				'service_object': "объект сервиса",
			),
		),
		'culture_of_life': (
			'caption': "объекты культбыта",
			'items': (
				'club': "клуб",
				'theatre': "театр",
				'cinema': "кинотеатр",
				'bowling': "боулинг",
				'night_club': "ночной клуб",
				'culture_object': "объект культбыта"
			),
		),
		'storehouse': "склад",
		'production_area': "производственное помещение",
		'industrial_complex': "промышленный комплекс",
		'garage': "гараж",
		'hotel': "отель",
		'hostel': "хостел",
		'agricultural object': "объект сельхозназначения",
		'other_infrastructure': "прочий объект",
		'unfinished_object': "недостроенный объект"
	),
	'plot': (
		'dilapidated_house': "с ветхим домом",
		'dacha': "дачный",
		'construction_residential': "под застройку жилой недвижимости",
		'construction_non_residential': "под застройку нежилой недвижимости",
		'private_house_building': "под застройку частного дома",
		'agricultural_purposes': "с/х назначения",
		'island': "остров"
	)
)

Для коммерческой недвижимости группирующие элементы (офисные помещения, объекты торговли и т. д.) нельзя использовать для передачи в параметрах команд. Можно использовать только конечные элементы (например, отдельно стоящий офис, павильон и т. д.).

7.3 Справочник repair

Справочник Ремонт:

(
	'without_repair': 'без ремонта',
	'no_internal_works': 'без внутренних работ',
	'without_finishing': 'без отделочных работ',
	'cosmetic': 'косметический ремонт',
	'partial': 'частичный ремонт',
	'major': 'капитальный ремонт',
	'evro': 'евроремонт',
	'architectural_design': 'авторский дизайн'
)

7.4 Справочник housing_class

Справочник Класс жилья:

(
	'econom': 'эконом',
	'business': 'бизнес',
	'elit': 'элит',
)

7.5 Справочник pay_willingness

Справочник Готовность клиента платить комиссионные:

(
	'willing_to_pay': 'Готов',
	'not_know_willing_to_pay': 'Еще не решил',
	'not_willing_to_pay': 'Не готов',
)

7.6 Справочник wall_material

Справочник Материал стен:

(
	'panel': 'панель',
	'brick': 'кирпич',
	'gas_block': 'газоблок',
	'cinder_block': 'шлакоблок',
	'monolit_carcas': 'монолито-каркас',
	'foam_concrete': 'пенобетон',
	'keramzit_concrete': 'керамзитобетон',
	'poroterm': 'поротерм',
	'rakushnik_brick': 'ракушник-кирпич',
	'wood_brick': 'дерево-кирпич',
	'wood': 'дерево'
)

Партнерская кнопка

На каждой странице сайта, использующих API системы Plektan, требуется разместить партнерскую кнопку. Предпочитаемое место размещения — подвал сайта (footer).
Код партнерской кнопки:

<a href="https://plektan.com/" title="plektan.com" target=_blank>
<script>
var plektan = {src: '//plektan.com/img/btn/work-with-plektan'};
if (document.documentElement.lang === "ru") (plektan.src += "-ru.png") && (plektan.alt = "Мы работаем с PLEKTAN CRM");
else (plektan.src += "-uk.png") && (plektan.alt = "Ми працюємо з PLEKTAN CRM");
document.write('<img style="border:0" alt="' + plektan.alt + '" src="' + plektan.src + '">');
</script>
</a>

Оцените эту статью