Skip to main content

nominal_api_conjure/conjure/objects/scout/run/api/
create_run_request.rs

1#[derive(
2    Debug,
3    Clone,
4    conjure_object::serde::Serialize,
5    conjure_object::serde::Deserialize,
6    conjure_object::private::DeriveWith
7)]
8#[serde(crate = "conjure_object::serde")]
9#[derive_with(PartialEq, Eq, PartialOrd, Ord, Hash)]
10#[conjure_object::private::staged_builder::staged_builder]
11#[builder(crate = conjure_object::private::staged_builder, update, inline)]
12pub struct CreateRunRequest {
13    #[builder(into)]
14    #[serde(rename = "title")]
15    title: String,
16    #[builder(into)]
17    #[serde(rename = "description")]
18    description: String,
19    #[builder(custom(type = super::UtcTimestamp, convert = Box::new))]
20    #[serde(rename = "startTime")]
21    start_time: Box<super::UtcTimestamp>,
22    #[builder(
23        default,
24        custom(
25            type = impl
26            Into<Option<super::UtcTimestamp>>,
27            convert = |v|v.into().map(Box::new)
28        )
29    )]
30    #[serde(rename = "endTime", skip_serializing_if = "Option::is_none", default)]
31    end_time: Option<Box<super::UtcTimestamp>>,
32    #[builder(
33        default,
34        map(
35            key(type = super::super::super::super::api::PropertyName),
36            value(type = super::super::super::super::api::PropertyValue)
37        )
38    )]
39    #[serde(
40        rename = "properties",
41        skip_serializing_if = "std::collections::BTreeMap::is_empty",
42        default
43    )]
44    properties: std::collections::BTreeMap<
45        super::super::super::super::api::PropertyName,
46        super::super::super::super::api::PropertyValue,
47    >,
48    #[builder(
49        default,
50        map(
51            key(type = super::super::super::super::api::PropertyName),
52            value(type = super::super::super::super::api::TypedPropertyValue)
53        )
54    )]
55    #[serde(
56        rename = "typedProperties",
57        skip_serializing_if = "std::collections::BTreeMap::is_empty",
58        default
59    )]
60    typed_properties: std::collections::BTreeMap<
61        super::super::super::super::api::PropertyName,
62        super::super::super::super::api::TypedPropertyValue,
63    >,
64    #[builder(default, set(item(type = super::super::super::super::api::Label)))]
65    #[serde(
66        rename = "labels",
67        skip_serializing_if = "std::collections::BTreeSet::is_empty",
68        default
69    )]
70    labels: std::collections::BTreeSet<super::super::super::super::api::Label>,
71    #[builder(default, list(item(type = super::Link)))]
72    #[serde(rename = "links", skip_serializing_if = "Vec::is_empty", default)]
73    links: Vec<super::Link>,
74    #[builder(default, into)]
75    #[serde(rename = "runPrefix", skip_serializing_if = "Option::is_none", default)]
76    run_prefix: Option<String>,
77    #[builder(
78        default,
79        map(
80            key(type = super::super::super::api::DataSourceRefName),
81            value(type = super::CreateRunDataSource)
82        )
83    )]
84    #[serde(
85        rename = "dataSources",
86        skip_serializing_if = "std::collections::BTreeMap::is_empty",
87        default
88    )]
89    data_sources: std::collections::BTreeMap<
90        super::super::super::api::DataSourceRefName,
91        super::CreateRunDataSource,
92    >,
93    #[builder(
94        default,
95        set(item(type = super::super::super::super::api::rids::AttachmentRid))
96    )]
97    #[serde(
98        rename = "attachments",
99        skip_serializing_if = "std::collections::BTreeSet::is_empty",
100        default
101    )]
102    attachments: std::collections::BTreeSet<
103        super::super::super::super::api::rids::AttachmentRid,
104    >,
105    #[builder(default, into)]
106    #[serde(rename = "asset", skip_serializing_if = "Option::is_none", default)]
107    asset: Option<super::super::super::rids::api::AssetRid>,
108    #[builder(default, list(item(type = super::super::super::rids::api::AssetRid)))]
109    #[serde(rename = "assets", skip_serializing_if = "Vec::is_empty", default)]
110    assets: Vec<super::super::super::rids::api::AssetRid>,
111    #[builder(default, into)]
112    #[serde(rename = "workspace", skip_serializing_if = "Option::is_none", default)]
113    workspace: Option<super::super::super::super::api::rids::WorkspaceRid>,
114}
115impl CreateRunRequest {
116    /// Constructs a new instance of the type.
117    #[inline]
118    pub fn new(
119        title: impl Into<String>,
120        description: impl Into<String>,
121        start_time: super::UtcTimestamp,
122    ) -> Self {
123        Self::builder()
124            .title(title)
125            .description(description)
126            .start_time(start_time)
127            .build()
128    }
129    #[inline]
130    pub fn title(&self) -> &str {
131        &*self.title
132    }
133    #[inline]
134    pub fn description(&self) -> &str {
135        &*self.description
136    }
137    #[inline]
138    pub fn start_time(&self) -> &super::UtcTimestamp {
139        &*self.start_time
140    }
141    #[inline]
142    pub fn end_time(&self) -> Option<&super::UtcTimestamp> {
143        self.end_time.as_ref().map(|o| &**o)
144    }
145    #[deprecated(note = "use typedProperties")]
146    #[inline]
147    pub fn properties(
148        &self,
149    ) -> &std::collections::BTreeMap<
150        super::super::super::super::api::PropertyName,
151        super::super::super::super::api::PropertyValue,
152    > {
153        &self.properties
154    }
155    #[inline]
156    pub fn typed_properties(
157        &self,
158    ) -> &std::collections::BTreeMap<
159        super::super::super::super::api::PropertyName,
160        super::super::super::super::api::TypedPropertyValue,
161    > {
162        &self.typed_properties
163    }
164    #[inline]
165    pub fn labels(
166        &self,
167    ) -> &std::collections::BTreeSet<super::super::super::super::api::Label> {
168        &self.labels
169    }
170    #[inline]
171    pub fn links(&self) -> &[super::Link] {
172        &*self.links
173    }
174    #[inline]
175    pub fn run_prefix(&self) -> Option<&str> {
176        self.run_prefix.as_ref().map(|o| &**o)
177    }
178    #[inline]
179    pub fn data_sources(
180        &self,
181    ) -> &std::collections::BTreeMap<
182        super::super::super::api::DataSourceRefName,
183        super::CreateRunDataSource,
184    > {
185        &self.data_sources
186    }
187    #[inline]
188    pub fn attachments(
189        &self,
190    ) -> &std::collections::BTreeSet<
191        super::super::super::super::api::rids::AttachmentRid,
192    > {
193        &self.attachments
194    }
195    #[deprecated(note = "Use assets")]
196    #[inline]
197    pub fn asset(&self) -> Option<&super::super::super::rids::api::AssetRid> {
198        self.asset.as_ref().map(|o| &*o)
199    }
200    #[inline]
201    pub fn assets(&self) -> &[super::super::super::rids::api::AssetRid] {
202        &*self.assets
203    }
204    /// The workspace in which to create the run. If not provided, the run will be created in
205    /// the default workspace for the user's organization, if the default workspace for the
206    /// organization is configured.
207    /// All data sources, attachments, and assets must be in the same workspace.
208    #[inline]
209    pub fn workspace(
210        &self,
211    ) -> Option<&super::super::super::super::api::rids::WorkspaceRid> {
212        self.workspace.as_ref().map(|o| &*o)
213    }
214}