# Использование команды CURL для запросов к API 
Симптомы
========

Каким образом делать запросы к API через команду curl ?

Решение
=======

1. Для запросов должен быть включен XML-RPC на соответствующей зоне UserGate
   
2. Для отправки запросов к UserGate через API используем метод POST:
>> curl -X POST

3. Структура запроса зависит от используемого метода, которые можно найти в документации к API UserGate.
Рассмотрим на примере метода v1.netmanager.gateways.list (вывод списка шлюзов):
В нем используются три аргумента:
>> v1.netmanager.gateways.list(String auth_token, String node_name, Struct pattern)

Для запроса нам необходимо получить значение auth_token, node_name. 
Struct в данном случае передается как словарь Dictionary. Не требуется в данном случае передавать ключи, поэтому оставим dictionary пустым. В некоторых методах может потребоваться указывать ключи и их значения {'key':'value'}. 
Можно также передать для ключа boolean-value, если для ключа подходят состояние True/False

4. Формируем запрос, учитываем, что API ожидает получения контента запроса в формате JSON, поэтому необходимо использовать -H ключ, чтобы модифицировать заголовок POST запроса:
>> -H 'Content-Type: application/json'

5. Получаем через метод v2.core.login нужные данные для подстановки в тело запроса, описанного на шаге 6.

6. Через ключ -d передаем тело запроса, как если бы передавали значения через браузер в HTML форме, нажимая на кнопку. Необходимо учесть передачу данных в квадратных скобках:
>> -d '[auth_token, node_name, {}]'

6. Итоговый вариант:
>> curl -X POST http://10.10.10.10:4040/web_api/v1.netmanager.gateways.list -H 'Content-Type: application/json' -d '[auth_token, node_name, {}]'