aws_sdk_gameliftstreams/operation/create_application/
_create_application_output.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateApplicationOutput {
6    /// <p>The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> that's assigned to an application resource and uniquely identifies it across all Amazon Web Services Regions. Format is <code>arn:aws:gameliftstreams:\[AWS Region\]:\[AWS account\]:application/\[resource ID\]</code>.</p>
7    pub arn: ::std::string::String,
8    /// <p>A human-readable label for the application. You can edit this value.</p>
9    pub description: ::std::option::Option<::std::string::String>,
10    /// <p>Configuration settings that identify the operating system for an application resource. This can also include a compatibility layer and other drivers.</p>
11    /// <p>A runtime environment can be one of the following:</p>
12    /// <ul>
13    /// <li>
14    /// <p>For Linux applications</p>
15    /// <ul>
16    /// <li>
17    /// <p>Ubuntu 22.04 LTS (<code>Type=UBUNTU, Version=22_04_LTS</code>)</p></li>
18    /// </ul></li>
19    /// <li>
20    /// <p>For Windows applications</p>
21    /// <ul>
22    /// <li>
23    /// <p>Microsoft Windows Server 2022 Base (<code>Type=WINDOWS, Version=2022</code>)</p></li>
24    /// <li>
25    /// <p>Proton 8.0-5 (<code>Type=PROTON, Version=20241007</code>)</p></li>
26    /// <li>
27    /// <p>Proton 8.0-2c (<code>Type=PROTON, Version=20230704</code>)</p></li>
28    /// </ul></li>
29    /// </ul>
30    pub runtime_environment: ::std::option::Option<crate::types::RuntimeEnvironment>,
31    /// <p>The path and file name of the executable file that launches the content for streaming.</p>
32    pub executable_path: ::std::option::Option<::std::string::String>,
33    /// <p>Locations of log files that your content generates during a stream session. Amazon GameLift Streams uploads log files to the Amazon S3 bucket that you specify in <code>ApplicationLogOutputUri</code> at the end of a stream session. To retrieve stored log files, call <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html">GetStreamSession</a> and get the <code>LogFileLocationUri</code>.</p>
34    pub application_log_paths: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
35    /// <p>An Amazon S3 URI to a bucket where you would like Amazon GameLift Streams to save application logs. Required if you specify one or more <code>ApplicationLogPaths</code>.</p>
36    pub application_log_output_uri: ::std::option::Option<::std::string::String>,
37    /// <p>The original Amazon S3 location of uploaded stream content for the application.</p>
38    pub application_source_uri: ::std::option::Option<::std::string::String>,
39    /// <p>A unique ID value that is assigned to the resource when it's created. Format example: <code>a-9ZY8X7Wv6</code>.</p>
40    pub id: ::std::option::Option<::std::string::String>,
41    /// <p>The current status of the application resource. Possible statuses include the following:</p>
42    /// <ul>
43    /// <li>
44    /// <p><code>INITIALIZED</code>: Amazon GameLift Streams has received the request and is initiating the work flow to create an application.</p></li>
45    /// <li>
46    /// <p><code>PROCESSING</code>: The create application work flow is in process. Amazon GameLift Streams is copying the content and caching for future deployment in a stream group.</p></li>
47    /// <li>
48    /// <p><code>READY</code>: The application is ready to deploy in a stream group.</p></li>
49    /// <li>
50    /// <p><code>ERROR</code>: An error occurred when setting up the application. See <code>StatusReason</code> for more information.</p></li>
51    /// <li>
52    /// <p><code>DELETING</code>: Amazon GameLift Streams is in the process of deleting the application.</p></li>
53    /// </ul>
54    pub status: ::std::option::Option<crate::types::ApplicationStatus>,
55    /// <p>A short description of the status reason when the application is in <code>ERROR</code> status.</p>
56    pub status_reason: ::std::option::Option<crate::types::ApplicationStatusReason>,
57    /// <p>A set of replication statuses for each location.</p>
58    pub replication_statuses: ::std::option::Option<::std::vec::Vec<crate::types::ReplicationStatus>>,
59    /// <p>A timestamp that indicates when this resource was created. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
60    pub created_at: ::std::option::Option<::aws_smithy_types::DateTime>,
61    /// <p>A timestamp that indicates when this resource was last updated. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
62    pub last_updated_at: ::std::option::Option<::aws_smithy_types::DateTime>,
63    /// <p>A newly created application is not associated to any stream groups. This value is empty.</p>
64    pub associated_stream_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
65    _request_id: Option<String>,
66}
67impl CreateApplicationOutput {
68    /// <p>The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> that's assigned to an application resource and uniquely identifies it across all Amazon Web Services Regions. Format is <code>arn:aws:gameliftstreams:\[AWS Region\]:\[AWS account\]:application/\[resource ID\]</code>.</p>
69    pub fn arn(&self) -> &str {
70        use std::ops::Deref;
71        self.arn.deref()
72    }
73    /// <p>A human-readable label for the application. You can edit this value.</p>
74    pub fn description(&self) -> ::std::option::Option<&str> {
75        self.description.as_deref()
76    }
77    /// <p>Configuration settings that identify the operating system for an application resource. This can also include a compatibility layer and other drivers.</p>
78    /// <p>A runtime environment can be one of the following:</p>
79    /// <ul>
80    /// <li>
81    /// <p>For Linux applications</p>
82    /// <ul>
83    /// <li>
84    /// <p>Ubuntu 22.04 LTS (<code>Type=UBUNTU, Version=22_04_LTS</code>)</p></li>
85    /// </ul></li>
86    /// <li>
87    /// <p>For Windows applications</p>
88    /// <ul>
89    /// <li>
90    /// <p>Microsoft Windows Server 2022 Base (<code>Type=WINDOWS, Version=2022</code>)</p></li>
91    /// <li>
92    /// <p>Proton 8.0-5 (<code>Type=PROTON, Version=20241007</code>)</p></li>
93    /// <li>
94    /// <p>Proton 8.0-2c (<code>Type=PROTON, Version=20230704</code>)</p></li>
95    /// </ul></li>
96    /// </ul>
97    pub fn runtime_environment(&self) -> ::std::option::Option<&crate::types::RuntimeEnvironment> {
98        self.runtime_environment.as_ref()
99    }
100    /// <p>The path and file name of the executable file that launches the content for streaming.</p>
101    pub fn executable_path(&self) -> ::std::option::Option<&str> {
102        self.executable_path.as_deref()
103    }
104    /// <p>Locations of log files that your content generates during a stream session. Amazon GameLift Streams uploads log files to the Amazon S3 bucket that you specify in <code>ApplicationLogOutputUri</code> at the end of a stream session. To retrieve stored log files, call <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html">GetStreamSession</a> and get the <code>LogFileLocationUri</code>.</p>
105    ///
106    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.application_log_paths.is_none()`.
107    pub fn application_log_paths(&self) -> &[::std::string::String] {
108        self.application_log_paths.as_deref().unwrap_or_default()
109    }
110    /// <p>An Amazon S3 URI to a bucket where you would like Amazon GameLift Streams to save application logs. Required if you specify one or more <code>ApplicationLogPaths</code>.</p>
111    pub fn application_log_output_uri(&self) -> ::std::option::Option<&str> {
112        self.application_log_output_uri.as_deref()
113    }
114    /// <p>The original Amazon S3 location of uploaded stream content for the application.</p>
115    pub fn application_source_uri(&self) -> ::std::option::Option<&str> {
116        self.application_source_uri.as_deref()
117    }
118    /// <p>A unique ID value that is assigned to the resource when it's created. Format example: <code>a-9ZY8X7Wv6</code>.</p>
119    pub fn id(&self) -> ::std::option::Option<&str> {
120        self.id.as_deref()
121    }
122    /// <p>The current status of the application resource. Possible statuses include the following:</p>
123    /// <ul>
124    /// <li>
125    /// <p><code>INITIALIZED</code>: Amazon GameLift Streams has received the request and is initiating the work flow to create an application.</p></li>
126    /// <li>
127    /// <p><code>PROCESSING</code>: The create application work flow is in process. Amazon GameLift Streams is copying the content and caching for future deployment in a stream group.</p></li>
128    /// <li>
129    /// <p><code>READY</code>: The application is ready to deploy in a stream group.</p></li>
130    /// <li>
131    /// <p><code>ERROR</code>: An error occurred when setting up the application. See <code>StatusReason</code> for more information.</p></li>
132    /// <li>
133    /// <p><code>DELETING</code>: Amazon GameLift Streams is in the process of deleting the application.</p></li>
134    /// </ul>
135    pub fn status(&self) -> ::std::option::Option<&crate::types::ApplicationStatus> {
136        self.status.as_ref()
137    }
138    /// <p>A short description of the status reason when the application is in <code>ERROR</code> status.</p>
139    pub fn status_reason(&self) -> ::std::option::Option<&crate::types::ApplicationStatusReason> {
140        self.status_reason.as_ref()
141    }
142    /// <p>A set of replication statuses for each location.</p>
143    ///
144    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.replication_statuses.is_none()`.
145    pub fn replication_statuses(&self) -> &[crate::types::ReplicationStatus] {
146        self.replication_statuses.as_deref().unwrap_or_default()
147    }
148    /// <p>A timestamp that indicates when this resource was created. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
149    pub fn created_at(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
150        self.created_at.as_ref()
151    }
152    /// <p>A timestamp that indicates when this resource was last updated. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
153    pub fn last_updated_at(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
154        self.last_updated_at.as_ref()
155    }
156    /// <p>A newly created application is not associated to any stream groups. This value is empty.</p>
157    ///
158    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.associated_stream_groups.is_none()`.
159    pub fn associated_stream_groups(&self) -> &[::std::string::String] {
160        self.associated_stream_groups.as_deref().unwrap_or_default()
161    }
162}
163impl ::aws_types::request_id::RequestId for CreateApplicationOutput {
164    fn request_id(&self) -> Option<&str> {
165        self._request_id.as_deref()
166    }
167}
168impl CreateApplicationOutput {
169    /// Creates a new builder-style object to manufacture [`CreateApplicationOutput`](crate::operation::create_application::CreateApplicationOutput).
170    pub fn builder() -> crate::operation::create_application::builders::CreateApplicationOutputBuilder {
171        crate::operation::create_application::builders::CreateApplicationOutputBuilder::default()
172    }
173}
174
175/// A builder for [`CreateApplicationOutput`](crate::operation::create_application::CreateApplicationOutput).
176#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
177#[non_exhaustive]
178pub struct CreateApplicationOutputBuilder {
179    pub(crate) arn: ::std::option::Option<::std::string::String>,
180    pub(crate) description: ::std::option::Option<::std::string::String>,
181    pub(crate) runtime_environment: ::std::option::Option<crate::types::RuntimeEnvironment>,
182    pub(crate) executable_path: ::std::option::Option<::std::string::String>,
183    pub(crate) application_log_paths: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
184    pub(crate) application_log_output_uri: ::std::option::Option<::std::string::String>,
185    pub(crate) application_source_uri: ::std::option::Option<::std::string::String>,
186    pub(crate) id: ::std::option::Option<::std::string::String>,
187    pub(crate) status: ::std::option::Option<crate::types::ApplicationStatus>,
188    pub(crate) status_reason: ::std::option::Option<crate::types::ApplicationStatusReason>,
189    pub(crate) replication_statuses: ::std::option::Option<::std::vec::Vec<crate::types::ReplicationStatus>>,
190    pub(crate) created_at: ::std::option::Option<::aws_smithy_types::DateTime>,
191    pub(crate) last_updated_at: ::std::option::Option<::aws_smithy_types::DateTime>,
192    pub(crate) associated_stream_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
193    _request_id: Option<String>,
194}
195impl CreateApplicationOutputBuilder {
196    /// <p>The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> that's assigned to an application resource and uniquely identifies it across all Amazon Web Services Regions. Format is <code>arn:aws:gameliftstreams:\[AWS Region\]:\[AWS account\]:application/\[resource ID\]</code>.</p>
197    /// This field is required.
198    pub fn arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
199        self.arn = ::std::option::Option::Some(input.into());
200        self
201    }
202    /// <p>The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> that's assigned to an application resource and uniquely identifies it across all Amazon Web Services Regions. Format is <code>arn:aws:gameliftstreams:\[AWS Region\]:\[AWS account\]:application/\[resource ID\]</code>.</p>
203    pub fn set_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
204        self.arn = input;
205        self
206    }
207    /// <p>The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html">Amazon Resource Name (ARN)</a> that's assigned to an application resource and uniquely identifies it across all Amazon Web Services Regions. Format is <code>arn:aws:gameliftstreams:\[AWS Region\]:\[AWS account\]:application/\[resource ID\]</code>.</p>
208    pub fn get_arn(&self) -> &::std::option::Option<::std::string::String> {
209        &self.arn
210    }
211    /// <p>A human-readable label for the application. You can edit this value.</p>
212    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
213        self.description = ::std::option::Option::Some(input.into());
214        self
215    }
216    /// <p>A human-readable label for the application. You can edit this value.</p>
217    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
218        self.description = input;
219        self
220    }
221    /// <p>A human-readable label for the application. You can edit this value.</p>
222    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
223        &self.description
224    }
225    /// <p>Configuration settings that identify the operating system for an application resource. This can also include a compatibility layer and other drivers.</p>
226    /// <p>A runtime environment can be one of the following:</p>
227    /// <ul>
228    /// <li>
229    /// <p>For Linux applications</p>
230    /// <ul>
231    /// <li>
232    /// <p>Ubuntu 22.04 LTS (<code>Type=UBUNTU, Version=22_04_LTS</code>)</p></li>
233    /// </ul></li>
234    /// <li>
235    /// <p>For Windows applications</p>
236    /// <ul>
237    /// <li>
238    /// <p>Microsoft Windows Server 2022 Base (<code>Type=WINDOWS, Version=2022</code>)</p></li>
239    /// <li>
240    /// <p>Proton 8.0-5 (<code>Type=PROTON, Version=20241007</code>)</p></li>
241    /// <li>
242    /// <p>Proton 8.0-2c (<code>Type=PROTON, Version=20230704</code>)</p></li>
243    /// </ul></li>
244    /// </ul>
245    pub fn runtime_environment(mut self, input: crate::types::RuntimeEnvironment) -> Self {
246        self.runtime_environment = ::std::option::Option::Some(input);
247        self
248    }
249    /// <p>Configuration settings that identify the operating system for an application resource. This can also include a compatibility layer and other drivers.</p>
250    /// <p>A runtime environment can be one of the following:</p>
251    /// <ul>
252    /// <li>
253    /// <p>For Linux applications</p>
254    /// <ul>
255    /// <li>
256    /// <p>Ubuntu 22.04 LTS (<code>Type=UBUNTU, Version=22_04_LTS</code>)</p></li>
257    /// </ul></li>
258    /// <li>
259    /// <p>For Windows applications</p>
260    /// <ul>
261    /// <li>
262    /// <p>Microsoft Windows Server 2022 Base (<code>Type=WINDOWS, Version=2022</code>)</p></li>
263    /// <li>
264    /// <p>Proton 8.0-5 (<code>Type=PROTON, Version=20241007</code>)</p></li>
265    /// <li>
266    /// <p>Proton 8.0-2c (<code>Type=PROTON, Version=20230704</code>)</p></li>
267    /// </ul></li>
268    /// </ul>
269    pub fn set_runtime_environment(mut self, input: ::std::option::Option<crate::types::RuntimeEnvironment>) -> Self {
270        self.runtime_environment = input;
271        self
272    }
273    /// <p>Configuration settings that identify the operating system for an application resource. This can also include a compatibility layer and other drivers.</p>
274    /// <p>A runtime environment can be one of the following:</p>
275    /// <ul>
276    /// <li>
277    /// <p>For Linux applications</p>
278    /// <ul>
279    /// <li>
280    /// <p>Ubuntu 22.04 LTS (<code>Type=UBUNTU, Version=22_04_LTS</code>)</p></li>
281    /// </ul></li>
282    /// <li>
283    /// <p>For Windows applications</p>
284    /// <ul>
285    /// <li>
286    /// <p>Microsoft Windows Server 2022 Base (<code>Type=WINDOWS, Version=2022</code>)</p></li>
287    /// <li>
288    /// <p>Proton 8.0-5 (<code>Type=PROTON, Version=20241007</code>)</p></li>
289    /// <li>
290    /// <p>Proton 8.0-2c (<code>Type=PROTON, Version=20230704</code>)</p></li>
291    /// </ul></li>
292    /// </ul>
293    pub fn get_runtime_environment(&self) -> &::std::option::Option<crate::types::RuntimeEnvironment> {
294        &self.runtime_environment
295    }
296    /// <p>The path and file name of the executable file that launches the content for streaming.</p>
297    pub fn executable_path(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
298        self.executable_path = ::std::option::Option::Some(input.into());
299        self
300    }
301    /// <p>The path and file name of the executable file that launches the content for streaming.</p>
302    pub fn set_executable_path(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
303        self.executable_path = input;
304        self
305    }
306    /// <p>The path and file name of the executable file that launches the content for streaming.</p>
307    pub fn get_executable_path(&self) -> &::std::option::Option<::std::string::String> {
308        &self.executable_path
309    }
310    /// Appends an item to `application_log_paths`.
311    ///
312    /// To override the contents of this collection use [`set_application_log_paths`](Self::set_application_log_paths).
313    ///
314    /// <p>Locations of log files that your content generates during a stream session. Amazon GameLift Streams uploads log files to the Amazon S3 bucket that you specify in <code>ApplicationLogOutputUri</code> at the end of a stream session. To retrieve stored log files, call <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html">GetStreamSession</a> and get the <code>LogFileLocationUri</code>.</p>
315    pub fn application_log_paths(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
316        let mut v = self.application_log_paths.unwrap_or_default();
317        v.push(input.into());
318        self.application_log_paths = ::std::option::Option::Some(v);
319        self
320    }
321    /// <p>Locations of log files that your content generates during a stream session. Amazon GameLift Streams uploads log files to the Amazon S3 bucket that you specify in <code>ApplicationLogOutputUri</code> at the end of a stream session. To retrieve stored log files, call <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html">GetStreamSession</a> and get the <code>LogFileLocationUri</code>.</p>
322    pub fn set_application_log_paths(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
323        self.application_log_paths = input;
324        self
325    }
326    /// <p>Locations of log files that your content generates during a stream session. Amazon GameLift Streams uploads log files to the Amazon S3 bucket that you specify in <code>ApplicationLogOutputUri</code> at the end of a stream session. To retrieve stored log files, call <a href="https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html">GetStreamSession</a> and get the <code>LogFileLocationUri</code>.</p>
327    pub fn get_application_log_paths(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
328        &self.application_log_paths
329    }
330    /// <p>An Amazon S3 URI to a bucket where you would like Amazon GameLift Streams to save application logs. Required if you specify one or more <code>ApplicationLogPaths</code>.</p>
331    pub fn application_log_output_uri(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
332        self.application_log_output_uri = ::std::option::Option::Some(input.into());
333        self
334    }
335    /// <p>An Amazon S3 URI to a bucket where you would like Amazon GameLift Streams to save application logs. Required if you specify one or more <code>ApplicationLogPaths</code>.</p>
336    pub fn set_application_log_output_uri(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
337        self.application_log_output_uri = input;
338        self
339    }
340    /// <p>An Amazon S3 URI to a bucket where you would like Amazon GameLift Streams to save application logs. Required if you specify one or more <code>ApplicationLogPaths</code>.</p>
341    pub fn get_application_log_output_uri(&self) -> &::std::option::Option<::std::string::String> {
342        &self.application_log_output_uri
343    }
344    /// <p>The original Amazon S3 location of uploaded stream content for the application.</p>
345    pub fn application_source_uri(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
346        self.application_source_uri = ::std::option::Option::Some(input.into());
347        self
348    }
349    /// <p>The original Amazon S3 location of uploaded stream content for the application.</p>
350    pub fn set_application_source_uri(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
351        self.application_source_uri = input;
352        self
353    }
354    /// <p>The original Amazon S3 location of uploaded stream content for the application.</p>
355    pub fn get_application_source_uri(&self) -> &::std::option::Option<::std::string::String> {
356        &self.application_source_uri
357    }
358    /// <p>A unique ID value that is assigned to the resource when it's created. Format example: <code>a-9ZY8X7Wv6</code>.</p>
359    pub fn id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
360        self.id = ::std::option::Option::Some(input.into());
361        self
362    }
363    /// <p>A unique ID value that is assigned to the resource when it's created. Format example: <code>a-9ZY8X7Wv6</code>.</p>
364    pub fn set_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
365        self.id = input;
366        self
367    }
368    /// <p>A unique ID value that is assigned to the resource when it's created. Format example: <code>a-9ZY8X7Wv6</code>.</p>
369    pub fn get_id(&self) -> &::std::option::Option<::std::string::String> {
370        &self.id
371    }
372    /// <p>The current status of the application resource. Possible statuses include the following:</p>
373    /// <ul>
374    /// <li>
375    /// <p><code>INITIALIZED</code>: Amazon GameLift Streams has received the request and is initiating the work flow to create an application.</p></li>
376    /// <li>
377    /// <p><code>PROCESSING</code>: The create application work flow is in process. Amazon GameLift Streams is copying the content and caching for future deployment in a stream group.</p></li>
378    /// <li>
379    /// <p><code>READY</code>: The application is ready to deploy in a stream group.</p></li>
380    /// <li>
381    /// <p><code>ERROR</code>: An error occurred when setting up the application. See <code>StatusReason</code> for more information.</p></li>
382    /// <li>
383    /// <p><code>DELETING</code>: Amazon GameLift Streams is in the process of deleting the application.</p></li>
384    /// </ul>
385    pub fn status(mut self, input: crate::types::ApplicationStatus) -> Self {
386        self.status = ::std::option::Option::Some(input);
387        self
388    }
389    /// <p>The current status of the application resource. Possible statuses include the following:</p>
390    /// <ul>
391    /// <li>
392    /// <p><code>INITIALIZED</code>: Amazon GameLift Streams has received the request and is initiating the work flow to create an application.</p></li>
393    /// <li>
394    /// <p><code>PROCESSING</code>: The create application work flow is in process. Amazon GameLift Streams is copying the content and caching for future deployment in a stream group.</p></li>
395    /// <li>
396    /// <p><code>READY</code>: The application is ready to deploy in a stream group.</p></li>
397    /// <li>
398    /// <p><code>ERROR</code>: An error occurred when setting up the application. See <code>StatusReason</code> for more information.</p></li>
399    /// <li>
400    /// <p><code>DELETING</code>: Amazon GameLift Streams is in the process of deleting the application.</p></li>
401    /// </ul>
402    pub fn set_status(mut self, input: ::std::option::Option<crate::types::ApplicationStatus>) -> Self {
403        self.status = input;
404        self
405    }
406    /// <p>The current status of the application resource. Possible statuses include the following:</p>
407    /// <ul>
408    /// <li>
409    /// <p><code>INITIALIZED</code>: Amazon GameLift Streams has received the request and is initiating the work flow to create an application.</p></li>
410    /// <li>
411    /// <p><code>PROCESSING</code>: The create application work flow is in process. Amazon GameLift Streams is copying the content and caching for future deployment in a stream group.</p></li>
412    /// <li>
413    /// <p><code>READY</code>: The application is ready to deploy in a stream group.</p></li>
414    /// <li>
415    /// <p><code>ERROR</code>: An error occurred when setting up the application. See <code>StatusReason</code> for more information.</p></li>
416    /// <li>
417    /// <p><code>DELETING</code>: Amazon GameLift Streams is in the process of deleting the application.</p></li>
418    /// </ul>
419    pub fn get_status(&self) -> &::std::option::Option<crate::types::ApplicationStatus> {
420        &self.status
421    }
422    /// <p>A short description of the status reason when the application is in <code>ERROR</code> status.</p>
423    pub fn status_reason(mut self, input: crate::types::ApplicationStatusReason) -> Self {
424        self.status_reason = ::std::option::Option::Some(input);
425        self
426    }
427    /// <p>A short description of the status reason when the application is in <code>ERROR</code> status.</p>
428    pub fn set_status_reason(mut self, input: ::std::option::Option<crate::types::ApplicationStatusReason>) -> Self {
429        self.status_reason = input;
430        self
431    }
432    /// <p>A short description of the status reason when the application is in <code>ERROR</code> status.</p>
433    pub fn get_status_reason(&self) -> &::std::option::Option<crate::types::ApplicationStatusReason> {
434        &self.status_reason
435    }
436    /// Appends an item to `replication_statuses`.
437    ///
438    /// To override the contents of this collection use [`set_replication_statuses`](Self::set_replication_statuses).
439    ///
440    /// <p>A set of replication statuses for each location.</p>
441    pub fn replication_statuses(mut self, input: crate::types::ReplicationStatus) -> Self {
442        let mut v = self.replication_statuses.unwrap_or_default();
443        v.push(input);
444        self.replication_statuses = ::std::option::Option::Some(v);
445        self
446    }
447    /// <p>A set of replication statuses for each location.</p>
448    pub fn set_replication_statuses(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ReplicationStatus>>) -> Self {
449        self.replication_statuses = input;
450        self
451    }
452    /// <p>A set of replication statuses for each location.</p>
453    pub fn get_replication_statuses(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ReplicationStatus>> {
454        &self.replication_statuses
455    }
456    /// <p>A timestamp that indicates when this resource was created. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
457    pub fn created_at(mut self, input: ::aws_smithy_types::DateTime) -> Self {
458        self.created_at = ::std::option::Option::Some(input);
459        self
460    }
461    /// <p>A timestamp that indicates when this resource was created. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
462    pub fn set_created_at(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
463        self.created_at = input;
464        self
465    }
466    /// <p>A timestamp that indicates when this resource was created. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
467    pub fn get_created_at(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
468        &self.created_at
469    }
470    /// <p>A timestamp that indicates when this resource was last updated. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
471    pub fn last_updated_at(mut self, input: ::aws_smithy_types::DateTime) -> Self {
472        self.last_updated_at = ::std::option::Option::Some(input);
473        self
474    }
475    /// <p>A timestamp that indicates when this resource was last updated. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
476    pub fn set_last_updated_at(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
477        self.last_updated_at = input;
478        self
479    }
480    /// <p>A timestamp that indicates when this resource was last updated. Timestamps are expressed using in ISO8601 format, such as: <code>2022-12-27T22:29:40+00:00</code> (UTC).</p>
481    pub fn get_last_updated_at(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
482        &self.last_updated_at
483    }
484    /// Appends an item to `associated_stream_groups`.
485    ///
486    /// To override the contents of this collection use [`set_associated_stream_groups`](Self::set_associated_stream_groups).
487    ///
488    /// <p>A newly created application is not associated to any stream groups. This value is empty.</p>
489    pub fn associated_stream_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
490        let mut v = self.associated_stream_groups.unwrap_or_default();
491        v.push(input.into());
492        self.associated_stream_groups = ::std::option::Option::Some(v);
493        self
494    }
495    /// <p>A newly created application is not associated to any stream groups. This value is empty.</p>
496    pub fn set_associated_stream_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
497        self.associated_stream_groups = input;
498        self
499    }
500    /// <p>A newly created application is not associated to any stream groups. This value is empty.</p>
501    pub fn get_associated_stream_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
502        &self.associated_stream_groups
503    }
504    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
505        self._request_id = Some(request_id.into());
506        self
507    }
508
509    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
510        self._request_id = request_id;
511        self
512    }
513    /// Consumes the builder and constructs a [`CreateApplicationOutput`](crate::operation::create_application::CreateApplicationOutput).
514    /// This method will fail if any of the following fields are not set:
515    /// - [`arn`](crate::operation::create_application::builders::CreateApplicationOutputBuilder::arn)
516    pub fn build(
517        self,
518    ) -> ::std::result::Result<crate::operation::create_application::CreateApplicationOutput, ::aws_smithy_types::error::operation::BuildError> {
519        ::std::result::Result::Ok(crate::operation::create_application::CreateApplicationOutput {
520            arn: self.arn.ok_or_else(|| {
521                ::aws_smithy_types::error::operation::BuildError::missing_field(
522                    "arn",
523                    "arn was not specified but it is required when building CreateApplicationOutput",
524                )
525            })?,
526            description: self.description,
527            runtime_environment: self.runtime_environment,
528            executable_path: self.executable_path,
529            application_log_paths: self.application_log_paths,
530            application_log_output_uri: self.application_log_output_uri,
531            application_source_uri: self.application_source_uri,
532            id: self.id,
533            status: self.status,
534            status_reason: self.status_reason,
535            replication_statuses: self.replication_statuses,
536            created_at: self.created_at,
537            last_updated_at: self.last_updated_at,
538            associated_stream_groups: self.associated_stream_groups,
539            _request_id: self._request_id,
540        })
541    }
542}