Создать отчёт по истории аварий

Возвращает историю аварий в таблице Excel.

Запрос

HTTP Запрос

GET /node/api/reports/incident-history/excel

Права

objectPermissions

Параметры пути

Параметр Тип Описание

fields

Array<String>

Поля, которые нужно включить в отчёт. Подробная информация о модели доступна в статье Авария.

filter

Фильтры аварии

Фильтр аварий. Подробная информация о модели доступна в статье Список доступных фильтров.

Тело запроса

Тело запроса пустое.

Ответ

Возвращает таблицу Excel с историей аварий. Вы можете указать фильтр аварий в параметрах запроса.

Пример

Этот пример скачивает таблицу Excel со историей аварии, которые происходили во временном промежутке, указанном в параметре filter.

Фильтр:

[
    "timestamp",{
        "from": 1660472869475,
        "to": 1660904869477
    }
]
Если в отчёте слишком много записей, то этот запрос может вернуть таблицу, в которой будет записана строка "504 Gateway Timeout", вместо ожидаемого отчёта. В этом случае нужно ограничить вывод фильтрами.

Запрос

Так как этот запрос возвращает файл XLSX, ответ нужно выводить сразу в файл, чтобы файл не был повреждён.
  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
url=http://$saymon_hostname/node/api/reports/incident-history/excel?filter=%5B%22timestamp%22%2C%7B%22from%22%3A1660472869475%2C%22to%22%3A1660904869477%7D%5D

curl -X GET $url -u $login:$password -o report.xlsx
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/reports/incident-history/excel?filter=%5B%22timestamp%22%2C%7B%22from%22%3A1660472869475%2C%22to%22%3A1660904869477%7D%5D";
let auth = "Basic " + btoa(login + ":" + password);

let headers = new Headers();
headers.append("Authorization", auth);

let requestOptions = {
    method: "GET",
    headers: headers
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.blob())
    .then(blob => {
    var file = window.URL.createObjectURL(blob);
    window.location.assign(file);
  })
    .catch(error => console.log("error", error));
const http = require("http");
const fs = require("fs");

let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/reports/incident-history/excel?filter=%5B%22timestamp%22%2C%7B%22from%22%3A1660472869475%2C%22to%22%3A1660904869477%7D%5D";
let auth = "Basic " + Buffer.from(login + ":" + password).toString("base64");

let options = {
    "method": "GET",
    "hostname": saymonHostname,
    "headers": {
        "Authorization": auth
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

....
res.on("data", function (chunk) {
    chunks.push(chunk);
});

res.on("end", function (chunk) {
    let body = Buffer.concat(chunks);
....

fs.writeFile('report.xlsx', body.toString(), function (err) {
    if (err) return console.log(err);
    console.log('Saved report.xlsx');
  });
    });

 res.on("error", function (error) {
     console.error(error);
 }); });

req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/reports/incident-history/excel?filter=%5B%22timestamp%22%2C%7B%22from%22%3A1660472869475%2C%22to%22%3A1660904869477%7D%5D"

response = requests.request("GET", url, auth=(login, password))
f = open("report.xlsx", "w")
f.write(response.text)
f.close()

Ответ

Ответ содержит таблицу Excel с историей аварий:

Registered Time Occurred Time Object/Link Severity Text Acknowledged By Comment

19.07.2022, 19:57:02

19.07.2022, 19:57:02

object1

Major

Нет Данных

user.name

14.07.2022, 12:19:29

14.07.2022, 12:19:29

link1

text

19.07.2022, 19:56:33

19.07.2022, 19:56:33

object2

Warning

Incident Text

user

Incident comment