Система Монитор предоставляет rest api для интеграции с системами клиентов.
Доступ к swagger: https://monitor-api.web.monitorsystem.ru/swagger. (Что такое Swagger?)
Получить ключ доступа, обратившись в отдел поддержки
Управление списками сопоставлений
Получение списка объектов
Получение сводного отчета по объектам
Примеры использования представлены на языке C#, но работать с апи можно на любом языке.
Для удобства работы с апи рекомендуем пользоваться генератором кода (NSwag, расширения для VS (REST API Client Code Generator for VS 2022 - Visual Studio Marketplace) , VS code или любом другое)
Подготовка
1. Создаем пустой проект.
2. Генерируем классы АПИ с помощью генератора.
using MonitorApiTest;
var http = new HttpClient();
// настраиваем клиент - указываем адрес
http.BaseAddress = new Uri("https://monitor-api.web.monitorsystem.ru");
// настраиваем клиент - добавляем ключ апи
http.DefaultRequestHeaders.Add("X-API-KEY", "demokey");
// для генерации клиента используем тулинг
//
// Generated REST API Client Code Generator v1.15.0.0
// Using the tool NSwag v14.1.0
//
var client = new MonitorSystemApiClient(http);
// получаем список объектов
var objects = await client.GetObjectsAsync(null, null, null, null, null);
Console.WriteLine("Список объектов:");
foreach (var obj in objects.Items)
{
Console.WriteLine($"{obj.Id}, {obj.Model}, {obj.Number}");
}
Для получения любого отчета в системе необходимо пройти три этапа
using MonitorApiTest;
var http = new HttpClient();
// настраиваем клиент - указываем адрес
http.BaseAddress = new Uri("https://monitor-api.web.monitorsystem.ru");
// настраиваем клиент - добавляем ключ апи
http.DefaultRequestHeaders.Add("X-API-KEY", "demokey");
// для генерации клиента используем тулинг
//
// Generated REST API Client Code Generator v1.15.0.0
// Using the tool NSwag v14.1.0
//
var client = new MonitorSystemApiClient(http);
// получаем список объектов
var objects = await client.GetObjectsAsync(null, null, null, null, null);
Console.WriteLine("Список объектов:");
foreach (var obj in objects.Items)
{
Console.WriteLine($"{obj.Id}, {obj.Model}, {obj.Number}");
}
// получаем список возможных колонок сводного отчета. это нужно взять один раз чтобы понять что мы можем получать
var allAvailableParams = await client.GetAvailableSummaryParametersAsync();
Console.WriteLine($"Формируем отчет по пробегу за вчерашний день {DateTime.Today.AddDays(-1)}-{DateTime.Today}");
var ticket = await client.BuildSummaryReportAsync(new BuildSummaryReportRequest()
{
Start = new DateTimeOffset(DateTime.Today.AddDays(-1), TimeSpan.FromHours(7)), // указываем начало периода - вчера 00:00 часовой пояс +7 UTC
End = new DateTimeOffset(DateTime.Today, TimeSpan.FromHours(7)), // указываем конец периода - сегодня 00:00 часовой пояс +7 UTC
Parameters = new List<string>() { "Movement.Mileage", "Movement.MaxSpeed", "Movement.TotalPark" }, // указываем колонки сводного отчета для формирования
Objects = new List<string>(objects.Items.Select(f => f.Id)) // указываем список объектов
});
// пока статус тикета - не завершен обновляем тикет раз в секунду
while (ticket.Status != ReportTicketStatus.Completed && ticket.Status != ReportTicketStatus.Failed)
{
await Task.Delay(1000);
ticket = await client.UpdateReportTicketAsync(ticket.Id);
}
if (ticket.Status == ReportTicketStatus.Completed)
{
// если отчет сформирован успешно - берем результат
var report = await client.GetReportAsync(ticket.Id);
// выбираем все уникальные колонки
var columns = report.Objects.SelectMany(f => f.Reports).SelectMany(f => f.Report)
.Select(f => new { Id = f.Id, Name = f.Name }).Distinct().ToList();
// рисуем шапку
Console.WriteLine("Объект".PadRight(40) + string.Join("", columns.Select(f => f.Name + " ")));
foreach (var obj in report.Objects)
{
// пишем строку отчета
// объект
Console.Write($"{obj.Model} {obj.Number}".PadRight(40, ' '));
// столбцы
foreach (var col in columns)
{
var value = obj.Reports.First().Report.FirstOrDefault(f => f.Id == col.Id)?.Value ?? "";
Console.Write(value.ToString().PadRight(col.Name.Length + 4));
}
Console.WriteLine();
}
}
Console.ReadLine();
Результат:
Список объектов:
dd156edf-6ecf-4992-b07b-fe3c2fe6d537, Mitsubishi L200, а 123 аа 24
aa2d2e68-f169-4ff3-b9ce-0f414c1e9270, Sitrak, е 232 кк 24
d4c2c010-1818-4f09-89a5-fecba67502de, КАМАЗ, р 236 кк 24
c9b0ef55-ccd9-45e0-977b-c255f1c1685f, Nissan NV200, в 321 ко 99
Формируем отчет по пробегу за вчерашний день 30.10.2024 0:00:00-31.10.2024 0:00:00
Объект Пробег Макс. скорость Общая стоянка
Mitsubishi L200 а 123 аа 24 295,44 63 17:04:27
Sitrak е 232 кк 24 629,47 109 15:50:06
КАМАЗ р 236 кк 24 49,03 37 20:57:54
Nissan NV200 в 321 ко 99 57 102 22:17:24