1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct Process {
8 pub kind: serde_json::Value,
9 pub schema_version: String,
10 pub metadata: serde_json::Value,
11 pub contract: Option<serde_json::Value>,
12 pub tests: Option<Vec<serde_json::Value>>,
13 pub body: serde_json::Value,
14 pub on_failure: Option<serde_json::Value>,
15 pub on_success: Option<Vec<serde_json::Value>>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct Action {
20 pub name: Option<String>,
21 pub uses: serde_json::Value,
22 pub with: Option<serde_json::Value>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct Reliability {
27 pub retries: Option<i64>,
28 pub backoff_strategy: Option<serde_json::Value>,
29 pub base_delay_ms: Option<i64>,
30 pub max_delay_ms: Option<i64>,
31 pub dead_letter_queue: Option<bool>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct Transition {
36 pub target: String,
37 pub guard: Option<String>,
38 pub actions: Option<Vec<serde_json::Value>>,
39 pub inputs: Option<serde_json::Value>,
40 pub environment: Option<serde_json::Value>,
41 pub reliability: Option<Reliability>,
42 pub schema: Option<String>,
43 pub schema_ref: Option<String>,
44 pub produces_event: Option<String>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct State {
49 pub states: Option<serde_json::Value>,
50 pub initial: Option<String>,
51 #[serde(rename = "type")]
52 pub r#type: Option<serde_json::Value>,
53 pub on: Option<serde_json::Value>,
54 pub after: Option<serde_json::Value>,
55 pub invoke: Option<serde_json::Value>,
56 pub on_entry: Option<Vec<serde_json::Value>>,
57 pub on_exit: Option<Vec<serde_json::Value>>,
58 pub on_failure: Option<serde_json::Value>,
59}