API.md 4.9 KB

Список доступных API-методов видеть в таблице маршрутов. Формат ответа: JSON.

Модели можно увидеть в соответствующуем репозитории на devel.mephi.ru.

Авторизация выполняется либо через login.mephi.ru, либо по API-ключу.

Основной моделью явлется «event». «event» определяет каким лицом во сколько был совершён вход/выход. Допустимые значения поля «Direction»:

  • NULL — не определено (обычно связано с ошибкой парсинга; рекомендуется пропускать такие события);
  • 0 — выход;
  • 1 — вход;
  • 2 — «двойной выход» (выход без входа; рекомендуется пропускать такие события);
  • 3 — «двойной вход» (вход без выхода; рекомендуется пропускать такие событий).

Поле PersonId — это уникальный идентификатор физ. лица получаемый из УИНФООП. EmpGUID — это идентификатор физ. лица в системе «Термит» (NULLable).

Пример запроса: GET https://api.cps.mephi.ru/events?event.PersonId=123456&startDate=2018-01-01+00:00:00

Пример ответа:

{
  "DevMode": true,
  "RunMode": "dev",
  "arg": [
    {
      "DtDate": "2018-11-15 07:53:13",
      "PersonId": 123456,
      "EmpGUID": 12345,
      "Direction": 1
    },
    {
      "DtDate": "2018-11-15 18:43:05",
      "PersonId": 123456,
      "EmpGUID": 12345,
      "Direction": 0
    },
    {
      "DtDate": "2018-11-16 10:51:42",
      "PersonId": 123456,
      "EmpGUID": 12345,
      "Direction": 1
    },
    {
      "DtDate": "2018-11-16 18:27:38",
      "PersonId": 123456,
      "EmpGUID": 12345,
      "Direction": 0
    }
  ],
  "currentLocale": "",
  "errors": {},
  "flash": {},
  "session": {},
  "status": "OK",
  "username": ""
}

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

  • event (фильтрация по равенству любого поля из структуры event [например «event.PersonId=123456»]);
  • startDate (в формате: «YYYY-mm-dd»);
  • endDate (в формате: «YYYY-mm-dd»).

Кроме того важной моделью является «TimesheetRows» — она используется для данных табельного учёта. Тут действуют всё те же правила. Фильтровать можно по

  • timesheetRow (по равенству полей);
  • startDate;
  • endDate.

Пример запроса: GET https://api.cps.mephi.ru/timesheetRows?timesheetRow.PersonId=123456&startDate=2018-01-01+00:00:00

Можно попросить API-сервер выгрузить данные сразу с прикреплёнными формулярами, добавив параметр «prepareFormular=true». В целом, этих данных достаточно для отображения рабочего времени сотрудника.

Код вполне читабельный и имеется готовый пример использования этого API. Для понимания API достаточно изучить маршруты, controller-ы в API-сервере и используемые модели (внутренние, АСУ, SD-API11). API-сервер для удобства предоставляет методы для отображения фотографии, формуляров, данных по сотрудникам (но они обычно не нужны, так как IT-подразделения НИЯУ МИФИ имеют собственные сервисы для этого).