Структура запроса

Запрос на отправку данных состоит из 2-х частей: обязательной и опциональной.

1. Обязательная часть

В качестве примера, берем отправку данных на эндпоинт AddEventJSON

{
  "SERVER_KEY": "[SERVER_KEY]", // ключ сервера LC.Мониторинг
  "TYPE_ID": "start", // тип события
  "HOOK_ID": "[HOOK_ID]]", // идентификатор чата Б24 Вашей Компании
  "MESSAGE": {
    "jobID": "[JOB_ID]", // идентификатор задания jobID. Для TYPE_ID=start допускается пустое значение. В этом случае, jobID сгенерирует Мониторинг и вернет его
    "contour": "Мaster", // укажите контур приложения. Например: Master, RC, RC1, dev, dev1, dev_john_doe. 
    "application": "MyApp", // укажите название приложения
    "layer": "Infrastructure", // укажите название архитектурного слоя, на котором вызывается функция. Напрмиер: Backend, Frontend, Database, Integration, Infrastructure, и пр.
    "module": "test_module", // укажите название модуля, в котором находится функция
    "function": "CPU", // укажите название текущей функции
    "user": {
      "ID": 0, // уникальный идентификатор пользователя
      "login": "system", // уникальное имя пользователя
      "department": "Core", // подразделение, к которому прикреплет пользователь. Например: Бот, Система, Администрация, HR и т.п.
      "post": "system", // должность пользователя. Например: Генеральный директор, Зам.ГД по общим вопросам, Советник, Секретарь и т.п.
      "role": "monitor", // роль пользователя в системе. Например: admin, ceo, cto, cpo, manager, и т.п.
      "ip": "192.168.88.1" // текущий IP-адрес пользователя
    },
    "URL": "https://example.com/?index=12432423423_324234.123", // ссылка будет автоматически укорочена и показана в чате и задачах. Оригинальная сохраняется в БД и используется только в служебных целях
    "queryParams": "[QUERY_PARAMS]", // параметры запроса POST, GET, PUT. Строка!
    "event": "Warning! [и что-то там из результата инцидента ]",
    "traceback": "Полная детализация по инциденту snils : 720 660 490 74, паспорт 12 21 123456, mail: it@it.ru, "
  }
}

1.1 Прикладной пример транзакции

Давайте рассмотрим, один из прикладных примеров транзакции:

Допустим, у нас есть web-страница, на которой находится кнопка "Нажми меня". По клику, она запрашивает текущее состояние сервера LC.Мониторинг

## CheckServerStats
curl -X "POST" "https://statspy.lineclub.ru/check/server" \
     -H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
     -F "SERVER_KEY=[SERVER_KEY]"

Код страницы будет выглядеть примерно так

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Button Click Example</title>
</head>
<body>

<button onclick="checkServerStats()">Нажми меня</button>

<script>
function checkServerStats() {
    // BOF LC.Monitoring
    // Здесь вызываем LC.Мониторинг с TYPE_ID=start
    // EOF LC.Monitoring

    var xhr = new XMLHttpRequest();

    // Замените URL на ваш реальный эндпоинт сервера
    var url = "https://statspy.lineclub.ru/check/server";

    // Замените SERVER_KEY на ваш реальный ключ сервера
    var serverKey = "[SERVER_KEY]";

    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-Type", "multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__");

    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            var response = JSON.parse(xhr.responseText);

            // BOF LC.Monitoring
            // Здесь вызываем LC.Мониторинг с TYPE_ID=finish
            // EOF LC.Monitoring

            alert("Результат запроса:\n" + JSON.stringify(response, null, 2));
        } else if (xhr.readyState === 4) {

            // BOF LC.Monitoring
            // Здесь вызываем LC.Мониторинг с TYPE_ID={иное состояние}], где {иное состояние} - одно из значений TYPE_ID, кроме start и finish
            // EOF LC.Monitoring

            alert("Ошибка запроса. Статус: " + xhr.status);
        }
    };

    // Сформируйте тело запроса с использованием FormData
    var formData = new FormData();
    formData.append("SERVER_KEY", serverKey);

    xhr.send(formData);
}
</script>

</body>
</html>