====== Описание API мобильного приложения Д24 v2 ======
* **Рефакторинг апи** https://ds24.ru/wiki/doku.php?id=d24:develop:v2:backend:v2
* url продакшен сервера https://ds24.ru/piedpiper
* url тестового сервера https://s0.ds24.ru/piedpiper
====== Данное API потеряет поддержку с 04.2022 ======
* **Новое апи** https://ds24.ru/wiki/doku.php?id=d24:develop:v2:backend:v2
===== Описание URL =====
* Регистрация https://server.ru/registration
* Для работы с заявками https://server.ru/request
* Для работы с заявками РСО https://server.ru/request_rso
* Для работы с оповещениями https://server.ru/oi
* Для работы с справочниками https://server.ru/reference
* Для работы с контактами https://server.ru/contact
* Для работы с профилем https://server.ru/profile
* Для работы с счечтиками https://server.ru/meter
* Для работы с заявками версия №2 https://server.ru/v2/request
* Для работы со справочниками версия №2 https://server.ru/v2/ref
* Для тестов версия №2 https://server.ru/v2/test
* Для работы с пушами №2 https://server.ru/v2/push
===== Виды пушей =====
* З_СП Заявка | принята в работу
* З_СО Заявка | открыта повторно
* З_К Заявка | Комментарий к заявке добавлен
* З_Ф Заявка | Фото к заявке добавлено
* З_Н Заявка | Пользователь назначен исполнителем или ответственным
* О_С Оповещение | Оповещение новое об отключениях
* З_СР Заявки | Срочные заявки - открытие приложения с предустановленным фильтром
* З_НП Заявки | Не принятые в работу - открытие приложения с предустановленным фильтром
* З_КА Заявки | Посылается запрос по статусу аварийной заявки с быстрой кнопкой "Авария устранена"
===== Определение ноды сервера при регистрации пользователя по логину и паролю =====
POST https://auth.ds24.ru/api/user/auth
// Запрос
{
"login" : "someuser",
"password" : "12345"
}
// Ответ
{
"ok": true,
"server": "https://ds24.ru/",
"login": "someuser",
"hash": "someuserhash",
"secret": "someusersecret"
}
===== Определение ноды сервера при регистрации пользователя по номеру телефона =====
POST https://auth.ds24.ru/api/user/reg
// Запрос
{
"login" : "9125212573"
}
// Ответ
{
"ok": true,
"server": "https://ds24.ru/"
}
===== Проверка логина и пароля =====
Регистрация http://server.ru/registration
Пользователь вводит свой логин и пароль на форме например "login : predeinay : superpass" , (login означает что авторизация происходит по логину и паролю) интерфейс должен закодировать эту строку в base64 чтобы получилась вот такая "строка bG9naW4gOiBwcmVkZWluYXkgOiBzdXBlcnBhc3M=" затем интерфейс посылает http запрос с заголовком "authorization: bG9naW4gOiBwcmVkZWluYXkgOiBzdXBlcnBhc3M=" и JSON объектом методом POST на URL: http://server.ru/registration
// Запрос
{
"devType" : "android", // Тип устройства, чтобы Д24 понимал как слать пуши и т.п.
"pushToken" : "klnefkszkjn5lkawelnflkzsdfk" // токен для пушей
}
// Ответ
{
"ok" : true, // если нет ошибок при оработке запроса true иначе false
"credentials" : true, // логин и пароль верные
"msg" : "что то пошло не так", // какой то текст который нужно показать юзеру на экране
"token" : "someverysecrettoken123123123" // многоразовый индивидуальный токен устройства
}
Проверка по номеру телефона
сначала шлем номер телефона для формирования смс кода , заголовок выглядит так : "phone : 9125212573", где phone означает авторизацию по номеру телефона
когда хотим провалидировать смс код, то шлем так "phone : 9125212573 : 12345"
Проверка валидности токена при любых последующих запросах к Д24
При запросах к API каждый раз для проверки прав доступа необходимо добавлять заголовок "authorization: base64(someverysecrettoken123123123)" где base64 - функция кодирования строки на разных языках может отличаться
===== Справочники =====
Для работы с справочниками http://server.ru/reference
==== Получение списка доступных юр лиц ====
// запрос
{
"act" : "cnt_list"
}
// ответ
{
"ok": true,
"token": true,
"data": [{
"cnt": "Жил. трест Кир. р-на (Спартак)",
"cnt_id": 10983
}, {
"cnt": "Жил. трест Кир. р-на (Центр)",
"cnt_id": 11041
}, {
"cnt": "Жил. трест Кир. р-на ООО РЭУ-25 (Рекорд)",
"cnt_id": 11081
}, {
"cnt": "Жил. трест Кир. р-на ООО РЭУ-25 (Квартал-К)",
"cnt_id": 11082
}, {
"cnt": "Жил. трест Кир. р-на (Леон)",
"cnt_id": 11122
}, {
"cnt": "Жил. трест Кир. р-на (Микрорайон)",
"cnt_id": 11123
}, {
"cnt": "Жил. трест Кир. р-на (Александр)",
"cnt_id": 11141
}, {
"cnt": "Жил. трест Кир. р-на (Радуга)",
"cnt_id": 11301
}, {
"cnt": "Жил. трест Кир. р-на (УК)",
"cnt_id": 11601
}]
}
==== Получение списка доступных улиц/нас. пунктов ====
// Запрос
{
"act" : "street_list",
"req" : {
"cnt_id" : 1 // cnt_id - обязательный параметр
}
}
// Ответ
{
"ok": true,
"token": true,
"data": [{
"street": "Александрова ул"
}, {
"street": "Гурьевская ул"
}, {
"street": "Инициативная ул"
}, {
"street": "Леонова ул"
}, {
"street": "Рекордная ул"
}]
}
==== Получение списка доступных домов (не работает | не используется на фронте) ====
JSON запрос:
{
"act" : "house_list",
"req" : {
"cnt_id" : 1, // cnt_id - условный параметр, можно опустить указывание юр лица тогда покажутся все улицы/нас. пункты по доступным юр лицам
"street" : "Механический п."
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"house": "32",
"house_id": 38502
}, {
"house": "34",
"house_id": 38506
}, {
"house": "34А",
"house_id": 38625
}, {
"house": "36",
"house_id": 38509
}, {
"house": "38",
"house_id": 38512
}, {
"house": "40",
"house_id": 38516
}, {
"house": "44",
"house_id": 38521
}, {
"house": "48А",
"house_id": 38630
}, {
"house": "50А",
"house_id": 39543
}]
}
==== Получение списка доступных домов ====
JSON запрос:
{
"act" : "address_list",
"req" : {
"cnt_id" : 11601, // cnt_id - условный параметр, можно опустить указывание юр лица тогда покажутся все улицы/нас. пункты по доступным юр лицам
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"address":"Кемерово г, Дружбы ул, дом 1Б",
"house_id":50136
},
{
"address":"Кемерово г, Дружбы ул, дом 1А",
"house_id":50135
},
...
]}
}
==== Получение списка доступных подъездов по дому. ====
JSON запрос:
{
"act" : "entrance_list",
"req" : {
"house_id" : 1251
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [
{"entrance":"1"},{"entrance":"2"},{"entrance":"3"},{"entrance":"4"},{"entrance":"5"}
]
}
==== Получение списка доступных этажей по дому. ====
JSON запрос:
{
"act" : "floor_list",
"req" : {
"house_id" : 1251
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [
{"floor":0},{"floor":1},{"floor":2},{"floor":3},{"floor":4},{"floor":5}
]
}
==== Получение списка доступных квартир ====
JSON запрос:
{
"act" : "flat_list",
"req" : {
"house_id" : 1251, // id дома
"entrance":"2", // необязательно - подъезд в формате строки, т.к. есть 2ё1 и т.д.
"floor":5, // необязательно - номер этажа
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"flat": "37",
"flat_id": 55282
},{
"flat": "38",
"flat_id": 55283
},{
"flat": "39",
"flat_id": 55284
},{
"flat": "40",
"flat_id": 55285
}]
}
==== Получение типов работ ====
JSON запрос:
{
"act" : "type_list"
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"type": "Сантехника",
"type_id": 23
}, {
"type": "Электричество",
"type_id": 24
}]
}
==== Получение причин обращений ====
JSON запрос:
{
"act": "ess_list",
"req" : {
"type_ids" : "23:24" // условный параметр, через : - типы работ
}
}
JSON ответ в случае успеха:
{
"ok" : true,
"token" : true,
"data" : [
{"ess" : "Заменить что-то", "ess_id" : 23},
{"ess" : "Поменять что-то", "ess_id" : 12},
{"ess" : "Вызвать сантехника" , "ess_id" : 13}
]
}
==== Получение списка исполнителей ====
JSON запрос:
{
"act" : "emp_list"
}
JSON ответ в случае успеха:
{
"ok" : true,
"token" : true,
"data" : [
{"emp" : "Предеин Вася", "emp_id" : 23}, // для emp - префикс emp, Для resp префикс resp
{"emp" : "Предеин Петя", "emp_id" : 12},
{"emp" : "Предеин Толя", "emp_id" : 13}
]
}
==== Получение списка ответственных ====
JSON запрос:
{
"act" : "resp_list"
}
JSON ответ в случае успеха:
{
"ok" : true,
"token" : true,
"data" : [
{"emp" : "Предеин Вася", "resp_id" : 23}, // для emp - префикс emp, Для resp префикс resp
{"emp" : "Предеин Петя", "resp_id" : 12},
{"emp" : "Предеин Толя", "resp_id" : 13}
]
}
==== Получение списка статусов ====
JSON запрос:
{
"act" : "status_list"
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"status": "Зарегистрирована",
"status_id": 1,
"reasons" : 0, // кол-во доступных причин статуса (например если статус = "Отложена", то причин будет к пример 5)
// сделано это для удобства обработки на фронте (не делать лишний запрос если причин по статусу = 0)
"need_comment": 0 // необходимо ли обязательно указывать коммент в момент перевода заявки в данный стутус (0 нет 1 да)
}, {
"status": "Требуется отклик",
"status_id": 65,
"reasons" : 2,
"need_comment": 1
}]
}
==== Список статусов в виде дерева ====
JSON запрос:
{
"act" : "status_tree_list"
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"status": "Открытые заявки",
"status_id": "1:65:70:5:2:23:4"
}, {
"status": "...Новые",
"status_id": "1:65:70:5"
}, {
"status": ".....|Зарегистрирована",
"status_id": "1"
}, {
"status": ".....|Открыта повторно",
"status_id": "5"
}]
}
==== Список типов заявок ====
JSON запрос:
{
"act" : "reqtype_list"
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"rtype_id": 1,
"rtype": "Обычные"
}, {
"rtype_id": 2,
"rtype": "Аварийные"
}, {
"rtype_id": 3,
"rtype": "Платные"
}]
}
==== Список причин статусов ====
JSON запрос:
{
"act" : "status_reason_list",
"req" : {
"status_id" : 25
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"reason_id": 7,
"reason": "заявитель доволен"
}, {
"reason_id": 8,
"reason": "невозможно проверить"
}, {
"reason_id": 9,
"reason": "автоматически"
}]
}
===== Работа с заявками =====
Для работы с заявками https://server.ru/request
==== Получить список заявок по параметрам (список сортированный от последней к первой) ====
JSON запрос:
{
"act" : "list"
"req" : {
"start" : 1, // с какой позиции начать показывать
"count" : 30, // сколько заявок показать
"cnt_id" : 123, // необязательно код юр лица
"street" : "Какая то улица ул", // необязательно улица/нас пункт
"house_id" : 123, // необязательно код дома
"flat_id" : 123, // необязательно код квартиры
"type_id" : 123, // необязательно код тип работ
"type_ids" : "123:124:125", // необязательно коды типов работ через :
"ess_id" : 123, // необязательно код причины обращения
"ess_ids" : "123:1234:12345", // необязательно коды причин обращений через :
"emp_id" : 123, // необязательно код исполнителя
"resp_id" : 123, // необязательно код ответственного
"status_ids" : "1:2:3", // необязательно код статуса
"rtype_id" : 1, // необязательно код типа заявки
"rtype_ids" : "1:2:3", // необязательно коды типов заявок через :
"request_id" : 886534, // необязательно номер заявки
"date_start" : "01.01.2017", // необязательно дата начала (фильтруется по дате создания) в формате DD.MM.YYYY
"date_end" : "01.04.2017", // необязательно дата окончания (фильтруется по дате создания) в формате DD.MM.YYYY
"keywords" : "бла-бла бла-бла" // ключевые слова
"custom_filter" : "my_in_work" // фильтр, отменяющий все остальные, принимает my_new/my_in_work/my_on_hold и возвращает заявки, где данный пользователь является исполнителем или ответственным.
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"rn": 1, // порядковый номер выборки
"request_id": 803075, // номер заявки
"note": "Выход сантехника для проведения работ на имуществе собственника, заменить, счетчик, ХВС.", // текст заявки
"house": "Кемерово г, Инициативная ул, дом 100", // дом
"flat": "6", // квартира
"status": "Выполнена", // статус
"created_at": "01.02.2017 08:26", // когда была создана в UTC пользователя
"price": 3444, // цена, если заявка платная, если нет, то null
"appointed_str": "Завтра с 10:52", // строка, в которой хранится время прихода специалиста в формате сегодня|завтра|вчера|дата c hh:mm( до hh:mm)
"deadline_str": 21, // количество дней до дедлайна, может иметь отрицательное значение
"emp": "Фурсов Андрей Борисович", // исполнитель
"reason": null // причина статуса
}, {
"rn": 2,
"request_id": 775786,
"note": "Утечка на сетях, ХВС, в подвале",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "06.01.2017 14:45",
"price": 5553.99,
"appointed_str": null,
"deadline_str": 2,
"emp": null,
"reason": "действия не требуются"
}, {
"rn": 3,
"request_id": 694934,
"note": "Запах канализации, в подъезде№1",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "19.10.2016 11:06",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": "невозможно проверить"
}, {
"rn": 4,
"request_id": 678818,
"note": "Утечка на сетях отопления",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "10",
"status": "Закрыта",
"created_at": "04.10.2016 18:24",
"price": null,
"appointed_str": null,
"deadline_str": 22,
"emp": "Башкирев Эдуард Олегович"
}, {
"rn": 5,
"request_id": 639544,
"note": "Запах канализации в под№1",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "22.08.2016 14:32",
"price": null,
"appointed_str": null,
"deadline_str": -22,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 6,
"request_id": 461115,
"note": "Запах канализации, в подъезде №1, в квартире, из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "11.11.2015 10:58",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 7,
"request_id": 384807,
"note": "Нет горячей воды, не течет из крана",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "8",
"status": "Закрыта",
"created_at": "12.08.2015 11:31",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 8,
"request_id": 304411,
"note": "Запах канализации, в квартире",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "6",
"status": "Закрыта",
"created_at": "10.03.2015 15:48",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 9,
"request_id": 291302,
"note": "Запах канализации, в подъезде, из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "13.02.2015 11:16",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 10,
"request_id": 272963,
"note": "Незначительная утечка, ХВС в районе счетчика, перекрыли",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "6",
"status": "Закрыта",
"created_at": "15.01.2015 08:14",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 11,
"request_id": 157553,
"note": "Запах канализации в подъезде и квартире из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "15.07.2014 14:11",
"price": null,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 12,
"request_id": 137216,
"note": "Нет горячей воды (не течет из крана) с 10:00",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "3",
"status": "Закрыта",
"created_at": "27.05.2014 11:54",
"price": 500,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}]
}
==== Детализация по заявке ====
JSON запрос:
{
"act" : "detail",
"req" : {
"request_id" : 137216
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": {
"request_id": 157553, // номер заявки
"rtype": "Плановая", // тип заявки
"flag_emergency": "Д", // аварийная ли заявка (Д/Н)
"note": "Запах канализации в подъезде и квартире из подвала", // текст заявки
"house": "Кемерово г, Инициативная ул, дом 100", // дом
"flat": "2", // квартира
"status": "Закрыта", // тек. статус
"reason": "автоматически", // причина статуса
"created_at": "15.07.2014 14:11", // когда создана? в UTC пользователя DD.MM.YYYY hh24:mi
"updated_at": "30.07.2014 01:00", // когда изменена? в UTC пользователя DD.MM.YYYY hh24:mi
"floor": 1, // этаж
"entr": "1", // подъезд / парадная
"autophone": "3842", // АОН
"contphone": "9089592689", // если житель пожелал оставить другой контактный телефон
"email": null, // email жителя
"type": "Сантехника", // тип работ из справочника
"ess": "Запах канализации", // причина обращения из справочника
"emp": "Золотухин Алексей Викторович", // исполнитель по заявке
"resp": "Золотухин Алексей Викторович", // ответственный по заявке
"created_by": "Стрижева Елизавета", // кто создал заявку
"deadline_at": null, // Срок выполнения заявки (DD.MM.YYYY)
"deadline_str": -2, // кол-во дней до дедлайна
"emp_note": null, // скрытый комментарий только для пользователей Д24 (операторы не видят)
"appointed_at": null, // когда придет исполнитель? в UTC пользователя DD.MM.YYYY hh24:mi
"emp_phone": "9039435858", // телефон(ы) исполнителя
"resp_phone": "9039435858", // телефон(ы) ответственного
"status_id": 25, // код статуса
"reason_id": 9, // код причины
"type_id": 23, // код типа работ
"ess_id": 1537, // код причины обращения
"emp_id": 4002, // код исполнителя
"resp_id": 4002, // код ответственного
"cnt_id": 10401, // код юр лица
"is_paid": "Д", // флаг оплачено
"price": 1000, // стоимость заявки
"paid": 200 // сколько оплачено в данный момент по заявке
}
}
==== Лента событий по заявке ====
JSON запрос:
{
"act" : "feed",
"req" : {
"request_id" : 964825, // номер заявки
"start" : 1, // с какой позиции начать
"end" : 2 // сколько взять
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [
{
"created_at":"17.07.2017 18:58", // Дата создания
"type":1, // Тип события 0 - комментарий, 1 - активность, 2 - файлы,
// 3 - изображения с превью, 4 - запись разговора
"note":"Смена исполнителя ->> Башкирев Эдуард Олегович\r\n...", // текст события
"created_by":"Журавлева Марина Сергеевна", // автор события
"id": 12345, // Id события
"flag_webhook": Д // "Статус" публикации события
},
{
"created_at":"17.07.2017 18:03",
"type":3,
"note":"https://pultdoma.ru/front/uploads/img/17-07-2017/3196190_549_2_596c99ab73ae0.jpg",
"created_by":"Пользователь личного кабинета ",
"id": 123456, // Id события
"flag_webhook": Н // "Статус" публикации события (Д/Н)
}
]
}
==== Получить список истории изменения по заявке | не работает и не используется на фронте ====
JSON запрос:
{
"act" : "activity_list",
"req" : {
"start" : 1, // с какой позиции начать
"count" : 30, // сколько взять
"request_id" : 157553 // номер заявки
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"note": "Статус сменился с Зарегистрирована на Принята в работу;
", // текст активности
"created_at": "12.02.2017 04:11", // когда произошло событие
"created_by": "Усачева Наталья Леонидовна", // инициатор события
"rn": 1 // номер выборки
}, {
"note": "Аварийный сантехник принял заявку в работу",
"created_at": "12.02.2017 04:11",
"created_by": "Усачева Наталья Леонидовна",
"rn": 2
}]
}
==== Получить список комментариев с файлами ====
JSON запрос:
{
"act" : "comment_list",
"req" : {
"start" : 1, // с какой позиции начать
"count" : 30, // сколько взять
"request_id" : 157553 // номер заявки
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [{
"mtype": 1, // 1 - файл, 0 - коммент
"note": "https://192.168.8.50/pultdoma.dev/frontend/web/uploads/img/15-03-2017/17_158_4_58c939ddae5e9.jpg", // url файла, или текст коммента
"created_by": "Пользователь личного кабинета ",
"created_at": "15.03.2017 19:55",
"rn": 1
}, {
"mtype": 0,
"note": "от оператора",
"created_by": "Маслова Наталья",
"created_at": "08.03.2017 19:46",
"rn": 2
}, {
"mtype": 0,
"note": "от коллеги",
"created_by": "Басардинский Сергей Владимирович",
"created_at": "08.03.2017 19:46",
"rn": 3
}, {
"mtype": 0,
"note": "от жителя",
"created_by": "Пользователь личного кабинета ",
"created_at": "08.03.2017 19:46",
"rn": 4
}, {
"mtype": 1,
"note": "https://www.dropbox.com/s/kfvn1t7himchrc4/2017-01-06_16-27-25_%D0%9C%D0%BE%D1%81%D0%BA.%2073%20%D0%BA.4%20%D0%BA%D0%B2.46%20%282%29.pdf?dl=0",
"created_by": "Дзюба Ольга Эдуардовна",
"created_at": "06.01.2017 18:21",
"rn": 5
}]
}
==== Создание заявки ====
// запрос
{
"act" : "create",
"data" : {
"house_id" : 34021, // обязательный параметр
"ess_id" : 1533, // обязательный параметр
"type_id" : 23, // обязательный параметр
"note" : "Тест ppostman", // обязательный параметр
"contphone" : "9125212573",
"flat" : "123",
"entr" : "1",
"floor" : "9",
"email" : "predeinay@gmail.com"
}
}
// ответ
{
"ok": true,
"token": true,
"data": {
"request_id": 1294515
}
}
==== Изменение данных в заявке, написание комментария ====
JSON запрос:
{
"act" : "update", // хотим что то изменить с заявкой
"req" : {
"request_id" : 123123123 // код заявки если необходимо провести действие с указанной заявкой (изменить,добавить коммент и т.п.)
},
"data" : { // если требуется обновить какие то данные в заявке то необходим объект "data"
"status_id" : 2, // перечень возможных новых значений для update таблицы заявок
"reason_id" : 9, // обратить внимание, сюда пихать только те значения, которые действительно изменил пользователь
"emp_id" : 123, // а не всю модель заявки
"resp_id" : 123,
"deadline_at" : "01.01.2017",
"tag_ids" : "1,2,3,4,5", // Ид тэгов для сохранения через запятую, чтобы удалить все тэги необходимо послать "0"
"emp_note" : "типа скрытый от операторов текст",
"comment" : "Типа коммент от исполнителя", // (необязательно) если пользователь хочет добавить комментарий
"image_url" : "https://ds24.ru/fs/static/2017/08/14/some_test.jpg", // Ссылка на изображение, обязательно в связке с image_name
"image_name" : "some test", // Название изображения
"appointed_at": "next_week", // Дата, когда придёт исполнитель, принимает "today" / "tomorrow" / "next_week" / дату в формате "ДД.ММ.ГГГГ"
"local_at" : "12.12.2020 12:12", // Дата, когда исполнитель локализовал аварию по заявке "ДД.ММ.ГГГГ ЧЧ:МИ"
"material_price" : 333 // Стоимость материалов по заявке
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": {
"affected_rows":3 // кол-во затронутых записей (всего 3: сам update в заявку, создание коммента, загрукзка изображения)
}
}
==== Получение списка доступных тэгов ====
JSON запрос:
{
"act" : "tag_list",
"req" : {
"cnt_id" : 1, // cnt_id - условный параметр, можно опустить указывание юр лица тогда покажутся все тэги по доступным юр лицам
"request_id" : 1234 // request_id - условный параметр, если его передать то в is_set Y/N будет показываться Y для тех тэгов которые установлены в указанной заявке
}
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": [
{
"tag_id": 801,
"title": "Yit PLUS [Ромажка]",
"color": "#C28CC2",
"is_set": "N"
},
{
"tag_id": 11,
"title": "администрация",
"color": "#F5F6C3",
"is_set": "N"
},
{
"tag_id": 13,
"title": "весенне-летний период",
"color": "#ACF2CF",
"is_set": "N"
},
{
"tag_id": 8,
"title": "ГЖИ",
"color": "#E9DFFA",
"is_set": "N"
},
{
"tag_id": 16,
"title": "закупка материалов",
"color": "#FADCDC",
"is_set": "N"
},
{
"tag_id": 3,
"title": "запланировано",
"color": "#FAB1D8",
"is_set": "N"
},
{
"tag_id": 522,
"title": "метка [Ромажка]",
"color": "#8BC4F7",
"is_set": "Y"
},
{
"tag_id": 17,
"title": "нет собственника",
"color": "#F1F2E1",
"is_set": "N"
},
{
"tag_id": 2,
"title": "ожидает оплаты",
"color": "#ADFFB2",
"is_set": "N"
},
{
"tag_id": 402,
"title": "оплачена",
"color": "#55E0A2",
"is_set": "N"
},
{
"tag_id": 14,
"title": "осенне-зимний период",
"color": "#F5F6F9",
"is_set": "N"
},
{
"tag_id": 12,
"title": "письменный ответ",
"color": "#E0FFD6",
"is_set": "N"
},
{
"tag_id": 10,
"title": "прокуратура",
"color": "#F5F6DE",
"is_set": "N"
},
{
"tag_id": 361,
"title": "простая [Ромажка]",
"color": "#D43939",
"is_set": "N"
},
{
"tag_id": 821,
"title": "рабочее время [Ромажка]",
"color": "#EBEBEB",
"is_set": "Y"
},
{
"tag_id": 9,
"title": "роспотребнадзор",
"color": "#CEC9FF",
"is_set": "N"
},
{
"tag_id": 321,
"title": "сайт",
"color": "#FFA366",
"is_set": "N"
},
{
"tag_id": 15,
"title": "согласовать со старшим по дому",
"color": "#F5F6EF",
"is_set": "N"
},
{
"tag_id": 5,
"title": "требуется вышка",
"color": "#DEBADE",
"is_set": "N"
},
{
"tag_id": 6,
"title": "требуется сварка",
"color": "#D9F8FF",
"is_set": "N"
},
{
"tag_id": 4,
"title": "требуется спецтехника",
"color": "#78DFE6",
"is_set": "N"
},
{
"tag_id": 61,
"title": "требуется текущий ремонт",
"color": "#CF765D",
"is_set": "N"
},
{
"tag_id": 7,
"title": "утвердить на общем собрании",
"color": "#F5F6FE",
"is_set": "N"
},
{
"tag_id": 841,
"title": "Чат",
"color": "#FF00FF",
"is_set": "N"
},
{
"tag_id": 523,
"title": "эээ [Ромажка]",
"color": "#65EBB6",
"is_set": "N"
},
{
"tag_id": 781,
"title": "ээээээ [Ромажка]",
"color": "#0088FF",
"is_set": "N"
}
]
}
===== Работа с оповещениями =====
Для работы с оповещениями https://server.ru/oi
==== Создание оповещение ====
{
"act": "create",
"data": {
"house_ids": "34021:42243",
"type": "О",
"start_at": "22.01.2016 10:40",
"end_at": "22.01.2016 18:30",
"service_list": "Э:О",
"resp": "Р",
"reason": "П",
"what": "М",
"note": "плановые работы на подстанции 292 отключение 2 секции шин.(Васильев)"
}
}
resp
{
"ok": true,
"token": true,
"data": {
"affected_rows": 1,
"info_id": 138864
}
}
Возможно дома находятся в разных УК для каждой УК создастся свое оповещение, affected_rows будет > 1 а info_id - показывается только последнего созданного
Тип оповещения:
* Утечка У
* Опрессовка Р
* Отключение услуг О
* Подвоз воды В
* Подпоры П
* Прочее Д
* Акция А
Услуги:
* ХВС Х
* ГВС Г
* Канализация К
* Отопление О
* Электричество Э
* Газ З
* Лифт Л
Зона отвественности:
* Управляющая компания У
* Ресурсоснабжающая организация Р
* Неизвестно Н
Причина (одиночный выбор):
* Авария А
* Плановые работы П
* Задолженность за оплату З
* Неизвестно Н
Объект
* Несколько домов М
* Весь дом Д
* Подъезд П
* Стояк С
* Несколько квартир К
* Неизвестно Н
==== Получить оповещения по параметрам (список сортирован от последней к первой). ====
JSON запрос:
{
"act" : "list",
"req" :{
"custom_filter": "active_alerts", // Необязательно. Отменяет все прочие фильтры.
"start" : 1, // с какой позиции начать показывать
"count" : 5, // сколько заявок показать
"cnt_id" : 12265, // необязательно код юр лица
"status" : "А", // необязательно статус оповещения
"type" : "О:Д",// необязательно тип оповещения
"service": "Х:Г"// необязательно список услуг
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [{
"info_id":110670, // id оповещения
"type":"О", // тип оповещения
"type_str":"Отключение ", // тип оповещения полностью
"start_at":"17.07.2017 16:53", // когда начало? в UTC пользователя DD.MM.YYYY hh24:mi
"end_at":null, // когда конец? в UTC пользователя DD.MM.YYYY hh24:mi
"note":"Закрыли ГВС на дом, порыв лежака под полом в кв.9", // текст оповещения
"status":"Активно", // статус оповещения полностью
"service_list":"Г" // код услуги к которой относится оповещение
"service_list_str":"ГВС" // услуга к которой относится оповещение
"object_list" : [
{"street":"Куртамышская ул","houses": "1,2,3,4,5"},
{"street":"9 мая","houses":"55,77,88А"}
]
}, {
"info_id":110663,
"type":"О",
"type_str":"Отключение ",
"start_at":"17.07.2017 15:29",
"end_at":null,
"note":"Отключена Г.В до 18.07.17г , сдача т/узлов.",
"status":"Активно",
"service_list":"Г",
"service_list_str":"ГВС"
}, {
"info_id":110635,
"type":"Д",
"type_str":"Прочее ",
"start_at":"17.07.2017 13:09",
"end_at":null,
"note":"№297 от 17.07.17г. АО КТСК сообщает, что повреждение на т/трассе по адр : ИНИЦИАТИВНАЯ 37 частично устранили 17.07.17 г в 17-00, задвижку Т-2 в ТК 9/4 открыли. Потребителям необходимо открыть входную задвижку Т-2 в т/узлах жилых домов по адресу ИНИЦИАТИВНАЯ № 33, 35, 37. ПОПОВА 1. Т-1 закрыть с момента получения телефонограммы , ГВС подать по Т-2. Гаков,Гусейнова.",
"status":"Активно",
"service_list":null,
"service_list_str":null
}, {
"info_id":110620,
"type":"О",
"type_str":"Отключение ",
"start_at":"17.07.2017 16:27",
"end_at":null,
"note":"Кв № 2 и №18",
"status":"Активно",
"service_list":"Э",
"service_list_str":"Электричество"
}]
}
==== Детализация по оповещению. ====
JSON запрос:
{
"act" : "detail",
"req" :{
"info_id" : 66776, // id оповещения
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data":
{
"info_id":66776, // id оповещения
"type":"О", // тип оповещения
"type_str":"Отключение ", // тип оповещения полностью
"start_at":"22.01.2016 10:40", // когда начало? в UTC пользователя DD.MM.YYYY hh24:mi
"end_at":"22.01.2016 18:30", // когда конец? в UTC пользователя DD.MM.YYYY hh24:mi
"created_at":"22.01.2016 18:30", // когда создана? в UTC пользователя DD.MM.YYYY hh24:mi
"note":"плановые работы на подстанции 292 отключение 2 секции шин.(Васильев)", // текст оповещения
"status":"З", // статус оповещения
"status_str":"Закрыто", // статус оповещения полностью
"service_list":"Э", // код услуги к которой относится оповещение
"service_list_str":"Электричество", // услуга к которой относится оповещение
"reason":"П", // код причины
"reason_str":"Плановые работы", // причина отключения полностью
"resp":"Р", // код ответственного
"resp_str":"РСО", // ответственный, если РСО, тогда svc_id и svc не null
"svc_id":6, // id РСО
"svc":"Электросети" // РСО полностью
}
}
==== Лента событий оповещения ====
JSON запрос:
{
"act" : "feed",
"req" : {
"info_id" : 66776, // id оповещения
"start" : 1, // с какой позиции начать
"count" : 2 // сколько взять
}
}
{
"ok":true,
"token":true,
"data": [
{
"created_at":"23.01.2016 11:28", // Дата создания
"type":1, // Тип события 0 - комментарий, 1 - активность
"note":"Статус оповещения изменился с \"Плановое\" на \"Активное\".\r\n", // текст события
"created_by":"Лукашевич Светлана" // автор события
},
{
"created_at":"30.01.2016 01:00",
"type":1,
"note":"Статус оповещения изменился с \"Активное\" на \"Архивное\".\r\n",
"created_by":"Системный пользователь"
}
]
}
==== Список домов по оповещению ====
JSON запрос:
{
"act" : "houses",
"req" :{
"info_id" : 66776, // id оповещения
}
}
{
"ok":true,
"token":true,
"data": [{
"street":"Гоголя ул", // улица с домами к которой относится оповещение
"houses":"124, 126" // список домов
},{
"street":"К.Маркса ул",
"houses":"145, 147"
}]
}
==== Изменение данных в оповещении, написание комментария. ====
JSON запрос:
{
"act" : "update",
"data" : { // если требуется обновить какие то данные в заявке то необходим объект "data"
"info_id" : 110900 // id оповещения
"status" : "А", // (необязательно) меняем статус заявки
"comment" : "Типа коммент от исполнителя", // (необязательно) если пользователь хочет добавить комментарий
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": {
"affected_rows": 1 // кол-во затронутых записей, в том числе и добавленный комментарий
}
}
===== Работа с счетчиками =====
https://server.ru/meter
==== Получить список активных показаний по счётчикам для текущего пользователя. ====
JSON запрос:
{
"act" : "list",
"req" : {
"start" : 1, // с какой позиции начать показывать
"count" : 2, // сколько показать
"cnt_id" : 10983, // необязательно код юр лица
"house_id": 45123, // необязательно код дома
"flat" : "1", // необязательно нормер квартиры
"term_ids": "1:5" // необязательно тип счетчиков через разделитель ":"
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [{
"description":"ГВС", // Описание показания (назначение счётчика)
"house":"Курган г, Агрономическая ул, дом 3", // Адрес, где установлен счётчик
"flat":"144", // Квартира
"value":null, // Текущее показание
"date":null, // Дата текущего показания
"prev_value":0, // Последнее показание
"prev_date":"01.01.2000 00:00", // Дата последнего показания
"meter_id":1565386, // Идентификатор показания
"meter_id_ext":"144,1", // "Внешний" идентификатор показания
"term": "Холодная вода" // Тип показания
},{
"description":"ХВС",
"house":"Курган г, Агрономическая ул, дом 3",
"flat":"144",
"value":null,
"date":null,
"prev_value":0,
"prev_date":"01.01.2000 00:00",
"meter_id":1565387,
"meter_id_ext":"144",
"term": "Холодная вода"
}]
}
==== Получить список квартир, которые связаны с активными показаниями. ====
JSON запрос:
{
"act" : "flat_list",
"req" : {
"house_id": 45123, // обязательно код дома
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [{"flat":"1"},{"flat":"2"},{"flat":"3"},{"flat":"4"},{"flat":"5"},{"flat":"6"},{"flat":"6Н"},{"flat":"7"},{"flat":"7Н"}, ...]
}
==== Получить список типов счетчиков для дальнейшей фильтрации. ====
JSON запрос:
{
"act" : "term_list"
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [{
"term_id":6,
"term":"Газ"
},{
"term_id":5,
"term":"Горячая вода"
},{
"term_id":7,
"term":"Отопление"
},{
"term_id":1,
"term":"Холодная вода"
},{
"term_id":3,
"term":"Электроэнергия"
}]
}
==== Сохранение показаний. ====
// Запрос
{
"act": "update",
"data": {
"meter_id": 3499474,
"value": "100",
"image_url" : "https://ds24.ru/fs/static/2017/08/14/some_test.jpg",
"image_name" : "asdasd"
}
}
// Ответ
{
"ok": true,
"token": true,
"data": {
"affected_rows": 1
}
}
===== Работа с контактами =====
Для работы https://server.ru/contact
==== Получить список контактов с фильтрами. ====
JSON запрос:
{
"act" : "list",
"req" : {
"start" : 1, // с какой позиции начать показывать
"count" : 5, // сколько контактов показать
"cnt_id" : 12265, // необязательно код юр лица
"phone" : "9128333604", // необязательно телефон
"house_id": 23, // необязательно идентификатор дома
"flat_id": 232, // необязательно идентификатор квартиры
}
}
JSON ответ в случае успеха:
{
"ok":true,
"token":true,
"data": [{
"phone":"9234831313", // Телефон
"house":"Кемерово г, Институтская ул, дом 16", // Полный адрес
"flat":"62" // Номер квартиры или название офиса
},{
"phone":"9045779284",
"house":"Кемерово г, Стройгородок ул, дом 4",
"flat":"23"
},{
"phone":"3842613939",
"house":"Кемерово г, Инициативная ул, дом 98А",
"flat":"22"
},{
"phone":"9045759001",
"house":"Кемерово г, Инициативная ул, дом 98А",
"flat":"22"
},{
"phone":"3842751766",
"house":"Кемерово г, 40 лет Октября ул, дом 29",
"flat":"18"
}]
}
===== Работа с профилем =====
Для работы с профилем https://server.ru/profile
==== Получение данных о профиле ====
JSON запрос:
{
"act" : "detail"
}
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": {
"username": "Предеин Анатолий",
"can_close_request": true,
"can_access_meters": true,
"can_access_contacts": true,
"account_name": "Не активен",
"phone": "9898004862",
"emp_id": 22055,
"not_read_push_count": 10,
"can_comment_to_ext_system": 0
}
}
==== Измнение данных о профиле ====
{
"act": "update",
"data": {
"fcm_token": "NEWTOKEN123", // Если вдруг пуш секрет изменился на девайсе или был получен позже
"push_config": "З_Ф:З_Н:З_К", // какие пуши юзеру необходимы
"start_app" : "im started!!" // выполняется каждый раз 1 раз при запуске АПП чтобы вести статистику использования апп
}
}
Json в случае успеха
{
"ok": true,
"token": true,
"data": {
"affected_rows": 3
}
}
==== Получения списка включенных уведомлений пуш для профиля ====
// Запрос
{
"act" : "settings_push"
}
// Ответ
{
"ok": true,
"token": true,
"data": [
{
"descr": "Назначен исп/отв в заявке",
"value": "З_Н",
"is_set": "1"
},
{
"descr": "Добавлен комментарий к заявке",
"value": "З_К",
"is_set": "1"
},
{
"descr": "Добавлен файл к заявке",
"value": "З_Ф",
"is_set": "1"
},
{
"descr": "Заявка открыта повторно",
"value": "З_СО",
"is_set": "1"
},
{
"descr": "Заявка принята в работу",
"value": "З_СП",
"is_set": "1"
}
]
}
===== Работа с FS API =====
// Отправка файла на сервер FS API.
// Загрузка фото test.jpg на ds24.ru/fs
curl -v -H "filename: test.jpg" -X POST --data-binary "@test.jpg" https://ds24.ru/fs/
Ответ:
{
"ok":true,
"file":"https://ds24.ru/fs/static/2017/08/11/test_OTA4.jpg",
"thumbnail":"https://ds24.ru/fs/static/2017/08/11/test_OTA4_th.jpg"
}
====== Описание API мобильного приложения Д24 v2_v2 ======
===== Работа с заявками_v2 =====
==== Получить список заявок по параметрам ====
Get запрос: server/v2/request/?
Параметры
"start" : 1, // с какой позиции начать показывать
"count" : 30, // сколько заявок показать
"cnt_id" : 123, // необязательно код юр лица
"street" : "Какая то улица ул", // необязательно улица/нас пункт
"house_id" : 123, // необязательно код дома
"flat_id" : 123, // необязательно код квартиры
"type_id" : 123, // необязательно код тип работ
"type_ids" : "123:124:125", // необязательно коды типов работ через :
"ess_id" : 123, // необязательно код причины обращения
"ess_ids" : "123:1234:12345", // необязательно коды причин обращений через :
"emp_id" : 123, // необязательно код исполнителя
"resp_id" : 123, // необязательно код ответственного
"status_ids" : "1:2:3", // необязательно код статуса
"rtype_id" : 1, // необязательно код типа заявки
"rtype_ids" : "1:2:3", // необязательно коды типов заявок через :
"request_id" : 886534, // необязательно номер заявки
"date_start" : "01.01.2017", // необязательно дата начала (фильтруется по дате создания) в формате DD.MM.YYYY
"date_end" : "01.04.2017", // необязательно дата окончания (фильтруется по дате создания) в формате DD.MM.YYYY
"keywords" : "бла-бла бла-бла" // ключевые слова
"custom_filter" : "my_in_work" // фильтр, принимает new/in_work/on_hold/deadline/finishedможет быть передано несколько через :
"is_only_my" : 1 // фильтр определяющий необходимо ли показывать все заявки или только где сотрудник ответственный/исполнитель (0/1 все/мои)
"custom_order" : "EXEC_TIME" //тип сортировки заявок (EXEC_TIME/CREATED_TIME по сроку выполнения/дате создания) EXEC_TIME по умолчанию если не указано
}
JSON ответ в случае успеха:
[{
"rn": 1, // порядковый номер выборки
"request_id": 803075, // номер заявки
"flag_emergency": "Д", // аварийная ли заявка? (Д/Н)
"note": "Выход сантехника для проведения работ на имуществе собственника, заменить, счетчик, ХВС.", // текст заявки
"house": "Кемерово г, Инициативная ул, дом 100", // дом
"flat": "6", // квартира
"status": "Выполнена", // статус
"created_at": "01.02.2017 08:26", // когда была создана в UTC пользователя
"price": 3444, // цена, если заявка платная, если нет, то null
"appointed_str": "Завтра с 10:52", // строка, в которой хранится время прихода специалиста в формате сегодня|завтра|вчера|дата c hh:mm( до hh:mm)
"deadline_str": 21, // количество дней до дедлайна, может иметь отрицательное значение
"emp": "Фурсов Андрей Борисович", // исполнитель
"reason": null // причина статуса
}, {
"rn": 2,
"request_id": 775786,
"flag_emergency": "Д",
"note": "Утечка на сетях, ХВС, в подвале",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "06.01.2017 14:45",
"price": 5553.99,
"material_price": 1,
"appointed_str": null,
"deadline_str": 2,
"emp": null,
"reason": "действия не требуются"
}, {
"rn": 3,
"request_id": 694934,
"flag_emergency": "Д",
"note": "Запах канализации, в подъезде№1",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "19.10.2016 11:06",
"price": null,
"material_price": 2,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": "невозможно проверить"
}, {
"rn": 4,
"request_id": 678818,
"flag_emergency": "Д",
"note": "Утечка на сетях отопления",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "10",
"status": "Закрыта",
"created_at": "04.10.2016 18:24",
"price": null,
"material_price": 3,
"appointed_str": null,
"deadline_str": 22,
"emp": "Башкирев Эдуард Олегович"
}, {
"rn": 5,
"request_id": 639544,
"flag_emergency": "Д",
"note": "Запах канализации в под№1",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "22.08.2016 14:32",
"price": null,
"material_price": 4,
"appointed_str": null,
"deadline_str": -22,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 6,
"request_id": 461115,
"flag_emergency": "Д",
"note": "Запах канализации, в подъезде №1, в квартире, из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "5",
"status": "Закрыта",
"created_at": "11.11.2015 10:58",
"price": null,
"material_price": 5,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 7,
"request_id": 384807,
"flag_emergency": "Д",
"note": "Нет горячей воды, не течет из крана",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "8",
"status": "Закрыта",
"created_at": "12.08.2015 11:31",
"price": null,
"material_price": 6,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 8,
"request_id": 304411,
"flag_emergency": "Д",
"note": "Запах канализации, в квартире",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "6",
"status": "Закрыта",
"created_at": "10.03.2015 15:48",
"price": null,
"material_price": 7,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 9,
"request_id": 291302,
"flag_emergency": "Д",
"note": "Запах канализации, в подъезде, из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "13.02.2015 11:16",
"price": null,
"material_price": 8,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 10,
"request_id": 272963,
"flag_emergency": "Д",
"note": "Незначительная утечка, ХВС в районе счетчика, перекрыли",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "6",
"status": "Закрыта",
"created_at": "15.01.2015 08:14",
"price": null,
"material_price": 9,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 11,
"request_id": 157553,
"flag_emergency": "Д",
"note": "Запах канализации в подъезде и квартире из подвала",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "2",
"status": "Закрыта",
"created_at": "15.07.2014 14:11",
"price": null,
"material_price": 10,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}, {
"rn": 12,
"request_id": 137216,
"flag_emergency": "Д",
"note": "Нет горячей воды (не течет из крана) с 10:00",
"house": "Кемерово г, Инициативная ул, дом 100",
"flat": "3",
"status": "Закрыта",
"created_at": "27.05.2014 11:54",
"price": 500,
"material_price": 666,
"appointed_str": null,
"deadline_str": -2,
"emp": "Башкирев Эдуард Олегович",
"reason": null
}]
==== Получить детализацию по заявке ====
Get запрос: server/v2/request/:request_id
JSON ответ в случае успеха:
{
"request_id": 157553, // номер заявки
"rtype": "Плановая", // тип заявки
"flag_emergency": "Д", // аварийная ли заявка (Д/Н)
"note": "Запах канализации в подъезде и квартире из подвала", // текст заявки
"house": "Кемерово г, Инициативная ул, дом 100", // дом
"flat": "2", // квартира
"status": "Закрыта", // тек. статус
"reason": "автоматически", // причина статуса
"created_at": "15.07.2014 14:11", // когда создана? в UTC пользователя DD.MM.YYYY hh24:mi
"updated_at": "30.07.2014 01:00", // когда изменена? в UTC пользователя DD.MM.YYYY hh24:mi
"floor": 1, // этаж
"entr": "1", // подъезд / парадная
"autophone": "3842", // АОН
"contphone": "9089592689", // если житель пожелал оставить другой контактный телефон
"email": null, // email жителя
"type": "Сантехника", // тип работ из справочника
"ess": "Запах канализации", // причина обращения из справочника
"emp": "Золотухин Алексей Викторович", // исполнитель по заявке
"resp": "Золотухин Алексей Викторович", // ответственный по заявке
"created_by": "Стрижева Елизавета", // кто создал заявку
"deadline_at": null, // Срок выполнения заявки (DD.MM.YYYY)
"deadline_str": -2, // кол-во дней до дедлайна
"emp_note": null, // скрытый комментарий только для пользователей Д24 (операторы не видят)
"appointed_at": null, // когда придет исполнитель? в UTC пользователя DD.MM.YYYY hh24:mi
"emp_phone": "9039435858", // телефон(ы) исполнителя
"resp_phone": "9039435858", // телефон(ы) ответственного
"status_id": 25, // код статуса
"reason_id": 9, // код причины
"type_id": 23, // код типа работ
"ess_id": 1537, // код причины обращения
"emp_id": 4002, // код исполнителя
"resp_id": 4002, // код ответственного
"cnt_id": 10401, // код юр лица
"is_paid": "Д", // флаг оплачено
"price": 1000, // стоимость заявки
"paid": 200, // сколько оплачено в данный момент по заявке
"material_price" : 666, // стоимость материалов по заявке
"appointed_str": null, // желаемое время прихода специалиста
"is_local_need": "Н", // нужна ли локализация аварии
"local_at": null, // время локализации
"what_was_done": null // что было сделано
"cnt_callback_phone" : '3452914455' // телефон для обращения в кц в 10 значном формате
}
==== Получить количество заявок не принятых в работу ====
GET server/v2/request/custom/new
JSON ответ в случае успеха:
{
"request_count": 0, //количество заявок не принятых в работу
"request_emerg_count": 0 //из выше указанных количество аварийных заявок не принятых в работу
}
==== Принять не принятые заявки в работу ====
GET server/v2/request/custom/new/apply
JSON ответ в случае успеха:
{
"request_count": 0 //количество заявок принятых в работу
}
==== Отказ пользователем от принятия в работу заявки ====
POST server/v2/request/:request_id/refuse
JSON запрос:
{
"refuse_id": "2" //код причины отказа от заявки (см server/v2/ref/request_refuse_reason_list)
}
JSON ответ в случае успеха:
{
"request_id": 1288163 //код заявки не принятой в работу
}
==== Возврат в заявку причины обращения предшествующего гарантийной ====
GET server/v2/request/:request_id/flashback
JSON ответ в случае успеха:
{
"request_id": 1288163 //код измененной заявки (в случае возникновения ошибки вернет 0. возможные ошибки - нет доступа к заявке/заявка не является в данный момент гарантийной)
}
==== Перевод аварийной заявки на участок ====
POST server/v2/request/:request_id/tocurrentrepair
JSON ответ в случае успеха:
{
"request_count": 0 //количество заявок переведенных на участов
}
==== Публикация комментария/фотографии для жителя ====
GET server/v2/request/:request_id/comment_webhook?
Параметр
"id" : 1234, // код комментария или фотографии
"mtype" : 0, // тип объекта (0 - комментарий, 1- фото)
"webhook_flag" : Д, // "статус" публикации (Д - опубликовать, Н - снять с публикации)
JSON ответ в случае успеха:
{
"ok": true,
"token": true,
"data": {
"affected_rows": 1 //0 в случае если запись не изменилась
}
}
===== Работа со справочниками_v2 =====
==== Справочник причин отказа от заявки ====
GET server/v2/ref/request_refuse_reason_list?
Параметр
"is_emergency" : 1, // 0/1 и если 0/null/undefined. список отказов в зависимости от того аварийная ли заявка
JSON ответ в случае успеха:
[{
"reject_reason": "Не мой профиль",
"refuse_id": "1"
},
{
"reject_reason": "Не мой участок",
"refuse_id": "2"
},
{
"reject_reason": "Я на больничном",
"refuse_id": "3"
},
{
"reject_reason": "У меня выходной / отпуск",
"refuse_id": "4"
}
]
===== Работа с тестами_v2 =====
==== Добавление пуша для отправки пользователя ====
GET server/v2/test/push/?
Список параметров
message : blablabla //сообщение для пользователя
object_id : 123 //код объекта (например номер заявки)
object_type : З_Н //Тип пуша (см типа пушей)
JSON ответ в случае успеха:
{ 1 }
===== Работа с пушами_v2 =====
==== Список пушей по пользователю ====
GET server/v2/push/?
Список параметров
start : 1 //старт выборки с позиции
count : 50 //количество элементов
JSON ответ в случае успеха:
[
{
"rn": 1, //порядковый номер
"push_id": 25536, //код пуша
"message": "blabla", //сообщение
"object_id": 321, //код объекта
"object_type": "З_Н", //тип пуша
"status": 1 //статус пуша (0 не отправлен/1 отправле /2 прочитан)
},
{
"rn": 2,
"push_id": 25535,
"message": "test",
"object_id": 123,
"object_type": "З_Н",
"status": 1
}
]
==== Детализация пуша ====
GET server/v2/push/:push_id
JSON ответ в случае успеха:
{
"push_id": 25536,
"message": "blabla",
"object_id": 321,
"object_type": "З_Н",
"status": 2
}
===== Работа с профилем_v2 =====
==== Детализация профиля ====
GET server/v2/profile/detail
JSON ответ в случае успеха:
{
"username": "Предеин Анатолий",
"can_close_request": true,
"can_access_meters": true,
"can_access_contacts": true,
"account_name": "Не активен",
"phone": "9898004862",
"emp_id": 22055,
"not_read_push_count": 10,
"can_comment_to_ext_system": 1, // варианты 0/1
"token_id": 12345,
"can_access_material_price": true,
"access_status_list" : "1:2:3:4:5" //доступные для использования пользователем статусы заявок
}
==== Получения списка включенных уведомлений пуш для профиля ====
GET server/v2/profile/settings_push
// Ответ
[
{
"descr": "Назначен исп/отв в заявке",
"value": "З_Н",
"is_set": "1"
},
{
"descr": "Добавлен комментарий к заявке",
"value": "З_К",
"is_set": "1"
},
{
"descr": "Добавлен файл к заявке",
"value": "З_Ф",
"is_set": "1"
},
{
"descr": "Заявка открыта повторно",
"value": "З_СО",
"is_set": "1"
},
{
"descr": "Заявка принята в работу",
"value": "З_СП",
"is_set": "1"
}
]
==== Измнение данных о профиле ====
POST server/v2/profile/update
{
"fcm_token": "NEWTOKEN123", // Если вдруг пуш секрет изменился на девайсе или был получен позже
"push_config": "З_Ф:З_Н:З_К", // какие пуши юзеру необходимы
"start_app" : "im started!!" // выполняется каждый раз 1 раз при запуске АПП чтобы вести статистику использования апп
}
Json в случае успеха
{
"affected_rows": 3
}