1use builder_pattern::Builder;
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
6pub struct CreateExperiment {
7 pub name: String,
8 pub tags: Vec<KeyValue>,
9}
10
11#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
12pub struct Experiment {
13 pub experiment_id: String,
14 pub name: String,
15 pub artifact_location: String,
16 pub lifecycle_stage: LifecycleStage,
17 pub last_update_time: u64,
18 pub creation_time: u64,
19 #[serde(default)]
20 pub tags: Vec<KeyValue>,
21}
22
23#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
24#[serde(rename_all = "snake_case")]
25pub enum LifecycleStage {
26 Active,
27 Deleted,
28}
29
30#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
31pub struct ExperimentId {
32 pub experiment_id: String,
33}
34
35#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Builder)]
36pub struct KeyValue {
37 #[into]
38 pub key: String,
39 #[into]
40 pub value: String,
41}