| 62 | |
| 63 | Обязательным ключом JSON-объекта является `cmd`, значением которого является строка - имя команды, выполнение которой запрашивает клиент (в случае запроса) или результат выполнения которой передает клиенту сервер (в случае ответа). |
| 64 | |
| 65 | Пот возникновении ошибки в процессе выполнения команды сервер возвращает ответ на команду, в котором присутствует ключ `error`. Значением ключа является строка с описанием возникшей ошибки. Признаком успешного выполнения команды является отсутствие в ответе на нее ключа `error`. |
| 66 | |
| 67 | JSON-объект может также содержать другие ключи, их состав и назначение определяется выполняемой командой и описаны в разделе каждой команды. |
| 68 | |
| 69 | == Аутентификация == |
| 70 | |
| 71 | Для выполнения большинства команд требуется аутентификация. Для выполнения аутентификации требуется выполнить команду `login`. При успешной аутентификации ответ сервера устанавливает cookies с данными аутентификации. Эти cookies должны присутствовать в последующих командах. Установленные данные аутентификации действительны в течение суток с момента их генерации. |
| 72 | |
| 73 | В случае, если при передаче запроса к серверу cookies с данными аутентификации отсутствуют, неверны или устарели (сгенерированы более суток назад), команда сервером не выполняется, и в ответе присутствует ключ `error` со значением "not logged in". При получении этой ошибки необходимо повторно выполнить аутентификацию. |
| 74 | |
| 75 | При наличии в запросе cookies с валидными данными аутентификации в ответе на любую команду сервер может установить новые (обновленные) cookies. Как правило, при периодическом обращении к серверу это происходит каждые 10 секунд. Таким образом, необходимость в повторном выполнении команды `login` возникает только если в течение суток серверу не передавалось ни одного запроса. |
| 76 | |
| 77 | == Права доступа == |
| 78 | |
| 79 | Некоторые команды для их выполнения требуют наличия у пользователя, запросившего их выполнения, определенных прав доступа. Например команда `reboot` требует наличия у пользователя права изменения текущей конфигурации, в команда `saveall` требует наличия права сохранения конфигурации в ПЗУ. |
| 80 | |
| 81 | В случае, если у пользователя, запросившего выполнение команды отсутствует хотя бы одно из необходимых для ее выполнения прав, команда не выполняется, а запросившему ее клиенту возвращается ответ, содержащий ошибку "access denied". Пример такого ответа: |
| 82 | |
| 83 | `{"cmd":"saveall","error":"access denied"}` |