This is a translation of the original English documentation page. Help us make it better.

№ Додаток 1. Опорний коментар

Позначення

Типи даних

Zabbix API підтримує такі типи даних як вхідні дані:

|Тип|Опис| |--------|------------------------------------------ ------------| |boolean|Логічне значення, яке приймає або true, або false.| |flag|Значення вважається true, якщо воно передане, і не дорівнює null і false інакше.| |ціле|Ціле число.| |float|Число з плаваючою комою.| |рядок|Текстовий рядок.| |текст|Довший текстовий рядок.| |timestamp|часова позначка Unix.| |масив|Упорядкована послідовність значень, тобто звичайний масив.| |об'єкт|Асоціативний масив.| |query|Значення, яке визначає, які дані мають бути повернуті.

Може бути визначено як масив назв властивостей для повернення лише певних властивостей, або як одне з попередньо визначених значень:
extend - повертає всі властивості об'єкта;
count - повертає кількість отриманих записів, підтримується лише певними підвиборами.|

Zabbix API завжди повертає значення лише як рядки або масиви.

Мітки властивостей

Деякі з властивостей об’єктів позначені короткими мітками для опису їх поведінки. Використовуються такі мітки:

  • readonly - значення властивості встановлюється автоматично і не може бути визначено або змінено клієнтом;
  • constant - значення властивості можна встановити під час створення об'єкта, але не можна змінити після.

Зарезервоване значення ідентифікатора "0"

Зарезервоване значення ідентифікатора «0» можна використовувати для фільтрації елементів і видалення об’єктів, на які посилаються. Наприклад, щоб видалити проксі-сервер, на який посилається, з хоста, proxy_hostid має бути встановлено на 0 ("proxy_hostid": "0") або щоб фільтрувати хости, які контролюються параметром сервера, proxyids має бути встановлено на 0 ("proxyids": "0").

Загальні параметри методу "get".

Наступні параметри підтримуються всіма методами get:

Параметр Тип Опис
countOutput boolean Повертає кількість записів у результаті замість фактичних даних.
editable boolean Якщо встановлено значення true, повертати лише ті об’єкти, до яких користувач має права на запис.

За замовчуванням: false.
excludeSearch boolean Повертає результати, які не відповідають критеріям, указаним у параметрі search.
filter object Повертає лише ті результати, які точно відповідають заданому фільтру.

Приймає масив, де ключі є іменами властивостей, а значення є або одним значенням, або масивом значень для порівняння.

Не працює для текстових полів.
limit integer Обмежує кількість повернутих записів.
output query Властивості об'єкта, які будуть повернуті.

За замовчуванням: extend.
preservekeys boolean Використовувати ідентифікатори як ключі в отриманому масиві.
search object Повертає результати, які відповідають наданому пошуковому знаку підстановки (незалежно від регістру).

Приймає масив, де ключі є іменами властивостей, а значення є рядками для пошуку. Якщо не вказано жодних додаткових параметрів, буде виконано пошук LIKE "%…%".

Працює лише для полів рядок і текст.
searchByAny boolean Якщо встановлено значення true, повертає результати, які відповідають будь-якому критерію, наведеному в параметрі filter або search замість усіх.

За замовчуванням: false.
searchWildcardsEnabled boolean Якщо встановлено значення true, увімкнено використання "*" як символу підстановки в параметрі search.

За замовчуванням: false.
sortfield string/array Сортувати результат за заданими властивостями. Зверніться до конкретного опису методу отримання API, щоб отримати список властивостей, які можна використовувати для сортування. Макроси не розгортаються перед сортуванням.

Якщо значення не вказано, дані повертатимуться без сортування.
sortorder string/array Порядок сортування. Якщо передано масив, кожне значення буде зіставлено з відповідною властивістю, указаною в параметрі sortfield.

Можливі значення:
ASC - (за замовчуванням) за зростанням;
DESC - за спаданням.
startSearch boolean Параметр search порівнюватиме початок полів, тобто замість цього виконуватиме пошук LIKE "…%".

Ігнорується, якщо searchWildcardsEnabled має значення true.

Приклади

Перевірка прав користувача

Чи має користувач дозвіл записувати на хости, імена яких починаються з "MySQL" або "Linux"?

Запит:

{
            "jsonrpc": "2.0",
            "method": "host.get",
            "params": {
                "countOutput": true,
                "search": {
                    "host": ["MySQL", "Linux"]
                },
                "editable": true,
                "startSearch": true,
                "searchByAny": true
            },
            "auth": "766b71ee543230a1182ca5c44d353e36",
            "id": 1
       }

Відповідь:

{
            "jsonrpc": "2.0",
            "result": "0",
            "id": 1
       }

Нульовий результат означає відсутність хостів з дозволами на читання/запис.

Підрахунок невідповідності

Підрахувати кількість хостів, імена яких не містять підрядка «ubuntu»

Запит:

{
            "jsonrpc": "2.0",
            "method": "host.get",
            "params": {
                "countOutput": true,
                "search": {
                    "host": "ubuntu"
                },
                "excludeSearch": true
            },
            "auth": "766b71ee543230a1182ca5c44d353e36",
            "id": 1
       }

Відповідь:

{
            "jsonrpc": "2.0",
            "result": "44",
            "id": 1
       }

Пошук хостів за допомогою символів підстановки

Знайдіть хости, назва яких містить слово «сервер» і мають порти інтерфейсу «10050» або «10071». Відсортуйте результат за назвою хоста в порядку спадання та обмежте його 5 хостами.

Запит:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": ["hostid", "host"],
               "selectInterfaces": ["port"],
               "filter": {
                   "port": ["10050", "10071"]
               },
               "search": {
                   "host": "*server*"
               },
               "searchWildcardsEnabled": true,
               "searchByAny": true,
               "sortfield": "host",
               "sortorder": "DESC",
               "limit": 5
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Відповідь:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "hostid": "50003",
                   "host": "WebServer-Tomcat02",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "50005",
                   "host": "WebServer-Tomcat01",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "50004",
                   "host": "WebServer-Nginx",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "99032",
                   "host": "MySQL server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               },
               {
                   "hostid": "99061",
                   "host": "Linux server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               }
           ],
           "id": 1
       }

Пошук хостів за допомогою символів підстановки з "preservekeys"

Якщо ви додаєте параметр "preservekeys" до попереднього запиту, результат повертається у вигляді асоціативного масиву, де ключі є ідентифікаторами об'єктів.

Запит:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": ["hostid", "host"],
               "selectInterfaces": ["port"],
               "filter": {
                   "port": ["10050", "10071"]
               },
               "search": {
                   "host": "*server*"
               },
               "searchWildcardsEnabled": true,
               "searchByAny": true,
               "sortfield": "host",
               "sortorder": "DESC",
               "limit": 5,
               "preservekeys": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Відповідь:

{
            "jsonrpc": "2.0",
            "result": {
                "50003": {
                    "hostid": "50003",
                    "host": "WebServer-Tomcat02",
                    "interfaces": [
                        {
                            "port": "10071"
                        }
                    ]
                },
                "50005": {
                    "hostid": "50005",
                   "host": "WebServer-Tomcat01",
                   "interfaces": [
                        {
                            "port": "10071"
                        }
                    ]
                },
                "50004": {
                    "hostid": "50004",
                    "host": "WebServer-Nginx",
                    "interfaces": [
                        {
                            "port": "10071"
                        }
                    ]
                },
                "99032": {
                    "hostid": "99032",
                    "host": "MySQL server 01",
                    "interfaces": [
                        {
                            "port": "10050"
                        }
                    ]
                },
                "99061": {
                    "hostid": "99061",
                    "host": "Linux server 01",
                    "interfaces": [
                        {
                            "порт": "10050"
                        }
                    ]
                }
            },
            "id": 1
       }