Начало работы с CrocoTime Web API: авторизация

Обычный запрос

app_versionверсия приложения, для которой сформирован запрос. Серверная часть, которая будет его обрабатывать, использует app_version для поддержания совместимости.
revalidate_hashтолько для браузерного клиента. Необходим для проверки на устарение версии клиента, которая сейчас загружена в браузер, по отношению к той версии, которую отдает сервер.
server_token(только для сервера Crocotime) токен для выполнения запросов к api без авторизации. Используется вместо сессии. Предназначен, в основном, для интеграций. Формируется через специальный раздел настроек в интерфейсе системы.
subsystemперечисление подсистем, которые должны будут обработать этот запрос. Для каждой подсистемы указывается app_version

{
"server_token": "...",
"controller": "...",
"action": "...",
"query":
{
...
},
"revalidate_hash": "...", --readed from .hash
"app_version": "8.6.8",
"subsystems":
[
{
"uuid": "com.infomaximum.crocotime",
"app_version": "1.6.3"
},
{
"uuid": "com.infomaximum.fsm",
"app_version": "1.6.3"
}
]
}

Запрос на изменение

Для crocotime контроллер всегда WorkspaceActionController и для определения, в какой группе записей будут изменения, используется поле domain. Т.е определяющая пара - domain/action.

Для остальных серверов пара controller/action определяющая. Поле domain не используется и не передается.

filterфильтр, определяющий какие записи будут изменены. Может быть любое поле из таблицы
recordполя с значениями для изменениями
domainтаблица в БД crocotime

{
"server_token": ...,
"revalidate_hash": ...,
"app_version": ...,
"subsystems": ...,
"controller": "Tasks",
"action": "insert",
"query":
{
"domain": "tasks",
"filter":
{
"task_id": [1]
},
"record":
{
"name": "task1"
}
}
}

Batch-запрос

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

{
"controller": "BatchProcessing",
"version": "5.2.0",
"query":
{
"items":
[
{
"name": "gh",
"controller": "package_info",
"params": {}
"subsystem":
[
{
"uuid:" "com.infomaximum.crocotime",
"app_version": "1.6.3"
},
{
"uuid:" "com.infomaximum.fsm",
"app_version": "1.6.3"
}
]
},
{
"name": "Preferences",
"controller": "schedule_and_permission_users",
"params":
{
"name_filter":
{
"name": "",
"always_coming_items": [],
"always_coming_groups": [9]
},
"always_coming_items": [9],
"always_coming_groups": [9],
"subsystem":
[
{
"uuid:" "com.infomaximum.crocotime",
"app_version": "1.6.3"
},
{
"uuid:" "com.infomaximum.fsm",
"app_version": "1.6.3"
}
]
}
},
{
"name": "ActiveTrack",
"controller": "active_track",
"params": {}
"subsystem":
[
{
"uuid:" "com.infomaximum.crocotime",
"app_version": "1.6.3"
},
{
"uuid:" "com.infomaximum.fsm",
"app_version": "2.6.3"
}
]
}
]
},
"revalidate_hash": "...", --readed from <md5>.hash
"app_version": "8.6.8" -- frontend
}

Ответ

Если запрос успешен, то возвращается только result, который всегда содержит минимум

{
"result": {}
}

Если запрос не успешен, то возвращается только error. На основе наличия error нужно проверять успешность запроса.

{
"error":
{
"code": "some_code",
"message": "",
"params": []
}
}