burn_central_client/fleet/
request.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SyncDeviceRequest {
7 #[serde(skip_serializing_if = "Option::is_none")]
9 pub metadata: Option<serde_json::Value>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct DownloadModelRequest {}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(tag = "kind")]
19#[serde(rename_all = "lowercase")]
20pub enum MetricData {
21 Gauge {
22 value: f64,
23 },
24 Counter {
25 value: u64,
26 },
27 Histogram {
28 count: u64,
29 sum: f64,
30 buckets: Vec<(f64, u64)>,
31 },
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct MetricIngestionEvent {
37 pub name: String,
38 pub timestamp_ms: i64,
39 #[serde(default)]
40 pub attributes: HashMap<String, String>,
41 #[serde(flatten)]
42 pub data: MetricData,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47#[serde(rename_all = "lowercase")]
48pub enum MetricKind {
49 Gauge,
50 Counter,
51 Histogram,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct MetricDescriptorIngestionEvent {
57 pub name: String,
58 pub kind: MetricKind,
59 pub unit: Option<String>,
60 pub description: Option<String>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct LogIngestionEvent {
66 pub timestamp_ms: i64,
67 pub level: String,
68 pub message: String,
69 #[serde(default)]
70 pub attributes: HashMap<String, String>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, Default)]
75pub struct TelemetryIngestionEvents {
76 #[serde(default)]
77 pub metrics: Vec<MetricIngestionEvent>,
78 #[serde(default)]
79 pub metric_descriptors: Vec<MetricDescriptorIngestionEvent>,
80 #[serde(default)]
81 pub logs: Vec<LogIngestionEvent>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct IngestTelemetryRequest {
87 pub events: TelemetryIngestionEvents,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct ExchangeFleetDeviceTokenRequest {
94 pub registration_token: String,
95 pub identity_key: String,
96 pub metadata: Option<serde_json::Value>,
97}