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