PVE использует RESTful API. В качестве основного формата данных используется JSON, и весь API формально определен с использованием JSON Schema.
Каждая команда, доступная команде pvesh (см.ниже), доступна в веб-API, поскольку они используют одну и ту же конечную точку.
Запрос (URL, к которому происходит обращение) содержит четыре компонента:
конечная точка, являющаяся URL-адресом, по которому отправляется запрос;
метод с типом (GET, POST, PUT, PATCH, DELETE);
заголовки, выполняющие функции аутентификации, предоставление информации о содержимом тела (допустимо использовать параметр -H или --header для отправки заголовков HTTP) и т. д.;
данные (или тело) — то, что отправляется на сервер с помощью опции -d или --data при запросах POST, PUT, PATCH или DELETE.
При передаче не буквенно-цифровых параметров нужно кодировать тело HTTP-запроса. Для этого можно использовать опцию --data-urlencode.
HTTP-запросы разрешают работать с базой данных, например:
GET-запрос на чтение или получение ресурса с сервера;
POST-запрос для создания записей;
PUT-запрос для изменения записей;
DELETE-запрос для удаления записей;
PATCH-запрос для обновления записей.
Для передачи команд через REST API можно использовать утилиту curl.
По мере роста числа пользователей и ВМ, API PVE может начать реагировать на изменения с задержкой.
Для решения этой проблемы нужно очистить
/var/lib/rrdcached/, например, выполнив команду:
# find /var/lib/rrdcached -type f -mtime +5 -delete
Или, добавив соответствующее задание в crontab.
API PVE использует протокол HTTPS, а сервер прослушивает порт 8006. Таким образом, базовый URL для API — https://server:8006/api2/json/
Параметры можно передавать с помощью стандартных методов HTTP:
В URL можно указать формат возвращаемых данных:
json — формат JSON;
extjs — формат JSON, но результат вложен в объект, с объектом данных, вариант, совместимый с формами ExtJS;
html — текст в формате HTML (иногда полезно для отладки);
text — формат простой текст (иногда полезно для отладки);
В приведенном выше примере используется JSON.