fleetforge_contracts_telemetry/
lib.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
7pub struct TrustMetadata {
8    pub subject: String,
9    pub provenance: Value,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
13pub struct RunEventContract {
14    pub run_id: Uuid,
15    pub status: String,
16    pub created_at: DateTime<Utc>,
17    pub updated_at: DateTime<Utc>,
18    pub duration_ms: Option<u64>,
19    pub attributes: Value,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub trust: Option<TrustMetadata>,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
25pub struct StepEventContract {
26    pub run_id: Uuid,
27    pub step_id: Uuid,
28    pub status: String,
29    pub attempt: i32,
30    pub started_at: DateTime<Utc>,
31    pub finished_at: Option<DateTime<Utc>>,
32    pub latency_ms: Option<u64>,
33    pub attributes: Value,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub trust: Option<TrustMetadata>,
36}