Начало работы с 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": []
}
}