API проекта Народный Эколог v0.9a от 1 июня 2019 года

Введение

Настоящая документация описывает работу портала и взаимодействие со сторонними приложениями - участниками процесса.

Шаг 0. Подача обращений.

Вариант 1 (веб-интерфейс):

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

GET https://musor.me/add 

Вариант 2 (API)

Для отправки заявлений на сервер используется следующие два запроса:

Информация

POST https://musor.me/api/v1/incidents

В качестве контейнера передаваемых данных используется JSON, с указанием в заголовке запроса:

Content-Type: application/json

Данные отправляются просто в теле запроса, не использовав какие-то дополнительные переменные:

{
    "description": "Описание", //текстовое описание до 5000 символов
    "address": "Адрес", //адрес места 
    "latitude": 50.6023268, //широта
    "longitude": 36.5901261, //долгота
}

Он возвращает следующую структуру, схожую с отправленной:

//class Incident
{
    "id": 1, //номер заявления в системе usor.me
    "description": "Описание", //описание инцидента
    "address": "Адрес", //адрес
    "latitude": 50.6023268, //широта
    "longitude": 36.5901261, //долгота
    "uuid": "39d154d2-47a3-4d82-9b5c-cae602017b0d", //уникальный uuid заявления, служит для страницы просмотра
    "inner_num": "",//внутренний номер
    "created_at": "2019-06-01T14:39:49+03:00",//дата создания
    "updated_at": "2019-06-01T14:39:49+03:00",//дата изменения статуса
    "status": { // внутреннее представление справочника статусов
        "id": 1,
        "title": "Подано"
    },
    "type": { // внутреннее представление справочника типов заявлений
        "id": 5, 
        "title": "Прочее",
        "short_title": "Прочее"
    },
    "account": { // пользователь или инициатор заявления
        "id": 42,
        "name": "Имя Фамилия", //или система, из которой пришло сообщение
        "email": "email@example.com",
        "phone": "+79876543210"
    },
    "photos": [ // фотографии (по умолчанию массив пуст)
    ]
}

Изображения

Далее требуется прикрепить изображение.

POST https://musor.me/api/v1/photos

Отправляем следующие данные в формате multipart form:

INPUT incident_id: number (id инцидента)
FILE upload: file

1. Уточняйте работу сохранения файлов.

2. Сообщения в обоих случаях по умолчанию принимают статус 1 (Подано) (см. раздел Справочники).

3. Изменение статуса на Прошло модерацию осуществляется уполномоченными сотрудниками ЦЭБ

Для идентификации вашей системы как заявителя, используйте механим Авторизации (см. раздел Авторизация)

Шаг 1. Получение всех подготовленных для передачи в СЭД заявок

Получаем все принятые модератором инциденты (статус id 2: Прошло модерацию)

GET https://musor.me/api/v1/incidents/approved

Структура ответа:

{   
    "data": [], // масив объектов типа Incident
    "total": // количество записей
}

Например:

{
    "data": [
        {
            "id": 1,
            "description": "Описание",
            "address": "",
            "latitude": 50.6023268,
            "longitude": 36.5901261,
            "uuid": "39d154d2-47a3-4d82-9b5c-cae602017b0d",
            "inner_num": "", 
            "created_at": "2019-06-01T14:39:49+03:00",
            "updated_at": "2019-06-01T14:39:49+03:00",
            "status": {
                "id": 2,
                "title": "Прошло модерацию"
            },
            "type": {
                "id": 5,
                "title": "Несвоевременный вывоз/невывоз ТКО",
                "short_title": "Несвоевременный вывоз/невывоз ТКО"
            },
            "account": {
                "id": 4,
                "name": "",
                "email": "",
                "phone": ""
            },
            "photos": [
                {
                    "fullpath": "/uploads/attachments/948c22ef233f131fce605fc498d1d28e.jpeg",
                    "id": 3,
                    "path": "948c22ef233f131fce605fc498d1d28e.jpeg",
                    "created_at": "2019-06-01T14:39:50+03:00"
                }
            ]
        }
    ],
    "total": 1
}

Шаг 2. Изменение статуса

Для операций с заявлением, используйте механим Авторизации (см. раздел Авторизация)

PUT https://musor.me/api/v1/incidents/<id>

где id - уникальный идентификатор

Отправляем объект в теле запроса:

{
    "type": 4, //тип 
    "status": 3,  // id > 2 (нельзя сделать вновь принятым)
    "inner_num": "selma-1234", // внутренний номер документа
    "description": "что изменилось",  // для ленты новостей по инциденту на сайте или отправки оповещений

}

Добавление файлов (при завершении заявления или неподтверждении инцидента) происходит как и в случае с добавлением фото при создании заявления.

Справочники

Тип инцидента устанавливается исходя из множества:

GET https://musor.me/api/v1/incident_types

Все доступные статусы можно получить по адресу:

GET https://musor.me/api/v1/statuses

Авторизация

Авторизация в системе осуществляется JWT согласно стандарту RFC6750.
Обратите внимание, что для этого используются ключевое слово Bearer

Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9...TJVA95OrM7E20RMHrHDcEfxjoYZgeFONFh7HgQ

Для получения токена обратитесь к нашим специалистам.