====== Описание 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 }