rusoto_gamelift/
generated.rs

1// =================================================================
2//
3//                           * WARNING *
4//
5//                    This file is generated!
6//
7//  Changes made to this file will be overwritten. If changes are
8//  required to the generated code, the service_crategen project
9//  must be updated to generate the changes.
10//
11// =================================================================
12
13use std::error::Error;
14use std::fmt;
15
16use async_trait::async_trait;
17use rusoto_core::credential::ProvideAwsCredentials;
18use rusoto_core::region;
19use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
20use rusoto_core::{Client, RusotoError};
21
22use rusoto_core::proto;
23use rusoto_core::request::HttpResponse;
24use rusoto_core::signature::SignedRequest;
25#[allow(unused_imports)]
26use serde::{Deserialize, Serialize};
27
28impl GameLiftClient {
29    fn new_signed_request(&self, http_method: &str, request_uri: &str) -> SignedRequest {
30        let mut request = SignedRequest::new(http_method, "gamelift", &self.region, request_uri);
31
32        request.set_content_type("application/x-amz-json-1.1".to_owned());
33
34        request
35    }
36
37    async fn sign_and_dispatch<E>(
38        &self,
39        request: SignedRequest,
40        from_response: fn(BufferedHttpResponse) -> RusotoError<E>,
41    ) -> Result<HttpResponse, RusotoError<E>> {
42        let mut response = self.client.sign_and_dispatch(request).await?;
43        if !response.status.is_success() {
44            let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
45            return Err(from_response(response));
46        }
47
48        Ok(response)
49    }
50}
51
52use serde_json;
53/// <p>Represents the input for a request action.</p>
54#[derive(Clone, Debug, Default, PartialEq, Serialize)]
55#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
56pub struct AcceptMatchInput {
57    /// <p>Player response to the proposed match.</p>
58    #[serde(rename = "AcceptanceType")]
59    pub acceptance_type: String,
60    /// <p>A unique identifier for a player delivering the response. This parameter can include one or multiple player IDs.</p>
61    #[serde(rename = "PlayerIds")]
62    pub player_ids: Vec<String>,
63    /// <p>A unique identifier for a matchmaking ticket. The ticket must be in status <code>REQUIRES_ACCEPTANCE</code>; otherwise this request will fail.</p>
64    #[serde(rename = "TicketId")]
65    pub ticket_id: String,
66}
67
68#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
69#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
70pub struct AcceptMatchOutput {}
71
72/// <p><p>Properties that describe an alias resource.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
73#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
74#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
75pub struct Alias {
76    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift alias resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift alias ARN, the resource ID matches the alias ID value.</p>
77    #[serde(rename = "AliasArn")]
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub alias_arn: Option<String>,
80    /// <p>A unique identifier for an alias. Alias IDs are unique within a Region.</p>
81    #[serde(rename = "AliasId")]
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub alias_id: Option<String>,
84    /// <p>A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
85    #[serde(rename = "CreationTime")]
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub creation_time: Option<f64>,
88    /// <p>A human-readable description of an alias.</p>
89    #[serde(rename = "Description")]
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub description: Option<String>,
92    /// <p>The time that this data object was last modified. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
93    #[serde(rename = "LastUpdatedTime")]
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub last_updated_time: Option<f64>,
96    /// <p>A descriptive label that is associated with an alias. Alias names do not need to be unique.</p>
97    #[serde(rename = "Name")]
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub name: Option<String>,
100    /// <p>The routing configuration, including routing type and fleet target, for the alias. </p>
101    #[serde(rename = "RoutingStrategy")]
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub routing_strategy: Option<RoutingStrategy>,
104}
105
106/// <p>Values for use in <a>Player</a> attribute key-value pairs. This object lets you specify an attribute value using any of the valid data types: string, number, string array, or data map. Each <code>AttributeValue</code> object can use only one of the available properties.</p>
107#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
108pub struct AttributeValue {
109    /// <p>For number values, expressed as double.</p>
110    #[serde(rename = "N")]
111    #[serde(skip_serializing_if = "Option::is_none")]
112    pub n: Option<f64>,
113    /// <p>For single string values. Maximum string length is 100 characters.</p>
114    #[serde(rename = "S")]
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub s: Option<String>,
117    /// <p>For a map of up to 10 data type:value pairs. Maximum length for each string value is 100 characters. </p>
118    #[serde(rename = "SDM")]
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub sdm: Option<::std::collections::HashMap<String, f64>>,
121    /// <p>For a list of up to 10 strings. Maximum length for each string is 100 characters. Duplicate values are not recognized; all occurrences of the repeated value after the first of a repeated value are ignored.</p>
122    #[serde(rename = "SL")]
123    #[serde(skip_serializing_if = "Option::is_none")]
124    pub sl: Option<Vec<String>>,
125}
126
127/// <p>Temporary access credentials used for uploading game build files to Amazon GameLift. They are valid for a limited time. If they expire before you upload your game build, get a new set by calling <a>RequestUploadCredentials</a>.</p>
128#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
129#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
130pub struct AwsCredentials {
131    /// <p>Temporary key allowing access to the Amazon GameLift S3 account.</p>
132    #[serde(rename = "AccessKeyId")]
133    #[serde(skip_serializing_if = "Option::is_none")]
134    pub access_key_id: Option<String>,
135    /// <p>Temporary secret key allowing access to the Amazon GameLift S3 account.</p>
136    #[serde(rename = "SecretAccessKey")]
137    #[serde(skip_serializing_if = "Option::is_none")]
138    pub secret_access_key: Option<String>,
139    /// <p>Token used to associate a specific build ID with the files uploaded using these credentials.</p>
140    #[serde(rename = "SessionToken")]
141    #[serde(skip_serializing_if = "Option::is_none")]
142    pub session_token: Option<String>,
143}
144
145/// <p><p>Properties describing a custom game build.</p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
146#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
147#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
148pub struct Build {
149    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift build resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift build ARN, the resource ID matches the <i>BuildId</i> value.</p>
150    #[serde(rename = "BuildArn")]
151    #[serde(skip_serializing_if = "Option::is_none")]
152    pub build_arn: Option<String>,
153    /// <p>A unique identifier for a build.</p>
154    #[serde(rename = "BuildId")]
155    #[serde(skip_serializing_if = "Option::is_none")]
156    pub build_id: Option<String>,
157    /// <p>Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
158    #[serde(rename = "CreationTime")]
159    #[serde(skip_serializing_if = "Option::is_none")]
160    pub creation_time: Option<f64>,
161    /// <p>A descriptive label that is associated with a build. Build names do not need to be unique. It can be set using <a>CreateBuild</a> or <a>UpdateBuild</a>.</p>
162    #[serde(rename = "Name")]
163    #[serde(skip_serializing_if = "Option::is_none")]
164    pub name: Option<String>,
165    /// <p>Operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build.</p>
166    #[serde(rename = "OperatingSystem")]
167    #[serde(skip_serializing_if = "Option::is_none")]
168    pub operating_system: Option<String>,
169    /// <p>File size of the uploaded game build, expressed in bytes. When the build status is <code>INITIALIZED</code>, this value is 0.</p>
170    #[serde(rename = "SizeOnDisk")]
171    #[serde(skip_serializing_if = "Option::is_none")]
172    pub size_on_disk: Option<i64>,
173    /// <p><p>Current status of the build.</p> <p>Possible build statuses include the following:</p> <ul> <li> <p> <b>INITIALIZED</b> -- A new build has been defined, but no files have been uploaded. You cannot create fleets for builds that are in this status. When a build is successfully created, the build status is set to this value. </p> </li> <li> <p> <b>READY</b> -- The game build has been successfully uploaded. You can now create new fleets for this build.</p> </li> <li> <p> <b>FAILED</b> -- The game build upload failed. You cannot create new fleets for this build. </p> </li> </ul></p>
174    #[serde(rename = "Status")]
175    #[serde(skip_serializing_if = "Option::is_none")]
176    pub status: Option<String>,
177    /// <p>Version information that is associated with a build or script. Version strings do not need to be unique. This value can be set using <a>CreateBuild</a> or <a>UpdateBuild</a>.</p>
178    #[serde(rename = "Version")]
179    #[serde(skip_serializing_if = "Option::is_none")]
180    pub version: Option<String>,
181}
182
183/// <p>Information about the use of a TLS/SSL certificate for a fleet. TLS certificate generation is enabled at the fleet level, with one certificate generated for the fleet. When this feature is enabled, the certificate can be retrieved using the <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-serversdk.html">GameLift Server SDK</a> call <code>GetInstanceCertificate</code>. All instances in a fleet share the same certificate.</p>
184#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
185pub struct CertificateConfiguration {
186    /// <p>Indicates whether a TLS/SSL certificate was generated for a fleet. </p> <p> </p> <p> </p>
187    #[serde(rename = "CertificateType")]
188    pub certificate_type: String,
189}
190
191#[derive(Clone, Debug, Default, PartialEq, Serialize)]
192#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
193pub struct ClaimGameServerInput {
194    /// <p>A set of custom game server properties, formatted as a single string value, to be passed to the claimed game server. </p>
195    #[serde(rename = "GameServerData")]
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub game_server_data: Option<String>,
198    /// <p>An identifier for the game server group. When claiming a specific game server, this is the game server group whether the game server is located. When requesting that GameLift FleetIQ locate an available game server, this is the game server group to search on. You can use either the <a>GameServerGroup</a> name or ARN value.</p>
199    #[serde(rename = "GameServerGroupName")]
200    pub game_server_group_name: String,
201    /// <p>A custom string that uniquely identifies the game server to claim. If this parameter is left empty, GameLift FleetIQ searches for an available game server in the specified game server group.</p>
202    #[serde(rename = "GameServerId")]
203    #[serde(skip_serializing_if = "Option::is_none")]
204    pub game_server_id: Option<String>,
205}
206
207#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
208#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
209pub struct ClaimGameServerOutput {
210    /// <p>Object that describes the newly claimed game server resource.</p>
211    #[serde(rename = "GameServer")]
212    #[serde(skip_serializing_if = "Option::is_none")]
213    pub game_server: Option<GameServer>,
214}
215
216/// <p>Represents the input for a request action.</p>
217#[derive(Clone, Debug, Default, PartialEq, Serialize)]
218#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
219pub struct CreateAliasInput {
220    /// <p>A human-readable description of the alias.</p>
221    #[serde(rename = "Description")]
222    #[serde(skip_serializing_if = "Option::is_none")]
223    pub description: Option<String>,
224    /// <p>A descriptive label that is associated with an alias. Alias names do not need to be unique.</p>
225    #[serde(rename = "Name")]
226    pub name: String,
227    /// <p>The routing configuration, including routing type and fleet target, for the alias. </p>
228    #[serde(rename = "RoutingStrategy")]
229    pub routing_strategy: RoutingStrategy,
230    /// <p>A list of labels to assign to the new alias resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
231    #[serde(rename = "Tags")]
232    #[serde(skip_serializing_if = "Option::is_none")]
233    pub tags: Option<Vec<Tag>>,
234}
235
236/// <p>Represents the returned data in response to a request action.</p>
237#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
238#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
239pub struct CreateAliasOutput {
240    /// <p>The newly created alias resource.</p>
241    #[serde(rename = "Alias")]
242    #[serde(skip_serializing_if = "Option::is_none")]
243    pub alias: Option<Alias>,
244}
245
246/// <p>Represents the input for a request action.</p>
247#[derive(Clone, Debug, Default, PartialEq, Serialize)]
248#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
249pub struct CreateBuildInput {
250    /// <p>A descriptive label that is associated with a build. Build names do not need to be unique. You can use <a>UpdateBuild</a> to change this value later. </p>
251    #[serde(rename = "Name")]
252    #[serde(skip_serializing_if = "Option::is_none")]
253    pub name: Option<String>,
254    /// <p>The operating system that the game server binaries are built to run on. This value determines the type of fleet resources that you can use for this build. If your game build contains multiple executables, they all must run on the same operating system. If an operating system is not specified when creating a build, Amazon GameLift uses the default value (WINDOWS_2012). This value cannot be changed later.</p>
255    #[serde(rename = "OperatingSystem")]
256    #[serde(skip_serializing_if = "Option::is_none")]
257    pub operating_system: Option<String>,
258    /// <p>Information indicating where your game build files are stored. Use this parameter only when creating a build with files stored in an S3 bucket that you own. The storage location must specify an S3 bucket name and key. The location must also specify a role ARN that you set up to allow Amazon GameLift to access your S3 bucket. The S3 bucket and your new build must be in the same Region.</p>
259    #[serde(rename = "StorageLocation")]
260    #[serde(skip_serializing_if = "Option::is_none")]
261    pub storage_location: Option<S3Location>,
262    /// <p>A list of labels to assign to the new build resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
263    #[serde(rename = "Tags")]
264    #[serde(skip_serializing_if = "Option::is_none")]
265    pub tags: Option<Vec<Tag>>,
266    /// <p>Version information that is associated with a build or script. Version strings do not need to be unique. You can use <a>UpdateBuild</a> to change this value later. </p>
267    #[serde(rename = "Version")]
268    #[serde(skip_serializing_if = "Option::is_none")]
269    pub version: Option<String>,
270}
271
272/// <p>Represents the returned data in response to a request action.</p>
273#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
274#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
275pub struct CreateBuildOutput {
276    /// <p>The newly created build resource, including a unique build IDs and status. </p>
277    #[serde(rename = "Build")]
278    #[serde(skip_serializing_if = "Option::is_none")]
279    pub build: Option<Build>,
280    /// <p>Amazon S3 location for your game build file, including bucket name and key.</p>
281    #[serde(rename = "StorageLocation")]
282    #[serde(skip_serializing_if = "Option::is_none")]
283    pub storage_location: Option<S3Location>,
284    /// <p>This element is returned only when the operation is called without a storage location. It contains credentials to use when you are uploading a build file to an S3 bucket that is owned by Amazon GameLift. Credentials have a limited life span. To refresh these credentials, call <a>RequestUploadCredentials</a>. </p>
285    #[serde(rename = "UploadCredentials")]
286    #[serde(skip_serializing_if = "Option::is_none")]
287    pub upload_credentials: Option<AwsCredentials>,
288}
289
290/// <p>Represents the input for a request action.</p>
291#[derive(Clone, Debug, Default, PartialEq, Serialize)]
292#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
293pub struct CreateFleetInput {
294    /// <p>A unique identifier for a build to be deployed on the new fleet. You can use either the build ID or ARN value. The custom game server build must have been successfully uploaded to Amazon GameLift and be in a <code>READY</code> status. This fleet setting cannot be changed once the fleet is created. </p>
295    #[serde(rename = "BuildId")]
296    #[serde(skip_serializing_if = "Option::is_none")]
297    pub build_id: Option<String>,
298    /// <p><p>Indicates whether to generate a TLS/SSL certificate for the new fleet. TLS certificates are used for encrypting traffic between game clients and game servers running on GameLift. If this parameter is not specified, the default value, DISABLED, is used. This fleet setting cannot be changed once the fleet is created. Learn more at <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-howitworks.html#gamelift-howitworks-security">Securing Client/Server Communication</a>. </p> <p>Note: This feature requires the AWS Certificate Manager (ACM) service, which is available in the AWS global partition but not in all other partitions. When working in a partition that does not support this feature, a request for a new fleet with certificate generation results fails with a 4xx unsupported Region error.</p> <p>Valid values include: </p> <ul> <li> <p> <b>GENERATED</b> - Generate a TLS/SSL certificate for this fleet.</p> </li> <li> <p> <b>DISABLED</b> - (default) Do not generate a TLS/SSL certificate for this fleet.</p> </li> </ul></p>
299    #[serde(rename = "CertificateConfiguration")]
300    #[serde(skip_serializing_if = "Option::is_none")]
301    pub certificate_configuration: Option<CertificateConfiguration>,
302    /// <p>A human-readable description of a fleet.</p>
303    #[serde(rename = "Description")]
304    #[serde(skip_serializing_if = "Option::is_none")]
305    pub description: Option<String>,
306    /// <p>Range of IP addresses and port settings that permit inbound traffic to access game sessions that are running on the fleet. For fleets using a custom game build, this parameter is required before game sessions running on the fleet can accept connections. For Realtime Servers fleets, Amazon GameLift automatically sets TCP and UDP ranges for use by the Realtime servers. You can specify multiple permission settings or add more by updating the fleet.</p>
307    #[serde(rename = "EC2InboundPermissions")]
308    #[serde(skip_serializing_if = "Option::is_none")]
309    pub ec2_inbound_permissions: Option<Vec<IpPermission>>,
310    /// <p>The name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a> for detailed descriptions.</p>
311    #[serde(rename = "EC2InstanceType")]
312    pub ec2_instance_type: String,
313    /// <p>Indicates whether to use On-Demand instances or Spot instances for this fleet. If empty, the default is <code>ON_DEMAND</code>. Both categories of instances use identical hardware and configurations based on the instance type selected for this fleet. Learn more about <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-ec2-instances.html#gamelift-ec2-instances-spot"> On-Demand versus Spot Instances</a>. </p>
314    #[serde(rename = "FleetType")]
315    #[serde(skip_serializing_if = "Option::is_none")]
316    pub fleet_type: Option<String>,
317    /// <p>A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the <a href="https://console.aws.amazon.com/iam/">IAM dashboard</a> in the AWS Management Console. Learn more about using on-box credentials for your game servers at <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html"> Access external resources from a game server</a>.</p>
318    #[serde(rename = "InstanceRoleArn")]
319    #[serde(skip_serializing_if = "Option::is_none")]
320    pub instance_role_arn: Option<String>,
321    /// <p>This parameter is no longer used. Instead, to specify where Amazon GameLift should store log files once a server process shuts down, use the Amazon GameLift server API <code>ProcessReady()</code> and specify one or more directory paths in <code>logParameters</code>. See more information in the <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api-ref.html#gamelift-sdk-server-api-ref-dataypes-process">Server API Reference</a>. </p>
322    #[serde(rename = "LogPaths")]
323    #[serde(skip_serializing_if = "Option::is_none")]
324    pub log_paths: Option<Vec<String>>,
325    /// <p>The name of an Amazon CloudWatch metric group to add this fleet to. A metric group aggregates the metrics for all fleets in the group. Specify an existing metric group name, or provide a new name to create a new metric group. A fleet can only be included in one metric group at a time. </p>
326    #[serde(rename = "MetricGroups")]
327    #[serde(skip_serializing_if = "Option::is_none")]
328    pub metric_groups: Option<Vec<String>>,
329    /// <p>A descriptive label that is associated with a fleet. Fleet names do not need to be unique.</p>
330    #[serde(rename = "Name")]
331    pub name: String,
332    /// <p><p>A game session protection policy to apply to all instances in this fleet. If this parameter is not set, instances in this fleet default to no protection. You can change a fleet&#39;s protection policy using <a>UpdateFleetAttributes</a>, but this change will only affect sessions created after the policy change. You can also set protection for individual instances using <a>UpdateGameSession</a>.</p> <ul> <li> <p> <b>NoProtection</b> - The game session can be terminated during a scale-down event.</p> </li> <li> <p> <b>FullProtection</b> - If the game session is in an <code>ACTIVE</code> status, it cannot be terminated during a scale-down event.</p> </li> </ul></p>
333    #[serde(rename = "NewGameSessionProtectionPolicy")]
334    #[serde(skip_serializing_if = "Option::is_none")]
335    pub new_game_session_protection_policy: Option<String>,
336    /// <p>A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your account ID in the AWS Management Console under account settings. </p>
337    #[serde(rename = "PeerVpcAwsAccountId")]
338    #[serde(skip_serializing_if = "Option::is_none")]
339    pub peer_vpc_aws_account_id: Option<String>,
340    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region as your fleet. To look up a VPC ID, use the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>. </p>
341    #[serde(rename = "PeerVpcId")]
342    #[serde(skip_serializing_if = "Option::is_none")]
343    pub peer_vpc_id: Option<String>,
344    /// <p>A policy that limits the number of game sessions an individual player can create over a span of time for this fleet.</p>
345    #[serde(rename = "ResourceCreationLimitPolicy")]
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub resource_creation_limit_policy: Option<ResourceCreationLimitPolicy>,
348    /// <p>Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime script. The runtime configuration defines the server executables or launch script file, launch parameters, and the number of processes to run concurrently on each instance. When creating a fleet, the runtime configuration must have at least one server process configuration; otherwise the request fails with an invalid request exception. (This parameter replaces the parameters <code>ServerLaunchPath</code> and <code>ServerLaunchParameters</code>, although requests that contain values for these parameters instead of a runtime configuration will continue to work.) This parameter is required unless the parameters <code>ServerLaunchPath</code> and <code>ServerLaunchParameters</code> are defined. Runtime configuration replaced these parameters, but fleets that use them will continue to work. </p>
349    #[serde(rename = "RuntimeConfiguration")]
350    #[serde(skip_serializing_if = "Option::is_none")]
351    pub runtime_configuration: Option<RuntimeConfiguration>,
352    /// <p>A unique identifier for a Realtime script to be deployed on the new fleet. You can use either the script ID or ARN value. The Realtime script must have been successfully uploaded to Amazon GameLift. This fleet setting cannot be changed once the fleet is created.</p>
353    #[serde(rename = "ScriptId")]
354    #[serde(skip_serializing_if = "Option::is_none")]
355    pub script_id: Option<String>,
356    /// <p>This parameter is no longer used. Instead, specify server launch parameters in the <code>RuntimeConfiguration</code> parameter. (Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.)</p>
357    #[serde(rename = "ServerLaunchParameters")]
358    #[serde(skip_serializing_if = "Option::is_none")]
359    pub server_launch_parameters: Option<String>,
360    /// <p>This parameter is no longer used. Instead, specify a server launch path using the <code>RuntimeConfiguration</code> parameter. Requests that specify a server launch path and launch parameters instead of a runtime configuration will continue to work.</p>
361    #[serde(rename = "ServerLaunchPath")]
362    #[serde(skip_serializing_if = "Option::is_none")]
363    pub server_launch_path: Option<String>,
364    /// <p>A list of labels to assign to the new fleet resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
365    #[serde(rename = "Tags")]
366    #[serde(skip_serializing_if = "Option::is_none")]
367    pub tags: Option<Vec<Tag>>,
368}
369
370/// <p>Represents the returned data in response to a request action.</p>
371#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
372#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
373pub struct CreateFleetOutput {
374    /// <p>Properties for the newly created fleet.</p>
375    #[serde(rename = "FleetAttributes")]
376    #[serde(skip_serializing_if = "Option::is_none")]
377    pub fleet_attributes: Option<FleetAttributes>,
378}
379
380#[derive(Clone, Debug, Default, PartialEq, Serialize)]
381#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
382pub struct CreateGameServerGroupInput {
383    /// <p>Configuration settings to define a scaling policy for the Auto Scaling group that is optimized for game hosting. The scaling policy uses the metric "PercentUtilizedGameServers" to maintain a buffer of idle game servers that can immediately accommodate new games and players. Once the game server and Auto Scaling groups are created, you can update the scaling policy settings directly in Auto Scaling Groups.</p>
384    #[serde(rename = "AutoScalingPolicy")]
385    #[serde(skip_serializing_if = "Option::is_none")]
386    pub auto_scaling_policy: Option<GameServerGroupAutoScalingPolicy>,
387    /// <p><p>The fallback balancing method to use for the game server group when Spot instances in a Region become unavailable or are not viable for game hosting. Once triggered, this method remains active until Spot instances can once again be used. Method options include:</p> <ul> <li> <p>SPOT<em>ONLY -- If Spot instances are unavailable, the game server group provides no hosting capacity. No new instances are started, and the existing nonviable Spot instances are terminated (once current gameplay ends) and not replaced.</p> </li> <li> <p>SPOT</em>PREFERRED -- If Spot instances are unavailable, the game server group continues to provide hosting capacity by using On-Demand instances. Existing nonviable Spot instances are terminated (once current gameplay ends) and replaced with new On-Demand instances. </p> </li> </ul></p>
388    #[serde(rename = "BalancingStrategy")]
389    #[serde(skip_serializing_if = "Option::is_none")]
390    pub balancing_strategy: Option<String>,
391    /// <p>An identifier for the new game server group. This value is used to generate unique ARN identifiers for the EC2 Auto Scaling group and the GameLift FleetIQ game server group. The name must be unique per Region per AWS account.</p>
392    #[serde(rename = "GameServerGroupName")]
393    pub game_server_group_name: String,
394    /// <p>A flag that indicates whether instances in the game server group are protected from early termination. Unprotected instances that have active game servers running may by terminated during a scale-down event, causing players to be dropped from the game. Protected instances cannot be terminated while there are active game servers running. An exception to this is Spot Instances, which may be terminated by AWS regardless of protection status. This property is set to NO_PROTECTION by default.</p>
395    #[serde(rename = "GameServerProtectionPolicy")]
396    #[serde(skip_serializing_if = "Option::is_none")]
397    pub game_server_protection_policy: Option<String>,
398    /// <p>A set of EC2 instance types to use when creating instances in the group. The instance definitions must specify at least two different instance types that are supported by GameLift FleetIQ. For more information on instance types, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">EC2 Instance Types</a> in the <i>Amazon EC2 User Guide</i>.</p>
399    #[serde(rename = "InstanceDefinitions")]
400    pub instance_definitions: Vec<InstanceDefinition>,
401    /// <p>The EC2 launch template that contains configuration settings and game server code to be deployed to all instances in the game server group. You can specify the template using either the template name or ID. For help with creating a launch template, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html">Creating a Launch Template for an Auto Scaling Group</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>.</p>
402    #[serde(rename = "LaunchTemplate")]
403    pub launch_template: LaunchTemplateSpecification,
404    /// <p>The maximum number of instances allowed in the EC2 Auto Scaling group. During autoscaling events, GameLift FleetIQ and EC2 do not scale up the group above this maximum.</p>
405    #[serde(rename = "MaxSize")]
406    pub max_size: i64,
407    /// <p>The minimum number of instances allowed in the EC2 Auto Scaling group. During autoscaling events, GameLift FleetIQ and EC2 do not scale down the group below this minimum. In production, this value should be set to at least 1.</p>
408    #[serde(rename = "MinSize")]
409    pub min_size: i64,
410    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups. The submitted role is validated to ensure that it contains the necessary permissions for game server groups.</p>
411    #[serde(rename = "RoleArn")]
412    pub role_arn: String,
413    /// <p>A list of labels to assign to the new game server group resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management, and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
414    #[serde(rename = "Tags")]
415    #[serde(skip_serializing_if = "Option::is_none")]
416    pub tags: Option<Vec<Tag>>,
417    /// <p>A list of virtual private cloud (VPC) subnets to use with instances in the game server group. By default, all GameLift FleetIQ-supported availability zones are used; this parameter allows you to specify VPCs that you've set up. </p>
418    #[serde(rename = "VpcSubnets")]
419    #[serde(skip_serializing_if = "Option::is_none")]
420    pub vpc_subnets: Option<Vec<String>>,
421}
422
423#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
424#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
425pub struct CreateGameServerGroupOutput {
426    /// <p>The newly created game server group object, including the new ARN value for the GameLift FleetIQ game server group and the object's status. The EC2 Auto Scaling group ARN is initially null, since the group has not yet been created. This value is added once the game server group status reaches ACTIVE. </p>
427    #[serde(rename = "GameServerGroup")]
428    #[serde(skip_serializing_if = "Option::is_none")]
429    pub game_server_group: Option<GameServerGroup>,
430}
431
432/// <p>Represents the input for a request action.</p>
433#[derive(Clone, Debug, Default, PartialEq, Serialize)]
434#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
435pub struct CreateGameSessionInput {
436    /// <p>A unique identifier for an alias associated with the fleet to create a game session in. You can use either the alias ID or ARN value. Each request must reference either a fleet ID or alias ID, but not both.</p>
437    #[serde(rename = "AliasId")]
438    #[serde(skip_serializing_if = "Option::is_none")]
439    pub alias_id: Option<String>,
440    /// <p>A unique identifier for a player or entity creating the game session. This ID is used to enforce a resource protection policy (if one exists) that limits the number of concurrent active game sessions one player can have.</p>
441    #[serde(rename = "CreatorId")]
442    #[serde(skip_serializing_if = "Option::is_none")]
443    pub creator_id: Option<String>,
444    /// <p>A unique identifier for a fleet to create a game session in. You can use either the fleet ID or ARN value. Each request must reference either a fleet ID or alias ID, but not both.</p>
445    #[serde(rename = "FleetId")]
446    #[serde(skip_serializing_if = "Option::is_none")]
447    pub fleet_id: Option<String>,
448    /// <p>Set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
449    #[serde(rename = "GameProperties")]
450    #[serde(skip_serializing_if = "Option::is_none")]
451    pub game_properties: Option<Vec<GameProperty>>,
452    /// <p>Set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
453    #[serde(rename = "GameSessionData")]
454    #[serde(skip_serializing_if = "Option::is_none")]
455    pub game_session_data: Option<String>,
456    /// <p> <i>This parameter is no longer preferred. Please use <code>IdempotencyToken</code> instead.</i> Custom string that uniquely identifies a request for a new game session. Maximum token length is 48 characters. If provided, this string is included in the new game session's ID. (A game session ARN has the following format: <code>arn:aws:gamelift:&lt;region&gt;::gamesession/&lt;fleet ID&gt;/&lt;custom ID string or idempotency token&gt;</code>.) </p>
457    #[serde(rename = "GameSessionId")]
458    #[serde(skip_serializing_if = "Option::is_none")]
459    pub game_session_id: Option<String>,
460    /// <p>Custom string that uniquely identifies a request for a new game session. Maximum token length is 48 characters. If provided, this string is included in the new game session's ID. (A game session ARN has the following format: <code>arn:aws:gamelift:&lt;region&gt;::gamesession/&lt;fleet ID&gt;/&lt;custom ID string or idempotency token&gt;</code>.) Idempotency tokens remain in use for 30 days after a game session has ended; game session objects are retained for this time period and then deleted.</p>
461    #[serde(rename = "IdempotencyToken")]
462    #[serde(skip_serializing_if = "Option::is_none")]
463    pub idempotency_token: Option<String>,
464    /// <p>The maximum number of players that can be connected simultaneously to the game session.</p>
465    #[serde(rename = "MaximumPlayerSessionCount")]
466    pub maximum_player_session_count: i64,
467    /// <p>A descriptive label that is associated with a game session. Session names do not need to be unique.</p>
468    #[serde(rename = "Name")]
469    #[serde(skip_serializing_if = "Option::is_none")]
470    pub name: Option<String>,
471}
472
473/// <p>Represents the returned data in response to a request action.</p>
474#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
475#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
476pub struct CreateGameSessionOutput {
477    /// <p>Object that describes the newly created game session record.</p>
478    #[serde(rename = "GameSession")]
479    #[serde(skip_serializing_if = "Option::is_none")]
480    pub game_session: Option<GameSession>,
481}
482
483/// <p>Represents the input for a request action.</p>
484#[derive(Clone, Debug, Default, PartialEq, Serialize)]
485#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
486pub struct CreateGameSessionQueueInput {
487    /// <p>A list of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order.</p>
488    #[serde(rename = "Destinations")]
489    #[serde(skip_serializing_if = "Option::is_none")]
490    pub destinations: Option<Vec<GameSessionQueueDestination>>,
491    /// <p>A descriptive label that is associated with game session queue. Queue names must be unique within each Region.</p>
492    #[serde(rename = "Name")]
493    pub name: String,
494    /// <p>A collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, the policy is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. A player latency policy must set a value for <code>MaximumIndividualPlayerLatencyMilliseconds</code>. If none is set, this API request fails.</p>
495    #[serde(rename = "PlayerLatencyPolicies")]
496    #[serde(skip_serializing_if = "Option::is_none")]
497    pub player_latency_policies: Option<Vec<PlayerLatencyPolicy>>,
498    /// <p>A list of labels to assign to the new game session queue resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
499    #[serde(rename = "Tags")]
500    #[serde(skip_serializing_if = "Option::is_none")]
501    pub tags: Option<Vec<Tag>>,
502    /// <p>The maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a <code>TIMED_OUT</code> status.</p>
503    #[serde(rename = "TimeoutInSeconds")]
504    #[serde(skip_serializing_if = "Option::is_none")]
505    pub timeout_in_seconds: Option<i64>,
506}
507
508/// <p>Represents the returned data in response to a request action.</p>
509#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
510#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
511pub struct CreateGameSessionQueueOutput {
512    /// <p>An object that describes the newly created game session queue.</p>
513    #[serde(rename = "GameSessionQueue")]
514    #[serde(skip_serializing_if = "Option::is_none")]
515    pub game_session_queue: Option<GameSessionQueue>,
516}
517
518/// <p>Represents the input for a request action.</p>
519#[derive(Clone, Debug, Default, PartialEq, Serialize)]
520#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
521pub struct CreateMatchmakingConfigurationInput {
522    /// <p>A flag that determines whether a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to <code>TRUE</code>.</p>
523    #[serde(rename = "AcceptanceRequired")]
524    pub acceptance_required: bool,
525    /// <p>The length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match.</p>
526    #[serde(rename = "AcceptanceTimeoutSeconds")]
527    #[serde(skip_serializing_if = "Option::is_none")]
528    pub acceptance_timeout_seconds: Option<i64>,
529    /// <p>The number of player slots in a match to keep open for future players. For example, assume that the configuration's rule set specifies a match for a single 12-person team. If the additional player count is set to 2, only 10 players are initially selected for the match.</p>
530    #[serde(rename = "AdditionalPlayerCount")]
531    #[serde(skip_serializing_if = "Option::is_none")]
532    pub additional_player_count: Option<i64>,
533    /// <p>The method used to backfill game sessions that are created with this matchmaking configuration. Specify <code>MANUAL</code> when your game manages backfill requests manually or does not use the match backfill feature. Specify <code>AUTOMATIC</code> to have GameLift create a <a>StartMatchBackfill</a> request whenever a game session has one or more open slots. Learn more about manual and automatic backfill in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html"> Backfill Existing Games with FlexMatch</a>. </p>
534    #[serde(rename = "BackfillMode")]
535    #[serde(skip_serializing_if = "Option::is_none")]
536    pub backfill_mode: Option<String>,
537    /// <p>Information to be added to all events related to this matchmaking configuration. </p>
538    #[serde(rename = "CustomEventData")]
539    #[serde(skip_serializing_if = "Option::is_none")]
540    pub custom_event_data: Option<String>,
541    /// <p>A human-readable description of the matchmaking configuration. </p>
542    #[serde(rename = "Description")]
543    #[serde(skip_serializing_if = "Option::is_none")]
544    pub description: Option<String>,
545    /// <p>A set of custom properties for a game session, formatted as key-value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match. </p>
546    #[serde(rename = "GameProperties")]
547    #[serde(skip_serializing_if = "Option::is_none")]
548    pub game_properties: Option<Vec<GameProperty>>,
549    /// <p>A set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match.</p>
550    #[serde(rename = "GameSessionData")]
551    #[serde(skip_serializing_if = "Option::is_none")]
552    pub game_session_data: Option<String>,
553    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift game session queue resource and uniquely identifies it. ARNs are unique across all Regions. These queues are used when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any Region.</p>
554    #[serde(rename = "GameSessionQueueArns")]
555    pub game_session_queue_arns: Vec<String>,
556    /// <p>A unique identifier for a matchmaking configuration. This name is used to identify the configuration associated with a matchmaking request or ticket.</p>
557    #[serde(rename = "Name")]
558    pub name: String,
559    /// <p>An SNS topic ARN that is set up to receive matchmaking notifications.</p>
560    #[serde(rename = "NotificationTarget")]
561    #[serde(skip_serializing_if = "Option::is_none")]
562    pub notification_target: Option<String>,
563    /// <p>The maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that fail due to timing out can be resubmitted as needed.</p>
564    #[serde(rename = "RequestTimeoutSeconds")]
565    pub request_timeout_seconds: i64,
566    /// <p>A unique identifier for a matchmaking rule set to use with this configuration. You can use either the rule set name or ARN value. A matchmaking configuration can only use rule sets that are defined in the same Region.</p>
567    #[serde(rename = "RuleSetName")]
568    pub rule_set_name: String,
569    /// <p>A list of labels to assign to the new matchmaking configuration resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
570    #[serde(rename = "Tags")]
571    #[serde(skip_serializing_if = "Option::is_none")]
572    pub tags: Option<Vec<Tag>>,
573}
574
575/// <p>Represents the returned data in response to a request action.</p>
576#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
577#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
578pub struct CreateMatchmakingConfigurationOutput {
579    /// <p>Object that describes the newly created matchmaking configuration.</p>
580    #[serde(rename = "Configuration")]
581    #[serde(skip_serializing_if = "Option::is_none")]
582    pub configuration: Option<MatchmakingConfiguration>,
583}
584
585/// <p>Represents the input for a request action.</p>
586#[derive(Clone, Debug, Default, PartialEq, Serialize)]
587#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
588pub struct CreateMatchmakingRuleSetInput {
589    /// <p>A unique identifier for a matchmaking rule set. A matchmaking configuration identifies the rule set it uses by this name value. Note that the rule set name is different from the optional <code>name</code> field in the rule set body.</p>
590    #[serde(rename = "Name")]
591    pub name: String,
592    /// <p>A collection of matchmaking rules, formatted as a JSON string. Comments are not allowed in JSON, but most elements support a description field.</p>
593    #[serde(rename = "RuleSetBody")]
594    pub rule_set_body: String,
595    /// <p>A list of labels to assign to the new matchmaking rule set resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
596    #[serde(rename = "Tags")]
597    #[serde(skip_serializing_if = "Option::is_none")]
598    pub tags: Option<Vec<Tag>>,
599}
600
601/// <p>Represents the returned data in response to a request action.</p>
602#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
603#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
604pub struct CreateMatchmakingRuleSetOutput {
605    /// <p>The newly created matchmaking rule set.</p>
606    #[serde(rename = "RuleSet")]
607    pub rule_set: MatchmakingRuleSet,
608}
609
610/// <p>Represents the input for a request action.</p>
611#[derive(Clone, Debug, Default, PartialEq, Serialize)]
612#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
613pub struct CreatePlayerSessionInput {
614    /// <p>A unique identifier for the game session to add a player to.</p>
615    #[serde(rename = "GameSessionId")]
616    pub game_session_id: String,
617    /// <p>Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game.</p>
618    #[serde(rename = "PlayerData")]
619    #[serde(skip_serializing_if = "Option::is_none")]
620    pub player_data: Option<String>,
621    /// <p>A unique identifier for a player. Player IDs are developer-defined.</p>
622    #[serde(rename = "PlayerId")]
623    pub player_id: String,
624}
625
626/// <p>Represents the returned data in response to a request action.</p>
627#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
628#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
629pub struct CreatePlayerSessionOutput {
630    /// <p>Object that describes the newly created player session record.</p>
631    #[serde(rename = "PlayerSession")]
632    #[serde(skip_serializing_if = "Option::is_none")]
633    pub player_session: Option<PlayerSession>,
634}
635
636/// <p>Represents the input for a request action.</p>
637#[derive(Clone, Debug, Default, PartialEq, Serialize)]
638#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
639pub struct CreatePlayerSessionsInput {
640    /// <p>A unique identifier for the game session to add players to.</p>
641    #[serde(rename = "GameSessionId")]
642    pub game_session_id: String,
643    /// <p>Map of string pairs, each specifying a player ID and a set of developer-defined information related to the player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. Player data strings for player IDs not included in the <code>PlayerIds</code> parameter are ignored. </p>
644    #[serde(rename = "PlayerDataMap")]
645    #[serde(skip_serializing_if = "Option::is_none")]
646    pub player_data_map: Option<::std::collections::HashMap<String, String>>,
647    /// <p>List of unique identifiers for the players to be added.</p>
648    #[serde(rename = "PlayerIds")]
649    pub player_ids: Vec<String>,
650}
651
652/// <p>Represents the returned data in response to a request action.</p>
653#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
654#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
655pub struct CreatePlayerSessionsOutput {
656    /// <p>A collection of player session objects created for the added players.</p>
657    #[serde(rename = "PlayerSessions")]
658    #[serde(skip_serializing_if = "Option::is_none")]
659    pub player_sessions: Option<Vec<PlayerSession>>,
660}
661
662#[derive(Clone, Debug, Default, PartialEq, Serialize)]
663#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
664pub struct CreateScriptInput {
665    /// <p>A descriptive label that is associated with a script. Script names do not need to be unique. You can use <a>UpdateScript</a> to change this value later. </p>
666    #[serde(rename = "Name")]
667    #[serde(skip_serializing_if = "Option::is_none")]
668    pub name: Option<String>,
669    /// <p>The location of the Amazon S3 bucket where a zipped file containing your Realtime scripts is stored. The storage location must specify the Amazon S3 bucket name, the zip file name (the "key"), and a role ARN that allows Amazon GameLift to access the Amazon S3 storage location. The S3 bucket must be in the same Region where you want to create a new script. By default, Amazon GameLift uploads the latest version of the zip file; if you have S3 object versioning turned on, you can use the <code>ObjectVersion</code> parameter to specify an earlier version. </p>
670    #[serde(rename = "StorageLocation")]
671    #[serde(skip_serializing_if = "Option::is_none")]
672    pub storage_location: Option<S3Location>,
673    /// <p>A list of labels to assign to the new script resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
674    #[serde(rename = "Tags")]
675    #[serde(skip_serializing_if = "Option::is_none")]
676    pub tags: Option<Vec<Tag>>,
677    /// <p>The version that is associated with a build or script. Version strings do not need to be unique. You can use <a>UpdateScript</a> to change this value later. </p>
678    #[serde(rename = "Version")]
679    #[serde(skip_serializing_if = "Option::is_none")]
680    pub version: Option<String>,
681    /// <p>A data object containing your Realtime scripts and dependencies as a zip file. The zip file can have one or multiple files. Maximum size of a zip file is 5 MB.</p> <p>When using the AWS CLI tool to create a script, this parameter is set to the zip file name. It must be prepended with the string "fileb://" to indicate that the file data is a binary object. For example: <code>--zip-file fileb://myRealtimeScript.zip</code>.</p>
682    #[serde(rename = "ZipFile")]
683    #[serde(
684        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
685        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
686        default
687    )]
688    #[serde(skip_serializing_if = "Option::is_none")]
689    pub zip_file: Option<bytes::Bytes>,
690}
691
692#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
693#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
694pub struct CreateScriptOutput {
695    /// <p>The newly created script record with a unique script ID and ARN. The new script's storage location reflects an Amazon S3 location: (1) If the script was uploaded from an S3 bucket under your account, the storage location reflects the information that was provided in the <i>CreateScript</i> request; (2) If the script file was uploaded from a local zip file, the storage location reflects an S3 location controls by the Amazon GameLift service.</p>
696    #[serde(rename = "Script")]
697    #[serde(skip_serializing_if = "Option::is_none")]
698    pub script: Option<Script>,
699}
700
701/// <p>Represents the input for a request action.</p>
702#[derive(Clone, Debug, Default, PartialEq, Serialize)]
703#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
704pub struct CreateVpcPeeringAuthorizationInput {
705    /// <p>A unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings.</p>
706    #[serde(rename = "GameLiftAwsAccountId")]
707    pub game_lift_aws_account_id: String,
708    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region where your fleet is deployed. Look up a VPC ID using the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p>
709    #[serde(rename = "PeerVpcId")]
710    pub peer_vpc_id: String,
711}
712
713/// <p>Represents the returned data in response to a request action.</p>
714#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
715#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
716pub struct CreateVpcPeeringAuthorizationOutput {
717    /// <p>Details on the requested VPC peering authorization, including expiration.</p>
718    #[serde(rename = "VpcPeeringAuthorization")]
719    #[serde(skip_serializing_if = "Option::is_none")]
720    pub vpc_peering_authorization: Option<VpcPeeringAuthorization>,
721}
722
723/// <p>Represents the input for a request action.</p>
724#[derive(Clone, Debug, Default, PartialEq, Serialize)]
725#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
726pub struct CreateVpcPeeringConnectionInput {
727    /// <p>A unique identifier for a fleet. You can use either the fleet ID or ARN value. This tells Amazon GameLift which GameLift VPC to peer with. </p>
728    #[serde(rename = "FleetId")]
729    pub fleet_id: String,
730    /// <p>A unique identifier for the AWS account with the VPC that you want to peer your Amazon GameLift fleet with. You can find your Account ID in the AWS Management Console under account settings.</p>
731    #[serde(rename = "PeerVpcAwsAccountId")]
732    pub peer_vpc_aws_account_id: String,
733    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region where your fleet is deployed. Look up a VPC ID using the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p>
734    #[serde(rename = "PeerVpcId")]
735    pub peer_vpc_id: String,
736}
737
738#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
739#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
740pub struct CreateVpcPeeringConnectionOutput {}
741
742/// <p>Represents the input for a request action.</p>
743#[derive(Clone, Debug, Default, PartialEq, Serialize)]
744#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
745pub struct DeleteAliasInput {
746    /// <p>A unique identifier of the alias that you want to delete. You can use either the alias ID or ARN value.</p>
747    #[serde(rename = "AliasId")]
748    pub alias_id: String,
749}
750
751/// <p>Represents the input for a request action.</p>
752#[derive(Clone, Debug, Default, PartialEq, Serialize)]
753#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
754pub struct DeleteBuildInput {
755    /// <p>A unique identifier for a build to delete. You can use either the build ID or ARN value. </p>
756    #[serde(rename = "BuildId")]
757    pub build_id: String,
758}
759
760/// <p>Represents the input for a request action.</p>
761#[derive(Clone, Debug, Default, PartialEq, Serialize)]
762#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
763pub struct DeleteFleetInput {
764    /// <p>A unique identifier for a fleet to be deleted. You can use either the fleet ID or ARN value.</p>
765    #[serde(rename = "FleetId")]
766    pub fleet_id: String,
767}
768
769#[derive(Clone, Debug, Default, PartialEq, Serialize)]
770#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
771pub struct DeleteGameServerGroupInput {
772    /// <p><p>The type of delete to perform. Options include:</p> <ul> <li> <p>SAFE<em>DELETE – Terminates the game server group and EC2 Auto Scaling group only when it has no game servers that are in IN</em>USE status.</p> </li> <li> <p>FORCE_DELETE – Terminates the game server group, including all active game servers regardless of their utilization status, and the EC2 Auto Scaling group. </p> </li> <li> <p>RETAIN – Does a safe delete of the game server group but retains the EC2 Auto Scaling group as is.</p> </li> </ul></p>
773    #[serde(rename = "DeleteOption")]
774    #[serde(skip_serializing_if = "Option::is_none")]
775    pub delete_option: Option<String>,
776    /// <p>The unique identifier of the game server group to delete. Use either the <a>GameServerGroup</a> name or ARN value.</p>
777    #[serde(rename = "GameServerGroupName")]
778    pub game_server_group_name: String,
779}
780
781#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
782#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
783pub struct DeleteGameServerGroupOutput {
784    /// <p>An object that describes the deleted game server group resource, with status updated to DELETE_SCHEDULED. </p>
785    #[serde(rename = "GameServerGroup")]
786    #[serde(skip_serializing_if = "Option::is_none")]
787    pub game_server_group: Option<GameServerGroup>,
788}
789
790/// <p>Represents the input for a request action. </p>
791#[derive(Clone, Debug, Default, PartialEq, Serialize)]
792#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
793pub struct DeleteGameSessionQueueInput {
794    /// <p>A descriptive label that is associated with game session queue. Queue names must be unique within each Region. You can use either the queue ID or ARN value. </p>
795    #[serde(rename = "Name")]
796    pub name: String,
797}
798
799#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
800#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
801pub struct DeleteGameSessionQueueOutput {}
802
803/// <p>Represents the input for a request action.</p>
804#[derive(Clone, Debug, Default, PartialEq, Serialize)]
805#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
806pub struct DeleteMatchmakingConfigurationInput {
807    /// <p>A unique identifier for a matchmaking configuration. You can use either the configuration name or ARN value.</p>
808    #[serde(rename = "Name")]
809    pub name: String,
810}
811
812#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
813#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
814pub struct DeleteMatchmakingConfigurationOutput {}
815
816/// <p>Represents the input for a request action.</p>
817#[derive(Clone, Debug, Default, PartialEq, Serialize)]
818#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
819pub struct DeleteMatchmakingRuleSetInput {
820    /// <p>A unique identifier for a matchmaking rule set to be deleted. (Note: The rule set name is different from the optional "name" field in the rule set body.) You can use either the rule set name or ARN value.</p>
821    #[serde(rename = "Name")]
822    pub name: String,
823}
824
825/// <p>Represents the returned data in response to a request action.</p>
826#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
827#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
828pub struct DeleteMatchmakingRuleSetOutput {}
829
830/// <p>Represents the input for a request action.</p>
831#[derive(Clone, Debug, Default, PartialEq, Serialize)]
832#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
833pub struct DeleteScalingPolicyInput {
834    /// <p>A unique identifier for a fleet to be deleted. You can use either the fleet ID or ARN value.</p>
835    #[serde(rename = "FleetId")]
836    pub fleet_id: String,
837    /// <p>A descriptive label that is associated with a scaling policy. Policy names do not need to be unique.</p>
838    #[serde(rename = "Name")]
839    pub name: String,
840}
841
842#[derive(Clone, Debug, Default, PartialEq, Serialize)]
843#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
844pub struct DeleteScriptInput {
845    /// <p>A unique identifier for a Realtime script to delete. You can use either the script ID or ARN value.</p>
846    #[serde(rename = "ScriptId")]
847    pub script_id: String,
848}
849
850/// <p>Represents the input for a request action.</p>
851#[derive(Clone, Debug, Default, PartialEq, Serialize)]
852#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
853pub struct DeleteVpcPeeringAuthorizationInput {
854    /// <p>A unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings.</p>
855    #[serde(rename = "GameLiftAwsAccountId")]
856    pub game_lift_aws_account_id: String,
857    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region where your fleet is deployed. Look up a VPC ID using the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p>
858    #[serde(rename = "PeerVpcId")]
859    pub peer_vpc_id: String,
860}
861
862#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
863#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
864pub struct DeleteVpcPeeringAuthorizationOutput {}
865
866/// <p>Represents the input for a request action.</p>
867#[derive(Clone, Debug, Default, PartialEq, Serialize)]
868#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
869pub struct DeleteVpcPeeringConnectionInput {
870    /// <p>A unique identifier for a fleet. This fleet specified must match the fleet referenced in the VPC peering connection record. You can use either the fleet ID or ARN value.</p>
871    #[serde(rename = "FleetId")]
872    pub fleet_id: String,
873    /// <p>A unique identifier for a VPC peering connection. This value is included in the <a>VpcPeeringConnection</a> object, which can be retrieved by calling <a>DescribeVpcPeeringConnections</a>.</p>
874    #[serde(rename = "VpcPeeringConnectionId")]
875    pub vpc_peering_connection_id: String,
876}
877
878#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
879#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
880pub struct DeleteVpcPeeringConnectionOutput {}
881
882#[derive(Clone, Debug, Default, PartialEq, Serialize)]
883#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
884pub struct DeregisterGameServerInput {
885    /// <p>An identifier for the game server group where the game server to be de-registered is running. Use either the <a>GameServerGroup</a> name or ARN value.</p>
886    #[serde(rename = "GameServerGroupName")]
887    pub game_server_group_name: String,
888    /// <p>The identifier for the game server to be de-registered.</p>
889    #[serde(rename = "GameServerId")]
890    pub game_server_id: String,
891}
892
893/// <p>Represents the input for a request action.</p>
894#[derive(Clone, Debug, Default, PartialEq, Serialize)]
895#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
896pub struct DescribeAliasInput {
897    /// <p>The unique identifier for the fleet alias that you want to retrieve. You can use either the alias ID or ARN value. </p>
898    #[serde(rename = "AliasId")]
899    pub alias_id: String,
900}
901
902/// <p>Represents the returned data in response to a request action.</p>
903#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
904#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
905pub struct DescribeAliasOutput {
906    /// <p>The requested alias resource.</p>
907    #[serde(rename = "Alias")]
908    #[serde(skip_serializing_if = "Option::is_none")]
909    pub alias: Option<Alias>,
910}
911
912/// <p>Represents the input for a request action.</p>
913#[derive(Clone, Debug, Default, PartialEq, Serialize)]
914#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
915pub struct DescribeBuildInput {
916    /// <p>A unique identifier for a build to retrieve properties for. You can use either the build ID or ARN value. </p>
917    #[serde(rename = "BuildId")]
918    pub build_id: String,
919}
920
921/// <p>Represents the returned data in response to a request action.</p>
922#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
923#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
924pub struct DescribeBuildOutput {
925    /// <p>Set of properties describing the requested build.</p>
926    #[serde(rename = "Build")]
927    #[serde(skip_serializing_if = "Option::is_none")]
928    pub build: Option<Build>,
929}
930
931/// <p>Represents the input for a request action.</p>
932#[derive(Clone, Debug, Default, PartialEq, Serialize)]
933#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
934pub struct DescribeEC2InstanceLimitsInput {
935    /// <p>Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a> for detailed descriptions. Leave this parameter blank to retrieve limits for all types.</p>
936    #[serde(rename = "EC2InstanceType")]
937    #[serde(skip_serializing_if = "Option::is_none")]
938    pub ec2_instance_type: Option<String>,
939}
940
941/// <p>Represents the returned data in response to a request action.</p>
942#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
943#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
944pub struct DescribeEC2InstanceLimitsOutput {
945    /// <p>The maximum number of instances for the specified instance type.</p>
946    #[serde(rename = "EC2InstanceLimits")]
947    #[serde(skip_serializing_if = "Option::is_none")]
948    pub ec2_instance_limits: Option<Vec<EC2InstanceLimit>>,
949}
950
951/// <p>Represents the input for a request action.</p>
952#[derive(Clone, Debug, Default, PartialEq, Serialize)]
953#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
954pub struct DescribeFleetAttributesInput {
955    /// <p>A list of unique fleet identifiers to retrieve attributes for. You can use either the fleet ID or ARN value. To retrieve attributes for all current fleets, do not include this parameter. If the list of fleet identifiers includes fleets that don't currently exist, the request succeeds but no attributes for that fleet are returned.</p>
956    #[serde(rename = "FleetIds")]
957    #[serde(skip_serializing_if = "Option::is_none")]
958    pub fleet_ids: Option<Vec<String>>,
959    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
960    #[serde(rename = "Limit")]
961    #[serde(skip_serializing_if = "Option::is_none")]
962    pub limit: Option<i64>,
963    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
964    #[serde(rename = "NextToken")]
965    #[serde(skip_serializing_if = "Option::is_none")]
966    pub next_token: Option<String>,
967}
968
969/// <p>Represents the returned data in response to a request action.</p>
970#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
971#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
972pub struct DescribeFleetAttributesOutput {
973    /// <p>A collection of objects containing attribute metadata for each requested fleet ID. Attribute objects are returned only for fleets that currently exist.</p>
974    #[serde(rename = "FleetAttributes")]
975    #[serde(skip_serializing_if = "Option::is_none")]
976    pub fleet_attributes: Option<Vec<FleetAttributes>>,
977    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
978    #[serde(rename = "NextToken")]
979    #[serde(skip_serializing_if = "Option::is_none")]
980    pub next_token: Option<String>,
981}
982
983/// <p>Represents the input for a request action.</p>
984#[derive(Clone, Debug, Default, PartialEq, Serialize)]
985#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
986pub struct DescribeFleetCapacityInput {
987    /// <p>A unique identifier for a fleet(s) to retrieve capacity information for. You can use either the fleet ID or ARN value.</p>
988    #[serde(rename = "FleetIds")]
989    #[serde(skip_serializing_if = "Option::is_none")]
990    pub fleet_ids: Option<Vec<String>>,
991    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
992    #[serde(rename = "Limit")]
993    #[serde(skip_serializing_if = "Option::is_none")]
994    pub limit: Option<i64>,
995    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
996    #[serde(rename = "NextToken")]
997    #[serde(skip_serializing_if = "Option::is_none")]
998    pub next_token: Option<String>,
999}
1000
1001/// <p>Represents the returned data in response to a request action.</p>
1002#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1003#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1004pub struct DescribeFleetCapacityOutput {
1005    /// <p>A collection of objects containing capacity information for each requested fleet ID. Leave this parameter empty to retrieve capacity information for all fleets.</p>
1006    #[serde(rename = "FleetCapacity")]
1007    #[serde(skip_serializing_if = "Option::is_none")]
1008    pub fleet_capacity: Option<Vec<FleetCapacity>>,
1009    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1010    #[serde(rename = "NextToken")]
1011    #[serde(skip_serializing_if = "Option::is_none")]
1012    pub next_token: Option<String>,
1013}
1014
1015/// <p>Represents the input for a request action.</p>
1016#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1017#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1018pub struct DescribeFleetEventsInput {
1019    /// <p>Most recent date to retrieve event logs for. If no end time is specified, this call returns entries from the specified start time up to the present. Format is a number expressed in Unix time as milliseconds (ex: "1469498468.057").</p>
1020    #[serde(rename = "EndTime")]
1021    #[serde(skip_serializing_if = "Option::is_none")]
1022    pub end_time: Option<f64>,
1023    /// <p>A unique identifier for a fleet to get event logs for. You can use either the fleet ID or ARN value.</p>
1024    #[serde(rename = "FleetId")]
1025    pub fleet_id: String,
1026    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1027    #[serde(rename = "Limit")]
1028    #[serde(skip_serializing_if = "Option::is_none")]
1029    pub limit: Option<i64>,
1030    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1031    #[serde(rename = "NextToken")]
1032    #[serde(skip_serializing_if = "Option::is_none")]
1033    pub next_token: Option<String>,
1034    /// <p>Earliest date to retrieve event logs for. If no start time is specified, this call returns entries starting from when the fleet was created to the specified end time. Format is a number expressed in Unix time as milliseconds (ex: "1469498468.057").</p>
1035    #[serde(rename = "StartTime")]
1036    #[serde(skip_serializing_if = "Option::is_none")]
1037    pub start_time: Option<f64>,
1038}
1039
1040/// <p>Represents the returned data in response to a request action.</p>
1041#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1042#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1043pub struct DescribeFleetEventsOutput {
1044    /// <p>A collection of objects containing event log entries for the specified fleet.</p>
1045    #[serde(rename = "Events")]
1046    #[serde(skip_serializing_if = "Option::is_none")]
1047    pub events: Option<Vec<Event>>,
1048    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1049    #[serde(rename = "NextToken")]
1050    #[serde(skip_serializing_if = "Option::is_none")]
1051    pub next_token: Option<String>,
1052}
1053
1054/// <p>Represents the input for a request action.</p>
1055#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1056#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1057pub struct DescribeFleetPortSettingsInput {
1058    /// <p>A unique identifier for a fleet to retrieve port settings for. You can use either the fleet ID or ARN value.</p>
1059    #[serde(rename = "FleetId")]
1060    pub fleet_id: String,
1061}
1062
1063/// <p>Represents the returned data in response to a request action.</p>
1064#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1065#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1066pub struct DescribeFleetPortSettingsOutput {
1067    /// <p>The port settings for the requested fleet ID.</p>
1068    #[serde(rename = "InboundPermissions")]
1069    #[serde(skip_serializing_if = "Option::is_none")]
1070    pub inbound_permissions: Option<Vec<IpPermission>>,
1071}
1072
1073/// <p>Represents the input for a request action.</p>
1074#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1075#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1076pub struct DescribeFleetUtilizationInput {
1077    /// <p>A unique identifier for a fleet(s) to retrieve utilization data for. You can use either the fleet ID or ARN value. To retrieve attributes for all current fleets, do not include this parameter. If the list of fleet identifiers includes fleets that don't currently exist, the request succeeds but no attributes for that fleet are returned.</p>
1078    #[serde(rename = "FleetIds")]
1079    #[serde(skip_serializing_if = "Option::is_none")]
1080    pub fleet_ids: Option<Vec<String>>,
1081    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
1082    #[serde(rename = "Limit")]
1083    #[serde(skip_serializing_if = "Option::is_none")]
1084    pub limit: Option<i64>,
1085    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. This parameter is ignored when the request specifies one or a list of fleet IDs.</p>
1086    #[serde(rename = "NextToken")]
1087    #[serde(skip_serializing_if = "Option::is_none")]
1088    pub next_token: Option<String>,
1089}
1090
1091/// <p>Represents the returned data in response to a request action.</p>
1092#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1093#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1094pub struct DescribeFleetUtilizationOutput {
1095    /// <p>A collection of objects containing utilization information for each requested fleet ID.</p>
1096    #[serde(rename = "FleetUtilization")]
1097    #[serde(skip_serializing_if = "Option::is_none")]
1098    pub fleet_utilization: Option<Vec<FleetUtilization>>,
1099    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1100    #[serde(rename = "NextToken")]
1101    #[serde(skip_serializing_if = "Option::is_none")]
1102    pub next_token: Option<String>,
1103}
1104
1105#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1106#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1107pub struct DescribeGameServerGroupInput {
1108    /// <p>The unique identifier for the game server group being requested. Use either the <a>GameServerGroup</a> name or ARN value.</p>
1109    #[serde(rename = "GameServerGroupName")]
1110    pub game_server_group_name: String,
1111}
1112
1113#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1114#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1115pub struct DescribeGameServerGroupOutput {
1116    /// <p>An object that describes the requested game server group resource. </p>
1117    #[serde(rename = "GameServerGroup")]
1118    #[serde(skip_serializing_if = "Option::is_none")]
1119    pub game_server_group: Option<GameServerGroup>,
1120}
1121
1122#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1123#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1124pub struct DescribeGameServerInput {
1125    /// <p>An identifier for the game server group where the game server is running. Use either the <a>GameServerGroup</a> name or ARN value.</p>
1126    #[serde(rename = "GameServerGroupName")]
1127    pub game_server_group_name: String,
1128    /// <p>The identifier for the game server to be retrieved.</p>
1129    #[serde(rename = "GameServerId")]
1130    pub game_server_id: String,
1131}
1132
1133#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1134#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1135pub struct DescribeGameServerOutput {
1136    /// <p>Object that describes the requested game server resource.</p>
1137    #[serde(rename = "GameServer")]
1138    #[serde(skip_serializing_if = "Option::is_none")]
1139    pub game_server: Option<GameServer>,
1140}
1141
1142/// <p>Represents the input for a request action.</p>
1143#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1144#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1145pub struct DescribeGameSessionDetailsInput {
1146    /// <p>A unique identifier for an alias associated with the fleet to retrieve all game sessions for. You can use either the alias ID or ARN value.</p>
1147    #[serde(rename = "AliasId")]
1148    #[serde(skip_serializing_if = "Option::is_none")]
1149    pub alias_id: Option<String>,
1150    /// <p>A unique identifier for a fleet to retrieve all game sessions active on the fleet. You can use either the fleet ID or ARN value.</p>
1151    #[serde(rename = "FleetId")]
1152    #[serde(skip_serializing_if = "Option::is_none")]
1153    pub fleet_id: Option<String>,
1154    /// <p>A unique identifier for the game session to retrieve. </p>
1155    #[serde(rename = "GameSessionId")]
1156    #[serde(skip_serializing_if = "Option::is_none")]
1157    pub game_session_id: Option<String>,
1158    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1159    #[serde(rename = "Limit")]
1160    #[serde(skip_serializing_if = "Option::is_none")]
1161    pub limit: Option<i64>,
1162    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1163    #[serde(rename = "NextToken")]
1164    #[serde(skip_serializing_if = "Option::is_none")]
1165    pub next_token: Option<String>,
1166    /// <p>Game session status to filter results on. Possible game session statuses include <code>ACTIVE</code>, <code>TERMINATED</code>, <code>ACTIVATING</code> and <code>TERMINATING</code> (the last two are transitory). </p>
1167    #[serde(rename = "StatusFilter")]
1168    #[serde(skip_serializing_if = "Option::is_none")]
1169    pub status_filter: Option<String>,
1170}
1171
1172/// <p>Represents the returned data in response to a request action.</p>
1173#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1174#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1175pub struct DescribeGameSessionDetailsOutput {
1176    /// <p>A collection of objects containing game session properties and the protection policy currently in force for each session matching the request.</p>
1177    #[serde(rename = "GameSessionDetails")]
1178    #[serde(skip_serializing_if = "Option::is_none")]
1179    pub game_session_details: Option<Vec<GameSessionDetail>>,
1180    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1181    #[serde(rename = "NextToken")]
1182    #[serde(skip_serializing_if = "Option::is_none")]
1183    pub next_token: Option<String>,
1184}
1185
1186/// <p>Represents the input for a request action.</p>
1187#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1188#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1189pub struct DescribeGameSessionPlacementInput {
1190    /// <p>A unique identifier for a game session placement to retrieve.</p>
1191    #[serde(rename = "PlacementId")]
1192    pub placement_id: String,
1193}
1194
1195/// <p>Represents the returned data in response to a request action.</p>
1196#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1197#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1198pub struct DescribeGameSessionPlacementOutput {
1199    /// <p>Object that describes the requested game session placement.</p>
1200    #[serde(rename = "GameSessionPlacement")]
1201    #[serde(skip_serializing_if = "Option::is_none")]
1202    pub game_session_placement: Option<GameSessionPlacement>,
1203}
1204
1205/// <p>Represents the input for a request action.</p>
1206#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1207#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1208pub struct DescribeGameSessionQueuesInput {
1209    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1210    #[serde(rename = "Limit")]
1211    #[serde(skip_serializing_if = "Option::is_none")]
1212    pub limit: Option<i64>,
1213    /// <p>A list of queue names to retrieve information for. You can use either the queue ID or ARN value. To request settings for all queues, leave this parameter empty. </p>
1214    #[serde(rename = "Names")]
1215    #[serde(skip_serializing_if = "Option::is_none")]
1216    pub names: Option<Vec<String>>,
1217    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1218    #[serde(rename = "NextToken")]
1219    #[serde(skip_serializing_if = "Option::is_none")]
1220    pub next_token: Option<String>,
1221}
1222
1223/// <p>Represents the returned data in response to a request action.</p>
1224#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1225#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1226pub struct DescribeGameSessionQueuesOutput {
1227    /// <p>A collection of objects that describe the requested game session queues.</p>
1228    #[serde(rename = "GameSessionQueues")]
1229    #[serde(skip_serializing_if = "Option::is_none")]
1230    pub game_session_queues: Option<Vec<GameSessionQueue>>,
1231    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1232    #[serde(rename = "NextToken")]
1233    #[serde(skip_serializing_if = "Option::is_none")]
1234    pub next_token: Option<String>,
1235}
1236
1237/// <p>Represents the input for a request action.</p>
1238#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1239#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1240pub struct DescribeGameSessionsInput {
1241    /// <p>A unique identifier for an alias associated with the fleet to retrieve all game sessions for. You can use either the alias ID or ARN value.</p>
1242    #[serde(rename = "AliasId")]
1243    #[serde(skip_serializing_if = "Option::is_none")]
1244    pub alias_id: Option<String>,
1245    /// <p>A unique identifier for a fleet to retrieve all game sessions for. You can use either the fleet ID or ARN value. </p>
1246    #[serde(rename = "FleetId")]
1247    #[serde(skip_serializing_if = "Option::is_none")]
1248    pub fleet_id: Option<String>,
1249    /// <p>A unique identifier for the game session to retrieve. </p>
1250    #[serde(rename = "GameSessionId")]
1251    #[serde(skip_serializing_if = "Option::is_none")]
1252    pub game_session_id: Option<String>,
1253    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1254    #[serde(rename = "Limit")]
1255    #[serde(skip_serializing_if = "Option::is_none")]
1256    pub limit: Option<i64>,
1257    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1258    #[serde(rename = "NextToken")]
1259    #[serde(skip_serializing_if = "Option::is_none")]
1260    pub next_token: Option<String>,
1261    /// <p>Game session status to filter results on. Possible game session statuses include <code>ACTIVE</code>, <code>TERMINATED</code>, <code>ACTIVATING</code>, and <code>TERMINATING</code> (the last two are transitory). </p>
1262    #[serde(rename = "StatusFilter")]
1263    #[serde(skip_serializing_if = "Option::is_none")]
1264    pub status_filter: Option<String>,
1265}
1266
1267/// <p>Represents the returned data in response to a request action.</p>
1268#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1269#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1270pub struct DescribeGameSessionsOutput {
1271    /// <p>A collection of objects containing game session properties for each session matching the request.</p>
1272    #[serde(rename = "GameSessions")]
1273    #[serde(skip_serializing_if = "Option::is_none")]
1274    pub game_sessions: Option<Vec<GameSession>>,
1275    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1276    #[serde(rename = "NextToken")]
1277    #[serde(skip_serializing_if = "Option::is_none")]
1278    pub next_token: Option<String>,
1279}
1280
1281/// <p>Represents the input for a request action.</p>
1282#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1283#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1284pub struct DescribeInstancesInput {
1285    /// <p>A unique identifier for a fleet to retrieve instance information for. You can use either the fleet ID or ARN value.</p>
1286    #[serde(rename = "FleetId")]
1287    pub fleet_id: String,
1288    /// <p>A unique identifier for an instance to retrieve. Specify an instance ID or leave blank to retrieve all instances in the fleet.</p>
1289    #[serde(rename = "InstanceId")]
1290    #[serde(skip_serializing_if = "Option::is_none")]
1291    pub instance_id: Option<String>,
1292    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1293    #[serde(rename = "Limit")]
1294    #[serde(skip_serializing_if = "Option::is_none")]
1295    pub limit: Option<i64>,
1296    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1297    #[serde(rename = "NextToken")]
1298    #[serde(skip_serializing_if = "Option::is_none")]
1299    pub next_token: Option<String>,
1300}
1301
1302/// <p>Represents the returned data in response to a request action.</p>
1303#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1304#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1305pub struct DescribeInstancesOutput {
1306    /// <p>A collection of objects containing properties for each instance returned.</p>
1307    #[serde(rename = "Instances")]
1308    #[serde(skip_serializing_if = "Option::is_none")]
1309    pub instances: Option<Vec<Instance>>,
1310    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1311    #[serde(rename = "NextToken")]
1312    #[serde(skip_serializing_if = "Option::is_none")]
1313    pub next_token: Option<String>,
1314}
1315
1316/// <p>Represents the input for a request action.</p>
1317#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1318#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1319pub struct DescribeMatchmakingConfigurationsInput {
1320    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. This parameter is limited to 10.</p>
1321    #[serde(rename = "Limit")]
1322    #[serde(skip_serializing_if = "Option::is_none")]
1323    pub limit: Option<i64>,
1324    /// <p>A unique identifier for a matchmaking configuration(s) to retrieve. You can use either the configuration name or ARN value. To request all existing configurations, leave this parameter empty.</p>
1325    #[serde(rename = "Names")]
1326    #[serde(skip_serializing_if = "Option::is_none")]
1327    pub names: Option<Vec<String>>,
1328    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1329    #[serde(rename = "NextToken")]
1330    #[serde(skip_serializing_if = "Option::is_none")]
1331    pub next_token: Option<String>,
1332    /// <p>A unique identifier for a matchmaking rule set. You can use either the rule set name or ARN value. Use this parameter to retrieve all matchmaking configurations that use this rule set.</p>
1333    #[serde(rename = "RuleSetName")]
1334    #[serde(skip_serializing_if = "Option::is_none")]
1335    pub rule_set_name: Option<String>,
1336}
1337
1338/// <p>Represents the returned data in response to a request action.</p>
1339#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1340#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1341pub struct DescribeMatchmakingConfigurationsOutput {
1342    /// <p>A collection of requested matchmaking configurations.</p>
1343    #[serde(rename = "Configurations")]
1344    #[serde(skip_serializing_if = "Option::is_none")]
1345    pub configurations: Option<Vec<MatchmakingConfiguration>>,
1346    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1347    #[serde(rename = "NextToken")]
1348    #[serde(skip_serializing_if = "Option::is_none")]
1349    pub next_token: Option<String>,
1350}
1351
1352/// <p>Represents the input for a request action.</p>
1353#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1354#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1355pub struct DescribeMatchmakingInput {
1356    /// <p>A unique identifier for a matchmaking ticket. You can include up to 10 ID values. </p>
1357    #[serde(rename = "TicketIds")]
1358    pub ticket_ids: Vec<String>,
1359}
1360
1361/// <p>Represents the returned data in response to a request action.</p>
1362#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1363#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1364pub struct DescribeMatchmakingOutput {
1365    /// <p>A collection of existing matchmaking ticket objects matching the request.</p>
1366    #[serde(rename = "TicketList")]
1367    #[serde(skip_serializing_if = "Option::is_none")]
1368    pub ticket_list: Option<Vec<MatchmakingTicket>>,
1369}
1370
1371/// <p>Represents the input for a request action.</p>
1372#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1373#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1374pub struct DescribeMatchmakingRuleSetsInput {
1375    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1376    #[serde(rename = "Limit")]
1377    #[serde(skip_serializing_if = "Option::is_none")]
1378    pub limit: Option<i64>,
1379    /// <p>A list of one or more matchmaking rule set names to retrieve details for. (Note: The rule set name is different from the optional "name" field in the rule set body.) You can use either the rule set name or ARN value. </p>
1380    #[serde(rename = "Names")]
1381    #[serde(skip_serializing_if = "Option::is_none")]
1382    pub names: Option<Vec<String>>,
1383    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1384    #[serde(rename = "NextToken")]
1385    #[serde(skip_serializing_if = "Option::is_none")]
1386    pub next_token: Option<String>,
1387}
1388
1389/// <p>Represents the returned data in response to a request action.</p>
1390#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1391#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1392pub struct DescribeMatchmakingRuleSetsOutput {
1393    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1394    #[serde(rename = "NextToken")]
1395    #[serde(skip_serializing_if = "Option::is_none")]
1396    pub next_token: Option<String>,
1397    /// <p>A collection of requested matchmaking rule set objects. </p>
1398    #[serde(rename = "RuleSets")]
1399    pub rule_sets: Vec<MatchmakingRuleSet>,
1400}
1401
1402/// <p>Represents the input for a request action.</p>
1403#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1404#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1405pub struct DescribePlayerSessionsInput {
1406    /// <p>A unique identifier for the game session to retrieve player sessions for.</p>
1407    #[serde(rename = "GameSessionId")]
1408    #[serde(skip_serializing_if = "Option::is_none")]
1409    pub game_session_id: Option<String>,
1410    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. If a player session ID is specified, this parameter is ignored.</p>
1411    #[serde(rename = "Limit")]
1412    #[serde(skip_serializing_if = "Option::is_none")]
1413    pub limit: Option<i64>,
1414    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value. If a player session ID is specified, this parameter is ignored.</p>
1415    #[serde(rename = "NextToken")]
1416    #[serde(skip_serializing_if = "Option::is_none")]
1417    pub next_token: Option<String>,
1418    /// <p>A unique identifier for a player to retrieve player sessions for.</p>
1419    #[serde(rename = "PlayerId")]
1420    #[serde(skip_serializing_if = "Option::is_none")]
1421    pub player_id: Option<String>,
1422    /// <p>A unique identifier for a player session to retrieve.</p>
1423    #[serde(rename = "PlayerSessionId")]
1424    #[serde(skip_serializing_if = "Option::is_none")]
1425    pub player_session_id: Option<String>,
1426    /// <p><p>Player session status to filter results on.</p> <p>Possible player session statuses include the following:</p> <ul> <li> <p> <b>RESERVED</b> -- The player session request has been received, but the player has not yet connected to the server process and/or been validated. </p> </li> <li> <p> <b>ACTIVE</b> -- The player has been validated by the server process and is currently connected.</p> </li> <li> <p> <b>COMPLETED</b> -- The player connection has been dropped.</p> </li> <li> <p> <b>TIMEDOUT</b> -- A player session request was received, but the player did not connect and/or was not validated within the timeout limit (60 seconds).</p> </li> </ul></p>
1427    #[serde(rename = "PlayerSessionStatusFilter")]
1428    #[serde(skip_serializing_if = "Option::is_none")]
1429    pub player_session_status_filter: Option<String>,
1430}
1431
1432/// <p>Represents the returned data in response to a request action.</p>
1433#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1434#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1435pub struct DescribePlayerSessionsOutput {
1436    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1437    #[serde(rename = "NextToken")]
1438    #[serde(skip_serializing_if = "Option::is_none")]
1439    pub next_token: Option<String>,
1440    /// <p>A collection of objects containing properties for each player session that matches the request.</p>
1441    #[serde(rename = "PlayerSessions")]
1442    #[serde(skip_serializing_if = "Option::is_none")]
1443    pub player_sessions: Option<Vec<PlayerSession>>,
1444}
1445
1446/// <p>Represents the input for a request action.</p>
1447#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1448#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1449pub struct DescribeRuntimeConfigurationInput {
1450    /// <p>A unique identifier for a fleet to get the runtime configuration for. You can use either the fleet ID or ARN value.</p>
1451    #[serde(rename = "FleetId")]
1452    pub fleet_id: String,
1453}
1454
1455/// <p>Represents the returned data in response to a request action.</p>
1456#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1457#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1458pub struct DescribeRuntimeConfigurationOutput {
1459    /// <p>Instructions describing how server processes should be launched and maintained on each instance in the fleet.</p>
1460    #[serde(rename = "RuntimeConfiguration")]
1461    #[serde(skip_serializing_if = "Option::is_none")]
1462    pub runtime_configuration: Option<RuntimeConfiguration>,
1463}
1464
1465/// <p>Represents the input for a request action.</p>
1466#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1467#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1468pub struct DescribeScalingPoliciesInput {
1469    /// <p>A unique identifier for a fleet to retrieve scaling policies for. You can use either the fleet ID or ARN value.</p>
1470    #[serde(rename = "FleetId")]
1471    pub fleet_id: String,
1472    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
1473    #[serde(rename = "Limit")]
1474    #[serde(skip_serializing_if = "Option::is_none")]
1475    pub limit: Option<i64>,
1476    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
1477    #[serde(rename = "NextToken")]
1478    #[serde(skip_serializing_if = "Option::is_none")]
1479    pub next_token: Option<String>,
1480    /// <p><p>Scaling policy status to filter results on. A scaling policy is only in force when in an <code>ACTIVE</code> status.</p> <ul> <li> <p> <b>ACTIVE</b> -- The scaling policy is currently in force.</p> </li> <li> <p> <b>UPDATEREQUESTED</b> -- A request to update the scaling policy has been received.</p> </li> <li> <p> <b>UPDATING</b> -- A change is being made to the scaling policy.</p> </li> <li> <p> <b>DELETEREQUESTED</b> -- A request to delete the scaling policy has been received.</p> </li> <li> <p> <b>DELETING</b> -- The scaling policy is being deleted.</p> </li> <li> <p> <b>DELETED</b> -- The scaling policy has been deleted.</p> </li> <li> <p> <b>ERROR</b> -- An error occurred in creating the policy. It should be removed and recreated.</p> </li> </ul></p>
1481    #[serde(rename = "StatusFilter")]
1482    #[serde(skip_serializing_if = "Option::is_none")]
1483    pub status_filter: Option<String>,
1484}
1485
1486/// <p>Represents the returned data in response to a request action.</p>
1487#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1488#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1489pub struct DescribeScalingPoliciesOutput {
1490    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
1491    #[serde(rename = "NextToken")]
1492    #[serde(skip_serializing_if = "Option::is_none")]
1493    pub next_token: Option<String>,
1494    /// <p>A collection of objects containing the scaling policies matching the request.</p>
1495    #[serde(rename = "ScalingPolicies")]
1496    #[serde(skip_serializing_if = "Option::is_none")]
1497    pub scaling_policies: Option<Vec<ScalingPolicy>>,
1498}
1499
1500#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1501#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1502pub struct DescribeScriptInput {
1503    /// <p>A unique identifier for a Realtime script to retrieve properties for. You can use either the script ID or ARN value.</p>
1504    #[serde(rename = "ScriptId")]
1505    pub script_id: String,
1506}
1507
1508#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1509#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1510pub struct DescribeScriptOutput {
1511    /// <p>A set of properties describing the requested script.</p>
1512    #[serde(rename = "Script")]
1513    #[serde(skip_serializing_if = "Option::is_none")]
1514    pub script: Option<Script>,
1515}
1516
1517#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1518#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1519pub struct DescribeVpcPeeringAuthorizationsInput {}
1520
1521#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1522#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1523pub struct DescribeVpcPeeringAuthorizationsOutput {
1524    /// <p>A collection of objects that describe all valid VPC peering operations for the current AWS account.</p>
1525    #[serde(rename = "VpcPeeringAuthorizations")]
1526    #[serde(skip_serializing_if = "Option::is_none")]
1527    pub vpc_peering_authorizations: Option<Vec<VpcPeeringAuthorization>>,
1528}
1529
1530/// <p>Represents the input for a request action.</p>
1531#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1532#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1533pub struct DescribeVpcPeeringConnectionsInput {
1534    /// <p>A unique identifier for a fleet. You can use either the fleet ID or ARN value.</p>
1535    #[serde(rename = "FleetId")]
1536    #[serde(skip_serializing_if = "Option::is_none")]
1537    pub fleet_id: Option<String>,
1538}
1539
1540/// <p>Represents the returned data in response to a request action.</p>
1541#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1542#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1543pub struct DescribeVpcPeeringConnectionsOutput {
1544    /// <p>A collection of VPC peering connection records that match the request.</p>
1545    #[serde(rename = "VpcPeeringConnections")]
1546    #[serde(skip_serializing_if = "Option::is_none")]
1547    pub vpc_peering_connections: Option<Vec<VpcPeeringConnection>>,
1548}
1549
1550/// <p>Player information for use when creating player sessions using a game session placement request with <a>StartGameSessionPlacement</a>.</p>
1551#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1552#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1553pub struct DesiredPlayerSession {
1554    /// <p>Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game.</p>
1555    #[serde(rename = "PlayerData")]
1556    #[serde(skip_serializing_if = "Option::is_none")]
1557    pub player_data: Option<String>,
1558    /// <p>A unique identifier for a player to associate with the player session.</p>
1559    #[serde(rename = "PlayerId")]
1560    #[serde(skip_serializing_if = "Option::is_none")]
1561    pub player_id: Option<String>,
1562}
1563
1564/// <p><p>Current status of fleet capacity. The number of active instances should match or be in the process of matching the number of desired instances. Pending and terminating counts are non-zero only if fleet capacity is adjusting to an <a>UpdateFleetCapacity</a> request, or if access to resources is temporarily affected.</p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
1565#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1566#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1567pub struct EC2InstanceCounts {
1568    /// <p>Actual number of active instances in the fleet.</p>
1569    #[serde(rename = "ACTIVE")]
1570    #[serde(skip_serializing_if = "Option::is_none")]
1571    pub active: Option<i64>,
1572    /// <p>Ideal number of active instances in the fleet.</p>
1573    #[serde(rename = "DESIRED")]
1574    #[serde(skip_serializing_if = "Option::is_none")]
1575    pub desired: Option<i64>,
1576    /// <p>Number of active instances in the fleet that are not currently hosting a game session.</p>
1577    #[serde(rename = "IDLE")]
1578    #[serde(skip_serializing_if = "Option::is_none")]
1579    pub idle: Option<i64>,
1580    /// <p>The maximum value allowed for the fleet's instance count.</p>
1581    #[serde(rename = "MAXIMUM")]
1582    #[serde(skip_serializing_if = "Option::is_none")]
1583    pub maximum: Option<i64>,
1584    /// <p>The minimum value allowed for the fleet's instance count.</p>
1585    #[serde(rename = "MINIMUM")]
1586    #[serde(skip_serializing_if = "Option::is_none")]
1587    pub minimum: Option<i64>,
1588    /// <p>Number of instances in the fleet that are starting but not yet active.</p>
1589    #[serde(rename = "PENDING")]
1590    #[serde(skip_serializing_if = "Option::is_none")]
1591    pub pending: Option<i64>,
1592    /// <p>Number of instances in the fleet that are no longer active but haven't yet been terminated.</p>
1593    #[serde(rename = "TERMINATING")]
1594    #[serde(skip_serializing_if = "Option::is_none")]
1595    pub terminating: Option<i64>,
1596}
1597
1598/// <p>The maximum number of instances allowed based on the Amazon Elastic Compute Cloud (Amazon EC2) instance type. Instance limits can be retrieved by calling <a>DescribeEC2InstanceLimits</a>.</p>
1599#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1600#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1601pub struct EC2InstanceLimit {
1602    /// <p>Number of instances of the specified type that are currently in use by this AWS account.</p>
1603    #[serde(rename = "CurrentInstances")]
1604    #[serde(skip_serializing_if = "Option::is_none")]
1605    pub current_instances: Option<i64>,
1606    /// <p>Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a> for detailed descriptions.</p>
1607    #[serde(rename = "EC2InstanceType")]
1608    #[serde(skip_serializing_if = "Option::is_none")]
1609    pub ec2_instance_type: Option<String>,
1610    /// <p>Number of instances allowed.</p>
1611    #[serde(rename = "InstanceLimit")]
1612    #[serde(skip_serializing_if = "Option::is_none")]
1613    pub instance_limit: Option<i64>,
1614}
1615
1616/// <p>Log entry describing an event that involves Amazon GameLift resources (such as a fleet). In addition to tracking activity, event codes and messages can provide additional information for troubleshooting and debugging problems.</p>
1617#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1618#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1619pub struct Event {
1620    /// <p><p>The type of event being logged. </p> <p> <b>Fleet creation events (ordered by fleet creation activity):</b> </p> <ul> <li> <p>FLEET<em>CREATED -- A fleet resource was successfully created with a status of <code>NEW</code>. Event messaging includes the fleet ID.</p> </li> <li> <p>FLEET</em>STATE<em>DOWNLOADING -- Fleet status changed from <code>NEW</code> to <code>DOWNLOADING</code>. The compressed build has started downloading to a fleet instance for installation.</p> </li> <li> <p> FLEET</em>BINARY<em>DOWNLOAD</em>FAILED -- The build failed to download to the fleet instance.</p> </li> <li> <p>FLEET<em>CREATION</em>EXTRACTING<em>BUILD – The game server build was successfully downloaded to an instance, and the build files are now being extracted from the uploaded build and saved to an instance. Failure at this stage prevents a fleet from moving to <code>ACTIVE</code> status. Logs for this stage display a list of the files that are extracted and saved on the instance. Access the logs by using the URL in <i>PreSignedLogUrl</i>.</p> </li> <li> <p>FLEET</em>CREATION<em>RUNNING</em>INSTALLER – The game server build files were successfully extracted, and the Amazon GameLift is now running the build&#39;s install script (if one is included). Failure in this stage prevents a fleet from moving to <code>ACTIVE</code> status. Logs for this stage list the installation steps and whether or not the install completed successfully. Access the logs by using the URL in <i>PreSignedLogUrl</i>. </p> </li> <li> <p>FLEET<em>CREATION</em>VALIDATING<em>RUNTIME</em>CONFIG -- The build process was successful, and the Amazon GameLift is now verifying that the game server launch paths, which are specified in the fleet&#39;s runtime configuration, exist. If any listed launch path exists, Amazon GameLift tries to launch a game server process and waits for the process to report ready. Failures in this stage prevent a fleet from moving to <code>ACTIVE</code> status. Logs for this stage list the launch paths in the runtime configuration and indicate whether each is found. Access the logs by using the URL in <i>PreSignedLogUrl</i>. </p> </li> <li> <p>FLEET<em>STATE</em>VALIDATING -- Fleet status changed from <code>DOWNLOADING</code> to <code>VALIDATING</code>.</p> </li> <li> <p> FLEET<em>VALIDATION</em>LAUNCH<em>PATH</em>NOT<em>FOUND -- Validation of the runtime configuration failed because the executable specified in a launch path does not exist on the instance.</p> </li> <li> <p>FLEET</em>STATE<em>BUILDING -- Fleet status changed from <code>VALIDATING</code> to <code>BUILDING</code>.</p> </li> <li> <p>FLEET</em>VALIDATION<em>EXECUTABLE</em>RUNTIME<em>FAILURE -- Validation of the runtime configuration failed because the executable specified in a launch path failed to run on the fleet instance.</p> </li> <li> <p>FLEET</em>STATE<em>ACTIVATING -- Fleet status changed from <code>BUILDING</code> to <code>ACTIVATING</code>. </p> </li> <li> <p> FLEET</em>ACTIVATION<em>FAILED - The fleet failed to successfully complete one of the steps in the fleet activation process. This event code indicates that the game build was successfully downloaded to a fleet instance, built, and validated, but was not able to start a server process. Learn more at <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation"> Debug Fleet Creation Issues</a> </p> </li> <li> <p>FLEET</em>STATE<em>ACTIVE -- The fleet&#39;s status changed from <code>ACTIVATING</code> to <code>ACTIVE</code>. The fleet is now ready to host game sessions.</p> </li> </ul> <p> <b>VPC peering events:</b> </p> <ul> <li> <p>FLEET</em>VPC<em>PEERING</em>SUCCEEDED -- A VPC peering connection has been established between the VPC for an Amazon GameLift fleet and a VPC in your AWS account.</p> </li> <li> <p>FLEET<em>VPC</em>PEERING<em>FAILED -- A requested VPC peering connection has failed. Event details and status information (see <a>DescribeVpcPeeringConnections</a>) provide additional detail. A common reason for peering failure is that the two VPCs have overlapping CIDR blocks of IPv4 addresses. To resolve this, change the CIDR block for the VPC in your AWS account. For more information on VPC peering failures, see <a href="https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html">https://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html</a> </p> </li> <li> <p>FLEET</em>VPC<em>PEERING</em>DELETED -- A VPC peering connection has been successfully deleted.</p> </li> </ul> <p> <b>Spot instance events:</b> </p> <ul> <li> <p> INSTANCE<em>INTERRUPTED -- A spot instance was interrupted by EC2 with a two-minute notification.</p> </li> </ul> <p> <b>Other fleet events:</b> </p> <ul> <li> <p>FLEET</em>SCALING<em>EVENT -- A change was made to the fleet&#39;s capacity settings (desired instances, minimum/maximum scaling limits). Event messaging includes the new capacity settings.</p> </li> <li> <p>FLEET</em>NEW<em>GAME</em>SESSION<em>PROTECTION</em>POLICY<em>UPDATED -- A change was made to the fleet&#39;s game session protection policy setting. Event messaging includes both the old and new policy setting. </p> </li> <li> <p>FLEET</em>DELETED -- A request to delete a fleet was initiated.</p> </li> <li> <p> GENERIC_EVENT -- An unspecified event has occurred.</p> </li> </ul></p>
1621    #[serde(rename = "EventCode")]
1622    #[serde(skip_serializing_if = "Option::is_none")]
1623    pub event_code: Option<String>,
1624    /// <p>A unique identifier for a fleet event.</p>
1625    #[serde(rename = "EventId")]
1626    #[serde(skip_serializing_if = "Option::is_none")]
1627    pub event_id: Option<String>,
1628    /// <p>Time stamp indicating when this event occurred. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1629    #[serde(rename = "EventTime")]
1630    #[serde(skip_serializing_if = "Option::is_none")]
1631    pub event_time: Option<f64>,
1632    /// <p>Additional information related to the event.</p>
1633    #[serde(rename = "Message")]
1634    #[serde(skip_serializing_if = "Option::is_none")]
1635    pub message: Option<String>,
1636    /// <p>Location of stored logs with additional detail that is related to the event. This is useful for debugging issues. The URL is valid for 15 minutes. You can also access fleet creation logs through the Amazon GameLift console.</p>
1637    #[serde(rename = "PreSignedLogUrl")]
1638    #[serde(skip_serializing_if = "Option::is_none")]
1639    pub pre_signed_log_url: Option<String>,
1640    /// <p>A unique identifier for an event resource, such as a fleet ID.</p>
1641    #[serde(rename = "ResourceId")]
1642    #[serde(skip_serializing_if = "Option::is_none")]
1643    pub resource_id: Option<String>,
1644}
1645
1646/// <p><p>General properties describing a fleet.</p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
1647#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1648#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1649pub struct FleetAttributes {
1650    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift build resource that is deployed on instances in this fleet. In a GameLift build ARN, the resource ID matches the <i>BuildId</i> value.</p>
1651    #[serde(rename = "BuildArn")]
1652    #[serde(skip_serializing_if = "Option::is_none")]
1653    pub build_arn: Option<String>,
1654    /// <p>A unique identifier for a build.</p>
1655    #[serde(rename = "BuildId")]
1656    #[serde(skip_serializing_if = "Option::is_none")]
1657    pub build_id: Option<String>,
1658    /// <p>Indicates whether a TLS/SSL certificate was generated for the fleet. </p>
1659    #[serde(rename = "CertificateConfiguration")]
1660    #[serde(skip_serializing_if = "Option::is_none")]
1661    pub certificate_configuration: Option<CertificateConfiguration>,
1662    /// <p>Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1663    #[serde(rename = "CreationTime")]
1664    #[serde(skip_serializing_if = "Option::is_none")]
1665    pub creation_time: Option<f64>,
1666    /// <p>Human-readable description of the fleet.</p>
1667    #[serde(rename = "Description")]
1668    #[serde(skip_serializing_if = "Option::is_none")]
1669    pub description: Option<String>,
1670    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift fleet resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift fleet ARN, the resource ID matches the <i>FleetId</i> value.</p>
1671    #[serde(rename = "FleetArn")]
1672    #[serde(skip_serializing_if = "Option::is_none")]
1673    pub fleet_arn: Option<String>,
1674    /// <p>A unique identifier for a fleet.</p>
1675    #[serde(rename = "FleetId")]
1676    #[serde(skip_serializing_if = "Option::is_none")]
1677    pub fleet_id: Option<String>,
1678    /// <p>Indicates whether the fleet uses on-demand or spot instances. A spot instance in use may be interrupted with a two-minute notification.</p>
1679    #[serde(rename = "FleetType")]
1680    #[serde(skip_serializing_if = "Option::is_none")]
1681    pub fleet_type: Option<String>,
1682    /// <p>A unique identifier for an AWS IAM role that manages access to your AWS services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN from the <a href="https://console.aws.amazon.com/iam/">IAM dashboard</a> in the AWS Management Console. Learn more about using on-box credentials for your game servers at <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html"> Access external resources from a game server</a>.</p>
1683    #[serde(rename = "InstanceRoleArn")]
1684    #[serde(skip_serializing_if = "Option::is_none")]
1685    pub instance_role_arn: Option<String>,
1686    /// <p>EC2 instance type indicating the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. See <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a> for detailed descriptions.</p>
1687    #[serde(rename = "InstanceType")]
1688    #[serde(skip_serializing_if = "Option::is_none")]
1689    pub instance_type: Option<String>,
1690    /// <p>Location of default log files. When a server process is shut down, Amazon GameLift captures and stores any log files in this location. These logs are in addition to game session logs; see more on game session logs in the <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-api-server-code">Amazon GameLift Developer Guide</a>. If no default log path for a fleet is specified, Amazon GameLift automatically uploads logs that are stored on each instance at <code>C:\game\logs</code> (for Windows) or <code>/local/game/logs</code> (for Linux). Use the Amazon GameLift console to access stored logs. </p>
1691    #[serde(rename = "LogPaths")]
1692    #[serde(skip_serializing_if = "Option::is_none")]
1693    pub log_paths: Option<Vec<String>>,
1694    /// <p>Names of metric groups that this fleet is included in. In Amazon CloudWatch, you can view metrics for an individual fleet or aggregated metrics for fleets that are in a fleet metric group. A fleet can be included in only one metric group at a time.</p>
1695    #[serde(rename = "MetricGroups")]
1696    #[serde(skip_serializing_if = "Option::is_none")]
1697    pub metric_groups: Option<Vec<String>>,
1698    /// <p>A descriptive label that is associated with a fleet. Fleet names do not need to be unique.</p>
1699    #[serde(rename = "Name")]
1700    #[serde(skip_serializing_if = "Option::is_none")]
1701    pub name: Option<String>,
1702    /// <p><p>The type of game session protection to set for all new instances started in the fleet.</p> <ul> <li> <p> <b>NoProtection</b> -- The game session can be terminated during a scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game session is in an <code>ACTIVE</code> status, it cannot be terminated during a scale-down event.</p> </li> </ul></p>
1703    #[serde(rename = "NewGameSessionProtectionPolicy")]
1704    #[serde(skip_serializing_if = "Option::is_none")]
1705    pub new_game_session_protection_policy: Option<String>,
1706    /// <p>Operating system of the fleet's computing resources. A fleet's operating system depends on the OS specified for the build that is deployed on this fleet.</p>
1707    #[serde(rename = "OperatingSystem")]
1708    #[serde(skip_serializing_if = "Option::is_none")]
1709    pub operating_system: Option<String>,
1710    /// <p>Fleet policy to limit the number of game sessions an individual player can create over a span of time.</p>
1711    #[serde(rename = "ResourceCreationLimitPolicy")]
1712    #[serde(skip_serializing_if = "Option::is_none")]
1713    pub resource_creation_limit_policy: Option<ResourceCreationLimitPolicy>,
1714    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift script resource that is deployed on instances in this fleet. In a GameLift script ARN, the resource ID matches the <i>ScriptId</i> value.</p>
1715    #[serde(rename = "ScriptArn")]
1716    #[serde(skip_serializing_if = "Option::is_none")]
1717    pub script_arn: Option<String>,
1718    /// <p>A unique identifier for a Realtime script.</p>
1719    #[serde(rename = "ScriptId")]
1720    #[serde(skip_serializing_if = "Option::is_none")]
1721    pub script_id: Option<String>,
1722    /// <p>Game server launch parameters specified for fleets created before 2016-08-04 (or AWS SDK v. 0.12.16). Server launch parameters for fleets created after this date are specified in the fleet's <a>RuntimeConfiguration</a>.</p>
1723    #[serde(rename = "ServerLaunchParameters")]
1724    #[serde(skip_serializing_if = "Option::is_none")]
1725    pub server_launch_parameters: Option<String>,
1726    /// <p>Path to a game server executable in the fleet's build, specified for fleets created before 2016-08-04 (or AWS SDK v. 0.12.16). Server launch paths for fleets created after this date are specified in the fleet's <a>RuntimeConfiguration</a>.</p>
1727    #[serde(rename = "ServerLaunchPath")]
1728    #[serde(skip_serializing_if = "Option::is_none")]
1729    pub server_launch_path: Option<String>,
1730    /// <p><p>Current status of the fleet.</p> <p>Possible fleet statuses include the following:</p> <ul> <li> <p> <b>NEW</b> -- A new fleet has been defined and desired instances is set to 1. </p> </li> <li> <p> <b>DOWNLOADING/VALIDATING/BUILDING/ACTIVATING</b> -- Amazon GameLift is setting up the new fleet, creating new instances with the game build or Realtime script and starting server processes.</p> </li> <li> <p> <b>ACTIVE</b> -- Hosts can now accept game sessions.</p> </li> <li> <p> <b>ERROR</b> -- An error occurred when downloading, validating, building, or activating the fleet.</p> </li> <li> <p> <b>DELETING</b> -- Hosts are responding to a delete fleet request.</p> </li> <li> <p> <b>TERMINATED</b> -- The fleet no longer exists.</p> </li> </ul></p>
1731    #[serde(rename = "Status")]
1732    #[serde(skip_serializing_if = "Option::is_none")]
1733    pub status: Option<String>,
1734    /// <p>List of fleet actions that have been suspended using <a>StopFleetActions</a>. This includes auto-scaling.</p>
1735    #[serde(rename = "StoppedActions")]
1736    #[serde(skip_serializing_if = "Option::is_none")]
1737    pub stopped_actions: Option<Vec<String>>,
1738    /// <p>Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1739    #[serde(rename = "TerminationTime")]
1740    #[serde(skip_serializing_if = "Option::is_none")]
1741    pub termination_time: Option<f64>,
1742}
1743
1744/// <p><p>Information about the fleet&#39;s capacity. Fleet capacity is measured in EC2 instances. By default, new fleets have a capacity of one instance, but can be updated as needed. The maximum number of instances for a fleet is determined by the fleet&#39;s instance type.</p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
1745#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1746#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1747pub struct FleetCapacity {
1748    /// <p>A unique identifier for a fleet.</p>
1749    #[serde(rename = "FleetId")]
1750    #[serde(skip_serializing_if = "Option::is_none")]
1751    pub fleet_id: Option<String>,
1752    /// <p>Current status of fleet capacity.</p>
1753    #[serde(rename = "InstanceCounts")]
1754    #[serde(skip_serializing_if = "Option::is_none")]
1755    pub instance_counts: Option<EC2InstanceCounts>,
1756    /// <p>Name of an EC2 instance type that is supported in Amazon GameLift. A fleet instance type determines the computing resources of each instance in the fleet, including CPU, memory, storage, and networking capacity. Amazon GameLift supports the following EC2 instance types. See <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a> for detailed descriptions.</p>
1757    #[serde(rename = "InstanceType")]
1758    #[serde(skip_serializing_if = "Option::is_none")]
1759    pub instance_type: Option<String>,
1760}
1761
1762/// <p><p>Current status of fleet utilization, including the number of game and player sessions being hosted.</p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
1763#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1764#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1765pub struct FleetUtilization {
1766    /// <p>Number of active game sessions currently being hosted on all instances in the fleet.</p>
1767    #[serde(rename = "ActiveGameSessionCount")]
1768    #[serde(skip_serializing_if = "Option::is_none")]
1769    pub active_game_session_count: Option<i64>,
1770    /// <p>Number of server processes in an <code>ACTIVE</code> status currently running across all instances in the fleet</p>
1771    #[serde(rename = "ActiveServerProcessCount")]
1772    #[serde(skip_serializing_if = "Option::is_none")]
1773    pub active_server_process_count: Option<i64>,
1774    /// <p>Number of active player sessions currently being hosted on all instances in the fleet.</p>
1775    #[serde(rename = "CurrentPlayerSessionCount")]
1776    #[serde(skip_serializing_if = "Option::is_none")]
1777    pub current_player_session_count: Option<i64>,
1778    /// <p>A unique identifier for a fleet.</p>
1779    #[serde(rename = "FleetId")]
1780    #[serde(skip_serializing_if = "Option::is_none")]
1781    pub fleet_id: Option<String>,
1782    /// <p>The maximum number of players allowed across all game sessions currently being hosted on all instances in the fleet.</p>
1783    #[serde(rename = "MaximumPlayerSessionCount")]
1784    #[serde(skip_serializing_if = "Option::is_none")]
1785    pub maximum_player_session_count: Option<i64>,
1786}
1787
1788/// <p>Set of key-value pairs that contain information about a game session. When included in a game session request, these properties communicate details to be used when setting up the new game session. For example, a game property might specify a game mode, level, or map. Game properties are passed to the game server process when initiating a new game session. For more information, see the <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#gamelift-sdk-client-api-create"> Amazon GameLift Developer Guide</a>.</p>
1789#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
1790pub struct GameProperty {
1791    /// <p>The game property identifier.</p>
1792    #[serde(rename = "Key")]
1793    pub key: String,
1794    /// <p>The game property value.</p>
1795    #[serde(rename = "Value")]
1796    pub value: String,
1797}
1798
1799/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Properties describing a game server resource. </p> <p>A game server resource is created by a successful call to <a>RegisterGameServer</a> and deleted by calling <a>DeregisterGameServer</a>. </p>
1800#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1801#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1802pub struct GameServer {
1803    /// <p>Indicates when an available game server has been reserved but has not yet started hosting a game. Once it is claimed, game server remains in CLAIMED status for a maximum of one minute. During this time, game clients must connect to the game server and start the game, which triggers the game server to update its utilization status. After one minute, the game server claim status reverts to null.</p>
1804    #[serde(rename = "ClaimStatus")]
1805    #[serde(skip_serializing_if = "Option::is_none")]
1806    pub claim_status: Option<String>,
1807    /// <p>The port and IP address that must be used to establish a client connection to the game server.</p>
1808    #[serde(rename = "ConnectionInfo")]
1809    #[serde(skip_serializing_if = "Option::is_none")]
1810    pub connection_info: Option<String>,
1811    /// <p>A game server tag that can be used to request sorted lists of game servers when calling <a>ListGameServers</a>. Custom sort keys are developer-defined. This property can be updated using <a>UpdateGameServer</a>.</p>
1812    #[serde(rename = "CustomSortKey")]
1813    #[serde(skip_serializing_if = "Option::is_none")]
1814    pub custom_sort_key: Option<String>,
1815    /// <p>A set of custom game server properties, formatted as a single string value. This data is passed to a game client or service in response to requests <a>ListGameServers</a> or <a>ClaimGameServer</a>. This property can be updated using <a>UpdateGameServer</a>.</p>
1816    #[serde(rename = "GameServerData")]
1817    #[serde(skip_serializing_if = "Option::is_none")]
1818    pub game_server_data: Option<String>,
1819    /// <p>The ARN identifier for the game server group where the game server is located.</p>
1820    #[serde(rename = "GameServerGroupArn")]
1821    #[serde(skip_serializing_if = "Option::is_none")]
1822    pub game_server_group_arn: Option<String>,
1823    /// <p>The name identifier for the game server group where the game server is located.</p>
1824    #[serde(rename = "GameServerGroupName")]
1825    #[serde(skip_serializing_if = "Option::is_none")]
1826    pub game_server_group_name: Option<String>,
1827    /// <p>A custom string that uniquely identifies the game server. Game server IDs are developer-defined and are unique across all game server groups in an AWS account.</p>
1828    #[serde(rename = "GameServerId")]
1829    #[serde(skip_serializing_if = "Option::is_none")]
1830    pub game_server_id: Option<String>,
1831    /// <p>The unique identifier for the instance where the game server is located.</p>
1832    #[serde(rename = "InstanceId")]
1833    #[serde(skip_serializing_if = "Option::is_none")]
1834    pub instance_id: Option<String>,
1835    /// <p>Time stamp indicating the last time the game server was claimed with a <a>ClaimGameServer</a> request. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). This value is used to calculate when the game server's claim status.</p>
1836    #[serde(rename = "LastClaimTime")]
1837    #[serde(skip_serializing_if = "Option::is_none")]
1838    pub last_claim_time: Option<f64>,
1839    /// <p>Time stamp indicating the last time the game server was updated with health status using an <a>UpdateGameServer</a> request. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057"). After game server registration, this property is only changed when a game server update specifies a health check value.</p>
1840    #[serde(rename = "LastHealthCheckTime")]
1841    #[serde(skip_serializing_if = "Option::is_none")]
1842    pub last_health_check_time: Option<f64>,
1843    /// <p>Time stamp indicating when the game server resource was created with a <a>RegisterGameServer</a> request. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1844    #[serde(rename = "RegistrationTime")]
1845    #[serde(skip_serializing_if = "Option::is_none")]
1846    pub registration_time: Option<f64>,
1847    /// <p><p>Indicates whether the game server is currently available for new games or is busy. Possible statuses include:</p> <ul> <li> <p>AVAILABLE - The game server is available to be claimed. A game server that has been claimed remains in this status until it reports game hosting activity. </p> </li> <li> <p>IN_USE - The game server is currently hosting a game session with players. </p> </li> </ul></p>
1848    #[serde(rename = "UtilizationStatus")]
1849    #[serde(skip_serializing_if = "Option::is_none")]
1850    pub utilization_status: Option<String>,
1851}
1852
1853/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Properties describing a game server group resource. A game server group manages certain properties of a corresponding EC2 Auto Scaling group. </p> <p>A game server group is created by a successful call to <a>CreateGameServerGroup</a> and deleted by calling <a>DeleteGameServerGroup</a>. Game server group activity can be temporarily suspended and resumed by calling <a>SuspendGameServerGroup</a> and <a>ResumeGameServerGroup</a>. </p>
1854#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1855#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1856pub struct GameServerGroup {
1857    /// <p>A generated unique ID for the EC2 Auto Scaling group with is associated with this game server group.</p>
1858    #[serde(rename = "AutoScalingGroupArn")]
1859    #[serde(skip_serializing_if = "Option::is_none")]
1860    pub auto_scaling_group_arn: Option<String>,
1861    /// <p><p>The fallback balancing method to use for the game server group when Spot instances in a Region become unavailable or are not viable for game hosting. Once triggered, this method remains active until Spot instances can once again be used. Method options include:</p> <ul> <li> <p>SPOT<em>ONLY -- If Spot instances are unavailable, the game server group provides no hosting capacity. No new instances are started, and the existing nonviable Spot instances are terminated (once current gameplay ends) and not replaced.</p> </li> <li> <p>SPOT</em>PREFERRED -- If Spot instances are unavailable, the game server group continues to provide hosting capacity by using On-Demand instances. Existing nonviable Spot instances are terminated (once current gameplay ends) and replaced with new On-Demand instances. </p> </li> </ul></p>
1862    #[serde(rename = "BalancingStrategy")]
1863    #[serde(skip_serializing_if = "Option::is_none")]
1864    pub balancing_strategy: Option<String>,
1865    /// <p>A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1866    #[serde(rename = "CreationTime")]
1867    #[serde(skip_serializing_if = "Option::is_none")]
1868    pub creation_time: Option<f64>,
1869    /// <p>A generated unique ID for the game server group.</p>
1870    #[serde(rename = "GameServerGroupArn")]
1871    #[serde(skip_serializing_if = "Option::is_none")]
1872    pub game_server_group_arn: Option<String>,
1873    /// <p>A developer-defined identifier for the game server group. The name is unique per Region per AWS account.</p>
1874    #[serde(rename = "GameServerGroupName")]
1875    #[serde(skip_serializing_if = "Option::is_none")]
1876    pub game_server_group_name: Option<String>,
1877    /// <p>A flag that indicates whether instances in the game server group are protected from early termination. Unprotected instances that have active game servers running may be terminated during a scale-down event, causing players to be dropped from the game. Protected instances cannot be terminated while there are active game servers running except in the event of a forced game server group deletion (see <a>DeleteGameServerGroup</a>). An exception to this is Spot Instances, which may be terminated by AWS regardless of protection status.</p>
1878    #[serde(rename = "GameServerProtectionPolicy")]
1879    #[serde(skip_serializing_if = "Option::is_none")]
1880    pub game_server_protection_policy: Option<String>,
1881    /// <p>The set of EC2 instance types that GameLift FleetIQ can use when rebalancing and autoscaling instances in the group. </p>
1882    #[serde(rename = "InstanceDefinitions")]
1883    #[serde(skip_serializing_if = "Option::is_none")]
1884    pub instance_definitions: Option<Vec<InstanceDefinition>>,
1885    /// <p>A time stamp indicating when this game server group was last updated.</p>
1886    #[serde(rename = "LastUpdatedTime")]
1887    #[serde(skip_serializing_if = "Option::is_none")]
1888    pub last_updated_time: Option<f64>,
1889    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups. The submitted role is validated to ensure that it contains the necessary permissions for game server groups.</p>
1890    #[serde(rename = "RoleArn")]
1891    #[serde(skip_serializing_if = "Option::is_none")]
1892    pub role_arn: Option<String>,
1893    /// <p><p>The current status of the game server group. Possible statuses include:</p> <ul> <li> <p> NEW - GameLift FleetIQ has validated the <code>CreateGameServerGroup()</code> request. </p> </li> <li> <p>ACTIVATING - GameLift FleetIQ is setting up a game server group, which includes creating an autoscaling group in your AWS account. </p> </li> <li> <p>ACTIVE - The game server group has been successfully created. </p> </li> <li> <p>DELETE_SCHEDULED - A request to delete the game server group has been received. </p> </li> <li> <p>DELETING - GameLift FleetIQ has received a valid <code>DeleteGameServerGroup()</code> request and is processing it. GameLift FleetIQ must first complete and release hosts before it deletes the autoscaling group and the game server group. </p> </li> <li> <p>DELETED - The game server group has been successfully deleted. </p> </li> <li> <p>ERROR - The asynchronous processes of activating or deleting a game server group has failed, resulting in an error state.</p> </li> </ul></p>
1894    #[serde(rename = "Status")]
1895    #[serde(skip_serializing_if = "Option::is_none")]
1896    pub status: Option<String>,
1897    /// <p>Additional information about the current game server group status. This information may provide additional insight on groups that in ERROR status.</p>
1898    #[serde(rename = "StatusReason")]
1899    #[serde(skip_serializing_if = "Option::is_none")]
1900    pub status_reason: Option<String>,
1901    /// <p>A list of activities that are currently suspended for this game server group. If this property is empty, all activities are occurring.</p>
1902    #[serde(rename = "SuspendedActions")]
1903    #[serde(skip_serializing_if = "Option::is_none")]
1904    pub suspended_actions: Option<Vec<String>>,
1905}
1906
1907/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Configuration settings for intelligent autoscaling that uses target tracking. An autoscaling policy can be specified when a new game server group is created with <a>CreateGameServerGroup</a>. If a group has an autoscaling policy, the Auto Scaling group takes action based on this policy, in addition to (and potentially in conflict with) any other autoscaling policies that are separately applied to the Auto Scaling group. </p>
1908#[derive(Clone, Debug, Default, PartialEq, Serialize)]
1909#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
1910pub struct GameServerGroupAutoScalingPolicy {
1911    /// <p>Length of time, in seconds, it takes for a new instance to start new game server processes and register with GameLift FleetIQ. Specifying a warm-up time can be useful, particularly with game servers that take a long time to start up, because it avoids prematurely starting new instances </p>
1912    #[serde(rename = "EstimatedInstanceWarmup")]
1913    #[serde(skip_serializing_if = "Option::is_none")]
1914    pub estimated_instance_warmup: Option<i64>,
1915    /// <p>Settings for a target-based scaling policy applied to Auto Scaling group. These settings are used to create a target-based policy that tracks the GameLift FleetIQ metric "PercentUtilizedGameServers" and specifies a target value for the metric. As player usage changes, the policy triggers to adjust the game server group capacity so that the metric returns to the target value. </p>
1916    #[serde(rename = "TargetTrackingConfiguration")]
1917    pub target_tracking_configuration: TargetTrackingConfiguration,
1918}
1919
1920/// <p><p>Properties describing a game session.</p> <p>A game session in ACTIVE status can host players. When a game session ends, its status is set to <code>TERMINATED</code>. </p> <p>Once the session ends, the game session object is retained for 30 days. This means you can reuse idempotency token values after this time. Game session logs are retained for 14 days.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
1921#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
1922#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
1923pub struct GameSession {
1924    /// <p>Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1925    #[serde(rename = "CreationTime")]
1926    #[serde(skip_serializing_if = "Option::is_none")]
1927    pub creation_time: Option<f64>,
1928    /// <p>A unique identifier for a player. This ID is used to enforce a resource protection policy (if one exists), that limits the number of game sessions a player can create.</p>
1929    #[serde(rename = "CreatorId")]
1930    #[serde(skip_serializing_if = "Option::is_none")]
1931    pub creator_id: Option<String>,
1932    /// <p>Number of players currently in the game session.</p>
1933    #[serde(rename = "CurrentPlayerSessionCount")]
1934    #[serde(skip_serializing_if = "Option::is_none")]
1935    pub current_player_session_count: Option<i64>,
1936    /// <p>DNS identifier assigned to the instance that is running the game session. Values have the following format:</p> <ul> <li> <p>TLS-enabled fleets: <code>&lt;unique identifier&gt;.&lt;region identifier&gt;.amazongamelift.com</code>.</p> </li> <li> <p>Non-TLS-enabled fleets: <code>ec2-&lt;unique identifier&gt;.compute.amazonaws.com</code>. (See <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses">Amazon EC2 Instance IP Addressing</a>.)</p> </li> </ul> <p>When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.</p>
1937    #[serde(rename = "DnsName")]
1938    #[serde(skip_serializing_if = "Option::is_none")]
1939    pub dns_name: Option<String>,
1940    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift fleet that this game session is running on. </p>
1941    #[serde(rename = "FleetArn")]
1942    #[serde(skip_serializing_if = "Option::is_none")]
1943    pub fleet_arn: Option<String>,
1944    /// <p>A unique identifier for a fleet that the game session is running on.</p>
1945    #[serde(rename = "FleetId")]
1946    #[serde(skip_serializing_if = "Option::is_none")]
1947    pub fleet_id: Option<String>,
1948    /// <p>Set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). You can search for active game sessions based on this custom data with <a>SearchGameSessions</a>.</p>
1949    #[serde(rename = "GameProperties")]
1950    #[serde(skip_serializing_if = "Option::is_none")]
1951    pub game_properties: Option<Vec<GameProperty>>,
1952    /// <p>Set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
1953    #[serde(rename = "GameSessionData")]
1954    #[serde(skip_serializing_if = "Option::is_none")]
1955    pub game_session_data: Option<String>,
1956    /// <p>A unique identifier for the game session. A game session ARN has the following format: <code>arn:aws:gamelift:&lt;region&gt;::gamesession/&lt;fleet ID&gt;/&lt;custom ID string or idempotency token&gt;</code>.</p>
1957    #[serde(rename = "GameSessionId")]
1958    #[serde(skip_serializing_if = "Option::is_none")]
1959    pub game_session_id: Option<String>,
1960    /// <p>IP address of the instance that is running the game session. When connecting to a Amazon GameLift game server, a client needs to reference an IP address (or DNS name) and port number.</p>
1961    #[serde(rename = "IpAddress")]
1962    #[serde(skip_serializing_if = "Option::is_none")]
1963    pub ip_address: Option<String>,
1964    /// <p>Information about the matchmaking process that was used to create the game session. It is in JSON syntax, formatted as a string. In addition the matchmaking configuration used, it contains data on all players assigned to the match, including player attributes and team assignments. For more details on matchmaker data, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-server.html#match-server-data">Match Data</a>. Matchmaker data is useful when requesting match backfills, and is updated whenever new players are added during a successful backfill (see <a>StartMatchBackfill</a>). </p>
1965    #[serde(rename = "MatchmakerData")]
1966    #[serde(skip_serializing_if = "Option::is_none")]
1967    pub matchmaker_data: Option<String>,
1968    /// <p>The maximum number of players that can be connected simultaneously to the game session.</p>
1969    #[serde(rename = "MaximumPlayerSessionCount")]
1970    #[serde(skip_serializing_if = "Option::is_none")]
1971    pub maximum_player_session_count: Option<i64>,
1972    /// <p>A descriptive label that is associated with a game session. Session names do not need to be unique.</p>
1973    #[serde(rename = "Name")]
1974    #[serde(skip_serializing_if = "Option::is_none")]
1975    pub name: Option<String>,
1976    /// <p>Indicates whether or not the game session is accepting new players.</p>
1977    #[serde(rename = "PlayerSessionCreationPolicy")]
1978    #[serde(skip_serializing_if = "Option::is_none")]
1979    pub player_session_creation_policy: Option<String>,
1980    /// <p>Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.</p>
1981    #[serde(rename = "Port")]
1982    #[serde(skip_serializing_if = "Option::is_none")]
1983    pub port: Option<i64>,
1984    /// <p>Current status of the game session. A game session must have an <code>ACTIVE</code> status to have player sessions.</p>
1985    #[serde(rename = "Status")]
1986    #[serde(skip_serializing_if = "Option::is_none")]
1987    pub status: Option<String>,
1988    /// <p>Provides additional information about game session status. <code>INTERRUPTED</code> indicates that the game session was hosted on a spot instance that was reclaimed, causing the active game session to be terminated.</p>
1989    #[serde(rename = "StatusReason")]
1990    #[serde(skip_serializing_if = "Option::is_none")]
1991    pub status_reason: Option<String>,
1992    /// <p>Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
1993    #[serde(rename = "TerminationTime")]
1994    #[serde(skip_serializing_if = "Option::is_none")]
1995    pub termination_time: Option<f64>,
1996}
1997
1998/// <p>Connection information for the new game session that is created with matchmaking. (with <a>StartMatchmaking</a>). Once a match is set, the FlexMatch engine places the match and creates a new game session for it. This information, including the game session endpoint and player sessions for each player in the original matchmaking request, is added to the <a>MatchmakingTicket</a>, which can be retrieved by calling <a>DescribeMatchmaking</a>.</p>
1999#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2000#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2001pub struct GameSessionConnectionInfo {
2002    /// <p>DNS identifier assigned to the instance that is running the game session. Values have the following format:</p> <ul> <li> <p>TLS-enabled fleets: <code>&lt;unique identifier&gt;.&lt;region identifier&gt;.amazongamelift.com</code>.</p> </li> <li> <p>Non-TLS-enabled fleets: <code>ec2-&lt;unique identifier&gt;.compute.amazonaws.com</code>. (See <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses">Amazon EC2 Instance IP Addressing</a>.)</p> </li> </ul> <p>When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.</p>
2003    #[serde(rename = "DnsName")]
2004    #[serde(skip_serializing_if = "Option::is_none")]
2005    pub dns_name: Option<String>,
2006    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a game session and uniquely identifies it.</p>
2007    #[serde(rename = "GameSessionArn")]
2008    #[serde(skip_serializing_if = "Option::is_none")]
2009    pub game_session_arn: Option<String>,
2010    /// <p>IP address of the instance that is running the game session. When connecting to a Amazon GameLift game server, a client needs to reference an IP address (or DNS name) and port number.</p>
2011    #[serde(rename = "IpAddress")]
2012    #[serde(skip_serializing_if = "Option::is_none")]
2013    pub ip_address: Option<String>,
2014    /// <p>A collection of player session IDs, one for each player ID that was included in the original matchmaking request. </p>
2015    #[serde(rename = "MatchedPlayerSessions")]
2016    #[serde(skip_serializing_if = "Option::is_none")]
2017    pub matched_player_sessions: Option<Vec<MatchedPlayerSession>>,
2018    /// <p>Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number.</p>
2019    #[serde(rename = "Port")]
2020    #[serde(skip_serializing_if = "Option::is_none")]
2021    pub port: Option<i64>,
2022}
2023
2024/// <p>A game session's properties plus the protection policy currently in force.</p>
2025#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2026#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2027pub struct GameSessionDetail {
2028    /// <p>Object that describes a game session.</p>
2029    #[serde(rename = "GameSession")]
2030    #[serde(skip_serializing_if = "Option::is_none")]
2031    pub game_session: Option<GameSession>,
2032    /// <p><p>Current status of protection for the game session.</p> <ul> <li> <p> <b>NoProtection</b> -- The game session can be terminated during a scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game session is in an <code>ACTIVE</code> status, it cannot be terminated during a scale-down event.</p> </li> </ul></p>
2033    #[serde(rename = "ProtectionPolicy")]
2034    #[serde(skip_serializing_if = "Option::is_none")]
2035    pub protection_policy: Option<String>,
2036}
2037
2038/// <p><p>Object that describes a <a>StartGameSessionPlacement</a> request. This object includes the full details of the original request plus the current status and start/end time stamps.</p> <p>Game session placement-related operations include:</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul></p>
2039#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2040#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2041pub struct GameSessionPlacement {
2042    /// <p>DNS identifier assigned to the instance that is running the game session. Values have the following format:</p> <ul> <li> <p>TLS-enabled fleets: <code>&lt;unique identifier&gt;.&lt;region identifier&gt;.amazongamelift.com</code>.</p> </li> <li> <p>Non-TLS-enabled fleets: <code>ec2-&lt;unique identifier&gt;.compute.amazonaws.com</code>. (See <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses">Amazon EC2 Instance IP Addressing</a>.)</p> </li> </ul> <p>When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.</p>
2043    #[serde(rename = "DnsName")]
2044    #[serde(skip_serializing_if = "Option::is_none")]
2045    pub dns_name: Option<String>,
2046    /// <p>Time stamp indicating when this request was completed, canceled, or timed out.</p>
2047    #[serde(rename = "EndTime")]
2048    #[serde(skip_serializing_if = "Option::is_none")]
2049    pub end_time: Option<f64>,
2050    /// <p>Set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
2051    #[serde(rename = "GameProperties")]
2052    #[serde(skip_serializing_if = "Option::is_none")]
2053    pub game_properties: Option<Vec<GameProperty>>,
2054    /// <p>Identifier for the game session created by this placement request. This value is set once the new game session is placed (placement status is <code>FULFILLED</code>). This identifier is unique across all Regions. You can use this value as a <code>GameSessionId</code> value as needed.</p>
2055    #[serde(rename = "GameSessionArn")]
2056    #[serde(skip_serializing_if = "Option::is_none")]
2057    pub game_session_arn: Option<String>,
2058    /// <p>Set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
2059    #[serde(rename = "GameSessionData")]
2060    #[serde(skip_serializing_if = "Option::is_none")]
2061    pub game_session_data: Option<String>,
2062    /// <p>A unique identifier for the game session. This value is set once the new game session is placed (placement status is <code>FULFILLED</code>).</p>
2063    #[serde(rename = "GameSessionId")]
2064    #[serde(skip_serializing_if = "Option::is_none")]
2065    pub game_session_id: Option<String>,
2066    /// <p>A descriptive label that is associated with a game session. Session names do not need to be unique.</p>
2067    #[serde(rename = "GameSessionName")]
2068    #[serde(skip_serializing_if = "Option::is_none")]
2069    pub game_session_name: Option<String>,
2070    /// <p>A descriptive label that is associated with game session queue. Queue names must be unique within each Region.</p>
2071    #[serde(rename = "GameSessionQueueName")]
2072    #[serde(skip_serializing_if = "Option::is_none")]
2073    pub game_session_queue_name: Option<String>,
2074    /// <p>Name of the Region where the game session created by this placement request is running. This value is set once the new game session is placed (placement status is <code>FULFILLED</code>).</p>
2075    #[serde(rename = "GameSessionRegion")]
2076    #[serde(skip_serializing_if = "Option::is_none")]
2077    pub game_session_region: Option<String>,
2078    /// <p>IP address of the instance that is running the game session. When connecting to a Amazon GameLift game server, a client needs to reference an IP address (or DNS name) and port number. This value is set once the new game session is placed (placement status is <code>FULFILLED</code>). </p>
2079    #[serde(rename = "IpAddress")]
2080    #[serde(skip_serializing_if = "Option::is_none")]
2081    pub ip_address: Option<String>,
2082    /// <p>Information on the matchmaking process for this game. Data is in JSON syntax, formatted as a string. It identifies the matchmaking configuration used to create the match, and contains data on all players assigned to the match, including player attributes and team assignments. For more details on matchmaker data, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-server.html#match-server-data">Match Data</a>.</p>
2083    #[serde(rename = "MatchmakerData")]
2084    #[serde(skip_serializing_if = "Option::is_none")]
2085    pub matchmaker_data: Option<String>,
2086    /// <p>The maximum number of players that can be connected simultaneously to the game session.</p>
2087    #[serde(rename = "MaximumPlayerSessionCount")]
2088    #[serde(skip_serializing_if = "Option::is_none")]
2089    pub maximum_player_session_count: Option<i64>,
2090    /// <p>A collection of information on player sessions created in response to the game session placement request. These player sessions are created only once a new game session is successfully placed (placement status is <code>FULFILLED</code>). This information includes the player ID (as provided in the placement request) and the corresponding player session ID. Retrieve full player sessions by calling <a>DescribePlayerSessions</a> with the player session ID.</p>
2091    #[serde(rename = "PlacedPlayerSessions")]
2092    #[serde(skip_serializing_if = "Option::is_none")]
2093    pub placed_player_sessions: Option<Vec<PlacedPlayerSession>>,
2094    /// <p>A unique identifier for a game session placement.</p>
2095    #[serde(rename = "PlacementId")]
2096    #[serde(skip_serializing_if = "Option::is_none")]
2097    pub placement_id: Option<String>,
2098    /// <p>Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS Regions.</p>
2099    #[serde(rename = "PlayerLatencies")]
2100    #[serde(skip_serializing_if = "Option::is_none")]
2101    pub player_latencies: Option<Vec<PlayerLatency>>,
2102    /// <p>Port number for the game session. To connect to a Amazon GameLift game server, an app needs both the IP address and port number. This value is set once the new game session is placed (placement status is <code>FULFILLED</code>).</p>
2103    #[serde(rename = "Port")]
2104    #[serde(skip_serializing_if = "Option::is_none")]
2105    pub port: Option<i64>,
2106    /// <p>Time stamp indicating when this request was placed in the queue. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2107    #[serde(rename = "StartTime")]
2108    #[serde(skip_serializing_if = "Option::is_none")]
2109    pub start_time: Option<f64>,
2110    /// <p><p>Current status of the game session placement request.</p> <ul> <li> <p> <b>PENDING</b> -- The placement request is currently in the queue waiting to be processed.</p> </li> <li> <p> <b>FULFILLED</b> -- A new game session and player sessions (if requested) have been successfully created. Values for <i>GameSessionArn</i> and <i>GameSessionRegion</i> are available. </p> </li> <li> <p> <b>CANCELLED</b> -- The placement request was canceled with a call to <a>StopGameSessionPlacement</a>.</p> </li> <li> <p> <b>TIMED_OUT</b> -- A new game session was not successfully created before the time limit expired. You can resubmit the placement request as needed.</p> </li> <li> <p> <b>FAILED</b> -- GameLift is not able to complete the process of placing the game session. Common reasons are the game session terminated before the placement process was completed, or an unexpected internal error.</p> </li> </ul></p>
2111    #[serde(rename = "Status")]
2112    #[serde(skip_serializing_if = "Option::is_none")]
2113    pub status: Option<String>,
2114}
2115
2116/// <p><p>Configuration of a queue that is used to process game session placement requests. The queue configuration identifies several game features:</p> <ul> <li> <p>The destinations where a new game session can potentially be hosted. Amazon GameLift tries these destinations in an order based on either the queue&#39;s default order or player latency information, if provided in a placement request. With latency information, Amazon GameLift can place game sessions where the majority of players are reporting the lowest possible latency. </p> </li> <li> <p>The length of time that placement requests can wait in the queue before timing out. </p> </li> <li> <p>A set of optional latency policies that protect individual players from high latencies, preventing game sessions from being placed where any individual player is reporting latency higher than a policy&#39;s maximum.</p> </li> </ul> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
2117#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2118#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2119pub struct GameSessionQueue {
2120    /// <p>A list of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order.</p>
2121    #[serde(rename = "Destinations")]
2122    #[serde(skip_serializing_if = "Option::is_none")]
2123    pub destinations: Option<Vec<GameSessionQueueDestination>>,
2124    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift game session queue resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift game session queue ARN, the resource ID matches the <i>Name</i> value.</p>
2125    #[serde(rename = "GameSessionQueueArn")]
2126    #[serde(skip_serializing_if = "Option::is_none")]
2127    pub game_session_queue_arn: Option<String>,
2128    /// <p>A descriptive label that is associated with game session queue. Queue names must be unique within each Region.</p>
2129    #[serde(rename = "Name")]
2130    #[serde(skip_serializing_if = "Option::is_none")]
2131    pub name: Option<String>,
2132    /// <p>A collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, the policy is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. </p>
2133    #[serde(rename = "PlayerLatencyPolicies")]
2134    #[serde(skip_serializing_if = "Option::is_none")]
2135    pub player_latency_policies: Option<Vec<PlayerLatencyPolicy>>,
2136    /// <p>The maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a <code>TIMED_OUT</code> status.</p>
2137    #[serde(rename = "TimeoutInSeconds")]
2138    #[serde(skip_serializing_if = "Option::is_none")]
2139    pub timeout_in_seconds: Option<i64>,
2140}
2141
2142/// <p><p>Fleet designated in a game session queue. Requests for new game sessions in the queue are fulfilled by starting a new game session on any destination that is configured for a queue. </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
2143#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2144pub struct GameSessionQueueDestination {
2145    /// <p>The Amazon Resource Name (ARN) that is assigned to fleet or fleet alias. ARNs, which include a fleet ID or alias ID and a Region name, provide a unique identifier across all Regions. </p>
2146    #[serde(rename = "DestinationArn")]
2147    #[serde(skip_serializing_if = "Option::is_none")]
2148    pub destination_arn: Option<String>,
2149}
2150
2151/// <p>Represents the input for a request action.</p>
2152#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2153#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2154pub struct GetGameSessionLogUrlInput {
2155    /// <p>A unique identifier for the game session to get logs for. </p>
2156    #[serde(rename = "GameSessionId")]
2157    pub game_session_id: String,
2158}
2159
2160/// <p>Represents the returned data in response to a request action.</p>
2161#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2162#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2163pub struct GetGameSessionLogUrlOutput {
2164    /// <p>Location of the requested game session logs, available for download. This URL is valid for 15 minutes, after which S3 will reject any download request using this URL. You can request a new URL any time within the 14-day period that the logs are retained.</p>
2165    #[serde(rename = "PreSignedUrl")]
2166    #[serde(skip_serializing_if = "Option::is_none")]
2167    pub pre_signed_url: Option<String>,
2168}
2169
2170/// <p>Represents the input for a request action.</p>
2171#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2172#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2173pub struct GetInstanceAccessInput {
2174    /// <p>A unique identifier for a fleet that contains the instance you want access to. You can use either the fleet ID or ARN value. The fleet can be in any of the following statuses: <code>ACTIVATING</code>, <code>ACTIVE</code>, or <code>ERROR</code>. Fleets with an <code>ERROR</code> status may be accessible for a short time before they are deleted.</p>
2175    #[serde(rename = "FleetId")]
2176    pub fleet_id: String,
2177    /// <p>A unique identifier for an instance you want to get access to. You can access an instance in any status.</p>
2178    #[serde(rename = "InstanceId")]
2179    pub instance_id: String,
2180}
2181
2182/// <p>Represents the returned data in response to a request action.</p>
2183#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2184#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2185pub struct GetInstanceAccessOutput {
2186    /// <p>The connection information for a fleet instance, including IP address and access credentials.</p>
2187    #[serde(rename = "InstanceAccess")]
2188    #[serde(skip_serializing_if = "Option::is_none")]
2189    pub instance_access: Option<InstanceAccess>,
2190}
2191
2192/// <p>Properties that describe an instance of a virtual computing resource that hosts one or more game servers. A fleet may contain zero or more instances.</p>
2193#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2194#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2195pub struct Instance {
2196    /// <p>Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2197    #[serde(rename = "CreationTime")]
2198    #[serde(skip_serializing_if = "Option::is_none")]
2199    pub creation_time: Option<f64>,
2200    /// <p>DNS identifier assigned to the instance that is running the game session. Values have the following format:</p> <ul> <li> <p>TLS-enabled fleets: <code>&lt;unique identifier&gt;.&lt;region identifier&gt;.amazongamelift.com</code>.</p> </li> <li> <p>Non-TLS-enabled fleets: <code>ec2-&lt;unique identifier&gt;.compute.amazonaws.com</code>. (See <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses">Amazon EC2 Instance IP Addressing</a>.)</p> </li> </ul> <p>When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.</p>
2201    #[serde(rename = "DnsName")]
2202    #[serde(skip_serializing_if = "Option::is_none")]
2203    pub dns_name: Option<String>,
2204    /// <p>A unique identifier for a fleet that the instance is in.</p>
2205    #[serde(rename = "FleetId")]
2206    #[serde(skip_serializing_if = "Option::is_none")]
2207    pub fleet_id: Option<String>,
2208    /// <p>A unique identifier for an instance.</p>
2209    #[serde(rename = "InstanceId")]
2210    #[serde(skip_serializing_if = "Option::is_none")]
2211    pub instance_id: Option<String>,
2212    /// <p>IP address that is assigned to the instance.</p>
2213    #[serde(rename = "IpAddress")]
2214    #[serde(skip_serializing_if = "Option::is_none")]
2215    pub ip_address: Option<String>,
2216    /// <p>Operating system that is running on this instance. </p>
2217    #[serde(rename = "OperatingSystem")]
2218    #[serde(skip_serializing_if = "Option::is_none")]
2219    pub operating_system: Option<String>,
2220    /// <p><p>Current status of the instance. Possible statuses include the following:</p> <ul> <li> <p> <b>PENDING</b> -- The instance is in the process of being created and launching server processes as defined in the fleet&#39;s run-time configuration. </p> </li> <li> <p> <b>ACTIVE</b> -- The instance has been successfully created and at least one server process has successfully launched and reported back to Amazon GameLift that it is ready to host a game session. The instance is now considered ready to host game sessions. </p> </li> <li> <p> <b>TERMINATING</b> -- The instance is in the process of shutting down. This may happen to reduce capacity during a scaling down event or to recycle resources in the event of a problem.</p> </li> </ul></p>
2221    #[serde(rename = "Status")]
2222    #[serde(skip_serializing_if = "Option::is_none")]
2223    pub status: Option<String>,
2224    /// <p>EC2 instance type that defines the computing resources of this instance. </p>
2225    #[serde(rename = "Type")]
2226    #[serde(skip_serializing_if = "Option::is_none")]
2227    pub type_: Option<String>,
2228}
2229
2230/// <p>Information required to remotely connect to a fleet instance. Access is requested by calling <a>GetInstanceAccess</a>. </p>
2231#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2232#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2233pub struct InstanceAccess {
2234    /// <p>Credentials required to access the instance.</p>
2235    #[serde(rename = "Credentials")]
2236    #[serde(skip_serializing_if = "Option::is_none")]
2237    pub credentials: Option<InstanceCredentials>,
2238    /// <p>A unique identifier for a fleet containing the instance being accessed.</p>
2239    #[serde(rename = "FleetId")]
2240    #[serde(skip_serializing_if = "Option::is_none")]
2241    pub fleet_id: Option<String>,
2242    /// <p>A unique identifier for an instance being accessed.</p>
2243    #[serde(rename = "InstanceId")]
2244    #[serde(skip_serializing_if = "Option::is_none")]
2245    pub instance_id: Option<String>,
2246    /// <p>IP address that is assigned to the instance.</p>
2247    #[serde(rename = "IpAddress")]
2248    #[serde(skip_serializing_if = "Option::is_none")]
2249    pub ip_address: Option<String>,
2250    /// <p>Operating system that is running on the instance.</p>
2251    #[serde(rename = "OperatingSystem")]
2252    #[serde(skip_serializing_if = "Option::is_none")]
2253    pub operating_system: Option<String>,
2254}
2255
2256/// <p>Set of credentials required to remotely access a fleet instance. Access credentials are requested by calling <a>GetInstanceAccess</a> and returned in an <a>InstanceAccess</a> object.</p>
2257#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2258#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2259pub struct InstanceCredentials {
2260    /// <p>Secret string. For Windows instances, the secret is a password for use with Windows Remote Desktop. For Linux instances, it is a private key (which must be saved as a <code>.pem</code> file) for use with SSH.</p>
2261    #[serde(rename = "Secret")]
2262    #[serde(skip_serializing_if = "Option::is_none")]
2263    pub secret: Option<String>,
2264    /// <p>User login string.</p>
2265    #[serde(rename = "UserName")]
2266    #[serde(skip_serializing_if = "Option::is_none")]
2267    pub user_name: Option<String>,
2268}
2269
2270/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>An allowed instance type for your game server group. GameLift FleetIQ periodically evaluates each defined instance type for viability. It then updates the Auto Scaling group with the list of viable instance types.</p>
2271#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2272pub struct InstanceDefinition {
2273    /// <p>An EC2 instance type designation.</p>
2274    #[serde(rename = "InstanceType")]
2275    pub instance_type: String,
2276    /// <p>Instance weighting that indicates how much this instance type contributes to the total capacity of a game server group. Instance weights are used by GameLift FleetIQ to calculate the instance type's cost per unit hour and better identify the most cost-effective options. For detailed information on weighting instance capacity, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-weighting.html">Instance Weighting</a> in the <i>Amazon EC2 Auto Scaling User Guide</i>. Default value is "1".</p>
2277    #[serde(rename = "WeightedCapacity")]
2278    #[serde(skip_serializing_if = "Option::is_none")]
2279    pub weighted_capacity: Option<String>,
2280}
2281
2282/// <p>A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an Amazon GameLift hosting resource. New game sessions that are started on the fleet are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. For fleets created with a custom game server, the ranges reflect the server's game session assignments. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP for use by the Realtime servers.</p>
2283#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2284pub struct IpPermission {
2285    /// <p>A starting value for a range of allowed port numbers.</p>
2286    #[serde(rename = "FromPort")]
2287    pub from_port: i64,
2288    /// <p>A range of allowed IP addresses. This value must be expressed in CIDR notation. Example: "<code>000.000.000.000/[subnet mask]</code>" or optionally the shortened version "<code>0.0.0.0/[subnet mask]</code>".</p>
2289    #[serde(rename = "IpRange")]
2290    pub ip_range: String,
2291    /// <p>The network communication protocol used by the fleet.</p>
2292    #[serde(rename = "Protocol")]
2293    pub protocol: String,
2294    /// <p>An ending value for a range of allowed port numbers. Port numbers are end-inclusive. This value must be higher than <code>FromPort</code>.</p>
2295    #[serde(rename = "ToPort")]
2296    pub to_port: i64,
2297}
2298
2299/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>An EC2 launch template that contains configuration settings and game server code to be deployed to all instances in a game server group. </p>
2300#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2301#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2302pub struct LaunchTemplateSpecification {
2303    /// <p>A unique identifier for an existing EC2 launch template.</p>
2304    #[serde(rename = "LaunchTemplateId")]
2305    #[serde(skip_serializing_if = "Option::is_none")]
2306    pub launch_template_id: Option<String>,
2307    /// <p>A readable identifier for an existing EC2 launch template. </p>
2308    #[serde(rename = "LaunchTemplateName")]
2309    #[serde(skip_serializing_if = "Option::is_none")]
2310    pub launch_template_name: Option<String>,
2311    /// <p>The version of the EC2 launch template to use. If no version is specified, the default version will be used. EC2 allows you to specify a default version for a launch template, if none is set, the default is the first version created.</p>
2312    #[serde(rename = "Version")]
2313    #[serde(skip_serializing_if = "Option::is_none")]
2314    pub version: Option<String>,
2315}
2316
2317/// <p>Represents the input for a request action.</p>
2318#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2319#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2320pub struct ListAliasesInput {
2321    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2322    #[serde(rename = "Limit")]
2323    #[serde(skip_serializing_if = "Option::is_none")]
2324    pub limit: Option<i64>,
2325    /// <p>A descriptive label that is associated with an alias. Alias names do not need to be unique.</p>
2326    #[serde(rename = "Name")]
2327    #[serde(skip_serializing_if = "Option::is_none")]
2328    pub name: Option<String>,
2329    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2330    #[serde(rename = "NextToken")]
2331    #[serde(skip_serializing_if = "Option::is_none")]
2332    pub next_token: Option<String>,
2333    /// <p><p>The routing type to filter results on. Use this parameter to retrieve only aliases with a certain routing type. To retrieve all aliases, leave this parameter empty.</p> <p>Possible routing types include the following:</p> <ul> <li> <p> <b>SIMPLE</b> -- The alias resolves to one specific fleet. Use this type when routing to active fleets.</p> </li> <li> <p> <b>TERMINAL</b> -- The alias does not resolve to a fleet but instead can be used to display a message to the user. A terminal alias throws a TerminalRoutingStrategyException with the <a>RoutingStrategy</a> message embedded.</p> </li> </ul></p>
2334    #[serde(rename = "RoutingStrategyType")]
2335    #[serde(skip_serializing_if = "Option::is_none")]
2336    pub routing_strategy_type: Option<String>,
2337}
2338
2339/// <p>Represents the returned data in response to a request action.</p>
2340#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2341#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2342pub struct ListAliasesOutput {
2343    /// <p>A collection of alias resources that match the request parameters.</p>
2344    #[serde(rename = "Aliases")]
2345    #[serde(skip_serializing_if = "Option::is_none")]
2346    pub aliases: Option<Vec<Alias>>,
2347    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2348    #[serde(rename = "NextToken")]
2349    #[serde(skip_serializing_if = "Option::is_none")]
2350    pub next_token: Option<String>,
2351}
2352
2353/// <p>Represents the input for a request action.</p>
2354#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2355#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2356pub struct ListBuildsInput {
2357    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2358    #[serde(rename = "Limit")]
2359    #[serde(skip_serializing_if = "Option::is_none")]
2360    pub limit: Option<i64>,
2361    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2362    #[serde(rename = "NextToken")]
2363    #[serde(skip_serializing_if = "Option::is_none")]
2364    pub next_token: Option<String>,
2365    /// <p><p>Build status to filter results by. To retrieve all builds, leave this parameter empty.</p> <p>Possible build statuses include the following:</p> <ul> <li> <p> <b>INITIALIZED</b> -- A new build has been defined, but no files have been uploaded. You cannot create fleets for builds that are in this status. When a build is successfully created, the build status is set to this value. </p> </li> <li> <p> <b>READY</b> -- The game build has been successfully uploaded. You can now create new fleets for this build.</p> </li> <li> <p> <b>FAILED</b> -- The game build upload failed. You cannot create new fleets for this build. </p> </li> </ul></p>
2366    #[serde(rename = "Status")]
2367    #[serde(skip_serializing_if = "Option::is_none")]
2368    pub status: Option<String>,
2369}
2370
2371/// <p>Represents the returned data in response to a request action.</p>
2372#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2373#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2374pub struct ListBuildsOutput {
2375    /// <p>A collection of build resources that match the request.</p>
2376    #[serde(rename = "Builds")]
2377    #[serde(skip_serializing_if = "Option::is_none")]
2378    pub builds: Option<Vec<Build>>,
2379    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2380    #[serde(rename = "NextToken")]
2381    #[serde(skip_serializing_if = "Option::is_none")]
2382    pub next_token: Option<String>,
2383}
2384
2385/// <p>Represents the input for a request action.</p>
2386#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2387#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2388pub struct ListFleetsInput {
2389    /// <p>A unique identifier for a build to return fleets for. Use this parameter to return only fleets using a specified build. Use either the build ID or ARN value. To retrieve all fleets, do not include either a BuildId and ScriptID parameter.</p>
2390    #[serde(rename = "BuildId")]
2391    #[serde(skip_serializing_if = "Option::is_none")]
2392    pub build_id: Option<String>,
2393    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2394    #[serde(rename = "Limit")]
2395    #[serde(skip_serializing_if = "Option::is_none")]
2396    pub limit: Option<i64>,
2397    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2398    #[serde(rename = "NextToken")]
2399    #[serde(skip_serializing_if = "Option::is_none")]
2400    pub next_token: Option<String>,
2401    /// <p>A unique identifier for a Realtime script to return fleets for. Use this parameter to return only fleets using a specified script. Use either the script ID or ARN value. To retrieve all fleets, leave this parameter empty.</p>
2402    #[serde(rename = "ScriptId")]
2403    #[serde(skip_serializing_if = "Option::is_none")]
2404    pub script_id: Option<String>,
2405}
2406
2407/// <p>Represents the returned data in response to a request action.</p>
2408#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2409#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2410pub struct ListFleetsOutput {
2411    /// <p>Set of fleet IDs matching the list request. You can retrieve additional information about all returned fleets by passing this result set to a call to <a>DescribeFleetAttributes</a>, <a>DescribeFleetCapacity</a>, or <a>DescribeFleetUtilization</a>.</p>
2412    #[serde(rename = "FleetIds")]
2413    #[serde(skip_serializing_if = "Option::is_none")]
2414    pub fleet_ids: Option<Vec<String>>,
2415    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2416    #[serde(rename = "NextToken")]
2417    #[serde(skip_serializing_if = "Option::is_none")]
2418    pub next_token: Option<String>,
2419}
2420
2421#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2422#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2423pub struct ListGameServerGroupsInput {
2424    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2425    #[serde(rename = "Limit")]
2426    #[serde(skip_serializing_if = "Option::is_none")]
2427    pub limit: Option<i64>,
2428    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2429    #[serde(rename = "NextToken")]
2430    #[serde(skip_serializing_if = "Option::is_none")]
2431    pub next_token: Option<String>,
2432}
2433
2434#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2435#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2436pub struct ListGameServerGroupsOutput {
2437    /// <p>A collection of game server group objects that match the request.</p>
2438    #[serde(rename = "GameServerGroups")]
2439    #[serde(skip_serializing_if = "Option::is_none")]
2440    pub game_server_groups: Option<Vec<GameServerGroup>>,
2441    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2442    #[serde(rename = "NextToken")]
2443    #[serde(skip_serializing_if = "Option::is_none")]
2444    pub next_token: Option<String>,
2445}
2446
2447#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2448#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2449pub struct ListGameServersInput {
2450    /// <p>An identifier for the game server group for the game server you want to list. Use either the <a>GameServerGroup</a> name or ARN value.</p>
2451    #[serde(rename = "GameServerGroupName")]
2452    pub game_server_group_name: String,
2453    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2454    #[serde(rename = "Limit")]
2455    #[serde(skip_serializing_if = "Option::is_none")]
2456    pub limit: Option<i64>,
2457    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2458    #[serde(rename = "NextToken")]
2459    #[serde(skip_serializing_if = "Option::is_none")]
2460    pub next_token: Option<String>,
2461    /// <p>Indicates how to sort the returned data based on the game servers' custom key sort value. If this parameter is left empty, the list of game servers is returned in no particular order.</p>
2462    #[serde(rename = "SortOrder")]
2463    #[serde(skip_serializing_if = "Option::is_none")]
2464    pub sort_order: Option<String>,
2465}
2466
2467#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2468#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2469pub struct ListGameServersOutput {
2470    /// <p>A collection of game server objects that match the request.</p>
2471    #[serde(rename = "GameServers")]
2472    #[serde(skip_serializing_if = "Option::is_none")]
2473    pub game_servers: Option<Vec<GameServer>>,
2474    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2475    #[serde(rename = "NextToken")]
2476    #[serde(skip_serializing_if = "Option::is_none")]
2477    pub next_token: Option<String>,
2478}
2479
2480#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2481#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2482pub struct ListScriptsInput {
2483    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages.</p>
2484    #[serde(rename = "Limit")]
2485    #[serde(skip_serializing_if = "Option::is_none")]
2486    pub limit: Option<i64>,
2487    /// <p>A token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
2488    #[serde(rename = "NextToken")]
2489    #[serde(skip_serializing_if = "Option::is_none")]
2490    pub next_token: Option<String>,
2491}
2492
2493#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2494#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2495pub struct ListScriptsOutput {
2496    /// <p>A token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
2497    #[serde(rename = "NextToken")]
2498    #[serde(skip_serializing_if = "Option::is_none")]
2499    pub next_token: Option<String>,
2500    /// <p>A set of properties describing the requested script.</p>
2501    #[serde(rename = "Scripts")]
2502    #[serde(skip_serializing_if = "Option::is_none")]
2503    pub scripts: Option<Vec<Script>>,
2504}
2505
2506#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2507#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2508pub struct ListTagsForResourceRequest {
2509    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) that is assigned to and uniquely identifies the GameLift resource that you want to retrieve tags for. GameLift resource ARNs are included in the data object for the resource, which can be retrieved by calling a List or Describe action for the resource type. </p>
2510    #[serde(rename = "ResourceARN")]
2511    pub resource_arn: String,
2512}
2513
2514#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2515#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2516pub struct ListTagsForResourceResponse {
2517    /// <p> The collection of tags that have been assigned to the specified resource. </p>
2518    #[serde(rename = "Tags")]
2519    #[serde(skip_serializing_if = "Option::is_none")]
2520    pub tags: Option<Vec<Tag>>,
2521}
2522
2523/// <p>Represents a new player session that is created as a result of a successful FlexMatch match. A successful match automatically creates new player sessions for every player ID in the original matchmaking request. </p> <p>When players connect to the match's game session, they must include both player ID and player session ID in order to claim their assigned player slot.</p>
2524#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2525#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2526pub struct MatchedPlayerSession {
2527    /// <p>A unique identifier for a player </p>
2528    #[serde(rename = "PlayerId")]
2529    #[serde(skip_serializing_if = "Option::is_none")]
2530    pub player_id: Option<String>,
2531    /// <p>A unique identifier for a player session</p>
2532    #[serde(rename = "PlayerSessionId")]
2533    #[serde(skip_serializing_if = "Option::is_none")]
2534    pub player_session_id: Option<String>,
2535}
2536
2537/// <p>Guidelines for use with FlexMatch to match players into games. All matchmaking requests must specify a matchmaking configuration.</p>
2538#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2539#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2540pub struct MatchmakingConfiguration {
2541    /// <p>A flag that indicates whether a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to TRUE.</p>
2542    #[serde(rename = "AcceptanceRequired")]
2543    #[serde(skip_serializing_if = "Option::is_none")]
2544    pub acceptance_required: Option<bool>,
2545    /// <p>The length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match.</p>
2546    #[serde(rename = "AcceptanceTimeoutSeconds")]
2547    #[serde(skip_serializing_if = "Option::is_none")]
2548    pub acceptance_timeout_seconds: Option<i64>,
2549    /// <p>The number of player slots in a match to keep open for future players. For example, assume that the configuration's rule set specifies a match for a single 12-person team. If the additional player count is set to 2, only 10 players are initially selected for the match.</p>
2550    #[serde(rename = "AdditionalPlayerCount")]
2551    #[serde(skip_serializing_if = "Option::is_none")]
2552    pub additional_player_count: Option<i64>,
2553    /// <p>The method used to backfill game sessions created with this matchmaking configuration. MANUAL indicates that the game makes backfill requests or does not use the match backfill feature. AUTOMATIC indicates that GameLift creates <a>StartMatchBackfill</a> requests whenever a game session has one or more open slots. Learn more about manual and automatic backfill in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html">Backfill Existing Games with FlexMatch</a>.</p>
2554    #[serde(rename = "BackfillMode")]
2555    #[serde(skip_serializing_if = "Option::is_none")]
2556    pub backfill_mode: Option<String>,
2557    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift matchmaking configuration resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift configuration ARN, the resource ID matches the <i>Name</i> value.</p>
2558    #[serde(rename = "ConfigurationArn")]
2559    #[serde(skip_serializing_if = "Option::is_none")]
2560    pub configuration_arn: Option<String>,
2561    /// <p>The time stamp indicating when this data object was created. The format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2562    #[serde(rename = "CreationTime")]
2563    #[serde(skip_serializing_if = "Option::is_none")]
2564    pub creation_time: Option<f64>,
2565    /// <p>Information to attach to all events related to the matchmaking configuration. </p>
2566    #[serde(rename = "CustomEventData")]
2567    #[serde(skip_serializing_if = "Option::is_none")]
2568    pub custom_event_data: Option<String>,
2569    /// <p>A descriptive label that is associated with matchmaking configuration.</p>
2570    #[serde(rename = "Description")]
2571    #[serde(skip_serializing_if = "Option::is_none")]
2572    pub description: Option<String>,
2573    /// <p>A set of custom properties for a game session, formatted as key-value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match. </p>
2574    #[serde(rename = "GameProperties")]
2575    #[serde(skip_serializing_if = "Option::is_none")]
2576    pub game_properties: Option<Vec<GameProperty>>,
2577    /// <p>A set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match. </p>
2578    #[serde(rename = "GameSessionData")]
2579    #[serde(skip_serializing_if = "Option::is_none")]
2580    pub game_session_data: Option<String>,
2581    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift game session queue resource and uniquely identifies it. ARNs are unique across all Regions. GameLift uses the listed queues when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any Region.</p>
2582    #[serde(rename = "GameSessionQueueArns")]
2583    #[serde(skip_serializing_if = "Option::is_none")]
2584    pub game_session_queue_arns: Option<Vec<String>>,
2585    /// <p>A unique identifier for a matchmaking configuration. This name is used to identify the configuration associated with a matchmaking request or ticket.</p>
2586    #[serde(rename = "Name")]
2587    #[serde(skip_serializing_if = "Option::is_none")]
2588    pub name: Option<String>,
2589    /// <p>An SNS topic ARN that is set up to receive matchmaking notifications.</p>
2590    #[serde(rename = "NotificationTarget")]
2591    #[serde(skip_serializing_if = "Option::is_none")]
2592    pub notification_target: Option<String>,
2593    /// <p>The maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that fail due to timing out can be resubmitted as needed.</p>
2594    #[serde(rename = "RequestTimeoutSeconds")]
2595    #[serde(skip_serializing_if = "Option::is_none")]
2596    pub request_timeout_seconds: Option<i64>,
2597    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift matchmaking rule set resource that this configuration uses.</p>
2598    #[serde(rename = "RuleSetArn")]
2599    #[serde(skip_serializing_if = "Option::is_none")]
2600    pub rule_set_arn: Option<String>,
2601    /// <p>A unique identifier for a matchmaking rule set to use with this configuration. A matchmaking configuration can only use rule sets that are defined in the same Region.</p>
2602    #[serde(rename = "RuleSetName")]
2603    #[serde(skip_serializing_if = "Option::is_none")]
2604    pub rule_set_name: Option<String>,
2605}
2606
2607/// <p><p>Set of rule statements, used with FlexMatch, that determine how to build your player matches. Each rule set describes a type of group to be created and defines the parameters for acceptable player matches. Rule sets are used in <a>MatchmakingConfiguration</a> objects.</p> <p>A rule set may define the following elements for a match. For detailed information and examples showing how to construct a rule set, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a FlexMatch Rule Set</a>. </p> <ul> <li> <p>Teams -- Required. A rule set must define one or multiple teams for the match and set minimum and maximum team sizes. For example, a rule set might describe a 4x4 match that requires all eight slots to be filled. </p> </li> <li> <p>Player attributes -- Optional. These attributes specify a set of player characteristics to evaluate when looking for a match. Matchmaking requests that use a rule set with player attributes must provide the corresponding attribute values. For example, an attribute might specify a player&#39;s skill or level.</p> </li> <li> <p>Rules -- Optional. Rules define how to evaluate potential players for a match based on player attributes. A rule might specify minimum requirements for individual players, teams, or entire matches. For example, a rule might require each player to meet a certain skill level, each team to have at least one player in a certain role, or the match to have a minimum average skill level. or may describe an entire group--such as all teams must be evenly matched or have at least one player in a certain role. </p> </li> <li> <p>Expansions -- Optional. Expansions allow you to relax the rules after a period of time when no acceptable matches are found. This feature lets you balance getting players into games in a reasonable amount of time instead of making them wait indefinitely for the best possible match. For example, you might use an expansion to increase the maximum skill variance between players after 30 seconds.</p> </li> </ul></p>
2608#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2609#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2610pub struct MatchmakingRuleSet {
2611    /// <p>The time stamp indicating when this data object was created. The format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2612    #[serde(rename = "CreationTime")]
2613    #[serde(skip_serializing_if = "Option::is_none")]
2614    pub creation_time: Option<f64>,
2615    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift matchmaking rule set resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift rule set ARN, the resource ID matches the <i>RuleSetName</i> value.</p>
2616    #[serde(rename = "RuleSetArn")]
2617    #[serde(skip_serializing_if = "Option::is_none")]
2618    pub rule_set_arn: Option<String>,
2619    /// <p>A collection of matchmaking rules, formatted as a JSON string. Comments are not allowed in JSON, but most elements support a description field.</p>
2620    #[serde(rename = "RuleSetBody")]
2621    pub rule_set_body: String,
2622    /// <p>A unique identifier for a matchmaking rule set</p>
2623    #[serde(rename = "RuleSetName")]
2624    #[serde(skip_serializing_if = "Option::is_none")]
2625    pub rule_set_name: Option<String>,
2626}
2627
2628/// <p>Ticket generated to track the progress of a matchmaking request. Each ticket is uniquely identified by a ticket ID, supplied by the requester, when creating a matchmaking request with <a>StartMatchmaking</a>. Tickets can be retrieved by calling <a>DescribeMatchmaking</a> with the ticket ID.</p>
2629#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2630#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2631pub struct MatchmakingTicket {
2632    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift matchmaking configuration resource that is used with this ticket.</p>
2633    #[serde(rename = "ConfigurationArn")]
2634    #[serde(skip_serializing_if = "Option::is_none")]
2635    pub configuration_arn: Option<String>,
2636    /// <p>Name of the <a>MatchmakingConfiguration</a> that is used with this ticket. Matchmaking configurations determine how players are grouped into a match and how a new game session is created for the match.</p>
2637    #[serde(rename = "ConfigurationName")]
2638    #[serde(skip_serializing_if = "Option::is_none")]
2639    pub configuration_name: Option<String>,
2640    /// <p>Time stamp indicating when this matchmaking request stopped being processed due to success, failure, or cancellation. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2641    #[serde(rename = "EndTime")]
2642    #[serde(skip_serializing_if = "Option::is_none")]
2643    pub end_time: Option<f64>,
2644    /// <p>Average amount of time (in seconds) that players are currently waiting for a match. If there is not enough recent data, this property may be empty.</p>
2645    #[serde(rename = "EstimatedWaitTime")]
2646    #[serde(skip_serializing_if = "Option::is_none")]
2647    pub estimated_wait_time: Option<i64>,
2648    /// <p>Identifier and connection information of the game session created for the match. This information is added to the ticket only after the matchmaking request has been successfully completed.</p>
2649    #[serde(rename = "GameSessionConnectionInfo")]
2650    #[serde(skip_serializing_if = "Option::is_none")]
2651    pub game_session_connection_info: Option<GameSessionConnectionInfo>,
2652    /// <p>A set of <code>Player</code> objects, each representing a player to find matches for. Players are identified by a unique player ID and may include latency data for use during matchmaking. If the ticket is in status <code>COMPLETED</code>, the <code>Player</code> objects include the team the players were assigned to in the resulting match.</p>
2653    #[serde(rename = "Players")]
2654    #[serde(skip_serializing_if = "Option::is_none")]
2655    pub players: Option<Vec<Player>>,
2656    /// <p>Time stamp indicating when this matchmaking request was received. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2657    #[serde(rename = "StartTime")]
2658    #[serde(skip_serializing_if = "Option::is_none")]
2659    pub start_time: Option<f64>,
2660    /// <p><p>Current status of the matchmaking request.</p> <ul> <li> <p> <b>QUEUED</b> -- The matchmaking request has been received and is currently waiting to be processed.</p> </li> <li> <p> <b>SEARCHING</b> -- The matchmaking request is currently being processed. </p> </li> <li> <p> <b>REQUIRES<em>ACCEPTANCE</b> -- A match has been proposed and the players must accept the match (see <a>AcceptMatch</a>). This status is used only with requests that use a matchmaking configuration with a player acceptance requirement.</p> </li> <li> <p> <b>PLACING</b> -- The FlexMatch engine has matched players and is in the process of placing a new game session for the match.</p> </li> <li> <p> <b>COMPLETED</b> -- Players have been matched and a game session is ready to host the players. A ticket in this state contains the necessary connection information for players.</p> </li> <li> <p> <b>FAILED</b> -- The matchmaking request was not completed.</p> </li> <li> <p> <b>CANCELLED</b> -- The matchmaking request was canceled. This may be the result of a call to <a>StopMatchmaking</a> or a proposed match that one or more players failed to accept.</p> </li> <li> <p> <b>TIMED</em>OUT</b> -- The matchmaking request was not successful within the duration specified in the matchmaking configuration. </p> </li> </ul> <note> <p>Matchmaking requests that fail to successfully complete (statuses FAILED, CANCELLED, TIMED_OUT) can be resubmitted as new requests with new ticket IDs.</p> </note></p>
2661    #[serde(rename = "Status")]
2662    #[serde(skip_serializing_if = "Option::is_none")]
2663    pub status: Option<String>,
2664    /// <p>Additional information about the current status.</p>
2665    #[serde(rename = "StatusMessage")]
2666    #[serde(skip_serializing_if = "Option::is_none")]
2667    pub status_message: Option<String>,
2668    /// <p>Code to explain the current status. For example, a status reason may indicate when a ticket has returned to <code>SEARCHING</code> status after a proposed match fails to receive player acceptances.</p>
2669    #[serde(rename = "StatusReason")]
2670    #[serde(skip_serializing_if = "Option::is_none")]
2671    pub status_reason: Option<String>,
2672    /// <p>A unique identifier for a matchmaking ticket.</p>
2673    #[serde(rename = "TicketId")]
2674    #[serde(skip_serializing_if = "Option::is_none")]
2675    pub ticket_id: Option<String>,
2676}
2677
2678/// <p><p>Information about a player session that was created as part of a <a>StartGameSessionPlacement</a> request. This object contains only the player ID and player session ID. To retrieve full details on a player session, call <a>DescribePlayerSessions</a> with the player session ID.</p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
2679#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2680#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2681pub struct PlacedPlayerSession {
2682    /// <p>A unique identifier for a player that is associated with this player session.</p>
2683    #[serde(rename = "PlayerId")]
2684    #[serde(skip_serializing_if = "Option::is_none")]
2685    pub player_id: Option<String>,
2686    /// <p>A unique identifier for a player session.</p>
2687    #[serde(rename = "PlayerSessionId")]
2688    #[serde(skip_serializing_if = "Option::is_none")]
2689    pub player_session_id: Option<String>,
2690}
2691
2692/// <p>Represents a player in matchmaking. When starting a matchmaking request, a player has a player ID, attributes, and may have latency data. Team information is added after a match has been successfully completed.</p>
2693#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2694pub struct Player {
2695    /// <p>Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS Regions. If this property is present, FlexMatch considers placing the match only in Regions for which latency is reported. </p> <p>If a matchmaker has a rule that evaluates player latency, players must report latency in order to be matched. If no latency is reported in this scenario, FlexMatch assumes that no Regions are available to the player and the ticket is not matchable. </p>
2696    #[serde(rename = "LatencyInMs")]
2697    #[serde(skip_serializing_if = "Option::is_none")]
2698    pub latency_in_ms: Option<::std::collections::HashMap<String, i64>>,
2699    /// <p>A collection of key:value pairs containing player information for use in matchmaking. Player attribute keys must match the <i>playerAttributes</i> used in a matchmaking rule set. Example: <code>"PlayerAttributes": {"skill": {"N": "23"}, "gameMode": {"S": "deathmatch"}}</code>.</p>
2700    #[serde(rename = "PlayerAttributes")]
2701    #[serde(skip_serializing_if = "Option::is_none")]
2702    pub player_attributes: Option<::std::collections::HashMap<String, AttributeValue>>,
2703    /// <p>A unique identifier for a player</p>
2704    #[serde(rename = "PlayerId")]
2705    #[serde(skip_serializing_if = "Option::is_none")]
2706    pub player_id: Option<String>,
2707    /// <p>Name of the team that the player is assigned to in a match. Team names are defined in a matchmaking rule set.</p>
2708    #[serde(rename = "Team")]
2709    #[serde(skip_serializing_if = "Option::is_none")]
2710    pub team: Option<String>,
2711}
2712
2713/// <p>Regional latency information for a player, used when requesting a new game session with <a>StartGameSessionPlacement</a>. This value indicates the amount of time lag that exists when the player is connected to a fleet in the specified Region. The relative difference between a player's latency values for multiple Regions are used to determine which fleets are best suited to place a new game session for the player. </p>
2714#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2715pub struct PlayerLatency {
2716    /// <p>Amount of time that represents the time lag experienced by the player when connected to the specified Region.</p>
2717    #[serde(rename = "LatencyInMilliseconds")]
2718    #[serde(skip_serializing_if = "Option::is_none")]
2719    pub latency_in_milliseconds: Option<f32>,
2720    /// <p>A unique identifier for a player associated with the latency data.</p>
2721    #[serde(rename = "PlayerId")]
2722    #[serde(skip_serializing_if = "Option::is_none")]
2723    pub player_id: Option<String>,
2724    /// <p>Name of the Region that is associated with the latency value.</p>
2725    #[serde(rename = "RegionIdentifier")]
2726    #[serde(skip_serializing_if = "Option::is_none")]
2727    pub region_identifier: Option<String>,
2728}
2729
2730/// <p><p>Queue setting that determines the highest latency allowed for individual players when placing a game session. When a latency policy is in force, a game session cannot be placed with any fleet in a Region where a player reports latency higher than the cap. Latency policies are only enforced when the placement request contains player latency information.</p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
2731#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2732pub struct PlayerLatencyPolicy {
2733    /// <p>The maximum latency value that is allowed for any player, in milliseconds. All policies must have a value set for this property.</p>
2734    #[serde(rename = "MaximumIndividualPlayerLatencyMilliseconds")]
2735    #[serde(skip_serializing_if = "Option::is_none")]
2736    pub maximum_individual_player_latency_milliseconds: Option<i64>,
2737    /// <p>The length of time, in seconds, that the policy is enforced while placing a new game session. A null value for this property means that the policy is enforced until the queue times out.</p>
2738    #[serde(rename = "PolicyDurationSeconds")]
2739    #[serde(skip_serializing_if = "Option::is_none")]
2740    pub policy_duration_seconds: Option<i64>,
2741}
2742
2743/// <p><p>Properties describing a player session. Player session objects are created either by creating a player session for a specific game session, or as part of a game session placement. A player session represents either a player reservation for a game session (status <code>RESERVED</code>) or actual player activity in a game session (status <code>ACTIVE</code>). A player session object (including player data) is automatically passed to a game session when the player connects to the game session and is validated.</p> <p>When a player disconnects, the player session status changes to <code>COMPLETED</code>. Once the session ends, the player session object is retained for 30 days and then removed.</p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
2744#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2745#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2746pub struct PlayerSession {
2747    /// <p>Time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2748    #[serde(rename = "CreationTime")]
2749    #[serde(skip_serializing_if = "Option::is_none")]
2750    pub creation_time: Option<f64>,
2751    /// <p>DNS identifier assigned to the instance that is running the game session. Values have the following format:</p> <ul> <li> <p>TLS-enabled fleets: <code>&lt;unique identifier&gt;.&lt;region identifier&gt;.amazongamelift.com</code>.</p> </li> <li> <p>Non-TLS-enabled fleets: <code>ec2-&lt;unique identifier&gt;.compute.amazonaws.com</code>. (See <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses">Amazon EC2 Instance IP Addressing</a>.)</p> </li> </ul> <p>When connecting to a game session that is running on a TLS-enabled fleet, you must use the DNS name, not the IP address.</p>
2752    #[serde(rename = "DnsName")]
2753    #[serde(skip_serializing_if = "Option::is_none")]
2754    pub dns_name: Option<String>,
2755    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift fleet that the player's game session is running on. </p>
2756    #[serde(rename = "FleetArn")]
2757    #[serde(skip_serializing_if = "Option::is_none")]
2758    pub fleet_arn: Option<String>,
2759    /// <p>A unique identifier for a fleet that the player's game session is running on.</p>
2760    #[serde(rename = "FleetId")]
2761    #[serde(skip_serializing_if = "Option::is_none")]
2762    pub fleet_id: Option<String>,
2763    /// <p>A unique identifier for the game session that the player session is connected to.</p>
2764    #[serde(rename = "GameSessionId")]
2765    #[serde(skip_serializing_if = "Option::is_none")]
2766    pub game_session_id: Option<String>,
2767    /// <p>IP address of the instance that is running the game session. When connecting to a Amazon GameLift game server, a client needs to reference an IP address (or DNS name) and port number.</p>
2768    #[serde(rename = "IpAddress")]
2769    #[serde(skip_serializing_if = "Option::is_none")]
2770    pub ip_address: Option<String>,
2771    /// <p>Developer-defined information related to a player. Amazon GameLift does not use this data, so it can be formatted as needed for use in the game. </p>
2772    #[serde(rename = "PlayerData")]
2773    #[serde(skip_serializing_if = "Option::is_none")]
2774    pub player_data: Option<String>,
2775    /// <p>A unique identifier for a player that is associated with this player session.</p>
2776    #[serde(rename = "PlayerId")]
2777    #[serde(skip_serializing_if = "Option::is_none")]
2778    pub player_id: Option<String>,
2779    /// <p>A unique identifier for a player session.</p>
2780    #[serde(rename = "PlayerSessionId")]
2781    #[serde(skip_serializing_if = "Option::is_none")]
2782    pub player_session_id: Option<String>,
2783    /// <p>Port number for the game session. To connect to a Amazon GameLift server process, an app needs both the IP address and port number.</p>
2784    #[serde(rename = "Port")]
2785    #[serde(skip_serializing_if = "Option::is_none")]
2786    pub port: Option<i64>,
2787    /// <p><p>Current status of the player session.</p> <p>Possible player session statuses include the following:</p> <ul> <li> <p> <b>RESERVED</b> -- The player session request has been received, but the player has not yet connected to the server process and/or been validated. </p> </li> <li> <p> <b>ACTIVE</b> -- The player has been validated by the server process and is currently connected.</p> </li> <li> <p> <b>COMPLETED</b> -- The player connection has been dropped.</p> </li> <li> <p> <b>TIMEDOUT</b> -- A player session request was received, but the player did not connect and/or was not validated within the timeout limit (60 seconds).</p> </li> </ul></p>
2788    #[serde(rename = "Status")]
2789    #[serde(skip_serializing_if = "Option::is_none")]
2790    pub status: Option<String>,
2791    /// <p>Time stamp indicating when this data object was terminated. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
2792    #[serde(rename = "TerminationTime")]
2793    #[serde(skip_serializing_if = "Option::is_none")]
2794    pub termination_time: Option<f64>,
2795}
2796
2797/// <p>Represents the input for a request action.</p>
2798#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2799#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2800pub struct PutScalingPolicyInput {
2801    /// <p>Comparison operator to use when measuring the metric against the threshold value.</p>
2802    #[serde(rename = "ComparisonOperator")]
2803    #[serde(skip_serializing_if = "Option::is_none")]
2804    pub comparison_operator: Option<String>,
2805    /// <p>Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.</p>
2806    #[serde(rename = "EvaluationPeriods")]
2807    #[serde(skip_serializing_if = "Option::is_none")]
2808    pub evaluation_periods: Option<i64>,
2809    /// <p>A unique identifier for a fleet to apply this policy to. You can use either the fleet ID or ARN value. The fleet cannot be in any of the following statuses: ERROR or DELETING.</p>
2810    #[serde(rename = "FleetId")]
2811    pub fleet_id: String,
2812    /// <p><p>Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment. For detailed descriptions of fleet metrics, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html">Monitor Amazon GameLift with Amazon CloudWatch</a>. </p> <ul> <li> <p> <b>ActivatingGameSessions</b> -- Game sessions in the process of being created.</p> </li> <li> <p> <b>ActiveGameSessions</b> -- Game sessions that are currently running.</p> </li> <li> <p> <b>ActiveInstances</b> -- Fleet instances that are currently running at least one game session.</p> </li> <li> <p> <b>AvailableGameSessions</b> -- Additional game sessions that fleet could host simultaneously, given current capacity.</p> </li> <li> <p> <b>AvailablePlayerSessions</b> -- Empty player slots in currently active game sessions. This includes game sessions that are not currently accepting players. Reserved player slots are not included.</p> </li> <li> <p> <b>CurrentPlayerSessions</b> -- Player slots in active game sessions that are being used by a player or are reserved for a player. </p> </li> <li> <p> <b>IdleInstances</b> -- Active instances that are currently hosting zero game sessions. </p> </li> <li> <p> <b>PercentAvailableGameSessions</b> -- Unused percentage of the total number of game sessions that a fleet could host simultaneously, given current capacity. Use this metric for a target-based scaling policy.</p> </li> <li> <p> <b>PercentIdleInstances</b> -- Percentage of the total number of active instances that are hosting zero game sessions.</p> </li> <li> <p> <b>QueueDepth</b> -- Pending game session placement requests, in any queue, where the current fleet is the top-priority destination.</p> </li> <li> <p> <b>WaitTime</b> -- Current wait time for pending game session placement requests, in any queue, where the current fleet is the top-priority destination. </p> </li> </ul></p>
2813    #[serde(rename = "MetricName")]
2814    pub metric_name: String,
2815    /// <p>A descriptive label that is associated with a scaling policy. Policy names do not need to be unique. A fleet can have only one scaling policy with the same name.</p>
2816    #[serde(rename = "Name")]
2817    pub name: String,
2818    /// <p>The type of scaling policy to create. For a target-based policy, set the parameter <i>MetricName</i> to 'PercentAvailableGameSessions' and specify a <i>TargetConfiguration</i>. For a rule-based policy set the following parameters: <i>MetricName</i>, <i>ComparisonOperator</i>, <i>Threshold</i>, <i>EvaluationPeriods</i>, <i>ScalingAdjustmentType</i>, and <i>ScalingAdjustment</i>.</p>
2819    #[serde(rename = "PolicyType")]
2820    #[serde(skip_serializing_if = "Option::is_none")]
2821    pub policy_type: Option<String>,
2822    /// <p>Amount of adjustment to make, based on the scaling adjustment type.</p>
2823    #[serde(rename = "ScalingAdjustment")]
2824    #[serde(skip_serializing_if = "Option::is_none")]
2825    pub scaling_adjustment: Option<i64>,
2826    /// <p><p>The type of adjustment to make to a fleet&#39;s instance count (see <a>FleetCapacity</a>):</p> <ul> <li> <p> <b>ChangeInCapacity</b> -- add (or subtract) the scaling adjustment value from the current instance count. Positive values scale up while negative values scale down.</p> </li> <li> <p> <b>ExactCapacity</b> -- set the instance count to the scaling adjustment value.</p> </li> <li> <p> <b>PercentChangeInCapacity</b> -- increase or reduce the current instance count by the scaling adjustment, read as a percentage. Positive values scale up while negative values scale down; for example, a value of &quot;-10&quot; scales the fleet down by 10%.</p> </li> </ul></p>
2827    #[serde(rename = "ScalingAdjustmentType")]
2828    #[serde(skip_serializing_if = "Option::is_none")]
2829    pub scaling_adjustment_type: Option<String>,
2830    /// <p>The settings for a target-based scaling policy.</p>
2831    #[serde(rename = "TargetConfiguration")]
2832    #[serde(skip_serializing_if = "Option::is_none")]
2833    pub target_configuration: Option<TargetConfiguration>,
2834    /// <p>Metric value used to trigger a scaling event.</p>
2835    #[serde(rename = "Threshold")]
2836    #[serde(skip_serializing_if = "Option::is_none")]
2837    pub threshold: Option<f64>,
2838}
2839
2840/// <p>Represents the returned data in response to a request action.</p>
2841#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2842#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2843pub struct PutScalingPolicyOutput {
2844    /// <p>A descriptive label that is associated with a scaling policy. Policy names do not need to be unique.</p>
2845    #[serde(rename = "Name")]
2846    #[serde(skip_serializing_if = "Option::is_none")]
2847    pub name: Option<String>,
2848}
2849
2850#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2851#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2852pub struct RegisterGameServerInput {
2853    /// <p>Information needed to make inbound client connections to the game server. This might include IP address and port, DNS name, etc.</p>
2854    #[serde(rename = "ConnectionInfo")]
2855    #[serde(skip_serializing_if = "Option::is_none")]
2856    pub connection_info: Option<String>,
2857    /// <p>A game server tag that can be used to request sorted lists of game servers using <a>ListGameServers</a>. Custom sort keys are developer-defined based on how you want to organize the retrieved game server information.</p>
2858    #[serde(rename = "CustomSortKey")]
2859    #[serde(skip_serializing_if = "Option::is_none")]
2860    pub custom_sort_key: Option<String>,
2861    /// <p>A set of custom game server properties, formatted as a single string value. This data is passed to a game client or service when it requests information on a game servers using <a>ListGameServers</a> or <a>ClaimGameServer</a>. </p>
2862    #[serde(rename = "GameServerData")]
2863    #[serde(skip_serializing_if = "Option::is_none")]
2864    pub game_server_data: Option<String>,
2865    /// <p>An identifier for the game server group where the game server is running. You can use either the <a>GameServerGroup</a> name or ARN value.</p>
2866    #[serde(rename = "GameServerGroupName")]
2867    pub game_server_group_name: String,
2868    /// <p>A custom string that uniquely identifies the new game server. Game server IDs are developer-defined and must be unique across all game server groups in your AWS account.</p>
2869    #[serde(rename = "GameServerId")]
2870    pub game_server_id: String,
2871    /// <p>The unique identifier for the instance where the game server is running. This ID is available in the instance metadata.</p>
2872    #[serde(rename = "InstanceId")]
2873    pub instance_id: String,
2874    /// <p>A list of labels to assign to the new game server resource. Tags are developer-defined key-value pairs. Tagging AWS resources are useful for resource management, access management, and cost allocation. For more information, see <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> in the <i>AWS General Reference</i>. Once the resource is created, you can use <a>TagResource</a>, <a>UntagResource</a>, and <a>ListTagsForResource</a> to add, remove, and view tags. The maximum tag limit may be lower than stated. See the AWS General Reference for actual tagging limits.</p>
2875    #[serde(rename = "Tags")]
2876    #[serde(skip_serializing_if = "Option::is_none")]
2877    pub tags: Option<Vec<Tag>>,
2878}
2879
2880#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2881#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2882pub struct RegisterGameServerOutput {
2883    /// <p>Object that describes the newly created game server resource.</p>
2884    #[serde(rename = "GameServer")]
2885    #[serde(skip_serializing_if = "Option::is_none")]
2886    pub game_server: Option<GameServer>,
2887}
2888
2889/// <p>Represents the input for a request action.</p>
2890#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2891#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2892pub struct RequestUploadCredentialsInput {
2893    /// <p>A unique identifier for a build to get credentials for. You can use either the build ID or ARN value. </p>
2894    #[serde(rename = "BuildId")]
2895    pub build_id: String,
2896}
2897
2898/// <p>Represents the returned data in response to a request action.</p>
2899#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2900#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2901pub struct RequestUploadCredentialsOutput {
2902    /// <p>Amazon S3 path and key, identifying where the game build files are stored.</p>
2903    #[serde(rename = "StorageLocation")]
2904    #[serde(skip_serializing_if = "Option::is_none")]
2905    pub storage_location: Option<S3Location>,
2906    /// <p>AWS credentials required when uploading a game build to the storage location. These credentials have a limited lifespan and are valid only for the build they were issued for.</p>
2907    #[serde(rename = "UploadCredentials")]
2908    #[serde(skip_serializing_if = "Option::is_none")]
2909    pub upload_credentials: Option<AwsCredentials>,
2910}
2911
2912/// <p>Represents the input for a request action.</p>
2913#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2914#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2915pub struct ResolveAliasInput {
2916    /// <p>The unique identifier of the alias that you want to retrieve a fleet ID for. You can use either the alias ID or ARN value.</p>
2917    #[serde(rename = "AliasId")]
2918    pub alias_id: String,
2919}
2920
2921/// <p>Represents the returned data in response to a request action.</p>
2922#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2923#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2924pub struct ResolveAliasOutput {
2925    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift fleet resource that this alias points to. </p>
2926    #[serde(rename = "FleetArn")]
2927    #[serde(skip_serializing_if = "Option::is_none")]
2928    pub fleet_arn: Option<String>,
2929    /// <p>The fleet identifier that the alias is pointing to.</p>
2930    #[serde(rename = "FleetId")]
2931    #[serde(skip_serializing_if = "Option::is_none")]
2932    pub fleet_id: Option<String>,
2933}
2934
2935/// <p>A policy that limits the number of game sessions a player can create on the same fleet. This optional policy gives game owners control over how players can consume available game server resources. A resource creation policy makes the following statement: "An individual player can create a maximum number of new game sessions within a specified time period".</p> <p>The policy is evaluated when a player tries to create a new game session. For example: Assume you have a policy of 10 new game sessions and a time period of 60 minutes. On receiving a <code>CreateGameSession</code> request, Amazon GameLift checks that the player (identified by <code>CreatorId</code>) has created fewer than 10 game sessions in the past 60 minutes.</p>
2936#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2937pub struct ResourceCreationLimitPolicy {
2938    /// <p>The maximum number of game sessions that an individual can create during the policy period. </p>
2939    #[serde(rename = "NewGameSessionsPerCreator")]
2940    #[serde(skip_serializing_if = "Option::is_none")]
2941    pub new_game_sessions_per_creator: Option<i64>,
2942    /// <p>The time span used in evaluating the resource creation limit policy. </p>
2943    #[serde(rename = "PolicyPeriodInMinutes")]
2944    #[serde(skip_serializing_if = "Option::is_none")]
2945    pub policy_period_in_minutes: Option<i64>,
2946}
2947
2948#[derive(Clone, Debug, Default, PartialEq, Serialize)]
2949#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
2950pub struct ResumeGameServerGroupInput {
2951    /// <p>The unique identifier of the game server group to resume activity on. Use either the <a>GameServerGroup</a> name or ARN value.</p>
2952    #[serde(rename = "GameServerGroupName")]
2953    pub game_server_group_name: String,
2954    /// <p>The action to resume for this game server group.</p>
2955    #[serde(rename = "ResumeActions")]
2956    pub resume_actions: Vec<String>,
2957}
2958
2959#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
2960#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
2961pub struct ResumeGameServerGroupOutput {
2962    /// <p>An object that describes the game server group resource, with the <i>SuspendedActions</i> property updated to reflect the resumed activity.</p>
2963    #[serde(rename = "GameServerGroup")]
2964    #[serde(skip_serializing_if = "Option::is_none")]
2965    pub game_server_group: Option<GameServerGroup>,
2966}
2967
2968/// <p><p>The routing configuration for a fleet alias.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
2969#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2970pub struct RoutingStrategy {
2971    /// <p>The unique identifier for a fleet that the alias points to. This value is the fleet ID, not the fleet ARN.</p>
2972    #[serde(rename = "FleetId")]
2973    #[serde(skip_serializing_if = "Option::is_none")]
2974    pub fleet_id: Option<String>,
2975    /// <p>The message text to be used with a terminal routing strategy.</p>
2976    #[serde(rename = "Message")]
2977    #[serde(skip_serializing_if = "Option::is_none")]
2978    pub message: Option<String>,
2979    /// <p><p>The type of routing strategy for the alias.</p> <p>Possible routing types include the following:</p> <ul> <li> <p> <b>SIMPLE</b> - The alias resolves to one specific fleet. Use this type when routing to active fleets.</p> </li> <li> <p> <b>TERMINAL</b> - The alias does not resolve to a fleet but instead can be used to display a message to the user. A terminal alias throws a TerminalRoutingStrategyException with the <a>RoutingStrategy</a> message embedded.</p> </li> </ul></p>
2980    #[serde(rename = "Type")]
2981    #[serde(skip_serializing_if = "Option::is_none")]
2982    pub type_: Option<String>,
2983}
2984
2985/// <p><p>A collection of server process configurations that describe what processes to run on each instance in a fleet. Server processes run either a custom game build executable or a Realtime Servers script. Each instance in the fleet starts the specified server processes and continues to start new processes as existing processes end. Each instance regularly checks for an updated runtime configuration. </p> <p>The runtime configuration enables the instances in a fleet to run multiple processes simultaneously. Learn more about <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html"> Running Multiple Processes on a Fleet </a>.</p> <p>A Amazon GameLift instance is limited to 50 processes running simultaneously. To calculate the total number of processes in a runtime configuration, add the values of the <code>ConcurrentExecutions</code> parameter for each <a>ServerProcess</a> object.</p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
2986#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
2987pub struct RuntimeConfiguration {
2988    /// <p>The maximum amount of time (in seconds) that a game session can remain in status <code>ACTIVATING</code>. If the game session is not active before the timeout, activation is terminated and the game session status is changed to <code>TERMINATED</code>.</p>
2989    #[serde(rename = "GameSessionActivationTimeoutSeconds")]
2990    #[serde(skip_serializing_if = "Option::is_none")]
2991    pub game_session_activation_timeout_seconds: Option<i64>,
2992    /// <p>The maximum number of game sessions with status <code>ACTIVATING</code> to allow on an instance simultaneously. This setting limits the amount of instance resources that can be used for new game activations at any one time.</p>
2993    #[serde(rename = "MaxConcurrentGameSessionActivations")]
2994    #[serde(skip_serializing_if = "Option::is_none")]
2995    pub max_concurrent_game_session_activations: Option<i64>,
2996    /// <p>A collection of server process configurations that describe which server processes to run on each instance in a fleet.</p>
2997    #[serde(rename = "ServerProcesses")]
2998    #[serde(skip_serializing_if = "Option::is_none")]
2999    pub server_processes: Option<Vec<ServerProcess>>,
3000}
3001
3002/// <p>The location in S3 where build or script files are stored for access by Amazon GameLift. This location is specified in <a>CreateBuild</a>, <a>CreateScript</a>, and <a>UpdateScript</a> requests. </p>
3003#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3004pub struct S3Location {
3005    /// <p>An S3 bucket identifier. This is the name of the S3 bucket.</p>
3006    #[serde(rename = "Bucket")]
3007    #[serde(skip_serializing_if = "Option::is_none")]
3008    pub bucket: Option<String>,
3009    /// <p>The name of the zip file that contains the build files or script files. </p>
3010    #[serde(rename = "Key")]
3011    #[serde(skip_serializing_if = "Option::is_none")]
3012    pub key: Option<String>,
3013    /// <p>The version of the file, if object versioning is turned on for the bucket. Amazon GameLift uses this information when retrieving files from an S3 bucket that you own. Use this parameter to specify a specific version of the file. If not set, the latest version of the file is retrieved. </p>
3014    #[serde(rename = "ObjectVersion")]
3015    #[serde(skip_serializing_if = "Option::is_none")]
3016    pub object_version: Option<String>,
3017    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) for an IAM role that allows Amazon GameLift to access the S3 bucket.</p>
3018    #[serde(rename = "RoleArn")]
3019    #[serde(skip_serializing_if = "Option::is_none")]
3020    pub role_arn: Option<String>,
3021}
3022
3023/// <p><p>Rule that controls how a fleet is scaled. Scaling policies are uniquely identified by the combination of name and fleet ID.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
3024#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3025#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3026pub struct ScalingPolicy {
3027    /// <p>Comparison operator to use when measuring a metric against the threshold value.</p>
3028    #[serde(rename = "ComparisonOperator")]
3029    #[serde(skip_serializing_if = "Option::is_none")]
3030    pub comparison_operator: Option<String>,
3031    /// <p>Length of time (in minutes) the metric must be at or beyond the threshold before a scaling event is triggered.</p>
3032    #[serde(rename = "EvaluationPeriods")]
3033    #[serde(skip_serializing_if = "Option::is_none")]
3034    pub evaluation_periods: Option<i64>,
3035    /// <p>A unique identifier for a fleet that is associated with this scaling policy.</p>
3036    #[serde(rename = "FleetId")]
3037    #[serde(skip_serializing_if = "Option::is_none")]
3038    pub fleet_id: Option<String>,
3039    /// <p><p>Name of the Amazon GameLift-defined metric that is used to trigger a scaling adjustment. For detailed descriptions of fleet metrics, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html">Monitor Amazon GameLift with Amazon CloudWatch</a>. </p> <ul> <li> <p> <b>ActivatingGameSessions</b> -- Game sessions in the process of being created.</p> </li> <li> <p> <b>ActiveGameSessions</b> -- Game sessions that are currently running.</p> </li> <li> <p> <b>ActiveInstances</b> -- Fleet instances that are currently running at least one game session.</p> </li> <li> <p> <b>AvailableGameSessions</b> -- Additional game sessions that fleet could host simultaneously, given current capacity.</p> </li> <li> <p> <b>AvailablePlayerSessions</b> -- Empty player slots in currently active game sessions. This includes game sessions that are not currently accepting players. Reserved player slots are not included.</p> </li> <li> <p> <b>CurrentPlayerSessions</b> -- Player slots in active game sessions that are being used by a player or are reserved for a player. </p> </li> <li> <p> <b>IdleInstances</b> -- Active instances that are currently hosting zero game sessions. </p> </li> <li> <p> <b>PercentAvailableGameSessions</b> -- Unused percentage of the total number of game sessions that a fleet could host simultaneously, given current capacity. Use this metric for a target-based scaling policy.</p> </li> <li> <p> <b>PercentIdleInstances</b> -- Percentage of the total number of active instances that are hosting zero game sessions.</p> </li> <li> <p> <b>QueueDepth</b> -- Pending game session placement requests, in any queue, where the current fleet is the top-priority destination.</p> </li> <li> <p> <b>WaitTime</b> -- Current wait time for pending game session placement requests, in any queue, where the current fleet is the top-priority destination. </p> </li> </ul></p>
3040    #[serde(rename = "MetricName")]
3041    #[serde(skip_serializing_if = "Option::is_none")]
3042    pub metric_name: Option<String>,
3043    /// <p>A descriptive label that is associated with a scaling policy. Policy names do not need to be unique.</p>
3044    #[serde(rename = "Name")]
3045    #[serde(skip_serializing_if = "Option::is_none")]
3046    pub name: Option<String>,
3047    /// <p>The type of scaling policy to create. For a target-based policy, set the parameter <i>MetricName</i> to 'PercentAvailableGameSessions' and specify a <i>TargetConfiguration</i>. For a rule-based policy set the following parameters: <i>MetricName</i>, <i>ComparisonOperator</i>, <i>Threshold</i>, <i>EvaluationPeriods</i>, <i>ScalingAdjustmentType</i>, and <i>ScalingAdjustment</i>.</p>
3048    #[serde(rename = "PolicyType")]
3049    #[serde(skip_serializing_if = "Option::is_none")]
3050    pub policy_type: Option<String>,
3051    /// <p>Amount of adjustment to make, based on the scaling adjustment type.</p>
3052    #[serde(rename = "ScalingAdjustment")]
3053    #[serde(skip_serializing_if = "Option::is_none")]
3054    pub scaling_adjustment: Option<i64>,
3055    /// <p><p>The type of adjustment to make to a fleet&#39;s instance count (see <a>FleetCapacity</a>):</p> <ul> <li> <p> <b>ChangeInCapacity</b> -- add (or subtract) the scaling adjustment value from the current instance count. Positive values scale up while negative values scale down.</p> </li> <li> <p> <b>ExactCapacity</b> -- set the instance count to the scaling adjustment value.</p> </li> <li> <p> <b>PercentChangeInCapacity</b> -- increase or reduce the current instance count by the scaling adjustment, read as a percentage. Positive values scale up while negative values scale down.</p> </li> </ul></p>
3056    #[serde(rename = "ScalingAdjustmentType")]
3057    #[serde(skip_serializing_if = "Option::is_none")]
3058    pub scaling_adjustment_type: Option<String>,
3059    /// <p><p>Current status of the scaling policy. The scaling policy can be in force only when in an <code>ACTIVE</code> status. Scaling policies can be suspended for individual fleets (see <a>StopFleetActions</a>; if suspended for a fleet, the policy status does not change. View a fleet&#39;s stopped actions by calling <a>DescribeFleetCapacity</a>.</p> <ul> <li> <p> <b>ACTIVE</b> -- The scaling policy can be used for auto-scaling a fleet.</p> </li> <li> <p> <b>UPDATE<em>REQUESTED</b> -- A request to update the scaling policy has been received.</p> </li> <li> <p> <b>UPDATING</b> -- A change is being made to the scaling policy.</p> </li> <li> <p> <b>DELETE</em>REQUESTED</b> -- A request to delete the scaling policy has been received.</p> </li> <li> <p> <b>DELETING</b> -- The scaling policy is being deleted.</p> </li> <li> <p> <b>DELETED</b> -- The scaling policy has been deleted.</p> </li> <li> <p> <b>ERROR</b> -- An error occurred in creating the policy. It should be removed and recreated.</p> </li> </ul></p>
3060    #[serde(rename = "Status")]
3061    #[serde(skip_serializing_if = "Option::is_none")]
3062    pub status: Option<String>,
3063    /// <p>The settings for a target-based scaling policy.</p>
3064    #[serde(rename = "TargetConfiguration")]
3065    #[serde(skip_serializing_if = "Option::is_none")]
3066    pub target_configuration: Option<TargetConfiguration>,
3067    /// <p>Metric value used to trigger a scaling event.</p>
3068    #[serde(rename = "Threshold")]
3069    #[serde(skip_serializing_if = "Option::is_none")]
3070    pub threshold: Option<f64>,
3071}
3072
3073/// <p><p>Properties describing a Realtime script.</p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
3074#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3075#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3076pub struct Script {
3077    /// <p>A time stamp indicating when this data object was created. The format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
3078    #[serde(rename = "CreationTime")]
3079    #[serde(skip_serializing_if = "Option::is_none")]
3080    pub creation_time: Option<f64>,
3081    /// <p>A descriptive label that is associated with a script. Script names do not need to be unique.</p>
3082    #[serde(rename = "Name")]
3083    #[serde(skip_serializing_if = "Option::is_none")]
3084    pub name: Option<String>,
3085    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift script resource and uniquely identifies it. ARNs are unique across all Regions. In a GameLift script ARN, the resource ID matches the <i>ScriptId</i> value.</p>
3086    #[serde(rename = "ScriptArn")]
3087    #[serde(skip_serializing_if = "Option::is_none")]
3088    pub script_arn: Option<String>,
3089    /// <p>A unique identifier for a Realtime script</p>
3090    #[serde(rename = "ScriptId")]
3091    #[serde(skip_serializing_if = "Option::is_none")]
3092    pub script_id: Option<String>,
3093    /// <p>The file size of the uploaded Realtime script, expressed in bytes. When files are uploaded from an S3 location, this value remains at "0".</p>
3094    #[serde(rename = "SizeOnDisk")]
3095    #[serde(skip_serializing_if = "Option::is_none")]
3096    pub size_on_disk: Option<i64>,
3097    #[serde(rename = "StorageLocation")]
3098    #[serde(skip_serializing_if = "Option::is_none")]
3099    pub storage_location: Option<S3Location>,
3100    /// <p>The version that is associated with a build or script. Version strings do not need to be unique.</p>
3101    #[serde(rename = "Version")]
3102    #[serde(skip_serializing_if = "Option::is_none")]
3103    pub version: Option<String>,
3104}
3105
3106/// <p>Represents the input for a request action.</p>
3107#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3108#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3109pub struct SearchGameSessionsInput {
3110    /// <p>A unique identifier for an alias associated with the fleet to search for active game sessions. You can use either the alias ID or ARN value. Each request must reference either a fleet ID or alias ID, but not both.</p>
3111    #[serde(rename = "AliasId")]
3112    #[serde(skip_serializing_if = "Option::is_none")]
3113    pub alias_id: Option<String>,
3114    /// <p>String containing the search criteria for the session search. If no filter expression is included, the request returns results for all game sessions in the fleet that are in <code>ACTIVE</code> status.</p> <p>A filter expression can contain one or multiple conditions. Each condition consists of the following:</p> <ul> <li> <p> <b>Operand</b> -- Name of a game session attribute. Valid values are <code>gameSessionName</code>, <code>gameSessionId</code>, <code>gameSessionProperties</code>, <code>maximumSessions</code>, <code>creationTimeMillis</code>, <code>playerSessionCount</code>, <code>hasAvailablePlayerSessions</code>.</p> </li> <li> <p> <b>Comparator</b> -- Valid comparators are: <code>=</code>, <code>&lt;&gt;</code>, <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code>. </p> </li> <li> <p> <b>Value</b> -- Value to be searched for. Values may be numbers, boolean values (true/false) or strings depending on the operand. String values are case sensitive and must be enclosed in single quotes. Special characters must be escaped. Boolean and string values can only be used with the comparators <code>=</code> and <code>&lt;&gt;</code>. For example, the following filter expression searches on <code>gameSessionName</code>: "<code>FilterExpression": "gameSessionName = 'Matt\\'s Awesome Game 1'"</code>. </p> </li> </ul> <p>To chain multiple conditions in a single expression, use the logical keywords <code>AND</code>, <code>OR</code>, and <code>NOT</code> and parentheses as needed. For example: <code>x AND y AND NOT z</code>, <code>NOT (x OR y)</code>.</p> <p>Session search evaluates conditions from left to right using the following precedence rules:</p> <ol> <li> <p> <code>=</code>, <code>&lt;&gt;</code>, <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code> </p> </li> <li> <p>Parentheses</p> </li> <li> <p>NOT</p> </li> <li> <p>AND</p> </li> <li> <p>OR</p> </li> </ol> <p>For example, this filter expression retrieves game sessions hosting at least ten players that have an open player slot: <code>"maximumSessions&gt;=10 AND hasAvailablePlayerSessions=true"</code>. </p>
3115    #[serde(rename = "FilterExpression")]
3116    #[serde(skip_serializing_if = "Option::is_none")]
3117    pub filter_expression: Option<String>,
3118    /// <p>A unique identifier for a fleet to search for active game sessions. You can use either the fleet ID or ARN value. Each request must reference either a fleet ID or alias ID, but not both.</p>
3119    #[serde(rename = "FleetId")]
3120    #[serde(skip_serializing_if = "Option::is_none")]
3121    pub fleet_id: Option<String>,
3122    /// <p>The maximum number of results to return. Use this parameter with <code>NextToken</code> to get results as a set of sequential pages. The maximum number of results returned is 20, even if this value is not set or is set higher than 20. </p>
3123    #[serde(rename = "Limit")]
3124    #[serde(skip_serializing_if = "Option::is_none")]
3125    pub limit: Option<i64>,
3126    /// <p>Token that indicates the start of the next sequential page of results. Use the token that is returned with a previous call to this action. To start at the beginning of the result set, do not specify a value.</p>
3127    #[serde(rename = "NextToken")]
3128    #[serde(skip_serializing_if = "Option::is_none")]
3129    pub next_token: Option<String>,
3130    /// <p>Instructions on how to sort the search results. If no sort expression is included, the request returns results in random order. A sort expression consists of the following elements:</p> <ul> <li> <p> <b>Operand</b> -- Name of a game session attribute. Valid values are <code>gameSessionName</code>, <code>gameSessionId</code>, <code>gameSessionProperties</code>, <code>maximumSessions</code>, <code>creationTimeMillis</code>, <code>playerSessionCount</code>, <code>hasAvailablePlayerSessions</code>.</p> </li> <li> <p> <b>Order</b> -- Valid sort orders are <code>ASC</code> (ascending) and <code>DESC</code> (descending).</p> </li> </ul> <p>For example, this sort expression returns the oldest active sessions first: <code>"SortExpression": "creationTimeMillis ASC"</code>. Results with a null value for the sort operand are returned at the end of the list.</p>
3131    #[serde(rename = "SortExpression")]
3132    #[serde(skip_serializing_if = "Option::is_none")]
3133    pub sort_expression: Option<String>,
3134}
3135
3136/// <p>Represents the returned data in response to a request action.</p>
3137#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3138#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3139pub struct SearchGameSessionsOutput {
3140    /// <p>A collection of objects containing game session properties for each session matching the request.</p>
3141    #[serde(rename = "GameSessions")]
3142    #[serde(skip_serializing_if = "Option::is_none")]
3143    pub game_sessions: Option<Vec<GameSession>>,
3144    /// <p>Token that indicates where to resume retrieving results on the next call to this action. If no token is returned, these results represent the end of the list.</p>
3145    #[serde(rename = "NextToken")]
3146    #[serde(skip_serializing_if = "Option::is_none")]
3147    pub next_token: Option<String>,
3148}
3149
3150/// <p>A set of instructions for launching server processes on each instance in a fleet. Server processes run either a custom game build executable or a Realtime Servers script. Each instruction set identifies the location of the custom game build executable or Realtime launch script, optional launch parameters, and the number of server processes with this configuration to maintain concurrently on the instance. Server process configurations make up a fleet's <code> <a>RuntimeConfiguration</a> </code>.</p>
3151#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3152pub struct ServerProcess {
3153    /// <p>The number of server processes that use this configuration to run concurrently on an instance.</p>
3154    #[serde(rename = "ConcurrentExecutions")]
3155    pub concurrent_executions: i64,
3156    /// <p><p>The location of the server executable in a custom game build or the name of the Realtime script file that contains the <code>Init()</code> function. Game builds and Realtime scripts are installed on instances at the root: </p> <ul> <li> <p>Windows (for custom game builds only): <code>C:\game</code>. Example: &quot;<code>C:\game\MyGame\server.exe</code>&quot; </p> </li> <li> <p>Linux: <code>/local/game</code>. Examples: &quot;<code>/local/game/MyGame/server.exe</code>&quot; or &quot;<code>/local/game/MyRealtimeScript.js</code>&quot;</p> </li> </ul></p>
3157    #[serde(rename = "LaunchPath")]
3158    pub launch_path: String,
3159    /// <p>An optional list of parameters to pass to the server executable or Realtime script on launch.</p>
3160    #[serde(rename = "Parameters")]
3161    #[serde(skip_serializing_if = "Option::is_none")]
3162    pub parameters: Option<String>,
3163}
3164
3165#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3166#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3167pub struct StartFleetActionsInput {
3168    /// <p>List of actions to restart on the fleet.</p>
3169    #[serde(rename = "Actions")]
3170    pub actions: Vec<String>,
3171    /// <p>A unique identifier for a fleet to start actions on. You can use either the fleet ID or ARN value.</p>
3172    #[serde(rename = "FleetId")]
3173    pub fleet_id: String,
3174}
3175
3176#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3177#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3178pub struct StartFleetActionsOutput {}
3179
3180/// <p>Represents the input for a request action.</p>
3181#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3182#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3183pub struct StartGameSessionPlacementInput {
3184    /// <p>Set of information on each player to create a player session for.</p>
3185    #[serde(rename = "DesiredPlayerSessions")]
3186    #[serde(skip_serializing_if = "Option::is_none")]
3187    pub desired_player_sessions: Option<Vec<DesiredPlayerSession>>,
3188    /// <p>Set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
3189    #[serde(rename = "GameProperties")]
3190    #[serde(skip_serializing_if = "Option::is_none")]
3191    pub game_properties: Option<Vec<GameProperty>>,
3192    /// <p>Set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>).</p>
3193    #[serde(rename = "GameSessionData")]
3194    #[serde(skip_serializing_if = "Option::is_none")]
3195    pub game_session_data: Option<String>,
3196    /// <p>A descriptive label that is associated with a game session. Session names do not need to be unique.</p>
3197    #[serde(rename = "GameSessionName")]
3198    #[serde(skip_serializing_if = "Option::is_none")]
3199    pub game_session_name: Option<String>,
3200    /// <p>Name of the queue to use to place the new game session. You can use either the queue name or ARN value. </p>
3201    #[serde(rename = "GameSessionQueueName")]
3202    pub game_session_queue_name: String,
3203    /// <p>The maximum number of players that can be connected simultaneously to the game session.</p>
3204    #[serde(rename = "MaximumPlayerSessionCount")]
3205    pub maximum_player_session_count: i64,
3206    /// <p>A unique identifier to assign to the new game session placement. This value is developer-defined. The value must be unique across all Regions and cannot be reused unless you are resubmitting a canceled or timed-out placement request.</p>
3207    #[serde(rename = "PlacementId")]
3208    pub placement_id: String,
3209    /// <p>Set of values, expressed in milliseconds, indicating the amount of latency that a player experiences when connected to AWS Regions. This information is used to try to place the new game session where it can offer the best possible gameplay experience for the players. </p>
3210    #[serde(rename = "PlayerLatencies")]
3211    #[serde(skip_serializing_if = "Option::is_none")]
3212    pub player_latencies: Option<Vec<PlayerLatency>>,
3213}
3214
3215/// <p>Represents the returned data in response to a request action.</p>
3216#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3217#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3218pub struct StartGameSessionPlacementOutput {
3219    /// <p>Object that describes the newly created game session placement. This object includes all the information provided in the request, as well as start/end time stamps and placement status. </p>
3220    #[serde(rename = "GameSessionPlacement")]
3221    #[serde(skip_serializing_if = "Option::is_none")]
3222    pub game_session_placement: Option<GameSessionPlacement>,
3223}
3224
3225/// <p>Represents the input for a request action.</p>
3226#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3227#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3228pub struct StartMatchBackfillInput {
3229    /// <p>Name of the matchmaker to use for this request. You can use either the configuration name or ARN value. The ARN of the matchmaker that was used with the original game session is listed in the <a>GameSession</a> object, <code>MatchmakerData</code> property.</p>
3230    #[serde(rename = "ConfigurationName")]
3231    pub configuration_name: String,
3232    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a game session and uniquely identifies it. This is the same as the game session ID.</p>
3233    #[serde(rename = "GameSessionArn")]
3234    pub game_session_arn: String,
3235    /// <p><p>Match information on all players that are currently assigned to the game session. This information is used by the matchmaker to find new players and add them to the existing game.</p> <ul> <li> <p>PlayerID, PlayerAttributes, Team -\- This information is maintained in the <a>GameSession</a> object, <code>MatchmakerData</code> property, for all players who are currently assigned to the game session. The matchmaker data is in JSON syntax, formatted as a string. For more details, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-server.html#match-server-data"> Match Data</a>. </p> </li> <li> <p>LatencyInMs -\- If the matchmaker uses player latency, include a latency value, in milliseconds, for the Region that the game session is currently in. Do not include latency values for any other Region.</p> </li> </ul></p>
3236    #[serde(rename = "Players")]
3237    pub players: Vec<Player>,
3238    /// <p>A unique identifier for a matchmaking ticket. If no ticket ID is specified here, Amazon GameLift will generate one in the form of a UUID. Use this identifier to track the match backfill ticket status and retrieve match results.</p>
3239    #[serde(rename = "TicketId")]
3240    #[serde(skip_serializing_if = "Option::is_none")]
3241    pub ticket_id: Option<String>,
3242}
3243
3244/// <p>Represents the returned data in response to a request action.</p>
3245#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3246#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3247pub struct StartMatchBackfillOutput {
3248    /// <p>Ticket representing the backfill matchmaking request. This object includes the information in the request, ticket status, and match results as generated during the matchmaking process.</p>
3249    #[serde(rename = "MatchmakingTicket")]
3250    #[serde(skip_serializing_if = "Option::is_none")]
3251    pub matchmaking_ticket: Option<MatchmakingTicket>,
3252}
3253
3254/// <p>Represents the input for a request action.</p>
3255#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3256#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3257pub struct StartMatchmakingInput {
3258    /// <p>Name of the matchmaking configuration to use for this request. Matchmaking configurations must exist in the same Region as this request. You can use either the configuration name or ARN value.</p>
3259    #[serde(rename = "ConfigurationName")]
3260    pub configuration_name: String,
3261    /// <p>Information on each player to be matched. This information must include a player ID, and may contain player attributes and latency data to be used in the matchmaking process. After a successful match, <code>Player</code> objects contain the name of the team the player is assigned to.</p>
3262    #[serde(rename = "Players")]
3263    pub players: Vec<Player>,
3264    /// <p>A unique identifier for a matchmaking ticket. If no ticket ID is specified here, Amazon GameLift will generate one in the form of a UUID. Use this identifier to track the matchmaking ticket status and retrieve match results.</p>
3265    #[serde(rename = "TicketId")]
3266    #[serde(skip_serializing_if = "Option::is_none")]
3267    pub ticket_id: Option<String>,
3268}
3269
3270/// <p>Represents the returned data in response to a request action.</p>
3271#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3272#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3273pub struct StartMatchmakingOutput {
3274    /// <p>Ticket representing the matchmaking request. This object include the information included in the request, ticket status, and match results as generated during the matchmaking process.</p>
3275    #[serde(rename = "MatchmakingTicket")]
3276    #[serde(skip_serializing_if = "Option::is_none")]
3277    pub matchmaking_ticket: Option<MatchmakingTicket>,
3278}
3279
3280#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3281#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3282pub struct StopFleetActionsInput {
3283    /// <p>List of actions to suspend on the fleet. </p>
3284    #[serde(rename = "Actions")]
3285    pub actions: Vec<String>,
3286    /// <p>A unique identifier for a fleet to stop actions on. You can use either the fleet ID or ARN value.</p>
3287    #[serde(rename = "FleetId")]
3288    pub fleet_id: String,
3289}
3290
3291#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3292#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3293pub struct StopFleetActionsOutput {}
3294
3295/// <p>Represents the input for a request action.</p>
3296#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3297#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3298pub struct StopGameSessionPlacementInput {
3299    /// <p>A unique identifier for a game session placement to cancel.</p>
3300    #[serde(rename = "PlacementId")]
3301    pub placement_id: String,
3302}
3303
3304/// <p>Represents the returned data in response to a request action.</p>
3305#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3306#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3307pub struct StopGameSessionPlacementOutput {
3308    /// <p>Object that describes the canceled game session placement, with <code>CANCELLED</code> status and an end time stamp. </p>
3309    #[serde(rename = "GameSessionPlacement")]
3310    #[serde(skip_serializing_if = "Option::is_none")]
3311    pub game_session_placement: Option<GameSessionPlacement>,
3312}
3313
3314/// <p>Represents the input for a request action.</p>
3315#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3316#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3317pub struct StopMatchmakingInput {
3318    /// <p>A unique identifier for a matchmaking ticket.</p>
3319    #[serde(rename = "TicketId")]
3320    pub ticket_id: String,
3321}
3322
3323#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3324#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3325pub struct StopMatchmakingOutput {}
3326
3327#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3328#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3329pub struct SuspendGameServerGroupInput {
3330    /// <p>The unique identifier of the game server group to stop activity on. Use either the <a>GameServerGroup</a> name or ARN value.</p>
3331    #[serde(rename = "GameServerGroupName")]
3332    pub game_server_group_name: String,
3333    /// <p>The action to suspend for this game server group.</p>
3334    #[serde(rename = "SuspendActions")]
3335    pub suspend_actions: Vec<String>,
3336}
3337
3338#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3339#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3340pub struct SuspendGameServerGroupOutput {
3341    /// <p>An object that describes the game server group resource, with the <i>SuspendedActions</i> property updated to reflect the suspended activity.</p>
3342    #[serde(rename = "GameServerGroup")]
3343    #[serde(skip_serializing_if = "Option::is_none")]
3344    pub game_server_group: Option<GameServerGroup>,
3345}
3346
3347/// <p><p> A label that can be assigned to a GameLift resource. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
3348#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3349pub struct Tag {
3350    /// <p> The key for a developer-defined key:value pair for tagging an AWS resource. </p>
3351    #[serde(rename = "Key")]
3352    pub key: String,
3353    /// <p> The value for a developer-defined key:value pair for tagging an AWS resource. </p>
3354    #[serde(rename = "Value")]
3355    pub value: String,
3356}
3357
3358#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3359#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3360pub struct TagResourceRequest {
3361    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) that is assigned to and uniquely identifies the GameLift resource that you want to assign tags to. GameLift resource ARNs are included in the data object for the resource, which can be retrieved by calling a List or Describe action for the resource type. </p>
3362    #[serde(rename = "ResourceARN")]
3363    pub resource_arn: String,
3364    /// <p>A list of one or more tags to assign to the specified GameLift resource. Tags are developer-defined and structured as key-value pairs. The maximum tag limit may be lower than stated. See <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html"> Tagging AWS Resources</a> for actual tagging limits.</p>
3365    #[serde(rename = "Tags")]
3366    pub tags: Vec<Tag>,
3367}
3368
3369#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3370#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3371pub struct TagResourceResponse {}
3372
3373/// <p><p>Settings for a target-based scaling policy (see <a>ScalingPolicy</a>. A target-based policy tracks a particular fleet metric specifies a target value for the metric. As player usage changes, the policy triggers Amazon GameLift to adjust capacity so that the metric returns to the target value. The target configuration specifies settings as needed for the target based policy, including the target value. </p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
3374#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
3375pub struct TargetConfiguration {
3376    /// <p>Desired value to use with a target-based scaling policy. The value must be relevant for whatever metric the scaling policy is using. For example, in a policy using the metric PercentAvailableGameSessions, the target value should be the preferred size of the fleet's buffer (the percent of capacity that should be idle and ready for new game sessions).</p>
3377    #[serde(rename = "TargetValue")]
3378    pub target_value: f64,
3379}
3380
3381/// <p> <b>This data type is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Settings for a target-based scaling policy applied to Auto Scaling group. These settings are used to create a target-based policy that tracks the GameLift FleetIQ metric "PercentUtilizedGameServers" and specifies a target value for the metric. As player usage changes, the policy triggers to adjust the game server group capacity so that the metric returns to the target value. </p>
3382#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3383#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3384pub struct TargetTrackingConfiguration {
3385    /// <p>Desired value to use with a game server group target-based scaling policy. </p>
3386    #[serde(rename = "TargetValue")]
3387    pub target_value: f64,
3388}
3389
3390#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3391#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3392pub struct UntagResourceRequest {
3393    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) that is assigned to and uniquely identifies the GameLift resource that you want to remove tags from. GameLift resource ARNs are included in the data object for the resource, which can be retrieved by calling a List or Describe action for the resource type. </p>
3394    #[serde(rename = "ResourceARN")]
3395    pub resource_arn: String,
3396    /// <p>A list of one or more tag keys to remove from the specified GameLift resource. An AWS resource can have only one tag with a specific tag key, so specifying the tag key identifies which tag to remove. </p>
3397    #[serde(rename = "TagKeys")]
3398    pub tag_keys: Vec<String>,
3399}
3400
3401#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3402#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3403pub struct UntagResourceResponse {}
3404
3405/// <p>Represents the input for a request action.</p>
3406#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3407#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3408pub struct UpdateAliasInput {
3409    /// <p>A unique identifier for the alias that you want to update. You can use either the alias ID or ARN value.</p>
3410    #[serde(rename = "AliasId")]
3411    pub alias_id: String,
3412    /// <p>A human-readable description of the alias.</p>
3413    #[serde(rename = "Description")]
3414    #[serde(skip_serializing_if = "Option::is_none")]
3415    pub description: Option<String>,
3416    /// <p>A descriptive label that is associated with an alias. Alias names do not need to be unique.</p>
3417    #[serde(rename = "Name")]
3418    #[serde(skip_serializing_if = "Option::is_none")]
3419    pub name: Option<String>,
3420    /// <p>The routing configuration, including routing type and fleet target, for the alias.</p>
3421    #[serde(rename = "RoutingStrategy")]
3422    #[serde(skip_serializing_if = "Option::is_none")]
3423    pub routing_strategy: Option<RoutingStrategy>,
3424}
3425
3426/// <p>Represents the returned data in response to a request action.</p>
3427#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3428#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3429pub struct UpdateAliasOutput {
3430    /// <p>The updated alias resource.</p>
3431    #[serde(rename = "Alias")]
3432    #[serde(skip_serializing_if = "Option::is_none")]
3433    pub alias: Option<Alias>,
3434}
3435
3436/// <p>Represents the input for a request action.</p>
3437#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3438#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3439pub struct UpdateBuildInput {
3440    /// <p>A unique identifier for a build to update. You can use either the build ID or ARN value. </p>
3441    #[serde(rename = "BuildId")]
3442    pub build_id: String,
3443    /// <p>A descriptive label that is associated with a build. Build names do not need to be unique. </p>
3444    #[serde(rename = "Name")]
3445    #[serde(skip_serializing_if = "Option::is_none")]
3446    pub name: Option<String>,
3447    /// <p>Version information that is associated with a build or script. Version strings do not need to be unique.</p>
3448    #[serde(rename = "Version")]
3449    #[serde(skip_serializing_if = "Option::is_none")]
3450    pub version: Option<String>,
3451}
3452
3453/// <p>Represents the returned data in response to a request action.</p>
3454#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3455#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3456pub struct UpdateBuildOutput {
3457    /// <p>The updated build resource.</p>
3458    #[serde(rename = "Build")]
3459    #[serde(skip_serializing_if = "Option::is_none")]
3460    pub build: Option<Build>,
3461}
3462
3463/// <p>Represents the input for a request action.</p>
3464#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3465#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3466pub struct UpdateFleetAttributesInput {
3467    /// <p>Human-readable description of a fleet.</p>
3468    #[serde(rename = "Description")]
3469    #[serde(skip_serializing_if = "Option::is_none")]
3470    pub description: Option<String>,
3471    /// <p>A unique identifier for a fleet to update attribute metadata for. You can use either the fleet ID or ARN value.</p>
3472    #[serde(rename = "FleetId")]
3473    pub fleet_id: String,
3474    /// <p>Names of metric groups to include this fleet in. Amazon CloudWatch uses a fleet metric group is to aggregate metrics from multiple fleets. Use an existing metric group name to add this fleet to the group. Or use a new name to create a new metric group. A fleet can only be included in one metric group at a time.</p>
3475    #[serde(rename = "MetricGroups")]
3476    #[serde(skip_serializing_if = "Option::is_none")]
3477    pub metric_groups: Option<Vec<String>>,
3478    /// <p>A descriptive label that is associated with a fleet. Fleet names do not need to be unique.</p>
3479    #[serde(rename = "Name")]
3480    #[serde(skip_serializing_if = "Option::is_none")]
3481    pub name: Option<String>,
3482    /// <p><p>Game session protection policy to apply to all new instances created in this fleet. Instances that already exist are not affected. You can set protection for individual instances using <a>UpdateGameSession</a>.</p> <ul> <li> <p> <b>NoProtection</b> -- The game session can be terminated during a scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game session is in an <code>ACTIVE</code> status, it cannot be terminated during a scale-down event.</p> </li> </ul></p>
3483    #[serde(rename = "NewGameSessionProtectionPolicy")]
3484    #[serde(skip_serializing_if = "Option::is_none")]
3485    pub new_game_session_protection_policy: Option<String>,
3486    /// <p>Policy that limits the number of game sessions an individual player can create over a span of time. </p>
3487    #[serde(rename = "ResourceCreationLimitPolicy")]
3488    #[serde(skip_serializing_if = "Option::is_none")]
3489    pub resource_creation_limit_policy: Option<ResourceCreationLimitPolicy>,
3490}
3491
3492/// <p>Represents the returned data in response to a request action.</p>
3493#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3494#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3495pub struct UpdateFleetAttributesOutput {
3496    /// <p>A unique identifier for a fleet that was updated. Use either the fleet ID or ARN value.</p>
3497    #[serde(rename = "FleetId")]
3498    #[serde(skip_serializing_if = "Option::is_none")]
3499    pub fleet_id: Option<String>,
3500}
3501
3502/// <p>Represents the input for a request action.</p>
3503#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3504#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3505pub struct UpdateFleetCapacityInput {
3506    /// <p>Number of EC2 instances you want this fleet to host.</p>
3507    #[serde(rename = "DesiredInstances")]
3508    #[serde(skip_serializing_if = "Option::is_none")]
3509    pub desired_instances: Option<i64>,
3510    /// <p>A unique identifier for a fleet to update capacity for. You can use either the fleet ID or ARN value.</p>
3511    #[serde(rename = "FleetId")]
3512    pub fleet_id: String,
3513    /// <p>The maximum value allowed for the fleet's instance count. Default if not set is 1.</p>
3514    #[serde(rename = "MaxSize")]
3515    #[serde(skip_serializing_if = "Option::is_none")]
3516    pub max_size: Option<i64>,
3517    /// <p>The minimum value allowed for the fleet's instance count. Default if not set is 0.</p>
3518    #[serde(rename = "MinSize")]
3519    #[serde(skip_serializing_if = "Option::is_none")]
3520    pub min_size: Option<i64>,
3521}
3522
3523/// <p>Represents the returned data in response to a request action.</p>
3524#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3525#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3526pub struct UpdateFleetCapacityOutput {
3527    /// <p>A unique identifier for a fleet that was updated.</p>
3528    #[serde(rename = "FleetId")]
3529    #[serde(skip_serializing_if = "Option::is_none")]
3530    pub fleet_id: Option<String>,
3531}
3532
3533/// <p>Represents the input for a request action.</p>
3534#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3535#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3536pub struct UpdateFleetPortSettingsInput {
3537    /// <p>A unique identifier for a fleet to update port settings for. You can use either the fleet ID or ARN value.</p>
3538    #[serde(rename = "FleetId")]
3539    pub fleet_id: String,
3540    /// <p>A collection of port settings to be added to the fleet resource.</p>
3541    #[serde(rename = "InboundPermissionAuthorizations")]
3542    #[serde(skip_serializing_if = "Option::is_none")]
3543    pub inbound_permission_authorizations: Option<Vec<IpPermission>>,
3544    /// <p>A collection of port settings to be removed from the fleet resource.</p>
3545    #[serde(rename = "InboundPermissionRevocations")]
3546    #[serde(skip_serializing_if = "Option::is_none")]
3547    pub inbound_permission_revocations: Option<Vec<IpPermission>>,
3548}
3549
3550/// <p>Represents the returned data in response to a request action.</p>
3551#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3552#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3553pub struct UpdateFleetPortSettingsOutput {
3554    /// <p>A unique identifier for a fleet that was updated.</p>
3555    #[serde(rename = "FleetId")]
3556    #[serde(skip_serializing_if = "Option::is_none")]
3557    pub fleet_id: Option<String>,
3558}
3559
3560#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3561#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3562pub struct UpdateGameServerGroupInput {
3563    /// <p><p>The fallback balancing method to use for the game server group when Spot instances in a Region become unavailable or are not viable for game hosting. Once triggered, this method remains active until Spot instances can once again be used. Method options include:</p> <ul> <li> <p>SPOT<em>ONLY -- If Spot instances are unavailable, the game server group provides no hosting capacity. No new instances are started, and the existing nonviable Spot instances are terminated (once current gameplay ends) and not replaced.</p> </li> <li> <p>SPOT</em>PREFERRED -- If Spot instances are unavailable, the game server group continues to provide hosting capacity by using On-Demand instances. Existing nonviable Spot instances are terminated (once current gameplay ends) and replaced with new On-Demand instances. </p> </li> </ul></p>
3564    #[serde(rename = "BalancingStrategy")]
3565    #[serde(skip_serializing_if = "Option::is_none")]
3566    pub balancing_strategy: Option<String>,
3567    /// <p>The unique identifier of the game server group to update. Use either the <a>GameServerGroup</a> name or ARN value.</p>
3568    #[serde(rename = "GameServerGroupName")]
3569    pub game_server_group_name: String,
3570    /// <p>A flag that indicates whether instances in the game server group are protected from early termination. Unprotected instances that have active game servers running may by terminated during a scale-down event, causing players to be dropped from the game. Protected instances cannot be terminated while there are active game servers running. An exception to this is Spot Instances, which may be terminated by AWS regardless of protection status. This property is set to NO_PROTECTION by default.</p>
3571    #[serde(rename = "GameServerProtectionPolicy")]
3572    #[serde(skip_serializing_if = "Option::is_none")]
3573    pub game_server_protection_policy: Option<String>,
3574    /// <p>An updated list of EC2 instance types to use when creating instances in the group. The instance definition must specify instance types that are supported by GameLift FleetIQ, and must include at least two instance types. This updated list replaces the entire current list of instance definitions for the game server group. For more information on instance types, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html">EC2 Instance Types</a> in the <i>Amazon EC2 User Guide</i>..</p>
3575    #[serde(rename = "InstanceDefinitions")]
3576    #[serde(skip_serializing_if = "Option::is_none")]
3577    pub instance_definitions: Option<Vec<InstanceDefinition>>,
3578    /// <p>The Amazon Resource Name (<a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html">ARN</a>) for an IAM role that allows Amazon GameLift to access your EC2 Auto Scaling groups. The submitted role is validated to ensure that it contains the necessary permissions for game server groups.</p>
3579    #[serde(rename = "RoleArn")]
3580    #[serde(skip_serializing_if = "Option::is_none")]
3581    pub role_arn: Option<String>,
3582}
3583
3584#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3585#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3586pub struct UpdateGameServerGroupOutput {
3587    /// <p>An object that describes the game server group resource with updated properties. </p>
3588    #[serde(rename = "GameServerGroup")]
3589    #[serde(skip_serializing_if = "Option::is_none")]
3590    pub game_server_group: Option<GameServerGroup>,
3591}
3592
3593#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3594#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3595pub struct UpdateGameServerInput {
3596    /// <p>A game server tag that can be used to request sorted lists of game servers using <a>ListGameServers</a>. Custom sort keys are developer-defined based on how you want to organize the retrieved game server information.</p>
3597    #[serde(rename = "CustomSortKey")]
3598    #[serde(skip_serializing_if = "Option::is_none")]
3599    pub custom_sort_key: Option<String>,
3600    /// <p>A set of custom game server properties, formatted as a single string value. This data is passed to a game client or service when it requests information on a game servers using <a>DescribeGameServer</a> or <a>ClaimGameServer</a>. </p>
3601    #[serde(rename = "GameServerData")]
3602    #[serde(skip_serializing_if = "Option::is_none")]
3603    pub game_server_data: Option<String>,
3604    /// <p>An identifier for the game server group where the game server is running. Use either the <a>GameServerGroup</a> name or ARN value.</p>
3605    #[serde(rename = "GameServerGroupName")]
3606    pub game_server_group_name: String,
3607    /// <p>The identifier for the game server to be updated.</p>
3608    #[serde(rename = "GameServerId")]
3609    pub game_server_id: String,
3610    /// <p>Indicates health status of the game server. An update that explicitly includes this parameter updates the game server's <i>LastHealthCheckTime</i> time stamp. </p>
3611    #[serde(rename = "HealthCheck")]
3612    #[serde(skip_serializing_if = "Option::is_none")]
3613    pub health_check: Option<String>,
3614    /// <p>Indicates whether the game server is available or is currently hosting gameplay.</p>
3615    #[serde(rename = "UtilizationStatus")]
3616    #[serde(skip_serializing_if = "Option::is_none")]
3617    pub utilization_status: Option<String>,
3618}
3619
3620#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3621#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3622pub struct UpdateGameServerOutput {
3623    /// <p>Object that describes the newly updated game server resource.</p>
3624    #[serde(rename = "GameServer")]
3625    #[serde(skip_serializing_if = "Option::is_none")]
3626    pub game_server: Option<GameServer>,
3627}
3628
3629/// <p>Represents the input for a request action.</p>
3630#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3631#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3632pub struct UpdateGameSessionInput {
3633    /// <p>A unique identifier for the game session to update. </p>
3634    #[serde(rename = "GameSessionId")]
3635    pub game_session_id: String,
3636    /// <p>The maximum number of players that can be connected simultaneously to the game session.</p>
3637    #[serde(rename = "MaximumPlayerSessionCount")]
3638    #[serde(skip_serializing_if = "Option::is_none")]
3639    pub maximum_player_session_count: Option<i64>,
3640    /// <p>A descriptive label that is associated with a game session. Session names do not need to be unique.</p>
3641    #[serde(rename = "Name")]
3642    #[serde(skip_serializing_if = "Option::is_none")]
3643    pub name: Option<String>,
3644    /// <p>Policy determining whether or not the game session accepts new players.</p>
3645    #[serde(rename = "PlayerSessionCreationPolicy")]
3646    #[serde(skip_serializing_if = "Option::is_none")]
3647    pub player_session_creation_policy: Option<String>,
3648    /// <p><p>Game session protection policy to apply to this game session only.</p> <ul> <li> <p> <b>NoProtection</b> -- The game session can be terminated during a scale-down event.</p> </li> <li> <p> <b>FullProtection</b> -- If the game session is in an <code>ACTIVE</code> status, it cannot be terminated during a scale-down event.</p> </li> </ul></p>
3649    #[serde(rename = "ProtectionPolicy")]
3650    #[serde(skip_serializing_if = "Option::is_none")]
3651    pub protection_policy: Option<String>,
3652}
3653
3654/// <p>Represents the returned data in response to a request action.</p>
3655#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3656#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3657pub struct UpdateGameSessionOutput {
3658    /// <p>The updated game session metadata.</p>
3659    #[serde(rename = "GameSession")]
3660    #[serde(skip_serializing_if = "Option::is_none")]
3661    pub game_session: Option<GameSession>,
3662}
3663
3664/// <p>Represents the input for a request action.</p>
3665#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3666#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3667pub struct UpdateGameSessionQueueInput {
3668    /// <p>A list of fleets that can be used to fulfill game session placement requests in the queue. Fleets are identified by either a fleet ARN or a fleet alias ARN. Destinations are listed in default preference order. When updating this list, provide a complete list of destinations.</p>
3669    #[serde(rename = "Destinations")]
3670    #[serde(skip_serializing_if = "Option::is_none")]
3671    pub destinations: Option<Vec<GameSessionQueueDestination>>,
3672    /// <p>A descriptive label that is associated with game session queue. Queue names must be unique within each Region. You can use either the queue ID or ARN value. </p>
3673    #[serde(rename = "Name")]
3674    pub name: String,
3675    /// <p>A collection of latency policies to apply when processing game sessions placement requests with player latency information. Multiple policies are evaluated in order of the maximum latency value, starting with the lowest latency values. With just one policy, the policy is enforced at the start of the game session placement for the duration period. With multiple policies, each policy is enforced consecutively for its duration period. For example, a queue might enforce a 60-second policy followed by a 120-second policy, and then no policy for the remainder of the placement. When updating policies, provide a complete collection of policies.</p>
3676    #[serde(rename = "PlayerLatencyPolicies")]
3677    #[serde(skip_serializing_if = "Option::is_none")]
3678    pub player_latency_policies: Option<Vec<PlayerLatencyPolicy>>,
3679    /// <p>The maximum time, in seconds, that a new game session placement request remains in the queue. When a request exceeds this time, the game session placement changes to a <code>TIMED_OUT</code> status.</p>
3680    #[serde(rename = "TimeoutInSeconds")]
3681    #[serde(skip_serializing_if = "Option::is_none")]
3682    pub timeout_in_seconds: Option<i64>,
3683}
3684
3685/// <p>Represents the returned data in response to a request action.</p>
3686#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3687#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3688pub struct UpdateGameSessionQueueOutput {
3689    /// <p>An object that describes the newly updated game session queue.</p>
3690    #[serde(rename = "GameSessionQueue")]
3691    #[serde(skip_serializing_if = "Option::is_none")]
3692    pub game_session_queue: Option<GameSessionQueue>,
3693}
3694
3695/// <p>Represents the input for a request action.</p>
3696#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3697#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3698pub struct UpdateMatchmakingConfigurationInput {
3699    /// <p>A flag that indicates whether a match that was created with this configuration must be accepted by the matched players. To require acceptance, set to TRUE.</p>
3700    #[serde(rename = "AcceptanceRequired")]
3701    #[serde(skip_serializing_if = "Option::is_none")]
3702    pub acceptance_required: Option<bool>,
3703    /// <p>The length of time (in seconds) to wait for players to accept a proposed match. If any player rejects the match or fails to accept before the timeout, the ticket continues to look for an acceptable match.</p>
3704    #[serde(rename = "AcceptanceTimeoutSeconds")]
3705    #[serde(skip_serializing_if = "Option::is_none")]
3706    pub acceptance_timeout_seconds: Option<i64>,
3707    /// <p>The number of player slots in a match to keep open for future players. For example, assume that the configuration's rule set specifies a match for a single 12-person team. If the additional player count is set to 2, only 10 players are initially selected for the match.</p>
3708    #[serde(rename = "AdditionalPlayerCount")]
3709    #[serde(skip_serializing_if = "Option::is_none")]
3710    pub additional_player_count: Option<i64>,
3711    /// <p>The method that is used to backfill game sessions created with this matchmaking configuration. Specify MANUAL when your game manages backfill requests manually or does not use the match backfill feature. Specify AUTOMATIC to have GameLift create a <a>StartMatchBackfill</a> request whenever a game session has one or more open slots. Learn more about manual and automatic backfill in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html">Backfill Existing Games with FlexMatch</a>.</p>
3712    #[serde(rename = "BackfillMode")]
3713    #[serde(skip_serializing_if = "Option::is_none")]
3714    pub backfill_mode: Option<String>,
3715    /// <p>Information to add to all events related to the matchmaking configuration. </p>
3716    #[serde(rename = "CustomEventData")]
3717    #[serde(skip_serializing_if = "Option::is_none")]
3718    pub custom_event_data: Option<String>,
3719    /// <p>A descriptive label that is associated with matchmaking configuration.</p>
3720    #[serde(rename = "Description")]
3721    #[serde(skip_serializing_if = "Option::is_none")]
3722    pub description: Option<String>,
3723    /// <p>A set of custom properties for a game session, formatted as key-value pairs. These properties are passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match. </p>
3724    #[serde(rename = "GameProperties")]
3725    #[serde(skip_serializing_if = "Option::is_none")]
3726    pub game_properties: Option<Vec<GameProperty>>,
3727    /// <p>A set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the <a>GameSession</a> object with a request to start a new game session (see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession">Start a Game Session</a>). This information is added to the new <a>GameSession</a> object that is created for a successful match. </p>
3728    #[serde(rename = "GameSessionData")]
3729    #[serde(skip_serializing_if = "Option::is_none")]
3730    pub game_session_data: Option<String>,
3731    /// <p>Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) that is assigned to a GameLift game session queue resource and uniquely identifies it. ARNs are unique across all Regions. These queues are used when placing game sessions for matches that are created with this matchmaking configuration. Queues can be located in any Region.</p>
3732    #[serde(rename = "GameSessionQueueArns")]
3733    #[serde(skip_serializing_if = "Option::is_none")]
3734    pub game_session_queue_arns: Option<Vec<String>>,
3735    /// <p>A unique identifier for a matchmaking configuration to update. You can use either the configuration name or ARN value. </p>
3736    #[serde(rename = "Name")]
3737    pub name: String,
3738    /// <p>An SNS topic ARN that is set up to receive matchmaking notifications. See <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Setting up Notifications for Matchmaking</a> for more information.</p>
3739    #[serde(rename = "NotificationTarget")]
3740    #[serde(skip_serializing_if = "Option::is_none")]
3741    pub notification_target: Option<String>,
3742    /// <p>The maximum duration, in seconds, that a matchmaking ticket can remain in process before timing out. Requests that fail due to timing out can be resubmitted as needed.</p>
3743    #[serde(rename = "RequestTimeoutSeconds")]
3744    #[serde(skip_serializing_if = "Option::is_none")]
3745    pub request_timeout_seconds: Option<i64>,
3746    /// <p>A unique identifier for a matchmaking rule set to use with this configuration. You can use either the rule set name or ARN value. A matchmaking configuration can only use rule sets that are defined in the same Region.</p>
3747    #[serde(rename = "RuleSetName")]
3748    #[serde(skip_serializing_if = "Option::is_none")]
3749    pub rule_set_name: Option<String>,
3750}
3751
3752/// <p>Represents the returned data in response to a request action.</p>
3753#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3754#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3755pub struct UpdateMatchmakingConfigurationOutput {
3756    /// <p>The updated matchmaking configuration.</p>
3757    #[serde(rename = "Configuration")]
3758    #[serde(skip_serializing_if = "Option::is_none")]
3759    pub configuration: Option<MatchmakingConfiguration>,
3760}
3761
3762/// <p>Represents the input for a request action.</p>
3763#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3764#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3765pub struct UpdateRuntimeConfigurationInput {
3766    /// <p>A unique identifier for a fleet to update runtime configuration for. You can use either the fleet ID or ARN value.</p>
3767    #[serde(rename = "FleetId")]
3768    pub fleet_id: String,
3769    /// <p>Instructions for launching server processes on each instance in the fleet. Server processes run either a custom game build executable or a Realtime Servers script. The runtime configuration lists the types of server processes to run on an instance and includes the following configuration settings: the server executable or launch script file, launch parameters, and the number of processes to run concurrently on each instance. A CreateFleet request must include a runtime configuration with at least one server process configuration.</p>
3770    #[serde(rename = "RuntimeConfiguration")]
3771    pub runtime_configuration: RuntimeConfiguration,
3772}
3773
3774/// <p>Represents the returned data in response to a request action.</p>
3775#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3776#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3777pub struct UpdateRuntimeConfigurationOutput {
3778    /// <p>The runtime configuration currently in force. If the update was successful, this object matches the one in the request.</p>
3779    #[serde(rename = "RuntimeConfiguration")]
3780    #[serde(skip_serializing_if = "Option::is_none")]
3781    pub runtime_configuration: Option<RuntimeConfiguration>,
3782}
3783
3784#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3785#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3786pub struct UpdateScriptInput {
3787    /// <p>A descriptive label that is associated with a script. Script names do not need to be unique.</p>
3788    #[serde(rename = "Name")]
3789    #[serde(skip_serializing_if = "Option::is_none")]
3790    pub name: Option<String>,
3791    /// <p>A unique identifier for a Realtime script to update. You can use either the script ID or ARN value.</p>
3792    #[serde(rename = "ScriptId")]
3793    pub script_id: String,
3794    /// <p>The location of the Amazon S3 bucket where a zipped file containing your Realtime scripts is stored. The storage location must specify the Amazon S3 bucket name, the zip file name (the "key"), and a role ARN that allows Amazon GameLift to access the Amazon S3 storage location. The S3 bucket must be in the same Region where you want to create a new script. By default, Amazon GameLift uploads the latest version of the zip file; if you have S3 object versioning turned on, you can use the <code>ObjectVersion</code> parameter to specify an earlier version. </p>
3795    #[serde(rename = "StorageLocation")]
3796    #[serde(skip_serializing_if = "Option::is_none")]
3797    pub storage_location: Option<S3Location>,
3798    /// <p>The version that is associated with a build or script. Version strings do not need to be unique.</p>
3799    #[serde(rename = "Version")]
3800    #[serde(skip_serializing_if = "Option::is_none")]
3801    pub version: Option<String>,
3802    /// <p>A data object containing your Realtime scripts and dependencies as a zip file. The zip file can have one or multiple files. Maximum size of a zip file is 5 MB.</p> <p>When using the AWS CLI tool to create a script, this parameter is set to the zip file name. It must be prepended with the string "fileb://" to indicate that the file data is a binary object. For example: <code>--zip-file fileb://myRealtimeScript.zip</code>.</p>
3803    #[serde(rename = "ZipFile")]
3804    #[serde(
3805        deserialize_with = "::rusoto_core::serialization::SerdeBlob::deserialize_blob",
3806        serialize_with = "::rusoto_core::serialization::SerdeBlob::serialize_blob",
3807        default
3808    )]
3809    #[serde(skip_serializing_if = "Option::is_none")]
3810    pub zip_file: Option<bytes::Bytes>,
3811}
3812
3813#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3814#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3815pub struct UpdateScriptOutput {
3816    /// <p>The newly created script record with a unique script ID. The new script's storage location reflects an Amazon S3 location: (1) If the script was uploaded from an S3 bucket under your account, the storage location reflects the information that was provided in the <i>CreateScript</i> request; (2) If the script file was uploaded from a local zip file, the storage location reflects an S3 location controls by the Amazon GameLift service.</p>
3817    #[serde(rename = "Script")]
3818    #[serde(skip_serializing_if = "Option::is_none")]
3819    pub script: Option<Script>,
3820}
3821
3822/// <p>Represents the input for a request action.</p>
3823#[derive(Clone, Debug, Default, PartialEq, Serialize)]
3824#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
3825pub struct ValidateMatchmakingRuleSetInput {
3826    /// <p>A collection of matchmaking rules to validate, formatted as a JSON string.</p>
3827    #[serde(rename = "RuleSetBody")]
3828    pub rule_set_body: String,
3829}
3830
3831/// <p>Represents the returned data in response to a request action.</p>
3832#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3833#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3834pub struct ValidateMatchmakingRuleSetOutput {
3835    /// <p>A response indicating whether the rule set is valid.</p>
3836    #[serde(rename = "Valid")]
3837    #[serde(skip_serializing_if = "Option::is_none")]
3838    pub valid: Option<bool>,
3839}
3840
3841/// <p><p>Represents an authorization for a VPC peering connection between the VPC for an Amazon GameLift fleet and another VPC on an account you have access to. This authorization must exist and be valid for the peering connection to be established. Authorizations are valid for 24 hours after they are issued.</p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
3842#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3843#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3844pub struct VpcPeeringAuthorization {
3845    /// <p>Time stamp indicating when this authorization was issued. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
3846    #[serde(rename = "CreationTime")]
3847    #[serde(skip_serializing_if = "Option::is_none")]
3848    pub creation_time: Option<f64>,
3849    /// <p>Time stamp indicating when this authorization expires (24 hours after issuance). Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").</p>
3850    #[serde(rename = "ExpirationTime")]
3851    #[serde(skip_serializing_if = "Option::is_none")]
3852    pub expiration_time: Option<f64>,
3853    /// <p>A unique identifier for the AWS account that you use to manage your Amazon GameLift fleet. You can find your Account ID in the AWS Management Console under account settings.</p>
3854    #[serde(rename = "GameLiftAwsAccountId")]
3855    #[serde(skip_serializing_if = "Option::is_none")]
3856    pub game_lift_aws_account_id: Option<String>,
3857    /// <p><p/></p>
3858    #[serde(rename = "PeerVpcAwsAccountId")]
3859    #[serde(skip_serializing_if = "Option::is_none")]
3860    pub peer_vpc_aws_account_id: Option<String>,
3861    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region where your fleet is deployed. Look up a VPC ID using the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p>
3862    #[serde(rename = "PeerVpcId")]
3863    #[serde(skip_serializing_if = "Option::is_none")]
3864    pub peer_vpc_id: Option<String>,
3865}
3866
3867/// <p><p>Represents a peering connection between a VPC on one of your AWS accounts and the VPC for your Amazon GameLift fleets. This record may be for an active peering connection or a pending connection that has not yet been established.</p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
3868#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3869#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3870pub struct VpcPeeringConnection {
3871    /// <p> The Amazon Resource Name (<a href="https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html">ARN</a>) associated with the GameLift fleet resource for this connection. </p>
3872    #[serde(rename = "FleetArn")]
3873    #[serde(skip_serializing_if = "Option::is_none")]
3874    pub fleet_arn: Option<String>,
3875    /// <p>A unique identifier for a fleet. This ID determines the ID of the Amazon GameLift VPC for your fleet.</p>
3876    #[serde(rename = "FleetId")]
3877    #[serde(skip_serializing_if = "Option::is_none")]
3878    pub fleet_id: Option<String>,
3879    /// <p>A unique identifier for the VPC that contains the Amazon GameLift fleet for this connection. This VPC is managed by Amazon GameLift and does not appear in your AWS account. </p>
3880    #[serde(rename = "GameLiftVpcId")]
3881    #[serde(skip_serializing_if = "Option::is_none")]
3882    pub game_lift_vpc_id: Option<String>,
3883    /// <p>CIDR block of IPv4 addresses assigned to the VPC peering connection for the GameLift VPC. The peered VPC also has an IPv4 CIDR block associated with it; these blocks cannot overlap or the peering connection cannot be created. </p>
3884    #[serde(rename = "IpV4CidrBlock")]
3885    #[serde(skip_serializing_if = "Option::is_none")]
3886    pub ip_v4_cidr_block: Option<String>,
3887    /// <p>A unique identifier for a VPC with resources to be accessed by your Amazon GameLift fleet. The VPC must be in the same Region where your fleet is deployed. Look up a VPC ID using the <a href="https://console.aws.amazon.com/vpc/">VPC Dashboard</a> in the AWS Management Console. Learn more about VPC peering in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p>
3888    #[serde(rename = "PeerVpcId")]
3889    #[serde(skip_serializing_if = "Option::is_none")]
3890    pub peer_vpc_id: Option<String>,
3891    /// <p>The status information about the connection. Status indicates if a connection is pending, successful, or failed.</p>
3892    #[serde(rename = "Status")]
3893    #[serde(skip_serializing_if = "Option::is_none")]
3894    pub status: Option<VpcPeeringConnectionStatus>,
3895    /// <p>A unique identifier that is automatically assigned to the connection record. This ID is referenced in VPC peering connection events, and is used when deleting a connection with <a>DeleteVpcPeeringConnection</a>. </p>
3896    #[serde(rename = "VpcPeeringConnectionId")]
3897    #[serde(skip_serializing_if = "Option::is_none")]
3898    pub vpc_peering_connection_id: Option<String>,
3899}
3900
3901/// <p>Represents status information for a VPC peering connection. Status is associated with a <a>VpcPeeringConnection</a> object. Status codes and messages are provided from EC2 (see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpcPeeringConnectionStateReason.html">VpcPeeringConnectionStateReason</a>). Connection status information is also communicated as a fleet <a>Event</a>.</p>
3902#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
3903#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
3904pub struct VpcPeeringConnectionStatus {
3905    /// <p>Code indicating the status of a VPC peering connection.</p>
3906    #[serde(rename = "Code")]
3907    #[serde(skip_serializing_if = "Option::is_none")]
3908    pub code: Option<String>,
3909    /// <p>Additional messaging associated with the connection status. </p>
3910    #[serde(rename = "Message")]
3911    #[serde(skip_serializing_if = "Option::is_none")]
3912    pub message: Option<String>,
3913}
3914
3915/// Errors returned by AcceptMatch
3916#[derive(Debug, PartialEq)]
3917pub enum AcceptMatchError {
3918    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
3919    InternalService(String),
3920    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
3921    InvalidRequest(String),
3922    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
3923    NotFound(String),
3924    /// <p>The requested operation is not supported in the Region specified.</p>
3925    UnsupportedRegion(String),
3926}
3927
3928impl AcceptMatchError {
3929    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<AcceptMatchError> {
3930        if let Some(err) = proto::json::Error::parse(&res) {
3931            match err.typ.as_str() {
3932                "InternalServiceException" => {
3933                    return RusotoError::Service(AcceptMatchError::InternalService(err.msg))
3934                }
3935                "InvalidRequestException" => {
3936                    return RusotoError::Service(AcceptMatchError::InvalidRequest(err.msg))
3937                }
3938                "NotFoundException" => {
3939                    return RusotoError::Service(AcceptMatchError::NotFound(err.msg))
3940                }
3941                "UnsupportedRegionException" => {
3942                    return RusotoError::Service(AcceptMatchError::UnsupportedRegion(err.msg))
3943                }
3944                "ValidationException" => return RusotoError::Validation(err.msg),
3945                _ => {}
3946            }
3947        }
3948        RusotoError::Unknown(res)
3949    }
3950}
3951impl fmt::Display for AcceptMatchError {
3952    #[allow(unused_variables)]
3953    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3954        match *self {
3955            AcceptMatchError::InternalService(ref cause) => write!(f, "{}", cause),
3956            AcceptMatchError::InvalidRequest(ref cause) => write!(f, "{}", cause),
3957            AcceptMatchError::NotFound(ref cause) => write!(f, "{}", cause),
3958            AcceptMatchError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
3959        }
3960    }
3961}
3962impl Error for AcceptMatchError {}
3963/// Errors returned by ClaimGameServer
3964#[derive(Debug, PartialEq)]
3965pub enum ClaimGameServerError {
3966    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
3967    Conflict(String),
3968    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
3969    InternalService(String),
3970    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
3971    InvalidRequest(String),
3972    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
3973    NotFound(String),
3974    /// <p>The specified game server group has no available game servers to fulfill a <code>ClaimGameServer</code> request. Clients can retry such requests immediately or after a waiting period. </p>
3975    OutOfCapacity(String),
3976    /// <p>The client failed authentication. Clients should not retry such requests.</p>
3977    Unauthorized(String),
3978}
3979
3980impl ClaimGameServerError {
3981    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ClaimGameServerError> {
3982        if let Some(err) = proto::json::Error::parse(&res) {
3983            match err.typ.as_str() {
3984                "ConflictException" => {
3985                    return RusotoError::Service(ClaimGameServerError::Conflict(err.msg))
3986                }
3987                "InternalServiceException" => {
3988                    return RusotoError::Service(ClaimGameServerError::InternalService(err.msg))
3989                }
3990                "InvalidRequestException" => {
3991                    return RusotoError::Service(ClaimGameServerError::InvalidRequest(err.msg))
3992                }
3993                "NotFoundException" => {
3994                    return RusotoError::Service(ClaimGameServerError::NotFound(err.msg))
3995                }
3996                "OutOfCapacityException" => {
3997                    return RusotoError::Service(ClaimGameServerError::OutOfCapacity(err.msg))
3998                }
3999                "UnauthorizedException" => {
4000                    return RusotoError::Service(ClaimGameServerError::Unauthorized(err.msg))
4001                }
4002                "ValidationException" => return RusotoError::Validation(err.msg),
4003                _ => {}
4004            }
4005        }
4006        RusotoError::Unknown(res)
4007    }
4008}
4009impl fmt::Display for ClaimGameServerError {
4010    #[allow(unused_variables)]
4011    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4012        match *self {
4013            ClaimGameServerError::Conflict(ref cause) => write!(f, "{}", cause),
4014            ClaimGameServerError::InternalService(ref cause) => write!(f, "{}", cause),
4015            ClaimGameServerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4016            ClaimGameServerError::NotFound(ref cause) => write!(f, "{}", cause),
4017            ClaimGameServerError::OutOfCapacity(ref cause) => write!(f, "{}", cause),
4018            ClaimGameServerError::Unauthorized(ref cause) => write!(f, "{}", cause),
4019        }
4020    }
4021}
4022impl Error for ClaimGameServerError {}
4023/// Errors returned by CreateAlias
4024#[derive(Debug, PartialEq)]
4025pub enum CreateAliasError {
4026    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4027    Conflict(String),
4028    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4029    InternalService(String),
4030    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4031    InvalidRequest(String),
4032    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4033    LimitExceeded(String),
4034    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4035    TaggingFailed(String),
4036    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4037    Unauthorized(String),
4038}
4039
4040impl CreateAliasError {
4041    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateAliasError> {
4042        if let Some(err) = proto::json::Error::parse(&res) {
4043            match err.typ.as_str() {
4044                "ConflictException" => {
4045                    return RusotoError::Service(CreateAliasError::Conflict(err.msg))
4046                }
4047                "InternalServiceException" => {
4048                    return RusotoError::Service(CreateAliasError::InternalService(err.msg))
4049                }
4050                "InvalidRequestException" => {
4051                    return RusotoError::Service(CreateAliasError::InvalidRequest(err.msg))
4052                }
4053                "LimitExceededException" => {
4054                    return RusotoError::Service(CreateAliasError::LimitExceeded(err.msg))
4055                }
4056                "TaggingFailedException" => {
4057                    return RusotoError::Service(CreateAliasError::TaggingFailed(err.msg))
4058                }
4059                "UnauthorizedException" => {
4060                    return RusotoError::Service(CreateAliasError::Unauthorized(err.msg))
4061                }
4062                "ValidationException" => return RusotoError::Validation(err.msg),
4063                _ => {}
4064            }
4065        }
4066        RusotoError::Unknown(res)
4067    }
4068}
4069impl fmt::Display for CreateAliasError {
4070    #[allow(unused_variables)]
4071    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4072        match *self {
4073            CreateAliasError::Conflict(ref cause) => write!(f, "{}", cause),
4074            CreateAliasError::InternalService(ref cause) => write!(f, "{}", cause),
4075            CreateAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4076            CreateAliasError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4077            CreateAliasError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4078            CreateAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
4079        }
4080    }
4081}
4082impl Error for CreateAliasError {}
4083/// Errors returned by CreateBuild
4084#[derive(Debug, PartialEq)]
4085pub enum CreateBuildError {
4086    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4087    Conflict(String),
4088    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4089    InternalService(String),
4090    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4091    InvalidRequest(String),
4092    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4093    TaggingFailed(String),
4094    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4095    Unauthorized(String),
4096}
4097
4098impl CreateBuildError {
4099    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateBuildError> {
4100        if let Some(err) = proto::json::Error::parse(&res) {
4101            match err.typ.as_str() {
4102                "ConflictException" => {
4103                    return RusotoError::Service(CreateBuildError::Conflict(err.msg))
4104                }
4105                "InternalServiceException" => {
4106                    return RusotoError::Service(CreateBuildError::InternalService(err.msg))
4107                }
4108                "InvalidRequestException" => {
4109                    return RusotoError::Service(CreateBuildError::InvalidRequest(err.msg))
4110                }
4111                "TaggingFailedException" => {
4112                    return RusotoError::Service(CreateBuildError::TaggingFailed(err.msg))
4113                }
4114                "UnauthorizedException" => {
4115                    return RusotoError::Service(CreateBuildError::Unauthorized(err.msg))
4116                }
4117                "ValidationException" => return RusotoError::Validation(err.msg),
4118                _ => {}
4119            }
4120        }
4121        RusotoError::Unknown(res)
4122    }
4123}
4124impl fmt::Display for CreateBuildError {
4125    #[allow(unused_variables)]
4126    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4127        match *self {
4128            CreateBuildError::Conflict(ref cause) => write!(f, "{}", cause),
4129            CreateBuildError::InternalService(ref cause) => write!(f, "{}", cause),
4130            CreateBuildError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4131            CreateBuildError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4132            CreateBuildError::Unauthorized(ref cause) => write!(f, "{}", cause),
4133        }
4134    }
4135}
4136impl Error for CreateBuildError {}
4137/// Errors returned by CreateFleet
4138#[derive(Debug, PartialEq)]
4139pub enum CreateFleetError {
4140    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4141    Conflict(String),
4142    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4143    InternalService(String),
4144    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4145    InvalidRequest(String),
4146    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4147    LimitExceeded(String),
4148    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4149    NotFound(String),
4150    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4151    TaggingFailed(String),
4152    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4153    Unauthorized(String),
4154}
4155
4156impl CreateFleetError {
4157    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateFleetError> {
4158        if let Some(err) = proto::json::Error::parse(&res) {
4159            match err.typ.as_str() {
4160                "ConflictException" => {
4161                    return RusotoError::Service(CreateFleetError::Conflict(err.msg))
4162                }
4163                "InternalServiceException" => {
4164                    return RusotoError::Service(CreateFleetError::InternalService(err.msg))
4165                }
4166                "InvalidRequestException" => {
4167                    return RusotoError::Service(CreateFleetError::InvalidRequest(err.msg))
4168                }
4169                "LimitExceededException" => {
4170                    return RusotoError::Service(CreateFleetError::LimitExceeded(err.msg))
4171                }
4172                "NotFoundException" => {
4173                    return RusotoError::Service(CreateFleetError::NotFound(err.msg))
4174                }
4175                "TaggingFailedException" => {
4176                    return RusotoError::Service(CreateFleetError::TaggingFailed(err.msg))
4177                }
4178                "UnauthorizedException" => {
4179                    return RusotoError::Service(CreateFleetError::Unauthorized(err.msg))
4180                }
4181                "ValidationException" => return RusotoError::Validation(err.msg),
4182                _ => {}
4183            }
4184        }
4185        RusotoError::Unknown(res)
4186    }
4187}
4188impl fmt::Display for CreateFleetError {
4189    #[allow(unused_variables)]
4190    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4191        match *self {
4192            CreateFleetError::Conflict(ref cause) => write!(f, "{}", cause),
4193            CreateFleetError::InternalService(ref cause) => write!(f, "{}", cause),
4194            CreateFleetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4195            CreateFleetError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4196            CreateFleetError::NotFound(ref cause) => write!(f, "{}", cause),
4197            CreateFleetError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4198            CreateFleetError::Unauthorized(ref cause) => write!(f, "{}", cause),
4199        }
4200    }
4201}
4202impl Error for CreateFleetError {}
4203/// Errors returned by CreateGameServerGroup
4204#[derive(Debug, PartialEq)]
4205pub enum CreateGameServerGroupError {
4206    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4207    Conflict(String),
4208    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4209    InternalService(String),
4210    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4211    InvalidRequest(String),
4212    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4213    LimitExceeded(String),
4214    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4215    Unauthorized(String),
4216}
4217
4218impl CreateGameServerGroupError {
4219    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateGameServerGroupError> {
4220        if let Some(err) = proto::json::Error::parse(&res) {
4221            match err.typ.as_str() {
4222                "ConflictException" => {
4223                    return RusotoError::Service(CreateGameServerGroupError::Conflict(err.msg))
4224                }
4225                "InternalServiceException" => {
4226                    return RusotoError::Service(CreateGameServerGroupError::InternalService(
4227                        err.msg,
4228                    ))
4229                }
4230                "InvalidRequestException" => {
4231                    return RusotoError::Service(CreateGameServerGroupError::InvalidRequest(
4232                        err.msg,
4233                    ))
4234                }
4235                "LimitExceededException" => {
4236                    return RusotoError::Service(CreateGameServerGroupError::LimitExceeded(err.msg))
4237                }
4238                "UnauthorizedException" => {
4239                    return RusotoError::Service(CreateGameServerGroupError::Unauthorized(err.msg))
4240                }
4241                "ValidationException" => return RusotoError::Validation(err.msg),
4242                _ => {}
4243            }
4244        }
4245        RusotoError::Unknown(res)
4246    }
4247}
4248impl fmt::Display for CreateGameServerGroupError {
4249    #[allow(unused_variables)]
4250    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4251        match *self {
4252            CreateGameServerGroupError::Conflict(ref cause) => write!(f, "{}", cause),
4253            CreateGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
4254            CreateGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4255            CreateGameServerGroupError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4256            CreateGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
4257        }
4258    }
4259}
4260impl Error for CreateGameServerGroupError {}
4261/// Errors returned by CreateGameSession
4262#[derive(Debug, PartialEq)]
4263pub enum CreateGameSessionError {
4264    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4265    Conflict(String),
4266    /// <p>The specified fleet has no available instances to fulfill a <code>CreateGameSession</code> request. Clients can retry such requests immediately or after a waiting period.</p>
4267    FleetCapacityExceeded(String),
4268    /// <p>A game session with this custom ID string already exists in this fleet. Resolve this conflict before retrying this request.</p>
4269    IdempotentParameterMismatch(String),
4270    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4271    InternalService(String),
4272    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
4273    InvalidFleetStatus(String),
4274    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4275    InvalidRequest(String),
4276    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4277    LimitExceeded(String),
4278    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4279    NotFound(String),
4280    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
4281    TerminalRoutingStrategy(String),
4282    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4283    Unauthorized(String),
4284}
4285
4286impl CreateGameSessionError {
4287    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateGameSessionError> {
4288        if let Some(err) = proto::json::Error::parse(&res) {
4289            match err.typ.as_str() {
4290                "ConflictException" => {
4291                    return RusotoError::Service(CreateGameSessionError::Conflict(err.msg))
4292                }
4293                "FleetCapacityExceededException" => {
4294                    return RusotoError::Service(CreateGameSessionError::FleetCapacityExceeded(
4295                        err.msg,
4296                    ))
4297                }
4298                "IdempotentParameterMismatchException" => {
4299                    return RusotoError::Service(
4300                        CreateGameSessionError::IdempotentParameterMismatch(err.msg),
4301                    )
4302                }
4303                "InternalServiceException" => {
4304                    return RusotoError::Service(CreateGameSessionError::InternalService(err.msg))
4305                }
4306                "InvalidFleetStatusException" => {
4307                    return RusotoError::Service(CreateGameSessionError::InvalidFleetStatus(
4308                        err.msg,
4309                    ))
4310                }
4311                "InvalidRequestException" => {
4312                    return RusotoError::Service(CreateGameSessionError::InvalidRequest(err.msg))
4313                }
4314                "LimitExceededException" => {
4315                    return RusotoError::Service(CreateGameSessionError::LimitExceeded(err.msg))
4316                }
4317                "NotFoundException" => {
4318                    return RusotoError::Service(CreateGameSessionError::NotFound(err.msg))
4319                }
4320                "TerminalRoutingStrategyException" => {
4321                    return RusotoError::Service(CreateGameSessionError::TerminalRoutingStrategy(
4322                        err.msg,
4323                    ))
4324                }
4325                "UnauthorizedException" => {
4326                    return RusotoError::Service(CreateGameSessionError::Unauthorized(err.msg))
4327                }
4328                "ValidationException" => return RusotoError::Validation(err.msg),
4329                _ => {}
4330            }
4331        }
4332        RusotoError::Unknown(res)
4333    }
4334}
4335impl fmt::Display for CreateGameSessionError {
4336    #[allow(unused_variables)]
4337    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4338        match *self {
4339            CreateGameSessionError::Conflict(ref cause) => write!(f, "{}", cause),
4340            CreateGameSessionError::FleetCapacityExceeded(ref cause) => write!(f, "{}", cause),
4341            CreateGameSessionError::IdempotentParameterMismatch(ref cause) => {
4342                write!(f, "{}", cause)
4343            }
4344            CreateGameSessionError::InternalService(ref cause) => write!(f, "{}", cause),
4345            CreateGameSessionError::InvalidFleetStatus(ref cause) => write!(f, "{}", cause),
4346            CreateGameSessionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4347            CreateGameSessionError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4348            CreateGameSessionError::NotFound(ref cause) => write!(f, "{}", cause),
4349            CreateGameSessionError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
4350            CreateGameSessionError::Unauthorized(ref cause) => write!(f, "{}", cause),
4351        }
4352    }
4353}
4354impl Error for CreateGameSessionError {}
4355/// Errors returned by CreateGameSessionQueue
4356#[derive(Debug, PartialEq)]
4357pub enum CreateGameSessionQueueError {
4358    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4359    InternalService(String),
4360    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4361    InvalidRequest(String),
4362    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4363    LimitExceeded(String),
4364    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4365    TaggingFailed(String),
4366    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4367    Unauthorized(String),
4368}
4369
4370impl CreateGameSessionQueueError {
4371    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateGameSessionQueueError> {
4372        if let Some(err) = proto::json::Error::parse(&res) {
4373            match err.typ.as_str() {
4374                "InternalServiceException" => {
4375                    return RusotoError::Service(CreateGameSessionQueueError::InternalService(
4376                        err.msg,
4377                    ))
4378                }
4379                "InvalidRequestException" => {
4380                    return RusotoError::Service(CreateGameSessionQueueError::InvalidRequest(
4381                        err.msg,
4382                    ))
4383                }
4384                "LimitExceededException" => {
4385                    return RusotoError::Service(CreateGameSessionQueueError::LimitExceeded(
4386                        err.msg,
4387                    ))
4388                }
4389                "TaggingFailedException" => {
4390                    return RusotoError::Service(CreateGameSessionQueueError::TaggingFailed(
4391                        err.msg,
4392                    ))
4393                }
4394                "UnauthorizedException" => {
4395                    return RusotoError::Service(CreateGameSessionQueueError::Unauthorized(err.msg))
4396                }
4397                "ValidationException" => return RusotoError::Validation(err.msg),
4398                _ => {}
4399            }
4400        }
4401        RusotoError::Unknown(res)
4402    }
4403}
4404impl fmt::Display for CreateGameSessionQueueError {
4405    #[allow(unused_variables)]
4406    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4407        match *self {
4408            CreateGameSessionQueueError::InternalService(ref cause) => write!(f, "{}", cause),
4409            CreateGameSessionQueueError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4410            CreateGameSessionQueueError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4411            CreateGameSessionQueueError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4412            CreateGameSessionQueueError::Unauthorized(ref cause) => write!(f, "{}", cause),
4413        }
4414    }
4415}
4416impl Error for CreateGameSessionQueueError {}
4417/// Errors returned by CreateMatchmakingConfiguration
4418#[derive(Debug, PartialEq)]
4419pub enum CreateMatchmakingConfigurationError {
4420    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4421    InternalService(String),
4422    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4423    InvalidRequest(String),
4424    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
4425    LimitExceeded(String),
4426    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4427    NotFound(String),
4428    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4429    TaggingFailed(String),
4430    /// <p>The requested operation is not supported in the Region specified.</p>
4431    UnsupportedRegion(String),
4432}
4433
4434impl CreateMatchmakingConfigurationError {
4435    pub fn from_response(
4436        res: BufferedHttpResponse,
4437    ) -> RusotoError<CreateMatchmakingConfigurationError> {
4438        if let Some(err) = proto::json::Error::parse(&res) {
4439            match err.typ.as_str() {
4440                "InternalServiceException" => {
4441                    return RusotoError::Service(
4442                        CreateMatchmakingConfigurationError::InternalService(err.msg),
4443                    )
4444                }
4445                "InvalidRequestException" => {
4446                    return RusotoError::Service(
4447                        CreateMatchmakingConfigurationError::InvalidRequest(err.msg),
4448                    )
4449                }
4450                "LimitExceededException" => {
4451                    return RusotoError::Service(
4452                        CreateMatchmakingConfigurationError::LimitExceeded(err.msg),
4453                    )
4454                }
4455                "NotFoundException" => {
4456                    return RusotoError::Service(CreateMatchmakingConfigurationError::NotFound(
4457                        err.msg,
4458                    ))
4459                }
4460                "TaggingFailedException" => {
4461                    return RusotoError::Service(
4462                        CreateMatchmakingConfigurationError::TaggingFailed(err.msg),
4463                    )
4464                }
4465                "UnsupportedRegionException" => {
4466                    return RusotoError::Service(
4467                        CreateMatchmakingConfigurationError::UnsupportedRegion(err.msg),
4468                    )
4469                }
4470                "ValidationException" => return RusotoError::Validation(err.msg),
4471                _ => {}
4472            }
4473        }
4474        RusotoError::Unknown(res)
4475    }
4476}
4477impl fmt::Display for CreateMatchmakingConfigurationError {
4478    #[allow(unused_variables)]
4479    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4480        match *self {
4481            CreateMatchmakingConfigurationError::InternalService(ref cause) => {
4482                write!(f, "{}", cause)
4483            }
4484            CreateMatchmakingConfigurationError::InvalidRequest(ref cause) => {
4485                write!(f, "{}", cause)
4486            }
4487            CreateMatchmakingConfigurationError::LimitExceeded(ref cause) => write!(f, "{}", cause),
4488            CreateMatchmakingConfigurationError::NotFound(ref cause) => write!(f, "{}", cause),
4489            CreateMatchmakingConfigurationError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4490            CreateMatchmakingConfigurationError::UnsupportedRegion(ref cause) => {
4491                write!(f, "{}", cause)
4492            }
4493        }
4494    }
4495}
4496impl Error for CreateMatchmakingConfigurationError {}
4497/// Errors returned by CreateMatchmakingRuleSet
4498#[derive(Debug, PartialEq)]
4499pub enum CreateMatchmakingRuleSetError {
4500    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4501    InternalService(String),
4502    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4503    InvalidRequest(String),
4504    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4505    TaggingFailed(String),
4506    /// <p>The requested operation is not supported in the Region specified.</p>
4507    UnsupportedRegion(String),
4508}
4509
4510impl CreateMatchmakingRuleSetError {
4511    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateMatchmakingRuleSetError> {
4512        if let Some(err) = proto::json::Error::parse(&res) {
4513            match err.typ.as_str() {
4514                "InternalServiceException" => {
4515                    return RusotoError::Service(CreateMatchmakingRuleSetError::InternalService(
4516                        err.msg,
4517                    ))
4518                }
4519                "InvalidRequestException" => {
4520                    return RusotoError::Service(CreateMatchmakingRuleSetError::InvalidRequest(
4521                        err.msg,
4522                    ))
4523                }
4524                "TaggingFailedException" => {
4525                    return RusotoError::Service(CreateMatchmakingRuleSetError::TaggingFailed(
4526                        err.msg,
4527                    ))
4528                }
4529                "UnsupportedRegionException" => {
4530                    return RusotoError::Service(CreateMatchmakingRuleSetError::UnsupportedRegion(
4531                        err.msg,
4532                    ))
4533                }
4534                "ValidationException" => return RusotoError::Validation(err.msg),
4535                _ => {}
4536            }
4537        }
4538        RusotoError::Unknown(res)
4539    }
4540}
4541impl fmt::Display for CreateMatchmakingRuleSetError {
4542    #[allow(unused_variables)]
4543    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4544        match *self {
4545            CreateMatchmakingRuleSetError::InternalService(ref cause) => write!(f, "{}", cause),
4546            CreateMatchmakingRuleSetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4547            CreateMatchmakingRuleSetError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4548            CreateMatchmakingRuleSetError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
4549        }
4550    }
4551}
4552impl Error for CreateMatchmakingRuleSetError {}
4553/// Errors returned by CreatePlayerSession
4554#[derive(Debug, PartialEq)]
4555pub enum CreatePlayerSessionError {
4556    /// <p>The game instance is currently full and cannot allow the requested player(s) to join. Clients can retry such requests immediately or after a waiting period.</p>
4557    GameSessionFull(String),
4558    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4559    InternalService(String),
4560    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the game instance. Resolve the conflict before retrying.</p>
4561    InvalidGameSessionStatus(String),
4562    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4563    InvalidRequest(String),
4564    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4565    NotFound(String),
4566    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
4567    TerminalRoutingStrategy(String),
4568    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4569    Unauthorized(String),
4570}
4571
4572impl CreatePlayerSessionError {
4573    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreatePlayerSessionError> {
4574        if let Some(err) = proto::json::Error::parse(&res) {
4575            match err.typ.as_str() {
4576                "GameSessionFullException" => {
4577                    return RusotoError::Service(CreatePlayerSessionError::GameSessionFull(err.msg))
4578                }
4579                "InternalServiceException" => {
4580                    return RusotoError::Service(CreatePlayerSessionError::InternalService(err.msg))
4581                }
4582                "InvalidGameSessionStatusException" => {
4583                    return RusotoError::Service(
4584                        CreatePlayerSessionError::InvalidGameSessionStatus(err.msg),
4585                    )
4586                }
4587                "InvalidRequestException" => {
4588                    return RusotoError::Service(CreatePlayerSessionError::InvalidRequest(err.msg))
4589                }
4590                "NotFoundException" => {
4591                    return RusotoError::Service(CreatePlayerSessionError::NotFound(err.msg))
4592                }
4593                "TerminalRoutingStrategyException" => {
4594                    return RusotoError::Service(CreatePlayerSessionError::TerminalRoutingStrategy(
4595                        err.msg,
4596                    ))
4597                }
4598                "UnauthorizedException" => {
4599                    return RusotoError::Service(CreatePlayerSessionError::Unauthorized(err.msg))
4600                }
4601                "ValidationException" => return RusotoError::Validation(err.msg),
4602                _ => {}
4603            }
4604        }
4605        RusotoError::Unknown(res)
4606    }
4607}
4608impl fmt::Display for CreatePlayerSessionError {
4609    #[allow(unused_variables)]
4610    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4611        match *self {
4612            CreatePlayerSessionError::GameSessionFull(ref cause) => write!(f, "{}", cause),
4613            CreatePlayerSessionError::InternalService(ref cause) => write!(f, "{}", cause),
4614            CreatePlayerSessionError::InvalidGameSessionStatus(ref cause) => write!(f, "{}", cause),
4615            CreatePlayerSessionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4616            CreatePlayerSessionError::NotFound(ref cause) => write!(f, "{}", cause),
4617            CreatePlayerSessionError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
4618            CreatePlayerSessionError::Unauthorized(ref cause) => write!(f, "{}", cause),
4619        }
4620    }
4621}
4622impl Error for CreatePlayerSessionError {}
4623/// Errors returned by CreatePlayerSessions
4624#[derive(Debug, PartialEq)]
4625pub enum CreatePlayerSessionsError {
4626    /// <p>The game instance is currently full and cannot allow the requested player(s) to join. Clients can retry such requests immediately or after a waiting period.</p>
4627    GameSessionFull(String),
4628    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4629    InternalService(String),
4630    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the game instance. Resolve the conflict before retrying.</p>
4631    InvalidGameSessionStatus(String),
4632    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4633    InvalidRequest(String),
4634    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4635    NotFound(String),
4636    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
4637    TerminalRoutingStrategy(String),
4638    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4639    Unauthorized(String),
4640}
4641
4642impl CreatePlayerSessionsError {
4643    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreatePlayerSessionsError> {
4644        if let Some(err) = proto::json::Error::parse(&res) {
4645            match err.typ.as_str() {
4646                "GameSessionFullException" => {
4647                    return RusotoError::Service(CreatePlayerSessionsError::GameSessionFull(
4648                        err.msg,
4649                    ))
4650                }
4651                "InternalServiceException" => {
4652                    return RusotoError::Service(CreatePlayerSessionsError::InternalService(
4653                        err.msg,
4654                    ))
4655                }
4656                "InvalidGameSessionStatusException" => {
4657                    return RusotoError::Service(
4658                        CreatePlayerSessionsError::InvalidGameSessionStatus(err.msg),
4659                    )
4660                }
4661                "InvalidRequestException" => {
4662                    return RusotoError::Service(CreatePlayerSessionsError::InvalidRequest(err.msg))
4663                }
4664                "NotFoundException" => {
4665                    return RusotoError::Service(CreatePlayerSessionsError::NotFound(err.msg))
4666                }
4667                "TerminalRoutingStrategyException" => {
4668                    return RusotoError::Service(
4669                        CreatePlayerSessionsError::TerminalRoutingStrategy(err.msg),
4670                    )
4671                }
4672                "UnauthorizedException" => {
4673                    return RusotoError::Service(CreatePlayerSessionsError::Unauthorized(err.msg))
4674                }
4675                "ValidationException" => return RusotoError::Validation(err.msg),
4676                _ => {}
4677            }
4678        }
4679        RusotoError::Unknown(res)
4680    }
4681}
4682impl fmt::Display for CreatePlayerSessionsError {
4683    #[allow(unused_variables)]
4684    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4685        match *self {
4686            CreatePlayerSessionsError::GameSessionFull(ref cause) => write!(f, "{}", cause),
4687            CreatePlayerSessionsError::InternalService(ref cause) => write!(f, "{}", cause),
4688            CreatePlayerSessionsError::InvalidGameSessionStatus(ref cause) => {
4689                write!(f, "{}", cause)
4690            }
4691            CreatePlayerSessionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4692            CreatePlayerSessionsError::NotFound(ref cause) => write!(f, "{}", cause),
4693            CreatePlayerSessionsError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
4694            CreatePlayerSessionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
4695        }
4696    }
4697}
4698impl Error for CreatePlayerSessionsError {}
4699/// Errors returned by CreateScript
4700#[derive(Debug, PartialEq)]
4701pub enum CreateScriptError {
4702    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
4703    Conflict(String),
4704    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4705    InternalService(String),
4706    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4707    InvalidRequest(String),
4708    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4709    TaggingFailed(String),
4710    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4711    Unauthorized(String),
4712}
4713
4714impl CreateScriptError {
4715    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateScriptError> {
4716        if let Some(err) = proto::json::Error::parse(&res) {
4717            match err.typ.as_str() {
4718                "ConflictException" => {
4719                    return RusotoError::Service(CreateScriptError::Conflict(err.msg))
4720                }
4721                "InternalServiceException" => {
4722                    return RusotoError::Service(CreateScriptError::InternalService(err.msg))
4723                }
4724                "InvalidRequestException" => {
4725                    return RusotoError::Service(CreateScriptError::InvalidRequest(err.msg))
4726                }
4727                "TaggingFailedException" => {
4728                    return RusotoError::Service(CreateScriptError::TaggingFailed(err.msg))
4729                }
4730                "UnauthorizedException" => {
4731                    return RusotoError::Service(CreateScriptError::Unauthorized(err.msg))
4732                }
4733                "ValidationException" => return RusotoError::Validation(err.msg),
4734                _ => {}
4735            }
4736        }
4737        RusotoError::Unknown(res)
4738    }
4739}
4740impl fmt::Display for CreateScriptError {
4741    #[allow(unused_variables)]
4742    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4743        match *self {
4744            CreateScriptError::Conflict(ref cause) => write!(f, "{}", cause),
4745            CreateScriptError::InternalService(ref cause) => write!(f, "{}", cause),
4746            CreateScriptError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4747            CreateScriptError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4748            CreateScriptError::Unauthorized(ref cause) => write!(f, "{}", cause),
4749        }
4750    }
4751}
4752impl Error for CreateScriptError {}
4753/// Errors returned by CreateVpcPeeringAuthorization
4754#[derive(Debug, PartialEq)]
4755pub enum CreateVpcPeeringAuthorizationError {
4756    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4757    InternalService(String),
4758    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4759    InvalidRequest(String),
4760    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4761    NotFound(String),
4762    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4763    Unauthorized(String),
4764}
4765
4766impl CreateVpcPeeringAuthorizationError {
4767    pub fn from_response(
4768        res: BufferedHttpResponse,
4769    ) -> RusotoError<CreateVpcPeeringAuthorizationError> {
4770        if let Some(err) = proto::json::Error::parse(&res) {
4771            match err.typ.as_str() {
4772                "InternalServiceException" => {
4773                    return RusotoError::Service(
4774                        CreateVpcPeeringAuthorizationError::InternalService(err.msg),
4775                    )
4776                }
4777                "InvalidRequestException" => {
4778                    return RusotoError::Service(
4779                        CreateVpcPeeringAuthorizationError::InvalidRequest(err.msg),
4780                    )
4781                }
4782                "NotFoundException" => {
4783                    return RusotoError::Service(CreateVpcPeeringAuthorizationError::NotFound(
4784                        err.msg,
4785                    ))
4786                }
4787                "UnauthorizedException" => {
4788                    return RusotoError::Service(CreateVpcPeeringAuthorizationError::Unauthorized(
4789                        err.msg,
4790                    ))
4791                }
4792                "ValidationException" => return RusotoError::Validation(err.msg),
4793                _ => {}
4794            }
4795        }
4796        RusotoError::Unknown(res)
4797    }
4798}
4799impl fmt::Display for CreateVpcPeeringAuthorizationError {
4800    #[allow(unused_variables)]
4801    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4802        match *self {
4803            CreateVpcPeeringAuthorizationError::InternalService(ref cause) => {
4804                write!(f, "{}", cause)
4805            }
4806            CreateVpcPeeringAuthorizationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4807            CreateVpcPeeringAuthorizationError::NotFound(ref cause) => write!(f, "{}", cause),
4808            CreateVpcPeeringAuthorizationError::Unauthorized(ref cause) => write!(f, "{}", cause),
4809        }
4810    }
4811}
4812impl Error for CreateVpcPeeringAuthorizationError {}
4813/// Errors returned by CreateVpcPeeringConnection
4814#[derive(Debug, PartialEq)]
4815pub enum CreateVpcPeeringConnectionError {
4816    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4817    InternalService(String),
4818    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4819    InvalidRequest(String),
4820    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4821    NotFound(String),
4822    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4823    Unauthorized(String),
4824}
4825
4826impl CreateVpcPeeringConnectionError {
4827    pub fn from_response(
4828        res: BufferedHttpResponse,
4829    ) -> RusotoError<CreateVpcPeeringConnectionError> {
4830        if let Some(err) = proto::json::Error::parse(&res) {
4831            match err.typ.as_str() {
4832                "InternalServiceException" => {
4833                    return RusotoError::Service(CreateVpcPeeringConnectionError::InternalService(
4834                        err.msg,
4835                    ))
4836                }
4837                "InvalidRequestException" => {
4838                    return RusotoError::Service(CreateVpcPeeringConnectionError::InvalidRequest(
4839                        err.msg,
4840                    ))
4841                }
4842                "NotFoundException" => {
4843                    return RusotoError::Service(CreateVpcPeeringConnectionError::NotFound(err.msg))
4844                }
4845                "UnauthorizedException" => {
4846                    return RusotoError::Service(CreateVpcPeeringConnectionError::Unauthorized(
4847                        err.msg,
4848                    ))
4849                }
4850                "ValidationException" => return RusotoError::Validation(err.msg),
4851                _ => {}
4852            }
4853        }
4854        RusotoError::Unknown(res)
4855    }
4856}
4857impl fmt::Display for CreateVpcPeeringConnectionError {
4858    #[allow(unused_variables)]
4859    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4860        match *self {
4861            CreateVpcPeeringConnectionError::InternalService(ref cause) => write!(f, "{}", cause),
4862            CreateVpcPeeringConnectionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4863            CreateVpcPeeringConnectionError::NotFound(ref cause) => write!(f, "{}", cause),
4864            CreateVpcPeeringConnectionError::Unauthorized(ref cause) => write!(f, "{}", cause),
4865        }
4866    }
4867}
4868impl Error for CreateVpcPeeringConnectionError {}
4869/// Errors returned by DeleteAlias
4870#[derive(Debug, PartialEq)]
4871pub enum DeleteAliasError {
4872    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4873    InternalService(String),
4874    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4875    InvalidRequest(String),
4876    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4877    NotFound(String),
4878    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4879    TaggingFailed(String),
4880    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4881    Unauthorized(String),
4882}
4883
4884impl DeleteAliasError {
4885    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteAliasError> {
4886        if let Some(err) = proto::json::Error::parse(&res) {
4887            match err.typ.as_str() {
4888                "InternalServiceException" => {
4889                    return RusotoError::Service(DeleteAliasError::InternalService(err.msg))
4890                }
4891                "InvalidRequestException" => {
4892                    return RusotoError::Service(DeleteAliasError::InvalidRequest(err.msg))
4893                }
4894                "NotFoundException" => {
4895                    return RusotoError::Service(DeleteAliasError::NotFound(err.msg))
4896                }
4897                "TaggingFailedException" => {
4898                    return RusotoError::Service(DeleteAliasError::TaggingFailed(err.msg))
4899                }
4900                "UnauthorizedException" => {
4901                    return RusotoError::Service(DeleteAliasError::Unauthorized(err.msg))
4902                }
4903                "ValidationException" => return RusotoError::Validation(err.msg),
4904                _ => {}
4905            }
4906        }
4907        RusotoError::Unknown(res)
4908    }
4909}
4910impl fmt::Display for DeleteAliasError {
4911    #[allow(unused_variables)]
4912    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4913        match *self {
4914            DeleteAliasError::InternalService(ref cause) => write!(f, "{}", cause),
4915            DeleteAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4916            DeleteAliasError::NotFound(ref cause) => write!(f, "{}", cause),
4917            DeleteAliasError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4918            DeleteAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
4919        }
4920    }
4921}
4922impl Error for DeleteAliasError {}
4923/// Errors returned by DeleteBuild
4924#[derive(Debug, PartialEq)]
4925pub enum DeleteBuildError {
4926    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4927    InternalService(String),
4928    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4929    InvalidRequest(String),
4930    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4931    NotFound(String),
4932    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4933    TaggingFailed(String),
4934    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4935    Unauthorized(String),
4936}
4937
4938impl DeleteBuildError {
4939    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteBuildError> {
4940        if let Some(err) = proto::json::Error::parse(&res) {
4941            match err.typ.as_str() {
4942                "InternalServiceException" => {
4943                    return RusotoError::Service(DeleteBuildError::InternalService(err.msg))
4944                }
4945                "InvalidRequestException" => {
4946                    return RusotoError::Service(DeleteBuildError::InvalidRequest(err.msg))
4947                }
4948                "NotFoundException" => {
4949                    return RusotoError::Service(DeleteBuildError::NotFound(err.msg))
4950                }
4951                "TaggingFailedException" => {
4952                    return RusotoError::Service(DeleteBuildError::TaggingFailed(err.msg))
4953                }
4954                "UnauthorizedException" => {
4955                    return RusotoError::Service(DeleteBuildError::Unauthorized(err.msg))
4956                }
4957                "ValidationException" => return RusotoError::Validation(err.msg),
4958                _ => {}
4959            }
4960        }
4961        RusotoError::Unknown(res)
4962    }
4963}
4964impl fmt::Display for DeleteBuildError {
4965    #[allow(unused_variables)]
4966    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
4967        match *self {
4968            DeleteBuildError::InternalService(ref cause) => write!(f, "{}", cause),
4969            DeleteBuildError::InvalidRequest(ref cause) => write!(f, "{}", cause),
4970            DeleteBuildError::NotFound(ref cause) => write!(f, "{}", cause),
4971            DeleteBuildError::TaggingFailed(ref cause) => write!(f, "{}", cause),
4972            DeleteBuildError::Unauthorized(ref cause) => write!(f, "{}", cause),
4973        }
4974    }
4975}
4976impl Error for DeleteBuildError {}
4977/// Errors returned by DeleteFleet
4978#[derive(Debug, PartialEq)]
4979pub enum DeleteFleetError {
4980    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
4981    InternalService(String),
4982    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
4983    InvalidFleetStatus(String),
4984    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
4985    InvalidRequest(String),
4986    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
4987    NotFound(String),
4988    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
4989    TaggingFailed(String),
4990    /// <p>The client failed authentication. Clients should not retry such requests.</p>
4991    Unauthorized(String),
4992}
4993
4994impl DeleteFleetError {
4995    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteFleetError> {
4996        if let Some(err) = proto::json::Error::parse(&res) {
4997            match err.typ.as_str() {
4998                "InternalServiceException" => {
4999                    return RusotoError::Service(DeleteFleetError::InternalService(err.msg))
5000                }
5001                "InvalidFleetStatusException" => {
5002                    return RusotoError::Service(DeleteFleetError::InvalidFleetStatus(err.msg))
5003                }
5004                "InvalidRequestException" => {
5005                    return RusotoError::Service(DeleteFleetError::InvalidRequest(err.msg))
5006                }
5007                "NotFoundException" => {
5008                    return RusotoError::Service(DeleteFleetError::NotFound(err.msg))
5009                }
5010                "TaggingFailedException" => {
5011                    return RusotoError::Service(DeleteFleetError::TaggingFailed(err.msg))
5012                }
5013                "UnauthorizedException" => {
5014                    return RusotoError::Service(DeleteFleetError::Unauthorized(err.msg))
5015                }
5016                "ValidationException" => return RusotoError::Validation(err.msg),
5017                _ => {}
5018            }
5019        }
5020        RusotoError::Unknown(res)
5021    }
5022}
5023impl fmt::Display for DeleteFleetError {
5024    #[allow(unused_variables)]
5025    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5026        match *self {
5027            DeleteFleetError::InternalService(ref cause) => write!(f, "{}", cause),
5028            DeleteFleetError::InvalidFleetStatus(ref cause) => write!(f, "{}", cause),
5029            DeleteFleetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5030            DeleteFleetError::NotFound(ref cause) => write!(f, "{}", cause),
5031            DeleteFleetError::TaggingFailed(ref cause) => write!(f, "{}", cause),
5032            DeleteFleetError::Unauthorized(ref cause) => write!(f, "{}", cause),
5033        }
5034    }
5035}
5036impl Error for DeleteFleetError {}
5037/// Errors returned by DeleteGameServerGroup
5038#[derive(Debug, PartialEq)]
5039pub enum DeleteGameServerGroupError {
5040    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5041    InternalService(String),
5042    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5043    InvalidRequest(String),
5044    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5045    NotFound(String),
5046    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5047    Unauthorized(String),
5048}
5049
5050impl DeleteGameServerGroupError {
5051    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteGameServerGroupError> {
5052        if let Some(err) = proto::json::Error::parse(&res) {
5053            match err.typ.as_str() {
5054                "InternalServiceException" => {
5055                    return RusotoError::Service(DeleteGameServerGroupError::InternalService(
5056                        err.msg,
5057                    ))
5058                }
5059                "InvalidRequestException" => {
5060                    return RusotoError::Service(DeleteGameServerGroupError::InvalidRequest(
5061                        err.msg,
5062                    ))
5063                }
5064                "NotFoundException" => {
5065                    return RusotoError::Service(DeleteGameServerGroupError::NotFound(err.msg))
5066                }
5067                "UnauthorizedException" => {
5068                    return RusotoError::Service(DeleteGameServerGroupError::Unauthorized(err.msg))
5069                }
5070                "ValidationException" => return RusotoError::Validation(err.msg),
5071                _ => {}
5072            }
5073        }
5074        RusotoError::Unknown(res)
5075    }
5076}
5077impl fmt::Display for DeleteGameServerGroupError {
5078    #[allow(unused_variables)]
5079    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5080        match *self {
5081            DeleteGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
5082            DeleteGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5083            DeleteGameServerGroupError::NotFound(ref cause) => write!(f, "{}", cause),
5084            DeleteGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
5085        }
5086    }
5087}
5088impl Error for DeleteGameServerGroupError {}
5089/// Errors returned by DeleteGameSessionQueue
5090#[derive(Debug, PartialEq)]
5091pub enum DeleteGameSessionQueueError {
5092    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5093    InternalService(String),
5094    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5095    InvalidRequest(String),
5096    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5097    NotFound(String),
5098    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
5099    TaggingFailed(String),
5100    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5101    Unauthorized(String),
5102}
5103
5104impl DeleteGameSessionQueueError {
5105    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteGameSessionQueueError> {
5106        if let Some(err) = proto::json::Error::parse(&res) {
5107            match err.typ.as_str() {
5108                "InternalServiceException" => {
5109                    return RusotoError::Service(DeleteGameSessionQueueError::InternalService(
5110                        err.msg,
5111                    ))
5112                }
5113                "InvalidRequestException" => {
5114                    return RusotoError::Service(DeleteGameSessionQueueError::InvalidRequest(
5115                        err.msg,
5116                    ))
5117                }
5118                "NotFoundException" => {
5119                    return RusotoError::Service(DeleteGameSessionQueueError::NotFound(err.msg))
5120                }
5121                "TaggingFailedException" => {
5122                    return RusotoError::Service(DeleteGameSessionQueueError::TaggingFailed(
5123                        err.msg,
5124                    ))
5125                }
5126                "UnauthorizedException" => {
5127                    return RusotoError::Service(DeleteGameSessionQueueError::Unauthorized(err.msg))
5128                }
5129                "ValidationException" => return RusotoError::Validation(err.msg),
5130                _ => {}
5131            }
5132        }
5133        RusotoError::Unknown(res)
5134    }
5135}
5136impl fmt::Display for DeleteGameSessionQueueError {
5137    #[allow(unused_variables)]
5138    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5139        match *self {
5140            DeleteGameSessionQueueError::InternalService(ref cause) => write!(f, "{}", cause),
5141            DeleteGameSessionQueueError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5142            DeleteGameSessionQueueError::NotFound(ref cause) => write!(f, "{}", cause),
5143            DeleteGameSessionQueueError::TaggingFailed(ref cause) => write!(f, "{}", cause),
5144            DeleteGameSessionQueueError::Unauthorized(ref cause) => write!(f, "{}", cause),
5145        }
5146    }
5147}
5148impl Error for DeleteGameSessionQueueError {}
5149/// Errors returned by DeleteMatchmakingConfiguration
5150#[derive(Debug, PartialEq)]
5151pub enum DeleteMatchmakingConfigurationError {
5152    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5153    InternalService(String),
5154    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5155    InvalidRequest(String),
5156    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5157    NotFound(String),
5158    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
5159    TaggingFailed(String),
5160    /// <p>The requested operation is not supported in the Region specified.</p>
5161    UnsupportedRegion(String),
5162}
5163
5164impl DeleteMatchmakingConfigurationError {
5165    pub fn from_response(
5166        res: BufferedHttpResponse,
5167    ) -> RusotoError<DeleteMatchmakingConfigurationError> {
5168        if let Some(err) = proto::json::Error::parse(&res) {
5169            match err.typ.as_str() {
5170                "InternalServiceException" => {
5171                    return RusotoError::Service(
5172                        DeleteMatchmakingConfigurationError::InternalService(err.msg),
5173                    )
5174                }
5175                "InvalidRequestException" => {
5176                    return RusotoError::Service(
5177                        DeleteMatchmakingConfigurationError::InvalidRequest(err.msg),
5178                    )
5179                }
5180                "NotFoundException" => {
5181                    return RusotoError::Service(DeleteMatchmakingConfigurationError::NotFound(
5182                        err.msg,
5183                    ))
5184                }
5185                "TaggingFailedException" => {
5186                    return RusotoError::Service(
5187                        DeleteMatchmakingConfigurationError::TaggingFailed(err.msg),
5188                    )
5189                }
5190                "UnsupportedRegionException" => {
5191                    return RusotoError::Service(
5192                        DeleteMatchmakingConfigurationError::UnsupportedRegion(err.msg),
5193                    )
5194                }
5195                "ValidationException" => return RusotoError::Validation(err.msg),
5196                _ => {}
5197            }
5198        }
5199        RusotoError::Unknown(res)
5200    }
5201}
5202impl fmt::Display for DeleteMatchmakingConfigurationError {
5203    #[allow(unused_variables)]
5204    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5205        match *self {
5206            DeleteMatchmakingConfigurationError::InternalService(ref cause) => {
5207                write!(f, "{}", cause)
5208            }
5209            DeleteMatchmakingConfigurationError::InvalidRequest(ref cause) => {
5210                write!(f, "{}", cause)
5211            }
5212            DeleteMatchmakingConfigurationError::NotFound(ref cause) => write!(f, "{}", cause),
5213            DeleteMatchmakingConfigurationError::TaggingFailed(ref cause) => write!(f, "{}", cause),
5214            DeleteMatchmakingConfigurationError::UnsupportedRegion(ref cause) => {
5215                write!(f, "{}", cause)
5216            }
5217        }
5218    }
5219}
5220impl Error for DeleteMatchmakingConfigurationError {}
5221/// Errors returned by DeleteMatchmakingRuleSet
5222#[derive(Debug, PartialEq)]
5223pub enum DeleteMatchmakingRuleSetError {
5224    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5225    InternalService(String),
5226    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5227    InvalidRequest(String),
5228    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5229    NotFound(String),
5230    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
5231    TaggingFailed(String),
5232    /// <p>The requested operation is not supported in the Region specified.</p>
5233    UnsupportedRegion(String),
5234}
5235
5236impl DeleteMatchmakingRuleSetError {
5237    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteMatchmakingRuleSetError> {
5238        if let Some(err) = proto::json::Error::parse(&res) {
5239            match err.typ.as_str() {
5240                "InternalServiceException" => {
5241                    return RusotoError::Service(DeleteMatchmakingRuleSetError::InternalService(
5242                        err.msg,
5243                    ))
5244                }
5245                "InvalidRequestException" => {
5246                    return RusotoError::Service(DeleteMatchmakingRuleSetError::InvalidRequest(
5247                        err.msg,
5248                    ))
5249                }
5250                "NotFoundException" => {
5251                    return RusotoError::Service(DeleteMatchmakingRuleSetError::NotFound(err.msg))
5252                }
5253                "TaggingFailedException" => {
5254                    return RusotoError::Service(DeleteMatchmakingRuleSetError::TaggingFailed(
5255                        err.msg,
5256                    ))
5257                }
5258                "UnsupportedRegionException" => {
5259                    return RusotoError::Service(DeleteMatchmakingRuleSetError::UnsupportedRegion(
5260                        err.msg,
5261                    ))
5262                }
5263                "ValidationException" => return RusotoError::Validation(err.msg),
5264                _ => {}
5265            }
5266        }
5267        RusotoError::Unknown(res)
5268    }
5269}
5270impl fmt::Display for DeleteMatchmakingRuleSetError {
5271    #[allow(unused_variables)]
5272    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5273        match *self {
5274            DeleteMatchmakingRuleSetError::InternalService(ref cause) => write!(f, "{}", cause),
5275            DeleteMatchmakingRuleSetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5276            DeleteMatchmakingRuleSetError::NotFound(ref cause) => write!(f, "{}", cause),
5277            DeleteMatchmakingRuleSetError::TaggingFailed(ref cause) => write!(f, "{}", cause),
5278            DeleteMatchmakingRuleSetError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
5279        }
5280    }
5281}
5282impl Error for DeleteMatchmakingRuleSetError {}
5283/// Errors returned by DeleteScalingPolicy
5284#[derive(Debug, PartialEq)]
5285pub enum DeleteScalingPolicyError {
5286    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5287    InternalService(String),
5288    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5289    InvalidRequest(String),
5290    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5291    NotFound(String),
5292    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5293    Unauthorized(String),
5294}
5295
5296impl DeleteScalingPolicyError {
5297    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteScalingPolicyError> {
5298        if let Some(err) = proto::json::Error::parse(&res) {
5299            match err.typ.as_str() {
5300                "InternalServiceException" => {
5301                    return RusotoError::Service(DeleteScalingPolicyError::InternalService(err.msg))
5302                }
5303                "InvalidRequestException" => {
5304                    return RusotoError::Service(DeleteScalingPolicyError::InvalidRequest(err.msg))
5305                }
5306                "NotFoundException" => {
5307                    return RusotoError::Service(DeleteScalingPolicyError::NotFound(err.msg))
5308                }
5309                "UnauthorizedException" => {
5310                    return RusotoError::Service(DeleteScalingPolicyError::Unauthorized(err.msg))
5311                }
5312                "ValidationException" => return RusotoError::Validation(err.msg),
5313                _ => {}
5314            }
5315        }
5316        RusotoError::Unknown(res)
5317    }
5318}
5319impl fmt::Display for DeleteScalingPolicyError {
5320    #[allow(unused_variables)]
5321    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5322        match *self {
5323            DeleteScalingPolicyError::InternalService(ref cause) => write!(f, "{}", cause),
5324            DeleteScalingPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5325            DeleteScalingPolicyError::NotFound(ref cause) => write!(f, "{}", cause),
5326            DeleteScalingPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
5327        }
5328    }
5329}
5330impl Error for DeleteScalingPolicyError {}
5331/// Errors returned by DeleteScript
5332#[derive(Debug, PartialEq)]
5333pub enum DeleteScriptError {
5334    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5335    InternalService(String),
5336    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5337    InvalidRequest(String),
5338    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5339    NotFound(String),
5340    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
5341    TaggingFailed(String),
5342    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5343    Unauthorized(String),
5344}
5345
5346impl DeleteScriptError {
5347    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteScriptError> {
5348        if let Some(err) = proto::json::Error::parse(&res) {
5349            match err.typ.as_str() {
5350                "InternalServiceException" => {
5351                    return RusotoError::Service(DeleteScriptError::InternalService(err.msg))
5352                }
5353                "InvalidRequestException" => {
5354                    return RusotoError::Service(DeleteScriptError::InvalidRequest(err.msg))
5355                }
5356                "NotFoundException" => {
5357                    return RusotoError::Service(DeleteScriptError::NotFound(err.msg))
5358                }
5359                "TaggingFailedException" => {
5360                    return RusotoError::Service(DeleteScriptError::TaggingFailed(err.msg))
5361                }
5362                "UnauthorizedException" => {
5363                    return RusotoError::Service(DeleteScriptError::Unauthorized(err.msg))
5364                }
5365                "ValidationException" => return RusotoError::Validation(err.msg),
5366                _ => {}
5367            }
5368        }
5369        RusotoError::Unknown(res)
5370    }
5371}
5372impl fmt::Display for DeleteScriptError {
5373    #[allow(unused_variables)]
5374    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5375        match *self {
5376            DeleteScriptError::InternalService(ref cause) => write!(f, "{}", cause),
5377            DeleteScriptError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5378            DeleteScriptError::NotFound(ref cause) => write!(f, "{}", cause),
5379            DeleteScriptError::TaggingFailed(ref cause) => write!(f, "{}", cause),
5380            DeleteScriptError::Unauthorized(ref cause) => write!(f, "{}", cause),
5381        }
5382    }
5383}
5384impl Error for DeleteScriptError {}
5385/// Errors returned by DeleteVpcPeeringAuthorization
5386#[derive(Debug, PartialEq)]
5387pub enum DeleteVpcPeeringAuthorizationError {
5388    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5389    InternalService(String),
5390    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5391    InvalidRequest(String),
5392    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5393    NotFound(String),
5394    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5395    Unauthorized(String),
5396}
5397
5398impl DeleteVpcPeeringAuthorizationError {
5399    pub fn from_response(
5400        res: BufferedHttpResponse,
5401    ) -> RusotoError<DeleteVpcPeeringAuthorizationError> {
5402        if let Some(err) = proto::json::Error::parse(&res) {
5403            match err.typ.as_str() {
5404                "InternalServiceException" => {
5405                    return RusotoError::Service(
5406                        DeleteVpcPeeringAuthorizationError::InternalService(err.msg),
5407                    )
5408                }
5409                "InvalidRequestException" => {
5410                    return RusotoError::Service(
5411                        DeleteVpcPeeringAuthorizationError::InvalidRequest(err.msg),
5412                    )
5413                }
5414                "NotFoundException" => {
5415                    return RusotoError::Service(DeleteVpcPeeringAuthorizationError::NotFound(
5416                        err.msg,
5417                    ))
5418                }
5419                "UnauthorizedException" => {
5420                    return RusotoError::Service(DeleteVpcPeeringAuthorizationError::Unauthorized(
5421                        err.msg,
5422                    ))
5423                }
5424                "ValidationException" => return RusotoError::Validation(err.msg),
5425                _ => {}
5426            }
5427        }
5428        RusotoError::Unknown(res)
5429    }
5430}
5431impl fmt::Display for DeleteVpcPeeringAuthorizationError {
5432    #[allow(unused_variables)]
5433    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5434        match *self {
5435            DeleteVpcPeeringAuthorizationError::InternalService(ref cause) => {
5436                write!(f, "{}", cause)
5437            }
5438            DeleteVpcPeeringAuthorizationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5439            DeleteVpcPeeringAuthorizationError::NotFound(ref cause) => write!(f, "{}", cause),
5440            DeleteVpcPeeringAuthorizationError::Unauthorized(ref cause) => write!(f, "{}", cause),
5441        }
5442    }
5443}
5444impl Error for DeleteVpcPeeringAuthorizationError {}
5445/// Errors returned by DeleteVpcPeeringConnection
5446#[derive(Debug, PartialEq)]
5447pub enum DeleteVpcPeeringConnectionError {
5448    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5449    InternalService(String),
5450    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5451    InvalidRequest(String),
5452    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5453    NotFound(String),
5454    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5455    Unauthorized(String),
5456}
5457
5458impl DeleteVpcPeeringConnectionError {
5459    pub fn from_response(
5460        res: BufferedHttpResponse,
5461    ) -> RusotoError<DeleteVpcPeeringConnectionError> {
5462        if let Some(err) = proto::json::Error::parse(&res) {
5463            match err.typ.as_str() {
5464                "InternalServiceException" => {
5465                    return RusotoError::Service(DeleteVpcPeeringConnectionError::InternalService(
5466                        err.msg,
5467                    ))
5468                }
5469                "InvalidRequestException" => {
5470                    return RusotoError::Service(DeleteVpcPeeringConnectionError::InvalidRequest(
5471                        err.msg,
5472                    ))
5473                }
5474                "NotFoundException" => {
5475                    return RusotoError::Service(DeleteVpcPeeringConnectionError::NotFound(err.msg))
5476                }
5477                "UnauthorizedException" => {
5478                    return RusotoError::Service(DeleteVpcPeeringConnectionError::Unauthorized(
5479                        err.msg,
5480                    ))
5481                }
5482                "ValidationException" => return RusotoError::Validation(err.msg),
5483                _ => {}
5484            }
5485        }
5486        RusotoError::Unknown(res)
5487    }
5488}
5489impl fmt::Display for DeleteVpcPeeringConnectionError {
5490    #[allow(unused_variables)]
5491    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5492        match *self {
5493            DeleteVpcPeeringConnectionError::InternalService(ref cause) => write!(f, "{}", cause),
5494            DeleteVpcPeeringConnectionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5495            DeleteVpcPeeringConnectionError::NotFound(ref cause) => write!(f, "{}", cause),
5496            DeleteVpcPeeringConnectionError::Unauthorized(ref cause) => write!(f, "{}", cause),
5497        }
5498    }
5499}
5500impl Error for DeleteVpcPeeringConnectionError {}
5501/// Errors returned by DeregisterGameServer
5502#[derive(Debug, PartialEq)]
5503pub enum DeregisterGameServerError {
5504    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5505    InternalService(String),
5506    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5507    InvalidRequest(String),
5508    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5509    NotFound(String),
5510    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5511    Unauthorized(String),
5512}
5513
5514impl DeregisterGameServerError {
5515    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeregisterGameServerError> {
5516        if let Some(err) = proto::json::Error::parse(&res) {
5517            match err.typ.as_str() {
5518                "InternalServiceException" => {
5519                    return RusotoError::Service(DeregisterGameServerError::InternalService(
5520                        err.msg,
5521                    ))
5522                }
5523                "InvalidRequestException" => {
5524                    return RusotoError::Service(DeregisterGameServerError::InvalidRequest(err.msg))
5525                }
5526                "NotFoundException" => {
5527                    return RusotoError::Service(DeregisterGameServerError::NotFound(err.msg))
5528                }
5529                "UnauthorizedException" => {
5530                    return RusotoError::Service(DeregisterGameServerError::Unauthorized(err.msg))
5531                }
5532                "ValidationException" => return RusotoError::Validation(err.msg),
5533                _ => {}
5534            }
5535        }
5536        RusotoError::Unknown(res)
5537    }
5538}
5539impl fmt::Display for DeregisterGameServerError {
5540    #[allow(unused_variables)]
5541    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5542        match *self {
5543            DeregisterGameServerError::InternalService(ref cause) => write!(f, "{}", cause),
5544            DeregisterGameServerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5545            DeregisterGameServerError::NotFound(ref cause) => write!(f, "{}", cause),
5546            DeregisterGameServerError::Unauthorized(ref cause) => write!(f, "{}", cause),
5547        }
5548    }
5549}
5550impl Error for DeregisterGameServerError {}
5551/// Errors returned by DescribeAlias
5552#[derive(Debug, PartialEq)]
5553pub enum DescribeAliasError {
5554    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5555    InternalService(String),
5556    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5557    InvalidRequest(String),
5558    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5559    NotFound(String),
5560    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5561    Unauthorized(String),
5562}
5563
5564impl DescribeAliasError {
5565    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeAliasError> {
5566        if let Some(err) = proto::json::Error::parse(&res) {
5567            match err.typ.as_str() {
5568                "InternalServiceException" => {
5569                    return RusotoError::Service(DescribeAliasError::InternalService(err.msg))
5570                }
5571                "InvalidRequestException" => {
5572                    return RusotoError::Service(DescribeAliasError::InvalidRequest(err.msg))
5573                }
5574                "NotFoundException" => {
5575                    return RusotoError::Service(DescribeAliasError::NotFound(err.msg))
5576                }
5577                "UnauthorizedException" => {
5578                    return RusotoError::Service(DescribeAliasError::Unauthorized(err.msg))
5579                }
5580                "ValidationException" => return RusotoError::Validation(err.msg),
5581                _ => {}
5582            }
5583        }
5584        RusotoError::Unknown(res)
5585    }
5586}
5587impl fmt::Display for DescribeAliasError {
5588    #[allow(unused_variables)]
5589    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5590        match *self {
5591            DescribeAliasError::InternalService(ref cause) => write!(f, "{}", cause),
5592            DescribeAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5593            DescribeAliasError::NotFound(ref cause) => write!(f, "{}", cause),
5594            DescribeAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
5595        }
5596    }
5597}
5598impl Error for DescribeAliasError {}
5599/// Errors returned by DescribeBuild
5600#[derive(Debug, PartialEq)]
5601pub enum DescribeBuildError {
5602    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5603    InternalService(String),
5604    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5605    InvalidRequest(String),
5606    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5607    NotFound(String),
5608    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5609    Unauthorized(String),
5610}
5611
5612impl DescribeBuildError {
5613    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeBuildError> {
5614        if let Some(err) = proto::json::Error::parse(&res) {
5615            match err.typ.as_str() {
5616                "InternalServiceException" => {
5617                    return RusotoError::Service(DescribeBuildError::InternalService(err.msg))
5618                }
5619                "InvalidRequestException" => {
5620                    return RusotoError::Service(DescribeBuildError::InvalidRequest(err.msg))
5621                }
5622                "NotFoundException" => {
5623                    return RusotoError::Service(DescribeBuildError::NotFound(err.msg))
5624                }
5625                "UnauthorizedException" => {
5626                    return RusotoError::Service(DescribeBuildError::Unauthorized(err.msg))
5627                }
5628                "ValidationException" => return RusotoError::Validation(err.msg),
5629                _ => {}
5630            }
5631        }
5632        RusotoError::Unknown(res)
5633    }
5634}
5635impl fmt::Display for DescribeBuildError {
5636    #[allow(unused_variables)]
5637    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5638        match *self {
5639            DescribeBuildError::InternalService(ref cause) => write!(f, "{}", cause),
5640            DescribeBuildError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5641            DescribeBuildError::NotFound(ref cause) => write!(f, "{}", cause),
5642            DescribeBuildError::Unauthorized(ref cause) => write!(f, "{}", cause),
5643        }
5644    }
5645}
5646impl Error for DescribeBuildError {}
5647/// Errors returned by DescribeEC2InstanceLimits
5648#[derive(Debug, PartialEq)]
5649pub enum DescribeEC2InstanceLimitsError {
5650    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5651    InternalService(String),
5652    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5653    InvalidRequest(String),
5654    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5655    Unauthorized(String),
5656}
5657
5658impl DescribeEC2InstanceLimitsError {
5659    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeEC2InstanceLimitsError> {
5660        if let Some(err) = proto::json::Error::parse(&res) {
5661            match err.typ.as_str() {
5662                "InternalServiceException" => {
5663                    return RusotoError::Service(DescribeEC2InstanceLimitsError::InternalService(
5664                        err.msg,
5665                    ))
5666                }
5667                "InvalidRequestException" => {
5668                    return RusotoError::Service(DescribeEC2InstanceLimitsError::InvalidRequest(
5669                        err.msg,
5670                    ))
5671                }
5672                "UnauthorizedException" => {
5673                    return RusotoError::Service(DescribeEC2InstanceLimitsError::Unauthorized(
5674                        err.msg,
5675                    ))
5676                }
5677                "ValidationException" => return RusotoError::Validation(err.msg),
5678                _ => {}
5679            }
5680        }
5681        RusotoError::Unknown(res)
5682    }
5683}
5684impl fmt::Display for DescribeEC2InstanceLimitsError {
5685    #[allow(unused_variables)]
5686    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5687        match *self {
5688            DescribeEC2InstanceLimitsError::InternalService(ref cause) => write!(f, "{}", cause),
5689            DescribeEC2InstanceLimitsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5690            DescribeEC2InstanceLimitsError::Unauthorized(ref cause) => write!(f, "{}", cause),
5691        }
5692    }
5693}
5694impl Error for DescribeEC2InstanceLimitsError {}
5695/// Errors returned by DescribeFleetAttributes
5696#[derive(Debug, PartialEq)]
5697pub enum DescribeFleetAttributesError {
5698    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5699    InternalService(String),
5700    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5701    InvalidRequest(String),
5702    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5703    NotFound(String),
5704    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5705    Unauthorized(String),
5706}
5707
5708impl DescribeFleetAttributesError {
5709    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeFleetAttributesError> {
5710        if let Some(err) = proto::json::Error::parse(&res) {
5711            match err.typ.as_str() {
5712                "InternalServiceException" => {
5713                    return RusotoError::Service(DescribeFleetAttributesError::InternalService(
5714                        err.msg,
5715                    ))
5716                }
5717                "InvalidRequestException" => {
5718                    return RusotoError::Service(DescribeFleetAttributesError::InvalidRequest(
5719                        err.msg,
5720                    ))
5721                }
5722                "NotFoundException" => {
5723                    return RusotoError::Service(DescribeFleetAttributesError::NotFound(err.msg))
5724                }
5725                "UnauthorizedException" => {
5726                    return RusotoError::Service(DescribeFleetAttributesError::Unauthorized(
5727                        err.msg,
5728                    ))
5729                }
5730                "ValidationException" => return RusotoError::Validation(err.msg),
5731                _ => {}
5732            }
5733        }
5734        RusotoError::Unknown(res)
5735    }
5736}
5737impl fmt::Display for DescribeFleetAttributesError {
5738    #[allow(unused_variables)]
5739    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5740        match *self {
5741            DescribeFleetAttributesError::InternalService(ref cause) => write!(f, "{}", cause),
5742            DescribeFleetAttributesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5743            DescribeFleetAttributesError::NotFound(ref cause) => write!(f, "{}", cause),
5744            DescribeFleetAttributesError::Unauthorized(ref cause) => write!(f, "{}", cause),
5745        }
5746    }
5747}
5748impl Error for DescribeFleetAttributesError {}
5749/// Errors returned by DescribeFleetCapacity
5750#[derive(Debug, PartialEq)]
5751pub enum DescribeFleetCapacityError {
5752    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5753    InternalService(String),
5754    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5755    InvalidRequest(String),
5756    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5757    NotFound(String),
5758    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5759    Unauthorized(String),
5760}
5761
5762impl DescribeFleetCapacityError {
5763    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeFleetCapacityError> {
5764        if let Some(err) = proto::json::Error::parse(&res) {
5765            match err.typ.as_str() {
5766                "InternalServiceException" => {
5767                    return RusotoError::Service(DescribeFleetCapacityError::InternalService(
5768                        err.msg,
5769                    ))
5770                }
5771                "InvalidRequestException" => {
5772                    return RusotoError::Service(DescribeFleetCapacityError::InvalidRequest(
5773                        err.msg,
5774                    ))
5775                }
5776                "NotFoundException" => {
5777                    return RusotoError::Service(DescribeFleetCapacityError::NotFound(err.msg))
5778                }
5779                "UnauthorizedException" => {
5780                    return RusotoError::Service(DescribeFleetCapacityError::Unauthorized(err.msg))
5781                }
5782                "ValidationException" => return RusotoError::Validation(err.msg),
5783                _ => {}
5784            }
5785        }
5786        RusotoError::Unknown(res)
5787    }
5788}
5789impl fmt::Display for DescribeFleetCapacityError {
5790    #[allow(unused_variables)]
5791    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5792        match *self {
5793            DescribeFleetCapacityError::InternalService(ref cause) => write!(f, "{}", cause),
5794            DescribeFleetCapacityError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5795            DescribeFleetCapacityError::NotFound(ref cause) => write!(f, "{}", cause),
5796            DescribeFleetCapacityError::Unauthorized(ref cause) => write!(f, "{}", cause),
5797        }
5798    }
5799}
5800impl Error for DescribeFleetCapacityError {}
5801/// Errors returned by DescribeFleetEvents
5802#[derive(Debug, PartialEq)]
5803pub enum DescribeFleetEventsError {
5804    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5805    InternalService(String),
5806    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5807    InvalidRequest(String),
5808    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5809    NotFound(String),
5810    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5811    Unauthorized(String),
5812}
5813
5814impl DescribeFleetEventsError {
5815    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeFleetEventsError> {
5816        if let Some(err) = proto::json::Error::parse(&res) {
5817            match err.typ.as_str() {
5818                "InternalServiceException" => {
5819                    return RusotoError::Service(DescribeFleetEventsError::InternalService(err.msg))
5820                }
5821                "InvalidRequestException" => {
5822                    return RusotoError::Service(DescribeFleetEventsError::InvalidRequest(err.msg))
5823                }
5824                "NotFoundException" => {
5825                    return RusotoError::Service(DescribeFleetEventsError::NotFound(err.msg))
5826                }
5827                "UnauthorizedException" => {
5828                    return RusotoError::Service(DescribeFleetEventsError::Unauthorized(err.msg))
5829                }
5830                "ValidationException" => return RusotoError::Validation(err.msg),
5831                _ => {}
5832            }
5833        }
5834        RusotoError::Unknown(res)
5835    }
5836}
5837impl fmt::Display for DescribeFleetEventsError {
5838    #[allow(unused_variables)]
5839    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5840        match *self {
5841            DescribeFleetEventsError::InternalService(ref cause) => write!(f, "{}", cause),
5842            DescribeFleetEventsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5843            DescribeFleetEventsError::NotFound(ref cause) => write!(f, "{}", cause),
5844            DescribeFleetEventsError::Unauthorized(ref cause) => write!(f, "{}", cause),
5845        }
5846    }
5847}
5848impl Error for DescribeFleetEventsError {}
5849/// Errors returned by DescribeFleetPortSettings
5850#[derive(Debug, PartialEq)]
5851pub enum DescribeFleetPortSettingsError {
5852    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5853    InternalService(String),
5854    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5855    InvalidRequest(String),
5856    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5857    NotFound(String),
5858    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5859    Unauthorized(String),
5860}
5861
5862impl DescribeFleetPortSettingsError {
5863    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeFleetPortSettingsError> {
5864        if let Some(err) = proto::json::Error::parse(&res) {
5865            match err.typ.as_str() {
5866                "InternalServiceException" => {
5867                    return RusotoError::Service(DescribeFleetPortSettingsError::InternalService(
5868                        err.msg,
5869                    ))
5870                }
5871                "InvalidRequestException" => {
5872                    return RusotoError::Service(DescribeFleetPortSettingsError::InvalidRequest(
5873                        err.msg,
5874                    ))
5875                }
5876                "NotFoundException" => {
5877                    return RusotoError::Service(DescribeFleetPortSettingsError::NotFound(err.msg))
5878                }
5879                "UnauthorizedException" => {
5880                    return RusotoError::Service(DescribeFleetPortSettingsError::Unauthorized(
5881                        err.msg,
5882                    ))
5883                }
5884                "ValidationException" => return RusotoError::Validation(err.msg),
5885                _ => {}
5886            }
5887        }
5888        RusotoError::Unknown(res)
5889    }
5890}
5891impl fmt::Display for DescribeFleetPortSettingsError {
5892    #[allow(unused_variables)]
5893    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5894        match *self {
5895            DescribeFleetPortSettingsError::InternalService(ref cause) => write!(f, "{}", cause),
5896            DescribeFleetPortSettingsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5897            DescribeFleetPortSettingsError::NotFound(ref cause) => write!(f, "{}", cause),
5898            DescribeFleetPortSettingsError::Unauthorized(ref cause) => write!(f, "{}", cause),
5899        }
5900    }
5901}
5902impl Error for DescribeFleetPortSettingsError {}
5903/// Errors returned by DescribeFleetUtilization
5904#[derive(Debug, PartialEq)]
5905pub enum DescribeFleetUtilizationError {
5906    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5907    InternalService(String),
5908    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5909    InvalidRequest(String),
5910    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5911    NotFound(String),
5912    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5913    Unauthorized(String),
5914}
5915
5916impl DescribeFleetUtilizationError {
5917    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeFleetUtilizationError> {
5918        if let Some(err) = proto::json::Error::parse(&res) {
5919            match err.typ.as_str() {
5920                "InternalServiceException" => {
5921                    return RusotoError::Service(DescribeFleetUtilizationError::InternalService(
5922                        err.msg,
5923                    ))
5924                }
5925                "InvalidRequestException" => {
5926                    return RusotoError::Service(DescribeFleetUtilizationError::InvalidRequest(
5927                        err.msg,
5928                    ))
5929                }
5930                "NotFoundException" => {
5931                    return RusotoError::Service(DescribeFleetUtilizationError::NotFound(err.msg))
5932                }
5933                "UnauthorizedException" => {
5934                    return RusotoError::Service(DescribeFleetUtilizationError::Unauthorized(
5935                        err.msg,
5936                    ))
5937                }
5938                "ValidationException" => return RusotoError::Validation(err.msg),
5939                _ => {}
5940            }
5941        }
5942        RusotoError::Unknown(res)
5943    }
5944}
5945impl fmt::Display for DescribeFleetUtilizationError {
5946    #[allow(unused_variables)]
5947    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5948        match *self {
5949            DescribeFleetUtilizationError::InternalService(ref cause) => write!(f, "{}", cause),
5950            DescribeFleetUtilizationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5951            DescribeFleetUtilizationError::NotFound(ref cause) => write!(f, "{}", cause),
5952            DescribeFleetUtilizationError::Unauthorized(ref cause) => write!(f, "{}", cause),
5953        }
5954    }
5955}
5956impl Error for DescribeFleetUtilizationError {}
5957/// Errors returned by DescribeGameServer
5958#[derive(Debug, PartialEq)]
5959pub enum DescribeGameServerError {
5960    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
5961    InternalService(String),
5962    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
5963    InvalidRequest(String),
5964    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
5965    NotFound(String),
5966    /// <p>The client failed authentication. Clients should not retry such requests.</p>
5967    Unauthorized(String),
5968}
5969
5970impl DescribeGameServerError {
5971    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeGameServerError> {
5972        if let Some(err) = proto::json::Error::parse(&res) {
5973            match err.typ.as_str() {
5974                "InternalServiceException" => {
5975                    return RusotoError::Service(DescribeGameServerError::InternalService(err.msg))
5976                }
5977                "InvalidRequestException" => {
5978                    return RusotoError::Service(DescribeGameServerError::InvalidRequest(err.msg))
5979                }
5980                "NotFoundException" => {
5981                    return RusotoError::Service(DescribeGameServerError::NotFound(err.msg))
5982                }
5983                "UnauthorizedException" => {
5984                    return RusotoError::Service(DescribeGameServerError::Unauthorized(err.msg))
5985                }
5986                "ValidationException" => return RusotoError::Validation(err.msg),
5987                _ => {}
5988            }
5989        }
5990        RusotoError::Unknown(res)
5991    }
5992}
5993impl fmt::Display for DescribeGameServerError {
5994    #[allow(unused_variables)]
5995    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
5996        match *self {
5997            DescribeGameServerError::InternalService(ref cause) => write!(f, "{}", cause),
5998            DescribeGameServerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
5999            DescribeGameServerError::NotFound(ref cause) => write!(f, "{}", cause),
6000            DescribeGameServerError::Unauthorized(ref cause) => write!(f, "{}", cause),
6001        }
6002    }
6003}
6004impl Error for DescribeGameServerError {}
6005/// Errors returned by DescribeGameServerGroup
6006#[derive(Debug, PartialEq)]
6007pub enum DescribeGameServerGroupError {
6008    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6009    InternalService(String),
6010    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6011    InvalidRequest(String),
6012    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6013    NotFound(String),
6014    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6015    Unauthorized(String),
6016}
6017
6018impl DescribeGameServerGroupError {
6019    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeGameServerGroupError> {
6020        if let Some(err) = proto::json::Error::parse(&res) {
6021            match err.typ.as_str() {
6022                "InternalServiceException" => {
6023                    return RusotoError::Service(DescribeGameServerGroupError::InternalService(
6024                        err.msg,
6025                    ))
6026                }
6027                "InvalidRequestException" => {
6028                    return RusotoError::Service(DescribeGameServerGroupError::InvalidRequest(
6029                        err.msg,
6030                    ))
6031                }
6032                "NotFoundException" => {
6033                    return RusotoError::Service(DescribeGameServerGroupError::NotFound(err.msg))
6034                }
6035                "UnauthorizedException" => {
6036                    return RusotoError::Service(DescribeGameServerGroupError::Unauthorized(
6037                        err.msg,
6038                    ))
6039                }
6040                "ValidationException" => return RusotoError::Validation(err.msg),
6041                _ => {}
6042            }
6043        }
6044        RusotoError::Unknown(res)
6045    }
6046}
6047impl fmt::Display for DescribeGameServerGroupError {
6048    #[allow(unused_variables)]
6049    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6050        match *self {
6051            DescribeGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
6052            DescribeGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6053            DescribeGameServerGroupError::NotFound(ref cause) => write!(f, "{}", cause),
6054            DescribeGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
6055        }
6056    }
6057}
6058impl Error for DescribeGameServerGroupError {}
6059/// Errors returned by DescribeGameSessionDetails
6060#[derive(Debug, PartialEq)]
6061pub enum DescribeGameSessionDetailsError {
6062    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6063    InternalService(String),
6064    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6065    InvalidRequest(String),
6066    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6067    NotFound(String),
6068    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
6069    TerminalRoutingStrategy(String),
6070    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6071    Unauthorized(String),
6072}
6073
6074impl DescribeGameSessionDetailsError {
6075    pub fn from_response(
6076        res: BufferedHttpResponse,
6077    ) -> RusotoError<DescribeGameSessionDetailsError> {
6078        if let Some(err) = proto::json::Error::parse(&res) {
6079            match err.typ.as_str() {
6080                "InternalServiceException" => {
6081                    return RusotoError::Service(DescribeGameSessionDetailsError::InternalService(
6082                        err.msg,
6083                    ))
6084                }
6085                "InvalidRequestException" => {
6086                    return RusotoError::Service(DescribeGameSessionDetailsError::InvalidRequest(
6087                        err.msg,
6088                    ))
6089                }
6090                "NotFoundException" => {
6091                    return RusotoError::Service(DescribeGameSessionDetailsError::NotFound(err.msg))
6092                }
6093                "TerminalRoutingStrategyException" => {
6094                    return RusotoError::Service(
6095                        DescribeGameSessionDetailsError::TerminalRoutingStrategy(err.msg),
6096                    )
6097                }
6098                "UnauthorizedException" => {
6099                    return RusotoError::Service(DescribeGameSessionDetailsError::Unauthorized(
6100                        err.msg,
6101                    ))
6102                }
6103                "ValidationException" => return RusotoError::Validation(err.msg),
6104                _ => {}
6105            }
6106        }
6107        RusotoError::Unknown(res)
6108    }
6109}
6110impl fmt::Display for DescribeGameSessionDetailsError {
6111    #[allow(unused_variables)]
6112    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6113        match *self {
6114            DescribeGameSessionDetailsError::InternalService(ref cause) => write!(f, "{}", cause),
6115            DescribeGameSessionDetailsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6116            DescribeGameSessionDetailsError::NotFound(ref cause) => write!(f, "{}", cause),
6117            DescribeGameSessionDetailsError::TerminalRoutingStrategy(ref cause) => {
6118                write!(f, "{}", cause)
6119            }
6120            DescribeGameSessionDetailsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6121        }
6122    }
6123}
6124impl Error for DescribeGameSessionDetailsError {}
6125/// Errors returned by DescribeGameSessionPlacement
6126#[derive(Debug, PartialEq)]
6127pub enum DescribeGameSessionPlacementError {
6128    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6129    InternalService(String),
6130    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6131    InvalidRequest(String),
6132    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6133    NotFound(String),
6134    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6135    Unauthorized(String),
6136}
6137
6138impl DescribeGameSessionPlacementError {
6139    pub fn from_response(
6140        res: BufferedHttpResponse,
6141    ) -> RusotoError<DescribeGameSessionPlacementError> {
6142        if let Some(err) = proto::json::Error::parse(&res) {
6143            match err.typ.as_str() {
6144                "InternalServiceException" => {
6145                    return RusotoError::Service(
6146                        DescribeGameSessionPlacementError::InternalService(err.msg),
6147                    )
6148                }
6149                "InvalidRequestException" => {
6150                    return RusotoError::Service(DescribeGameSessionPlacementError::InvalidRequest(
6151                        err.msg,
6152                    ))
6153                }
6154                "NotFoundException" => {
6155                    return RusotoError::Service(DescribeGameSessionPlacementError::NotFound(
6156                        err.msg,
6157                    ))
6158                }
6159                "UnauthorizedException" => {
6160                    return RusotoError::Service(DescribeGameSessionPlacementError::Unauthorized(
6161                        err.msg,
6162                    ))
6163                }
6164                "ValidationException" => return RusotoError::Validation(err.msg),
6165                _ => {}
6166            }
6167        }
6168        RusotoError::Unknown(res)
6169    }
6170}
6171impl fmt::Display for DescribeGameSessionPlacementError {
6172    #[allow(unused_variables)]
6173    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6174        match *self {
6175            DescribeGameSessionPlacementError::InternalService(ref cause) => write!(f, "{}", cause),
6176            DescribeGameSessionPlacementError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6177            DescribeGameSessionPlacementError::NotFound(ref cause) => write!(f, "{}", cause),
6178            DescribeGameSessionPlacementError::Unauthorized(ref cause) => write!(f, "{}", cause),
6179        }
6180    }
6181}
6182impl Error for DescribeGameSessionPlacementError {}
6183/// Errors returned by DescribeGameSessionQueues
6184#[derive(Debug, PartialEq)]
6185pub enum DescribeGameSessionQueuesError {
6186    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6187    InternalService(String),
6188    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6189    InvalidRequest(String),
6190    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6191    NotFound(String),
6192    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6193    Unauthorized(String),
6194}
6195
6196impl DescribeGameSessionQueuesError {
6197    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeGameSessionQueuesError> {
6198        if let Some(err) = proto::json::Error::parse(&res) {
6199            match err.typ.as_str() {
6200                "InternalServiceException" => {
6201                    return RusotoError::Service(DescribeGameSessionQueuesError::InternalService(
6202                        err.msg,
6203                    ))
6204                }
6205                "InvalidRequestException" => {
6206                    return RusotoError::Service(DescribeGameSessionQueuesError::InvalidRequest(
6207                        err.msg,
6208                    ))
6209                }
6210                "NotFoundException" => {
6211                    return RusotoError::Service(DescribeGameSessionQueuesError::NotFound(err.msg))
6212                }
6213                "UnauthorizedException" => {
6214                    return RusotoError::Service(DescribeGameSessionQueuesError::Unauthorized(
6215                        err.msg,
6216                    ))
6217                }
6218                "ValidationException" => return RusotoError::Validation(err.msg),
6219                _ => {}
6220            }
6221        }
6222        RusotoError::Unknown(res)
6223    }
6224}
6225impl fmt::Display for DescribeGameSessionQueuesError {
6226    #[allow(unused_variables)]
6227    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6228        match *self {
6229            DescribeGameSessionQueuesError::InternalService(ref cause) => write!(f, "{}", cause),
6230            DescribeGameSessionQueuesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6231            DescribeGameSessionQueuesError::NotFound(ref cause) => write!(f, "{}", cause),
6232            DescribeGameSessionQueuesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6233        }
6234    }
6235}
6236impl Error for DescribeGameSessionQueuesError {}
6237/// Errors returned by DescribeGameSessions
6238#[derive(Debug, PartialEq)]
6239pub enum DescribeGameSessionsError {
6240    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6241    InternalService(String),
6242    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6243    InvalidRequest(String),
6244    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6245    NotFound(String),
6246    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
6247    TerminalRoutingStrategy(String),
6248    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6249    Unauthorized(String),
6250}
6251
6252impl DescribeGameSessionsError {
6253    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeGameSessionsError> {
6254        if let Some(err) = proto::json::Error::parse(&res) {
6255            match err.typ.as_str() {
6256                "InternalServiceException" => {
6257                    return RusotoError::Service(DescribeGameSessionsError::InternalService(
6258                        err.msg,
6259                    ))
6260                }
6261                "InvalidRequestException" => {
6262                    return RusotoError::Service(DescribeGameSessionsError::InvalidRequest(err.msg))
6263                }
6264                "NotFoundException" => {
6265                    return RusotoError::Service(DescribeGameSessionsError::NotFound(err.msg))
6266                }
6267                "TerminalRoutingStrategyException" => {
6268                    return RusotoError::Service(
6269                        DescribeGameSessionsError::TerminalRoutingStrategy(err.msg),
6270                    )
6271                }
6272                "UnauthorizedException" => {
6273                    return RusotoError::Service(DescribeGameSessionsError::Unauthorized(err.msg))
6274                }
6275                "ValidationException" => return RusotoError::Validation(err.msg),
6276                _ => {}
6277            }
6278        }
6279        RusotoError::Unknown(res)
6280    }
6281}
6282impl fmt::Display for DescribeGameSessionsError {
6283    #[allow(unused_variables)]
6284    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6285        match *self {
6286            DescribeGameSessionsError::InternalService(ref cause) => write!(f, "{}", cause),
6287            DescribeGameSessionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6288            DescribeGameSessionsError::NotFound(ref cause) => write!(f, "{}", cause),
6289            DescribeGameSessionsError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
6290            DescribeGameSessionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6291        }
6292    }
6293}
6294impl Error for DescribeGameSessionsError {}
6295/// Errors returned by DescribeInstances
6296#[derive(Debug, PartialEq)]
6297pub enum DescribeInstancesError {
6298    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6299    InternalService(String),
6300    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6301    InvalidRequest(String),
6302    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6303    NotFound(String),
6304    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6305    Unauthorized(String),
6306}
6307
6308impl DescribeInstancesError {
6309    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeInstancesError> {
6310        if let Some(err) = proto::json::Error::parse(&res) {
6311            match err.typ.as_str() {
6312                "InternalServiceException" => {
6313                    return RusotoError::Service(DescribeInstancesError::InternalService(err.msg))
6314                }
6315                "InvalidRequestException" => {
6316                    return RusotoError::Service(DescribeInstancesError::InvalidRequest(err.msg))
6317                }
6318                "NotFoundException" => {
6319                    return RusotoError::Service(DescribeInstancesError::NotFound(err.msg))
6320                }
6321                "UnauthorizedException" => {
6322                    return RusotoError::Service(DescribeInstancesError::Unauthorized(err.msg))
6323                }
6324                "ValidationException" => return RusotoError::Validation(err.msg),
6325                _ => {}
6326            }
6327        }
6328        RusotoError::Unknown(res)
6329    }
6330}
6331impl fmt::Display for DescribeInstancesError {
6332    #[allow(unused_variables)]
6333    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6334        match *self {
6335            DescribeInstancesError::InternalService(ref cause) => write!(f, "{}", cause),
6336            DescribeInstancesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6337            DescribeInstancesError::NotFound(ref cause) => write!(f, "{}", cause),
6338            DescribeInstancesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6339        }
6340    }
6341}
6342impl Error for DescribeInstancesError {}
6343/// Errors returned by DescribeMatchmaking
6344#[derive(Debug, PartialEq)]
6345pub enum DescribeMatchmakingError {
6346    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6347    InternalService(String),
6348    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6349    InvalidRequest(String),
6350    /// <p>The requested operation is not supported in the Region specified.</p>
6351    UnsupportedRegion(String),
6352}
6353
6354impl DescribeMatchmakingError {
6355    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeMatchmakingError> {
6356        if let Some(err) = proto::json::Error::parse(&res) {
6357            match err.typ.as_str() {
6358                "InternalServiceException" => {
6359                    return RusotoError::Service(DescribeMatchmakingError::InternalService(err.msg))
6360                }
6361                "InvalidRequestException" => {
6362                    return RusotoError::Service(DescribeMatchmakingError::InvalidRequest(err.msg))
6363                }
6364                "UnsupportedRegionException" => {
6365                    return RusotoError::Service(DescribeMatchmakingError::UnsupportedRegion(
6366                        err.msg,
6367                    ))
6368                }
6369                "ValidationException" => return RusotoError::Validation(err.msg),
6370                _ => {}
6371            }
6372        }
6373        RusotoError::Unknown(res)
6374    }
6375}
6376impl fmt::Display for DescribeMatchmakingError {
6377    #[allow(unused_variables)]
6378    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6379        match *self {
6380            DescribeMatchmakingError::InternalService(ref cause) => write!(f, "{}", cause),
6381            DescribeMatchmakingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6382            DescribeMatchmakingError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
6383        }
6384    }
6385}
6386impl Error for DescribeMatchmakingError {}
6387/// Errors returned by DescribeMatchmakingConfigurations
6388#[derive(Debug, PartialEq)]
6389pub enum DescribeMatchmakingConfigurationsError {
6390    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6391    InternalService(String),
6392    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6393    InvalidRequest(String),
6394    /// <p>The requested operation is not supported in the Region specified.</p>
6395    UnsupportedRegion(String),
6396}
6397
6398impl DescribeMatchmakingConfigurationsError {
6399    pub fn from_response(
6400        res: BufferedHttpResponse,
6401    ) -> RusotoError<DescribeMatchmakingConfigurationsError> {
6402        if let Some(err) = proto::json::Error::parse(&res) {
6403            match err.typ.as_str() {
6404                "InternalServiceException" => {
6405                    return RusotoError::Service(
6406                        DescribeMatchmakingConfigurationsError::InternalService(err.msg),
6407                    )
6408                }
6409                "InvalidRequestException" => {
6410                    return RusotoError::Service(
6411                        DescribeMatchmakingConfigurationsError::InvalidRequest(err.msg),
6412                    )
6413                }
6414                "UnsupportedRegionException" => {
6415                    return RusotoError::Service(
6416                        DescribeMatchmakingConfigurationsError::UnsupportedRegion(err.msg),
6417                    )
6418                }
6419                "ValidationException" => return RusotoError::Validation(err.msg),
6420                _ => {}
6421            }
6422        }
6423        RusotoError::Unknown(res)
6424    }
6425}
6426impl fmt::Display for DescribeMatchmakingConfigurationsError {
6427    #[allow(unused_variables)]
6428    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6429        match *self {
6430            DescribeMatchmakingConfigurationsError::InternalService(ref cause) => {
6431                write!(f, "{}", cause)
6432            }
6433            DescribeMatchmakingConfigurationsError::InvalidRequest(ref cause) => {
6434                write!(f, "{}", cause)
6435            }
6436            DescribeMatchmakingConfigurationsError::UnsupportedRegion(ref cause) => {
6437                write!(f, "{}", cause)
6438            }
6439        }
6440    }
6441}
6442impl Error for DescribeMatchmakingConfigurationsError {}
6443/// Errors returned by DescribeMatchmakingRuleSets
6444#[derive(Debug, PartialEq)]
6445pub enum DescribeMatchmakingRuleSetsError {
6446    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6447    InternalService(String),
6448    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6449    InvalidRequest(String),
6450    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6451    NotFound(String),
6452    /// <p>The requested operation is not supported in the Region specified.</p>
6453    UnsupportedRegion(String),
6454}
6455
6456impl DescribeMatchmakingRuleSetsError {
6457    pub fn from_response(
6458        res: BufferedHttpResponse,
6459    ) -> RusotoError<DescribeMatchmakingRuleSetsError> {
6460        if let Some(err) = proto::json::Error::parse(&res) {
6461            match err.typ.as_str() {
6462                "InternalServiceException" => {
6463                    return RusotoError::Service(DescribeMatchmakingRuleSetsError::InternalService(
6464                        err.msg,
6465                    ))
6466                }
6467                "InvalidRequestException" => {
6468                    return RusotoError::Service(DescribeMatchmakingRuleSetsError::InvalidRequest(
6469                        err.msg,
6470                    ))
6471                }
6472                "NotFoundException" => {
6473                    return RusotoError::Service(DescribeMatchmakingRuleSetsError::NotFound(
6474                        err.msg,
6475                    ))
6476                }
6477                "UnsupportedRegionException" => {
6478                    return RusotoError::Service(
6479                        DescribeMatchmakingRuleSetsError::UnsupportedRegion(err.msg),
6480                    )
6481                }
6482                "ValidationException" => return RusotoError::Validation(err.msg),
6483                _ => {}
6484            }
6485        }
6486        RusotoError::Unknown(res)
6487    }
6488}
6489impl fmt::Display for DescribeMatchmakingRuleSetsError {
6490    #[allow(unused_variables)]
6491    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6492        match *self {
6493            DescribeMatchmakingRuleSetsError::InternalService(ref cause) => write!(f, "{}", cause),
6494            DescribeMatchmakingRuleSetsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6495            DescribeMatchmakingRuleSetsError::NotFound(ref cause) => write!(f, "{}", cause),
6496            DescribeMatchmakingRuleSetsError::UnsupportedRegion(ref cause) => {
6497                write!(f, "{}", cause)
6498            }
6499        }
6500    }
6501}
6502impl Error for DescribeMatchmakingRuleSetsError {}
6503/// Errors returned by DescribePlayerSessions
6504#[derive(Debug, PartialEq)]
6505pub enum DescribePlayerSessionsError {
6506    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6507    InternalService(String),
6508    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6509    InvalidRequest(String),
6510    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6511    NotFound(String),
6512    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6513    Unauthorized(String),
6514}
6515
6516impl DescribePlayerSessionsError {
6517    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribePlayerSessionsError> {
6518        if let Some(err) = proto::json::Error::parse(&res) {
6519            match err.typ.as_str() {
6520                "InternalServiceException" => {
6521                    return RusotoError::Service(DescribePlayerSessionsError::InternalService(
6522                        err.msg,
6523                    ))
6524                }
6525                "InvalidRequestException" => {
6526                    return RusotoError::Service(DescribePlayerSessionsError::InvalidRequest(
6527                        err.msg,
6528                    ))
6529                }
6530                "NotFoundException" => {
6531                    return RusotoError::Service(DescribePlayerSessionsError::NotFound(err.msg))
6532                }
6533                "UnauthorizedException" => {
6534                    return RusotoError::Service(DescribePlayerSessionsError::Unauthorized(err.msg))
6535                }
6536                "ValidationException" => return RusotoError::Validation(err.msg),
6537                _ => {}
6538            }
6539        }
6540        RusotoError::Unknown(res)
6541    }
6542}
6543impl fmt::Display for DescribePlayerSessionsError {
6544    #[allow(unused_variables)]
6545    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6546        match *self {
6547            DescribePlayerSessionsError::InternalService(ref cause) => write!(f, "{}", cause),
6548            DescribePlayerSessionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6549            DescribePlayerSessionsError::NotFound(ref cause) => write!(f, "{}", cause),
6550            DescribePlayerSessionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6551        }
6552    }
6553}
6554impl Error for DescribePlayerSessionsError {}
6555/// Errors returned by DescribeRuntimeConfiguration
6556#[derive(Debug, PartialEq)]
6557pub enum DescribeRuntimeConfigurationError {
6558    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6559    InternalService(String),
6560    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6561    InvalidRequest(String),
6562    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6563    NotFound(String),
6564    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6565    Unauthorized(String),
6566}
6567
6568impl DescribeRuntimeConfigurationError {
6569    pub fn from_response(
6570        res: BufferedHttpResponse,
6571    ) -> RusotoError<DescribeRuntimeConfigurationError> {
6572        if let Some(err) = proto::json::Error::parse(&res) {
6573            match err.typ.as_str() {
6574                "InternalServiceException" => {
6575                    return RusotoError::Service(
6576                        DescribeRuntimeConfigurationError::InternalService(err.msg),
6577                    )
6578                }
6579                "InvalidRequestException" => {
6580                    return RusotoError::Service(DescribeRuntimeConfigurationError::InvalidRequest(
6581                        err.msg,
6582                    ))
6583                }
6584                "NotFoundException" => {
6585                    return RusotoError::Service(DescribeRuntimeConfigurationError::NotFound(
6586                        err.msg,
6587                    ))
6588                }
6589                "UnauthorizedException" => {
6590                    return RusotoError::Service(DescribeRuntimeConfigurationError::Unauthorized(
6591                        err.msg,
6592                    ))
6593                }
6594                "ValidationException" => return RusotoError::Validation(err.msg),
6595                _ => {}
6596            }
6597        }
6598        RusotoError::Unknown(res)
6599    }
6600}
6601impl fmt::Display for DescribeRuntimeConfigurationError {
6602    #[allow(unused_variables)]
6603    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6604        match *self {
6605            DescribeRuntimeConfigurationError::InternalService(ref cause) => write!(f, "{}", cause),
6606            DescribeRuntimeConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6607            DescribeRuntimeConfigurationError::NotFound(ref cause) => write!(f, "{}", cause),
6608            DescribeRuntimeConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
6609        }
6610    }
6611}
6612impl Error for DescribeRuntimeConfigurationError {}
6613/// Errors returned by DescribeScalingPolicies
6614#[derive(Debug, PartialEq)]
6615pub enum DescribeScalingPoliciesError {
6616    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6617    InternalService(String),
6618    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6619    InvalidRequest(String),
6620    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6621    NotFound(String),
6622    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6623    Unauthorized(String),
6624}
6625
6626impl DescribeScalingPoliciesError {
6627    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeScalingPoliciesError> {
6628        if let Some(err) = proto::json::Error::parse(&res) {
6629            match err.typ.as_str() {
6630                "InternalServiceException" => {
6631                    return RusotoError::Service(DescribeScalingPoliciesError::InternalService(
6632                        err.msg,
6633                    ))
6634                }
6635                "InvalidRequestException" => {
6636                    return RusotoError::Service(DescribeScalingPoliciesError::InvalidRequest(
6637                        err.msg,
6638                    ))
6639                }
6640                "NotFoundException" => {
6641                    return RusotoError::Service(DescribeScalingPoliciesError::NotFound(err.msg))
6642                }
6643                "UnauthorizedException" => {
6644                    return RusotoError::Service(DescribeScalingPoliciesError::Unauthorized(
6645                        err.msg,
6646                    ))
6647                }
6648                "ValidationException" => return RusotoError::Validation(err.msg),
6649                _ => {}
6650            }
6651        }
6652        RusotoError::Unknown(res)
6653    }
6654}
6655impl fmt::Display for DescribeScalingPoliciesError {
6656    #[allow(unused_variables)]
6657    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6658        match *self {
6659            DescribeScalingPoliciesError::InternalService(ref cause) => write!(f, "{}", cause),
6660            DescribeScalingPoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6661            DescribeScalingPoliciesError::NotFound(ref cause) => write!(f, "{}", cause),
6662            DescribeScalingPoliciesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6663        }
6664    }
6665}
6666impl Error for DescribeScalingPoliciesError {}
6667/// Errors returned by DescribeScript
6668#[derive(Debug, PartialEq)]
6669pub enum DescribeScriptError {
6670    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6671    InternalService(String),
6672    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6673    InvalidRequest(String),
6674    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6675    NotFound(String),
6676    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6677    Unauthorized(String),
6678}
6679
6680impl DescribeScriptError {
6681    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DescribeScriptError> {
6682        if let Some(err) = proto::json::Error::parse(&res) {
6683            match err.typ.as_str() {
6684                "InternalServiceException" => {
6685                    return RusotoError::Service(DescribeScriptError::InternalService(err.msg))
6686                }
6687                "InvalidRequestException" => {
6688                    return RusotoError::Service(DescribeScriptError::InvalidRequest(err.msg))
6689                }
6690                "NotFoundException" => {
6691                    return RusotoError::Service(DescribeScriptError::NotFound(err.msg))
6692                }
6693                "UnauthorizedException" => {
6694                    return RusotoError::Service(DescribeScriptError::Unauthorized(err.msg))
6695                }
6696                "ValidationException" => return RusotoError::Validation(err.msg),
6697                _ => {}
6698            }
6699        }
6700        RusotoError::Unknown(res)
6701    }
6702}
6703impl fmt::Display for DescribeScriptError {
6704    #[allow(unused_variables)]
6705    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6706        match *self {
6707            DescribeScriptError::InternalService(ref cause) => write!(f, "{}", cause),
6708            DescribeScriptError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6709            DescribeScriptError::NotFound(ref cause) => write!(f, "{}", cause),
6710            DescribeScriptError::Unauthorized(ref cause) => write!(f, "{}", cause),
6711        }
6712    }
6713}
6714impl Error for DescribeScriptError {}
6715/// Errors returned by DescribeVpcPeeringAuthorizations
6716#[derive(Debug, PartialEq)]
6717pub enum DescribeVpcPeeringAuthorizationsError {
6718    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6719    InternalService(String),
6720    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6721    InvalidRequest(String),
6722    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6723    Unauthorized(String),
6724}
6725
6726impl DescribeVpcPeeringAuthorizationsError {
6727    pub fn from_response(
6728        res: BufferedHttpResponse,
6729    ) -> RusotoError<DescribeVpcPeeringAuthorizationsError> {
6730        if let Some(err) = proto::json::Error::parse(&res) {
6731            match err.typ.as_str() {
6732                "InternalServiceException" => {
6733                    return RusotoError::Service(
6734                        DescribeVpcPeeringAuthorizationsError::InternalService(err.msg),
6735                    )
6736                }
6737                "InvalidRequestException" => {
6738                    return RusotoError::Service(
6739                        DescribeVpcPeeringAuthorizationsError::InvalidRequest(err.msg),
6740                    )
6741                }
6742                "UnauthorizedException" => {
6743                    return RusotoError::Service(
6744                        DescribeVpcPeeringAuthorizationsError::Unauthorized(err.msg),
6745                    )
6746                }
6747                "ValidationException" => return RusotoError::Validation(err.msg),
6748                _ => {}
6749            }
6750        }
6751        RusotoError::Unknown(res)
6752    }
6753}
6754impl fmt::Display for DescribeVpcPeeringAuthorizationsError {
6755    #[allow(unused_variables)]
6756    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6757        match *self {
6758            DescribeVpcPeeringAuthorizationsError::InternalService(ref cause) => {
6759                write!(f, "{}", cause)
6760            }
6761            DescribeVpcPeeringAuthorizationsError::InvalidRequest(ref cause) => {
6762                write!(f, "{}", cause)
6763            }
6764            DescribeVpcPeeringAuthorizationsError::Unauthorized(ref cause) => {
6765                write!(f, "{}", cause)
6766            }
6767        }
6768    }
6769}
6770impl Error for DescribeVpcPeeringAuthorizationsError {}
6771/// Errors returned by DescribeVpcPeeringConnections
6772#[derive(Debug, PartialEq)]
6773pub enum DescribeVpcPeeringConnectionsError {
6774    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6775    InternalService(String),
6776    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6777    InvalidRequest(String),
6778    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6779    NotFound(String),
6780    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6781    Unauthorized(String),
6782}
6783
6784impl DescribeVpcPeeringConnectionsError {
6785    pub fn from_response(
6786        res: BufferedHttpResponse,
6787    ) -> RusotoError<DescribeVpcPeeringConnectionsError> {
6788        if let Some(err) = proto::json::Error::parse(&res) {
6789            match err.typ.as_str() {
6790                "InternalServiceException" => {
6791                    return RusotoError::Service(
6792                        DescribeVpcPeeringConnectionsError::InternalService(err.msg),
6793                    )
6794                }
6795                "InvalidRequestException" => {
6796                    return RusotoError::Service(
6797                        DescribeVpcPeeringConnectionsError::InvalidRequest(err.msg),
6798                    )
6799                }
6800                "NotFoundException" => {
6801                    return RusotoError::Service(DescribeVpcPeeringConnectionsError::NotFound(
6802                        err.msg,
6803                    ))
6804                }
6805                "UnauthorizedException" => {
6806                    return RusotoError::Service(DescribeVpcPeeringConnectionsError::Unauthorized(
6807                        err.msg,
6808                    ))
6809                }
6810                "ValidationException" => return RusotoError::Validation(err.msg),
6811                _ => {}
6812            }
6813        }
6814        RusotoError::Unknown(res)
6815    }
6816}
6817impl fmt::Display for DescribeVpcPeeringConnectionsError {
6818    #[allow(unused_variables)]
6819    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6820        match *self {
6821            DescribeVpcPeeringConnectionsError::InternalService(ref cause) => {
6822                write!(f, "{}", cause)
6823            }
6824            DescribeVpcPeeringConnectionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6825            DescribeVpcPeeringConnectionsError::NotFound(ref cause) => write!(f, "{}", cause),
6826            DescribeVpcPeeringConnectionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
6827        }
6828    }
6829}
6830impl Error for DescribeVpcPeeringConnectionsError {}
6831/// Errors returned by GetGameSessionLogUrl
6832#[derive(Debug, PartialEq)]
6833pub enum GetGameSessionLogUrlError {
6834    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6835    InternalService(String),
6836    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6837    InvalidRequest(String),
6838    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6839    NotFound(String),
6840    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6841    Unauthorized(String),
6842}
6843
6844impl GetGameSessionLogUrlError {
6845    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetGameSessionLogUrlError> {
6846        if let Some(err) = proto::json::Error::parse(&res) {
6847            match err.typ.as_str() {
6848                "InternalServiceException" => {
6849                    return RusotoError::Service(GetGameSessionLogUrlError::InternalService(
6850                        err.msg,
6851                    ))
6852                }
6853                "InvalidRequestException" => {
6854                    return RusotoError::Service(GetGameSessionLogUrlError::InvalidRequest(err.msg))
6855                }
6856                "NotFoundException" => {
6857                    return RusotoError::Service(GetGameSessionLogUrlError::NotFound(err.msg))
6858                }
6859                "UnauthorizedException" => {
6860                    return RusotoError::Service(GetGameSessionLogUrlError::Unauthorized(err.msg))
6861                }
6862                "ValidationException" => return RusotoError::Validation(err.msg),
6863                _ => {}
6864            }
6865        }
6866        RusotoError::Unknown(res)
6867    }
6868}
6869impl fmt::Display for GetGameSessionLogUrlError {
6870    #[allow(unused_variables)]
6871    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6872        match *self {
6873            GetGameSessionLogUrlError::InternalService(ref cause) => write!(f, "{}", cause),
6874            GetGameSessionLogUrlError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6875            GetGameSessionLogUrlError::NotFound(ref cause) => write!(f, "{}", cause),
6876            GetGameSessionLogUrlError::Unauthorized(ref cause) => write!(f, "{}", cause),
6877        }
6878    }
6879}
6880impl Error for GetGameSessionLogUrlError {}
6881/// Errors returned by GetInstanceAccess
6882#[derive(Debug, PartialEq)]
6883pub enum GetInstanceAccessError {
6884    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6885    InternalService(String),
6886    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6887    InvalidRequest(String),
6888    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
6889    NotFound(String),
6890    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6891    Unauthorized(String),
6892}
6893
6894impl GetInstanceAccessError {
6895    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetInstanceAccessError> {
6896        if let Some(err) = proto::json::Error::parse(&res) {
6897            match err.typ.as_str() {
6898                "InternalServiceException" => {
6899                    return RusotoError::Service(GetInstanceAccessError::InternalService(err.msg))
6900                }
6901                "InvalidRequestException" => {
6902                    return RusotoError::Service(GetInstanceAccessError::InvalidRequest(err.msg))
6903                }
6904                "NotFoundException" => {
6905                    return RusotoError::Service(GetInstanceAccessError::NotFound(err.msg))
6906                }
6907                "UnauthorizedException" => {
6908                    return RusotoError::Service(GetInstanceAccessError::Unauthorized(err.msg))
6909                }
6910                "ValidationException" => return RusotoError::Validation(err.msg),
6911                _ => {}
6912            }
6913        }
6914        RusotoError::Unknown(res)
6915    }
6916}
6917impl fmt::Display for GetInstanceAccessError {
6918    #[allow(unused_variables)]
6919    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6920        match *self {
6921            GetInstanceAccessError::InternalService(ref cause) => write!(f, "{}", cause),
6922            GetInstanceAccessError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6923            GetInstanceAccessError::NotFound(ref cause) => write!(f, "{}", cause),
6924            GetInstanceAccessError::Unauthorized(ref cause) => write!(f, "{}", cause),
6925        }
6926    }
6927}
6928impl Error for GetInstanceAccessError {}
6929/// Errors returned by ListAliases
6930#[derive(Debug, PartialEq)]
6931pub enum ListAliasesError {
6932    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6933    InternalService(String),
6934    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6935    InvalidRequest(String),
6936    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6937    Unauthorized(String),
6938}
6939
6940impl ListAliasesError {
6941    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListAliasesError> {
6942        if let Some(err) = proto::json::Error::parse(&res) {
6943            match err.typ.as_str() {
6944                "InternalServiceException" => {
6945                    return RusotoError::Service(ListAliasesError::InternalService(err.msg))
6946                }
6947                "InvalidRequestException" => {
6948                    return RusotoError::Service(ListAliasesError::InvalidRequest(err.msg))
6949                }
6950                "UnauthorizedException" => {
6951                    return RusotoError::Service(ListAliasesError::Unauthorized(err.msg))
6952                }
6953                "ValidationException" => return RusotoError::Validation(err.msg),
6954                _ => {}
6955            }
6956        }
6957        RusotoError::Unknown(res)
6958    }
6959}
6960impl fmt::Display for ListAliasesError {
6961    #[allow(unused_variables)]
6962    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
6963        match *self {
6964            ListAliasesError::InternalService(ref cause) => write!(f, "{}", cause),
6965            ListAliasesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
6966            ListAliasesError::Unauthorized(ref cause) => write!(f, "{}", cause),
6967        }
6968    }
6969}
6970impl Error for ListAliasesError {}
6971/// Errors returned by ListBuilds
6972#[derive(Debug, PartialEq)]
6973pub enum ListBuildsError {
6974    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
6975    InternalService(String),
6976    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
6977    InvalidRequest(String),
6978    /// <p>The client failed authentication. Clients should not retry such requests.</p>
6979    Unauthorized(String),
6980}
6981
6982impl ListBuildsError {
6983    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListBuildsError> {
6984        if let Some(err) = proto::json::Error::parse(&res) {
6985            match err.typ.as_str() {
6986                "InternalServiceException" => {
6987                    return RusotoError::Service(ListBuildsError::InternalService(err.msg))
6988                }
6989                "InvalidRequestException" => {
6990                    return RusotoError::Service(ListBuildsError::InvalidRequest(err.msg))
6991                }
6992                "UnauthorizedException" => {
6993                    return RusotoError::Service(ListBuildsError::Unauthorized(err.msg))
6994                }
6995                "ValidationException" => return RusotoError::Validation(err.msg),
6996                _ => {}
6997            }
6998        }
6999        RusotoError::Unknown(res)
7000    }
7001}
7002impl fmt::Display for ListBuildsError {
7003    #[allow(unused_variables)]
7004    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7005        match *self {
7006            ListBuildsError::InternalService(ref cause) => write!(f, "{}", cause),
7007            ListBuildsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7008            ListBuildsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7009        }
7010    }
7011}
7012impl Error for ListBuildsError {}
7013/// Errors returned by ListFleets
7014#[derive(Debug, PartialEq)]
7015pub enum ListFleetsError {
7016    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7017    InternalService(String),
7018    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7019    InvalidRequest(String),
7020    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7021    NotFound(String),
7022    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7023    Unauthorized(String),
7024}
7025
7026impl ListFleetsError {
7027    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListFleetsError> {
7028        if let Some(err) = proto::json::Error::parse(&res) {
7029            match err.typ.as_str() {
7030                "InternalServiceException" => {
7031                    return RusotoError::Service(ListFleetsError::InternalService(err.msg))
7032                }
7033                "InvalidRequestException" => {
7034                    return RusotoError::Service(ListFleetsError::InvalidRequest(err.msg))
7035                }
7036                "NotFoundException" => {
7037                    return RusotoError::Service(ListFleetsError::NotFound(err.msg))
7038                }
7039                "UnauthorizedException" => {
7040                    return RusotoError::Service(ListFleetsError::Unauthorized(err.msg))
7041                }
7042                "ValidationException" => return RusotoError::Validation(err.msg),
7043                _ => {}
7044            }
7045        }
7046        RusotoError::Unknown(res)
7047    }
7048}
7049impl fmt::Display for ListFleetsError {
7050    #[allow(unused_variables)]
7051    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7052        match *self {
7053            ListFleetsError::InternalService(ref cause) => write!(f, "{}", cause),
7054            ListFleetsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7055            ListFleetsError::NotFound(ref cause) => write!(f, "{}", cause),
7056            ListFleetsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7057        }
7058    }
7059}
7060impl Error for ListFleetsError {}
7061/// Errors returned by ListGameServerGroups
7062#[derive(Debug, PartialEq)]
7063pub enum ListGameServerGroupsError {
7064    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7065    InternalService(String),
7066    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7067    InvalidRequest(String),
7068    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7069    Unauthorized(String),
7070}
7071
7072impl ListGameServerGroupsError {
7073    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListGameServerGroupsError> {
7074        if let Some(err) = proto::json::Error::parse(&res) {
7075            match err.typ.as_str() {
7076                "InternalServiceException" => {
7077                    return RusotoError::Service(ListGameServerGroupsError::InternalService(
7078                        err.msg,
7079                    ))
7080                }
7081                "InvalidRequestException" => {
7082                    return RusotoError::Service(ListGameServerGroupsError::InvalidRequest(err.msg))
7083                }
7084                "UnauthorizedException" => {
7085                    return RusotoError::Service(ListGameServerGroupsError::Unauthorized(err.msg))
7086                }
7087                "ValidationException" => return RusotoError::Validation(err.msg),
7088                _ => {}
7089            }
7090        }
7091        RusotoError::Unknown(res)
7092    }
7093}
7094impl fmt::Display for ListGameServerGroupsError {
7095    #[allow(unused_variables)]
7096    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7097        match *self {
7098            ListGameServerGroupsError::InternalService(ref cause) => write!(f, "{}", cause),
7099            ListGameServerGroupsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7100            ListGameServerGroupsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7101        }
7102    }
7103}
7104impl Error for ListGameServerGroupsError {}
7105/// Errors returned by ListGameServers
7106#[derive(Debug, PartialEq)]
7107pub enum ListGameServersError {
7108    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7109    InternalService(String),
7110    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7111    InvalidRequest(String),
7112    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7113    Unauthorized(String),
7114}
7115
7116impl ListGameServersError {
7117    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListGameServersError> {
7118        if let Some(err) = proto::json::Error::parse(&res) {
7119            match err.typ.as_str() {
7120                "InternalServiceException" => {
7121                    return RusotoError::Service(ListGameServersError::InternalService(err.msg))
7122                }
7123                "InvalidRequestException" => {
7124                    return RusotoError::Service(ListGameServersError::InvalidRequest(err.msg))
7125                }
7126                "UnauthorizedException" => {
7127                    return RusotoError::Service(ListGameServersError::Unauthorized(err.msg))
7128                }
7129                "ValidationException" => return RusotoError::Validation(err.msg),
7130                _ => {}
7131            }
7132        }
7133        RusotoError::Unknown(res)
7134    }
7135}
7136impl fmt::Display for ListGameServersError {
7137    #[allow(unused_variables)]
7138    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7139        match *self {
7140            ListGameServersError::InternalService(ref cause) => write!(f, "{}", cause),
7141            ListGameServersError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7142            ListGameServersError::Unauthorized(ref cause) => write!(f, "{}", cause),
7143        }
7144    }
7145}
7146impl Error for ListGameServersError {}
7147/// Errors returned by ListScripts
7148#[derive(Debug, PartialEq)]
7149pub enum ListScriptsError {
7150    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7151    InternalService(String),
7152    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7153    InvalidRequest(String),
7154    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7155    Unauthorized(String),
7156}
7157
7158impl ListScriptsError {
7159    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListScriptsError> {
7160        if let Some(err) = proto::json::Error::parse(&res) {
7161            match err.typ.as_str() {
7162                "InternalServiceException" => {
7163                    return RusotoError::Service(ListScriptsError::InternalService(err.msg))
7164                }
7165                "InvalidRequestException" => {
7166                    return RusotoError::Service(ListScriptsError::InvalidRequest(err.msg))
7167                }
7168                "UnauthorizedException" => {
7169                    return RusotoError::Service(ListScriptsError::Unauthorized(err.msg))
7170                }
7171                "ValidationException" => return RusotoError::Validation(err.msg),
7172                _ => {}
7173            }
7174        }
7175        RusotoError::Unknown(res)
7176    }
7177}
7178impl fmt::Display for ListScriptsError {
7179    #[allow(unused_variables)]
7180    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7181        match *self {
7182            ListScriptsError::InternalService(ref cause) => write!(f, "{}", cause),
7183            ListScriptsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7184            ListScriptsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7185        }
7186    }
7187}
7188impl Error for ListScriptsError {}
7189/// Errors returned by ListTagsForResource
7190#[derive(Debug, PartialEq)]
7191pub enum ListTagsForResourceError {
7192    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7193    InternalService(String),
7194    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7195    InvalidRequest(String),
7196    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7197    NotFound(String),
7198    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
7199    TaggingFailed(String),
7200}
7201
7202impl ListTagsForResourceError {
7203    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
7204        if let Some(err) = proto::json::Error::parse(&res) {
7205            match err.typ.as_str() {
7206                "InternalServiceException" => {
7207                    return RusotoError::Service(ListTagsForResourceError::InternalService(err.msg))
7208                }
7209                "InvalidRequestException" => {
7210                    return RusotoError::Service(ListTagsForResourceError::InvalidRequest(err.msg))
7211                }
7212                "NotFoundException" => {
7213                    return RusotoError::Service(ListTagsForResourceError::NotFound(err.msg))
7214                }
7215                "TaggingFailedException" => {
7216                    return RusotoError::Service(ListTagsForResourceError::TaggingFailed(err.msg))
7217                }
7218                "ValidationException" => return RusotoError::Validation(err.msg),
7219                _ => {}
7220            }
7221        }
7222        RusotoError::Unknown(res)
7223    }
7224}
7225impl fmt::Display for ListTagsForResourceError {
7226    #[allow(unused_variables)]
7227    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7228        match *self {
7229            ListTagsForResourceError::InternalService(ref cause) => write!(f, "{}", cause),
7230            ListTagsForResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7231            ListTagsForResourceError::NotFound(ref cause) => write!(f, "{}", cause),
7232            ListTagsForResourceError::TaggingFailed(ref cause) => write!(f, "{}", cause),
7233        }
7234    }
7235}
7236impl Error for ListTagsForResourceError {}
7237/// Errors returned by PutScalingPolicy
7238#[derive(Debug, PartialEq)]
7239pub enum PutScalingPolicyError {
7240    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7241    InternalService(String),
7242    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7243    InvalidRequest(String),
7244    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7245    NotFound(String),
7246    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7247    Unauthorized(String),
7248}
7249
7250impl PutScalingPolicyError {
7251    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<PutScalingPolicyError> {
7252        if let Some(err) = proto::json::Error::parse(&res) {
7253            match err.typ.as_str() {
7254                "InternalServiceException" => {
7255                    return RusotoError::Service(PutScalingPolicyError::InternalService(err.msg))
7256                }
7257                "InvalidRequestException" => {
7258                    return RusotoError::Service(PutScalingPolicyError::InvalidRequest(err.msg))
7259                }
7260                "NotFoundException" => {
7261                    return RusotoError::Service(PutScalingPolicyError::NotFound(err.msg))
7262                }
7263                "UnauthorizedException" => {
7264                    return RusotoError::Service(PutScalingPolicyError::Unauthorized(err.msg))
7265                }
7266                "ValidationException" => return RusotoError::Validation(err.msg),
7267                _ => {}
7268            }
7269        }
7270        RusotoError::Unknown(res)
7271    }
7272}
7273impl fmt::Display for PutScalingPolicyError {
7274    #[allow(unused_variables)]
7275    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7276        match *self {
7277            PutScalingPolicyError::InternalService(ref cause) => write!(f, "{}", cause),
7278            PutScalingPolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7279            PutScalingPolicyError::NotFound(ref cause) => write!(f, "{}", cause),
7280            PutScalingPolicyError::Unauthorized(ref cause) => write!(f, "{}", cause),
7281        }
7282    }
7283}
7284impl Error for PutScalingPolicyError {}
7285/// Errors returned by RegisterGameServer
7286#[derive(Debug, PartialEq)]
7287pub enum RegisterGameServerError {
7288    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
7289    Conflict(String),
7290    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7291    InternalService(String),
7292    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7293    InvalidRequest(String),
7294    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
7295    LimitExceeded(String),
7296    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7297    Unauthorized(String),
7298}
7299
7300impl RegisterGameServerError {
7301    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RegisterGameServerError> {
7302        if let Some(err) = proto::json::Error::parse(&res) {
7303            match err.typ.as_str() {
7304                "ConflictException" => {
7305                    return RusotoError::Service(RegisterGameServerError::Conflict(err.msg))
7306                }
7307                "InternalServiceException" => {
7308                    return RusotoError::Service(RegisterGameServerError::InternalService(err.msg))
7309                }
7310                "InvalidRequestException" => {
7311                    return RusotoError::Service(RegisterGameServerError::InvalidRequest(err.msg))
7312                }
7313                "LimitExceededException" => {
7314                    return RusotoError::Service(RegisterGameServerError::LimitExceeded(err.msg))
7315                }
7316                "UnauthorizedException" => {
7317                    return RusotoError::Service(RegisterGameServerError::Unauthorized(err.msg))
7318                }
7319                "ValidationException" => return RusotoError::Validation(err.msg),
7320                _ => {}
7321            }
7322        }
7323        RusotoError::Unknown(res)
7324    }
7325}
7326impl fmt::Display for RegisterGameServerError {
7327    #[allow(unused_variables)]
7328    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7329        match *self {
7330            RegisterGameServerError::Conflict(ref cause) => write!(f, "{}", cause),
7331            RegisterGameServerError::InternalService(ref cause) => write!(f, "{}", cause),
7332            RegisterGameServerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7333            RegisterGameServerError::LimitExceeded(ref cause) => write!(f, "{}", cause),
7334            RegisterGameServerError::Unauthorized(ref cause) => write!(f, "{}", cause),
7335        }
7336    }
7337}
7338impl Error for RegisterGameServerError {}
7339/// Errors returned by RequestUploadCredentials
7340#[derive(Debug, PartialEq)]
7341pub enum RequestUploadCredentialsError {
7342    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7343    InternalService(String),
7344    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7345    InvalidRequest(String),
7346    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7347    NotFound(String),
7348    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7349    Unauthorized(String),
7350}
7351
7352impl RequestUploadCredentialsError {
7353    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<RequestUploadCredentialsError> {
7354        if let Some(err) = proto::json::Error::parse(&res) {
7355            match err.typ.as_str() {
7356                "InternalServiceException" => {
7357                    return RusotoError::Service(RequestUploadCredentialsError::InternalService(
7358                        err.msg,
7359                    ))
7360                }
7361                "InvalidRequestException" => {
7362                    return RusotoError::Service(RequestUploadCredentialsError::InvalidRequest(
7363                        err.msg,
7364                    ))
7365                }
7366                "NotFoundException" => {
7367                    return RusotoError::Service(RequestUploadCredentialsError::NotFound(err.msg))
7368                }
7369                "UnauthorizedException" => {
7370                    return RusotoError::Service(RequestUploadCredentialsError::Unauthorized(
7371                        err.msg,
7372                    ))
7373                }
7374                "ValidationException" => return RusotoError::Validation(err.msg),
7375                _ => {}
7376            }
7377        }
7378        RusotoError::Unknown(res)
7379    }
7380}
7381impl fmt::Display for RequestUploadCredentialsError {
7382    #[allow(unused_variables)]
7383    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7384        match *self {
7385            RequestUploadCredentialsError::InternalService(ref cause) => write!(f, "{}", cause),
7386            RequestUploadCredentialsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7387            RequestUploadCredentialsError::NotFound(ref cause) => write!(f, "{}", cause),
7388            RequestUploadCredentialsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7389        }
7390    }
7391}
7392impl Error for RequestUploadCredentialsError {}
7393/// Errors returned by ResolveAlias
7394#[derive(Debug, PartialEq)]
7395pub enum ResolveAliasError {
7396    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7397    InternalService(String),
7398    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7399    InvalidRequest(String),
7400    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7401    NotFound(String),
7402    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
7403    TerminalRoutingStrategy(String),
7404    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7405    Unauthorized(String),
7406}
7407
7408impl ResolveAliasError {
7409    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ResolveAliasError> {
7410        if let Some(err) = proto::json::Error::parse(&res) {
7411            match err.typ.as_str() {
7412                "InternalServiceException" => {
7413                    return RusotoError::Service(ResolveAliasError::InternalService(err.msg))
7414                }
7415                "InvalidRequestException" => {
7416                    return RusotoError::Service(ResolveAliasError::InvalidRequest(err.msg))
7417                }
7418                "NotFoundException" => {
7419                    return RusotoError::Service(ResolveAliasError::NotFound(err.msg))
7420                }
7421                "TerminalRoutingStrategyException" => {
7422                    return RusotoError::Service(ResolveAliasError::TerminalRoutingStrategy(
7423                        err.msg,
7424                    ))
7425                }
7426                "UnauthorizedException" => {
7427                    return RusotoError::Service(ResolveAliasError::Unauthorized(err.msg))
7428                }
7429                "ValidationException" => return RusotoError::Validation(err.msg),
7430                _ => {}
7431            }
7432        }
7433        RusotoError::Unknown(res)
7434    }
7435}
7436impl fmt::Display for ResolveAliasError {
7437    #[allow(unused_variables)]
7438    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7439        match *self {
7440            ResolveAliasError::InternalService(ref cause) => write!(f, "{}", cause),
7441            ResolveAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7442            ResolveAliasError::NotFound(ref cause) => write!(f, "{}", cause),
7443            ResolveAliasError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
7444            ResolveAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
7445        }
7446    }
7447}
7448impl Error for ResolveAliasError {}
7449/// Errors returned by ResumeGameServerGroup
7450#[derive(Debug, PartialEq)]
7451pub enum ResumeGameServerGroupError {
7452    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7453    InternalService(String),
7454    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7455    InvalidRequest(String),
7456    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7457    NotFound(String),
7458    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7459    Unauthorized(String),
7460}
7461
7462impl ResumeGameServerGroupError {
7463    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ResumeGameServerGroupError> {
7464        if let Some(err) = proto::json::Error::parse(&res) {
7465            match err.typ.as_str() {
7466                "InternalServiceException" => {
7467                    return RusotoError::Service(ResumeGameServerGroupError::InternalService(
7468                        err.msg,
7469                    ))
7470                }
7471                "InvalidRequestException" => {
7472                    return RusotoError::Service(ResumeGameServerGroupError::InvalidRequest(
7473                        err.msg,
7474                    ))
7475                }
7476                "NotFoundException" => {
7477                    return RusotoError::Service(ResumeGameServerGroupError::NotFound(err.msg))
7478                }
7479                "UnauthorizedException" => {
7480                    return RusotoError::Service(ResumeGameServerGroupError::Unauthorized(err.msg))
7481                }
7482                "ValidationException" => return RusotoError::Validation(err.msg),
7483                _ => {}
7484            }
7485        }
7486        RusotoError::Unknown(res)
7487    }
7488}
7489impl fmt::Display for ResumeGameServerGroupError {
7490    #[allow(unused_variables)]
7491    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7492        match *self {
7493            ResumeGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
7494            ResumeGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7495            ResumeGameServerGroupError::NotFound(ref cause) => write!(f, "{}", cause),
7496            ResumeGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
7497        }
7498    }
7499}
7500impl Error for ResumeGameServerGroupError {}
7501/// Errors returned by SearchGameSessions
7502#[derive(Debug, PartialEq)]
7503pub enum SearchGameSessionsError {
7504    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7505    InternalService(String),
7506    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7507    InvalidRequest(String),
7508    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7509    NotFound(String),
7510    /// <p>The service is unable to resolve the routing for a particular alias because it has a terminal <a>RoutingStrategy</a> associated with it. The message returned in this exception is the message defined in the routing strategy itself. Such requests should only be retried if the routing strategy for the specified alias is modified. </p>
7511    TerminalRoutingStrategy(String),
7512    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7513    Unauthorized(String),
7514}
7515
7516impl SearchGameSessionsError {
7517    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SearchGameSessionsError> {
7518        if let Some(err) = proto::json::Error::parse(&res) {
7519            match err.typ.as_str() {
7520                "InternalServiceException" => {
7521                    return RusotoError::Service(SearchGameSessionsError::InternalService(err.msg))
7522                }
7523                "InvalidRequestException" => {
7524                    return RusotoError::Service(SearchGameSessionsError::InvalidRequest(err.msg))
7525                }
7526                "NotFoundException" => {
7527                    return RusotoError::Service(SearchGameSessionsError::NotFound(err.msg))
7528                }
7529                "TerminalRoutingStrategyException" => {
7530                    return RusotoError::Service(SearchGameSessionsError::TerminalRoutingStrategy(
7531                        err.msg,
7532                    ))
7533                }
7534                "UnauthorizedException" => {
7535                    return RusotoError::Service(SearchGameSessionsError::Unauthorized(err.msg))
7536                }
7537                "ValidationException" => return RusotoError::Validation(err.msg),
7538                _ => {}
7539            }
7540        }
7541        RusotoError::Unknown(res)
7542    }
7543}
7544impl fmt::Display for SearchGameSessionsError {
7545    #[allow(unused_variables)]
7546    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7547        match *self {
7548            SearchGameSessionsError::InternalService(ref cause) => write!(f, "{}", cause),
7549            SearchGameSessionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7550            SearchGameSessionsError::NotFound(ref cause) => write!(f, "{}", cause),
7551            SearchGameSessionsError::TerminalRoutingStrategy(ref cause) => write!(f, "{}", cause),
7552            SearchGameSessionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7553        }
7554    }
7555}
7556impl Error for SearchGameSessionsError {}
7557/// Errors returned by StartFleetActions
7558#[derive(Debug, PartialEq)]
7559pub enum StartFleetActionsError {
7560    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7561    InternalService(String),
7562    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7563    InvalidRequest(String),
7564    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7565    NotFound(String),
7566    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7567    Unauthorized(String),
7568}
7569
7570impl StartFleetActionsError {
7571    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartFleetActionsError> {
7572        if let Some(err) = proto::json::Error::parse(&res) {
7573            match err.typ.as_str() {
7574                "InternalServiceException" => {
7575                    return RusotoError::Service(StartFleetActionsError::InternalService(err.msg))
7576                }
7577                "InvalidRequestException" => {
7578                    return RusotoError::Service(StartFleetActionsError::InvalidRequest(err.msg))
7579                }
7580                "NotFoundException" => {
7581                    return RusotoError::Service(StartFleetActionsError::NotFound(err.msg))
7582                }
7583                "UnauthorizedException" => {
7584                    return RusotoError::Service(StartFleetActionsError::Unauthorized(err.msg))
7585                }
7586                "ValidationException" => return RusotoError::Validation(err.msg),
7587                _ => {}
7588            }
7589        }
7590        RusotoError::Unknown(res)
7591    }
7592}
7593impl fmt::Display for StartFleetActionsError {
7594    #[allow(unused_variables)]
7595    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7596        match *self {
7597            StartFleetActionsError::InternalService(ref cause) => write!(f, "{}", cause),
7598            StartFleetActionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7599            StartFleetActionsError::NotFound(ref cause) => write!(f, "{}", cause),
7600            StartFleetActionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7601        }
7602    }
7603}
7604impl Error for StartFleetActionsError {}
7605/// Errors returned by StartGameSessionPlacement
7606#[derive(Debug, PartialEq)]
7607pub enum StartGameSessionPlacementError {
7608    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7609    InternalService(String),
7610    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7611    InvalidRequest(String),
7612    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7613    NotFound(String),
7614    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7615    Unauthorized(String),
7616}
7617
7618impl StartGameSessionPlacementError {
7619    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartGameSessionPlacementError> {
7620        if let Some(err) = proto::json::Error::parse(&res) {
7621            match err.typ.as_str() {
7622                "InternalServiceException" => {
7623                    return RusotoError::Service(StartGameSessionPlacementError::InternalService(
7624                        err.msg,
7625                    ))
7626                }
7627                "InvalidRequestException" => {
7628                    return RusotoError::Service(StartGameSessionPlacementError::InvalidRequest(
7629                        err.msg,
7630                    ))
7631                }
7632                "NotFoundException" => {
7633                    return RusotoError::Service(StartGameSessionPlacementError::NotFound(err.msg))
7634                }
7635                "UnauthorizedException" => {
7636                    return RusotoError::Service(StartGameSessionPlacementError::Unauthorized(
7637                        err.msg,
7638                    ))
7639                }
7640                "ValidationException" => return RusotoError::Validation(err.msg),
7641                _ => {}
7642            }
7643        }
7644        RusotoError::Unknown(res)
7645    }
7646}
7647impl fmt::Display for StartGameSessionPlacementError {
7648    #[allow(unused_variables)]
7649    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7650        match *self {
7651            StartGameSessionPlacementError::InternalService(ref cause) => write!(f, "{}", cause),
7652            StartGameSessionPlacementError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7653            StartGameSessionPlacementError::NotFound(ref cause) => write!(f, "{}", cause),
7654            StartGameSessionPlacementError::Unauthorized(ref cause) => write!(f, "{}", cause),
7655        }
7656    }
7657}
7658impl Error for StartGameSessionPlacementError {}
7659/// Errors returned by StartMatchBackfill
7660#[derive(Debug, PartialEq)]
7661pub enum StartMatchBackfillError {
7662    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7663    InternalService(String),
7664    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7665    InvalidRequest(String),
7666    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7667    NotFound(String),
7668    /// <p>The requested operation is not supported in the Region specified.</p>
7669    UnsupportedRegion(String),
7670}
7671
7672impl StartMatchBackfillError {
7673    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartMatchBackfillError> {
7674        if let Some(err) = proto::json::Error::parse(&res) {
7675            match err.typ.as_str() {
7676                "InternalServiceException" => {
7677                    return RusotoError::Service(StartMatchBackfillError::InternalService(err.msg))
7678                }
7679                "InvalidRequestException" => {
7680                    return RusotoError::Service(StartMatchBackfillError::InvalidRequest(err.msg))
7681                }
7682                "NotFoundException" => {
7683                    return RusotoError::Service(StartMatchBackfillError::NotFound(err.msg))
7684                }
7685                "UnsupportedRegionException" => {
7686                    return RusotoError::Service(StartMatchBackfillError::UnsupportedRegion(
7687                        err.msg,
7688                    ))
7689                }
7690                "ValidationException" => return RusotoError::Validation(err.msg),
7691                _ => {}
7692            }
7693        }
7694        RusotoError::Unknown(res)
7695    }
7696}
7697impl fmt::Display for StartMatchBackfillError {
7698    #[allow(unused_variables)]
7699    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7700        match *self {
7701            StartMatchBackfillError::InternalService(ref cause) => write!(f, "{}", cause),
7702            StartMatchBackfillError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7703            StartMatchBackfillError::NotFound(ref cause) => write!(f, "{}", cause),
7704            StartMatchBackfillError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
7705        }
7706    }
7707}
7708impl Error for StartMatchBackfillError {}
7709/// Errors returned by StartMatchmaking
7710#[derive(Debug, PartialEq)]
7711pub enum StartMatchmakingError {
7712    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7713    InternalService(String),
7714    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7715    InvalidRequest(String),
7716    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7717    NotFound(String),
7718    /// <p>The requested operation is not supported in the Region specified.</p>
7719    UnsupportedRegion(String),
7720}
7721
7722impl StartMatchmakingError {
7723    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StartMatchmakingError> {
7724        if let Some(err) = proto::json::Error::parse(&res) {
7725            match err.typ.as_str() {
7726                "InternalServiceException" => {
7727                    return RusotoError::Service(StartMatchmakingError::InternalService(err.msg))
7728                }
7729                "InvalidRequestException" => {
7730                    return RusotoError::Service(StartMatchmakingError::InvalidRequest(err.msg))
7731                }
7732                "NotFoundException" => {
7733                    return RusotoError::Service(StartMatchmakingError::NotFound(err.msg))
7734                }
7735                "UnsupportedRegionException" => {
7736                    return RusotoError::Service(StartMatchmakingError::UnsupportedRegion(err.msg))
7737                }
7738                "ValidationException" => return RusotoError::Validation(err.msg),
7739                _ => {}
7740            }
7741        }
7742        RusotoError::Unknown(res)
7743    }
7744}
7745impl fmt::Display for StartMatchmakingError {
7746    #[allow(unused_variables)]
7747    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7748        match *self {
7749            StartMatchmakingError::InternalService(ref cause) => write!(f, "{}", cause),
7750            StartMatchmakingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7751            StartMatchmakingError::NotFound(ref cause) => write!(f, "{}", cause),
7752            StartMatchmakingError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
7753        }
7754    }
7755}
7756impl Error for StartMatchmakingError {}
7757/// Errors returned by StopFleetActions
7758#[derive(Debug, PartialEq)]
7759pub enum StopFleetActionsError {
7760    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7761    InternalService(String),
7762    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7763    InvalidRequest(String),
7764    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7765    NotFound(String),
7766    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7767    Unauthorized(String),
7768}
7769
7770impl StopFleetActionsError {
7771    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopFleetActionsError> {
7772        if let Some(err) = proto::json::Error::parse(&res) {
7773            match err.typ.as_str() {
7774                "InternalServiceException" => {
7775                    return RusotoError::Service(StopFleetActionsError::InternalService(err.msg))
7776                }
7777                "InvalidRequestException" => {
7778                    return RusotoError::Service(StopFleetActionsError::InvalidRequest(err.msg))
7779                }
7780                "NotFoundException" => {
7781                    return RusotoError::Service(StopFleetActionsError::NotFound(err.msg))
7782                }
7783                "UnauthorizedException" => {
7784                    return RusotoError::Service(StopFleetActionsError::Unauthorized(err.msg))
7785                }
7786                "ValidationException" => return RusotoError::Validation(err.msg),
7787                _ => {}
7788            }
7789        }
7790        RusotoError::Unknown(res)
7791    }
7792}
7793impl fmt::Display for StopFleetActionsError {
7794    #[allow(unused_variables)]
7795    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7796        match *self {
7797            StopFleetActionsError::InternalService(ref cause) => write!(f, "{}", cause),
7798            StopFleetActionsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7799            StopFleetActionsError::NotFound(ref cause) => write!(f, "{}", cause),
7800            StopFleetActionsError::Unauthorized(ref cause) => write!(f, "{}", cause),
7801        }
7802    }
7803}
7804impl Error for StopFleetActionsError {}
7805/// Errors returned by StopGameSessionPlacement
7806#[derive(Debug, PartialEq)]
7807pub enum StopGameSessionPlacementError {
7808    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7809    InternalService(String),
7810    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7811    InvalidRequest(String),
7812    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7813    NotFound(String),
7814    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7815    Unauthorized(String),
7816}
7817
7818impl StopGameSessionPlacementError {
7819    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopGameSessionPlacementError> {
7820        if let Some(err) = proto::json::Error::parse(&res) {
7821            match err.typ.as_str() {
7822                "InternalServiceException" => {
7823                    return RusotoError::Service(StopGameSessionPlacementError::InternalService(
7824                        err.msg,
7825                    ))
7826                }
7827                "InvalidRequestException" => {
7828                    return RusotoError::Service(StopGameSessionPlacementError::InvalidRequest(
7829                        err.msg,
7830                    ))
7831                }
7832                "NotFoundException" => {
7833                    return RusotoError::Service(StopGameSessionPlacementError::NotFound(err.msg))
7834                }
7835                "UnauthorizedException" => {
7836                    return RusotoError::Service(StopGameSessionPlacementError::Unauthorized(
7837                        err.msg,
7838                    ))
7839                }
7840                "ValidationException" => return RusotoError::Validation(err.msg),
7841                _ => {}
7842            }
7843        }
7844        RusotoError::Unknown(res)
7845    }
7846}
7847impl fmt::Display for StopGameSessionPlacementError {
7848    #[allow(unused_variables)]
7849    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7850        match *self {
7851            StopGameSessionPlacementError::InternalService(ref cause) => write!(f, "{}", cause),
7852            StopGameSessionPlacementError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7853            StopGameSessionPlacementError::NotFound(ref cause) => write!(f, "{}", cause),
7854            StopGameSessionPlacementError::Unauthorized(ref cause) => write!(f, "{}", cause),
7855        }
7856    }
7857}
7858impl Error for StopGameSessionPlacementError {}
7859/// Errors returned by StopMatchmaking
7860#[derive(Debug, PartialEq)]
7861pub enum StopMatchmakingError {
7862    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7863    InternalService(String),
7864    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7865    InvalidRequest(String),
7866    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7867    NotFound(String),
7868    /// <p>The requested operation is not supported in the Region specified.</p>
7869    UnsupportedRegion(String),
7870}
7871
7872impl StopMatchmakingError {
7873    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<StopMatchmakingError> {
7874        if let Some(err) = proto::json::Error::parse(&res) {
7875            match err.typ.as_str() {
7876                "InternalServiceException" => {
7877                    return RusotoError::Service(StopMatchmakingError::InternalService(err.msg))
7878                }
7879                "InvalidRequestException" => {
7880                    return RusotoError::Service(StopMatchmakingError::InvalidRequest(err.msg))
7881                }
7882                "NotFoundException" => {
7883                    return RusotoError::Service(StopMatchmakingError::NotFound(err.msg))
7884                }
7885                "UnsupportedRegionException" => {
7886                    return RusotoError::Service(StopMatchmakingError::UnsupportedRegion(err.msg))
7887                }
7888                "ValidationException" => return RusotoError::Validation(err.msg),
7889                _ => {}
7890            }
7891        }
7892        RusotoError::Unknown(res)
7893    }
7894}
7895impl fmt::Display for StopMatchmakingError {
7896    #[allow(unused_variables)]
7897    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7898        match *self {
7899            StopMatchmakingError::InternalService(ref cause) => write!(f, "{}", cause),
7900            StopMatchmakingError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7901            StopMatchmakingError::NotFound(ref cause) => write!(f, "{}", cause),
7902            StopMatchmakingError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
7903        }
7904    }
7905}
7906impl Error for StopMatchmakingError {}
7907/// Errors returned by SuspendGameServerGroup
7908#[derive(Debug, PartialEq)]
7909pub enum SuspendGameServerGroupError {
7910    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7911    InternalService(String),
7912    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7913    InvalidRequest(String),
7914    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7915    NotFound(String),
7916    /// <p>The client failed authentication. Clients should not retry such requests.</p>
7917    Unauthorized(String),
7918}
7919
7920impl SuspendGameServerGroupError {
7921    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<SuspendGameServerGroupError> {
7922        if let Some(err) = proto::json::Error::parse(&res) {
7923            match err.typ.as_str() {
7924                "InternalServiceException" => {
7925                    return RusotoError::Service(SuspendGameServerGroupError::InternalService(
7926                        err.msg,
7927                    ))
7928                }
7929                "InvalidRequestException" => {
7930                    return RusotoError::Service(SuspendGameServerGroupError::InvalidRequest(
7931                        err.msg,
7932                    ))
7933                }
7934                "NotFoundException" => {
7935                    return RusotoError::Service(SuspendGameServerGroupError::NotFound(err.msg))
7936                }
7937                "UnauthorizedException" => {
7938                    return RusotoError::Service(SuspendGameServerGroupError::Unauthorized(err.msg))
7939                }
7940                "ValidationException" => return RusotoError::Validation(err.msg),
7941                _ => {}
7942            }
7943        }
7944        RusotoError::Unknown(res)
7945    }
7946}
7947impl fmt::Display for SuspendGameServerGroupError {
7948    #[allow(unused_variables)]
7949    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7950        match *self {
7951            SuspendGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
7952            SuspendGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
7953            SuspendGameServerGroupError::NotFound(ref cause) => write!(f, "{}", cause),
7954            SuspendGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
7955        }
7956    }
7957}
7958impl Error for SuspendGameServerGroupError {}
7959/// Errors returned by TagResource
7960#[derive(Debug, PartialEq)]
7961pub enum TagResourceError {
7962    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
7963    InternalService(String),
7964    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
7965    InvalidRequest(String),
7966    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
7967    NotFound(String),
7968    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
7969    TaggingFailed(String),
7970}
7971
7972impl TagResourceError {
7973    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
7974        if let Some(err) = proto::json::Error::parse(&res) {
7975            match err.typ.as_str() {
7976                "InternalServiceException" => {
7977                    return RusotoError::Service(TagResourceError::InternalService(err.msg))
7978                }
7979                "InvalidRequestException" => {
7980                    return RusotoError::Service(TagResourceError::InvalidRequest(err.msg))
7981                }
7982                "NotFoundException" => {
7983                    return RusotoError::Service(TagResourceError::NotFound(err.msg))
7984                }
7985                "TaggingFailedException" => {
7986                    return RusotoError::Service(TagResourceError::TaggingFailed(err.msg))
7987                }
7988                "ValidationException" => return RusotoError::Validation(err.msg),
7989                _ => {}
7990            }
7991        }
7992        RusotoError::Unknown(res)
7993    }
7994}
7995impl fmt::Display for TagResourceError {
7996    #[allow(unused_variables)]
7997    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7998        match *self {
7999            TagResourceError::InternalService(ref cause) => write!(f, "{}", cause),
8000            TagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8001            TagResourceError::NotFound(ref cause) => write!(f, "{}", cause),
8002            TagResourceError::TaggingFailed(ref cause) => write!(f, "{}", cause),
8003        }
8004    }
8005}
8006impl Error for TagResourceError {}
8007/// Errors returned by UntagResource
8008#[derive(Debug, PartialEq)]
8009pub enum UntagResourceError {
8010    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8011    InternalService(String),
8012    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8013    InvalidRequest(String),
8014    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8015    NotFound(String),
8016    /// <p> The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. </p>
8017    TaggingFailed(String),
8018}
8019
8020impl UntagResourceError {
8021    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
8022        if let Some(err) = proto::json::Error::parse(&res) {
8023            match err.typ.as_str() {
8024                "InternalServiceException" => {
8025                    return RusotoError::Service(UntagResourceError::InternalService(err.msg))
8026                }
8027                "InvalidRequestException" => {
8028                    return RusotoError::Service(UntagResourceError::InvalidRequest(err.msg))
8029                }
8030                "NotFoundException" => {
8031                    return RusotoError::Service(UntagResourceError::NotFound(err.msg))
8032                }
8033                "TaggingFailedException" => {
8034                    return RusotoError::Service(UntagResourceError::TaggingFailed(err.msg))
8035                }
8036                "ValidationException" => return RusotoError::Validation(err.msg),
8037                _ => {}
8038            }
8039        }
8040        RusotoError::Unknown(res)
8041    }
8042}
8043impl fmt::Display for UntagResourceError {
8044    #[allow(unused_variables)]
8045    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8046        match *self {
8047            UntagResourceError::InternalService(ref cause) => write!(f, "{}", cause),
8048            UntagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8049            UntagResourceError::NotFound(ref cause) => write!(f, "{}", cause),
8050            UntagResourceError::TaggingFailed(ref cause) => write!(f, "{}", cause),
8051        }
8052    }
8053}
8054impl Error for UntagResourceError {}
8055/// Errors returned by UpdateAlias
8056#[derive(Debug, PartialEq)]
8057pub enum UpdateAliasError {
8058    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8059    InternalService(String),
8060    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8061    InvalidRequest(String),
8062    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8063    NotFound(String),
8064    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8065    Unauthorized(String),
8066}
8067
8068impl UpdateAliasError {
8069    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateAliasError> {
8070        if let Some(err) = proto::json::Error::parse(&res) {
8071            match err.typ.as_str() {
8072                "InternalServiceException" => {
8073                    return RusotoError::Service(UpdateAliasError::InternalService(err.msg))
8074                }
8075                "InvalidRequestException" => {
8076                    return RusotoError::Service(UpdateAliasError::InvalidRequest(err.msg))
8077                }
8078                "NotFoundException" => {
8079                    return RusotoError::Service(UpdateAliasError::NotFound(err.msg))
8080                }
8081                "UnauthorizedException" => {
8082                    return RusotoError::Service(UpdateAliasError::Unauthorized(err.msg))
8083                }
8084                "ValidationException" => return RusotoError::Validation(err.msg),
8085                _ => {}
8086            }
8087        }
8088        RusotoError::Unknown(res)
8089    }
8090}
8091impl fmt::Display for UpdateAliasError {
8092    #[allow(unused_variables)]
8093    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8094        match *self {
8095            UpdateAliasError::InternalService(ref cause) => write!(f, "{}", cause),
8096            UpdateAliasError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8097            UpdateAliasError::NotFound(ref cause) => write!(f, "{}", cause),
8098            UpdateAliasError::Unauthorized(ref cause) => write!(f, "{}", cause),
8099        }
8100    }
8101}
8102impl Error for UpdateAliasError {}
8103/// Errors returned by UpdateBuild
8104#[derive(Debug, PartialEq)]
8105pub enum UpdateBuildError {
8106    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8107    InternalService(String),
8108    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8109    InvalidRequest(String),
8110    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8111    NotFound(String),
8112    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8113    Unauthorized(String),
8114}
8115
8116impl UpdateBuildError {
8117    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateBuildError> {
8118        if let Some(err) = proto::json::Error::parse(&res) {
8119            match err.typ.as_str() {
8120                "InternalServiceException" => {
8121                    return RusotoError::Service(UpdateBuildError::InternalService(err.msg))
8122                }
8123                "InvalidRequestException" => {
8124                    return RusotoError::Service(UpdateBuildError::InvalidRequest(err.msg))
8125                }
8126                "NotFoundException" => {
8127                    return RusotoError::Service(UpdateBuildError::NotFound(err.msg))
8128                }
8129                "UnauthorizedException" => {
8130                    return RusotoError::Service(UpdateBuildError::Unauthorized(err.msg))
8131                }
8132                "ValidationException" => return RusotoError::Validation(err.msg),
8133                _ => {}
8134            }
8135        }
8136        RusotoError::Unknown(res)
8137    }
8138}
8139impl fmt::Display for UpdateBuildError {
8140    #[allow(unused_variables)]
8141    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8142        match *self {
8143            UpdateBuildError::InternalService(ref cause) => write!(f, "{}", cause),
8144            UpdateBuildError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8145            UpdateBuildError::NotFound(ref cause) => write!(f, "{}", cause),
8146            UpdateBuildError::Unauthorized(ref cause) => write!(f, "{}", cause),
8147        }
8148    }
8149}
8150impl Error for UpdateBuildError {}
8151/// Errors returned by UpdateFleetAttributes
8152#[derive(Debug, PartialEq)]
8153pub enum UpdateFleetAttributesError {
8154    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
8155    Conflict(String),
8156    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8157    InternalService(String),
8158    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
8159    InvalidFleetStatus(String),
8160    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8161    InvalidRequest(String),
8162    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
8163    LimitExceeded(String),
8164    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8165    NotFound(String),
8166    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8167    Unauthorized(String),
8168}
8169
8170impl UpdateFleetAttributesError {
8171    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateFleetAttributesError> {
8172        if let Some(err) = proto::json::Error::parse(&res) {
8173            match err.typ.as_str() {
8174                "ConflictException" => {
8175                    return RusotoError::Service(UpdateFleetAttributesError::Conflict(err.msg))
8176                }
8177                "InternalServiceException" => {
8178                    return RusotoError::Service(UpdateFleetAttributesError::InternalService(
8179                        err.msg,
8180                    ))
8181                }
8182                "InvalidFleetStatusException" => {
8183                    return RusotoError::Service(UpdateFleetAttributesError::InvalidFleetStatus(
8184                        err.msg,
8185                    ))
8186                }
8187                "InvalidRequestException" => {
8188                    return RusotoError::Service(UpdateFleetAttributesError::InvalidRequest(
8189                        err.msg,
8190                    ))
8191                }
8192                "LimitExceededException" => {
8193                    return RusotoError::Service(UpdateFleetAttributesError::LimitExceeded(err.msg))
8194                }
8195                "NotFoundException" => {
8196                    return RusotoError::Service(UpdateFleetAttributesError::NotFound(err.msg))
8197                }
8198                "UnauthorizedException" => {
8199                    return RusotoError::Service(UpdateFleetAttributesError::Unauthorized(err.msg))
8200                }
8201                "ValidationException" => return RusotoError::Validation(err.msg),
8202                _ => {}
8203            }
8204        }
8205        RusotoError::Unknown(res)
8206    }
8207}
8208impl fmt::Display for UpdateFleetAttributesError {
8209    #[allow(unused_variables)]
8210    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8211        match *self {
8212            UpdateFleetAttributesError::Conflict(ref cause) => write!(f, "{}", cause),
8213            UpdateFleetAttributesError::InternalService(ref cause) => write!(f, "{}", cause),
8214            UpdateFleetAttributesError::InvalidFleetStatus(ref cause) => write!(f, "{}", cause),
8215            UpdateFleetAttributesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8216            UpdateFleetAttributesError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8217            UpdateFleetAttributesError::NotFound(ref cause) => write!(f, "{}", cause),
8218            UpdateFleetAttributesError::Unauthorized(ref cause) => write!(f, "{}", cause),
8219        }
8220    }
8221}
8222impl Error for UpdateFleetAttributesError {}
8223/// Errors returned by UpdateFleetCapacity
8224#[derive(Debug, PartialEq)]
8225pub enum UpdateFleetCapacityError {
8226    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
8227    Conflict(String),
8228    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8229    InternalService(String),
8230    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
8231    InvalidFleetStatus(String),
8232    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8233    InvalidRequest(String),
8234    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
8235    LimitExceeded(String),
8236    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8237    NotFound(String),
8238    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8239    Unauthorized(String),
8240}
8241
8242impl UpdateFleetCapacityError {
8243    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateFleetCapacityError> {
8244        if let Some(err) = proto::json::Error::parse(&res) {
8245            match err.typ.as_str() {
8246                "ConflictException" => {
8247                    return RusotoError::Service(UpdateFleetCapacityError::Conflict(err.msg))
8248                }
8249                "InternalServiceException" => {
8250                    return RusotoError::Service(UpdateFleetCapacityError::InternalService(err.msg))
8251                }
8252                "InvalidFleetStatusException" => {
8253                    return RusotoError::Service(UpdateFleetCapacityError::InvalidFleetStatus(
8254                        err.msg,
8255                    ))
8256                }
8257                "InvalidRequestException" => {
8258                    return RusotoError::Service(UpdateFleetCapacityError::InvalidRequest(err.msg))
8259                }
8260                "LimitExceededException" => {
8261                    return RusotoError::Service(UpdateFleetCapacityError::LimitExceeded(err.msg))
8262                }
8263                "NotFoundException" => {
8264                    return RusotoError::Service(UpdateFleetCapacityError::NotFound(err.msg))
8265                }
8266                "UnauthorizedException" => {
8267                    return RusotoError::Service(UpdateFleetCapacityError::Unauthorized(err.msg))
8268                }
8269                "ValidationException" => return RusotoError::Validation(err.msg),
8270                _ => {}
8271            }
8272        }
8273        RusotoError::Unknown(res)
8274    }
8275}
8276impl fmt::Display for UpdateFleetCapacityError {
8277    #[allow(unused_variables)]
8278    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8279        match *self {
8280            UpdateFleetCapacityError::Conflict(ref cause) => write!(f, "{}", cause),
8281            UpdateFleetCapacityError::InternalService(ref cause) => write!(f, "{}", cause),
8282            UpdateFleetCapacityError::InvalidFleetStatus(ref cause) => write!(f, "{}", cause),
8283            UpdateFleetCapacityError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8284            UpdateFleetCapacityError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8285            UpdateFleetCapacityError::NotFound(ref cause) => write!(f, "{}", cause),
8286            UpdateFleetCapacityError::Unauthorized(ref cause) => write!(f, "{}", cause),
8287        }
8288    }
8289}
8290impl Error for UpdateFleetCapacityError {}
8291/// Errors returned by UpdateFleetPortSettings
8292#[derive(Debug, PartialEq)]
8293pub enum UpdateFleetPortSettingsError {
8294    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
8295    Conflict(String),
8296    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8297    InternalService(String),
8298    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
8299    InvalidFleetStatus(String),
8300    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8301    InvalidRequest(String),
8302    /// <p>The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying.</p>
8303    LimitExceeded(String),
8304    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8305    NotFound(String),
8306    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8307    Unauthorized(String),
8308}
8309
8310impl UpdateFleetPortSettingsError {
8311    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateFleetPortSettingsError> {
8312        if let Some(err) = proto::json::Error::parse(&res) {
8313            match err.typ.as_str() {
8314                "ConflictException" => {
8315                    return RusotoError::Service(UpdateFleetPortSettingsError::Conflict(err.msg))
8316                }
8317                "InternalServiceException" => {
8318                    return RusotoError::Service(UpdateFleetPortSettingsError::InternalService(
8319                        err.msg,
8320                    ))
8321                }
8322                "InvalidFleetStatusException" => {
8323                    return RusotoError::Service(UpdateFleetPortSettingsError::InvalidFleetStatus(
8324                        err.msg,
8325                    ))
8326                }
8327                "InvalidRequestException" => {
8328                    return RusotoError::Service(UpdateFleetPortSettingsError::InvalidRequest(
8329                        err.msg,
8330                    ))
8331                }
8332                "LimitExceededException" => {
8333                    return RusotoError::Service(UpdateFleetPortSettingsError::LimitExceeded(
8334                        err.msg,
8335                    ))
8336                }
8337                "NotFoundException" => {
8338                    return RusotoError::Service(UpdateFleetPortSettingsError::NotFound(err.msg))
8339                }
8340                "UnauthorizedException" => {
8341                    return RusotoError::Service(UpdateFleetPortSettingsError::Unauthorized(
8342                        err.msg,
8343                    ))
8344                }
8345                "ValidationException" => return RusotoError::Validation(err.msg),
8346                _ => {}
8347            }
8348        }
8349        RusotoError::Unknown(res)
8350    }
8351}
8352impl fmt::Display for UpdateFleetPortSettingsError {
8353    #[allow(unused_variables)]
8354    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8355        match *self {
8356            UpdateFleetPortSettingsError::Conflict(ref cause) => write!(f, "{}", cause),
8357            UpdateFleetPortSettingsError::InternalService(ref cause) => write!(f, "{}", cause),
8358            UpdateFleetPortSettingsError::InvalidFleetStatus(ref cause) => write!(f, "{}", cause),
8359            UpdateFleetPortSettingsError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8360            UpdateFleetPortSettingsError::LimitExceeded(ref cause) => write!(f, "{}", cause),
8361            UpdateFleetPortSettingsError::NotFound(ref cause) => write!(f, "{}", cause),
8362            UpdateFleetPortSettingsError::Unauthorized(ref cause) => write!(f, "{}", cause),
8363        }
8364    }
8365}
8366impl Error for UpdateFleetPortSettingsError {}
8367/// Errors returned by UpdateGameServer
8368#[derive(Debug, PartialEq)]
8369pub enum UpdateGameServerError {
8370    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8371    InternalService(String),
8372    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8373    InvalidRequest(String),
8374    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8375    NotFound(String),
8376    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8377    Unauthorized(String),
8378}
8379
8380impl UpdateGameServerError {
8381    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateGameServerError> {
8382        if let Some(err) = proto::json::Error::parse(&res) {
8383            match err.typ.as_str() {
8384                "InternalServiceException" => {
8385                    return RusotoError::Service(UpdateGameServerError::InternalService(err.msg))
8386                }
8387                "InvalidRequestException" => {
8388                    return RusotoError::Service(UpdateGameServerError::InvalidRequest(err.msg))
8389                }
8390                "NotFoundException" => {
8391                    return RusotoError::Service(UpdateGameServerError::NotFound(err.msg))
8392                }
8393                "UnauthorizedException" => {
8394                    return RusotoError::Service(UpdateGameServerError::Unauthorized(err.msg))
8395                }
8396                "ValidationException" => return RusotoError::Validation(err.msg),
8397                _ => {}
8398            }
8399        }
8400        RusotoError::Unknown(res)
8401    }
8402}
8403impl fmt::Display for UpdateGameServerError {
8404    #[allow(unused_variables)]
8405    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8406        match *self {
8407            UpdateGameServerError::InternalService(ref cause) => write!(f, "{}", cause),
8408            UpdateGameServerError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8409            UpdateGameServerError::NotFound(ref cause) => write!(f, "{}", cause),
8410            UpdateGameServerError::Unauthorized(ref cause) => write!(f, "{}", cause),
8411        }
8412    }
8413}
8414impl Error for UpdateGameServerError {}
8415/// Errors returned by UpdateGameServerGroup
8416#[derive(Debug, PartialEq)]
8417pub enum UpdateGameServerGroupError {
8418    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8419    InternalService(String),
8420    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8421    InvalidRequest(String),
8422    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8423    NotFound(String),
8424    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8425    Unauthorized(String),
8426}
8427
8428impl UpdateGameServerGroupError {
8429    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateGameServerGroupError> {
8430        if let Some(err) = proto::json::Error::parse(&res) {
8431            match err.typ.as_str() {
8432                "InternalServiceException" => {
8433                    return RusotoError::Service(UpdateGameServerGroupError::InternalService(
8434                        err.msg,
8435                    ))
8436                }
8437                "InvalidRequestException" => {
8438                    return RusotoError::Service(UpdateGameServerGroupError::InvalidRequest(
8439                        err.msg,
8440                    ))
8441                }
8442                "NotFoundException" => {
8443                    return RusotoError::Service(UpdateGameServerGroupError::NotFound(err.msg))
8444                }
8445                "UnauthorizedException" => {
8446                    return RusotoError::Service(UpdateGameServerGroupError::Unauthorized(err.msg))
8447                }
8448                "ValidationException" => return RusotoError::Validation(err.msg),
8449                _ => {}
8450            }
8451        }
8452        RusotoError::Unknown(res)
8453    }
8454}
8455impl fmt::Display for UpdateGameServerGroupError {
8456    #[allow(unused_variables)]
8457    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8458        match *self {
8459            UpdateGameServerGroupError::InternalService(ref cause) => write!(f, "{}", cause),
8460            UpdateGameServerGroupError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8461            UpdateGameServerGroupError::NotFound(ref cause) => write!(f, "{}", cause),
8462            UpdateGameServerGroupError::Unauthorized(ref cause) => write!(f, "{}", cause),
8463        }
8464    }
8465}
8466impl Error for UpdateGameServerGroupError {}
8467/// Errors returned by UpdateGameSession
8468#[derive(Debug, PartialEq)]
8469pub enum UpdateGameSessionError {
8470    /// <p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request.</p>
8471    Conflict(String),
8472    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8473    InternalService(String),
8474    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the game instance. Resolve the conflict before retrying.</p>
8475    InvalidGameSessionStatus(String),
8476    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8477    InvalidRequest(String),
8478    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8479    NotFound(String),
8480    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8481    Unauthorized(String),
8482}
8483
8484impl UpdateGameSessionError {
8485    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateGameSessionError> {
8486        if let Some(err) = proto::json::Error::parse(&res) {
8487            match err.typ.as_str() {
8488                "ConflictException" => {
8489                    return RusotoError::Service(UpdateGameSessionError::Conflict(err.msg))
8490                }
8491                "InternalServiceException" => {
8492                    return RusotoError::Service(UpdateGameSessionError::InternalService(err.msg))
8493                }
8494                "InvalidGameSessionStatusException" => {
8495                    return RusotoError::Service(UpdateGameSessionError::InvalidGameSessionStatus(
8496                        err.msg,
8497                    ))
8498                }
8499                "InvalidRequestException" => {
8500                    return RusotoError::Service(UpdateGameSessionError::InvalidRequest(err.msg))
8501                }
8502                "NotFoundException" => {
8503                    return RusotoError::Service(UpdateGameSessionError::NotFound(err.msg))
8504                }
8505                "UnauthorizedException" => {
8506                    return RusotoError::Service(UpdateGameSessionError::Unauthorized(err.msg))
8507                }
8508                "ValidationException" => return RusotoError::Validation(err.msg),
8509                _ => {}
8510            }
8511        }
8512        RusotoError::Unknown(res)
8513    }
8514}
8515impl fmt::Display for UpdateGameSessionError {
8516    #[allow(unused_variables)]
8517    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8518        match *self {
8519            UpdateGameSessionError::Conflict(ref cause) => write!(f, "{}", cause),
8520            UpdateGameSessionError::InternalService(ref cause) => write!(f, "{}", cause),
8521            UpdateGameSessionError::InvalidGameSessionStatus(ref cause) => write!(f, "{}", cause),
8522            UpdateGameSessionError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8523            UpdateGameSessionError::NotFound(ref cause) => write!(f, "{}", cause),
8524            UpdateGameSessionError::Unauthorized(ref cause) => write!(f, "{}", cause),
8525        }
8526    }
8527}
8528impl Error for UpdateGameSessionError {}
8529/// Errors returned by UpdateGameSessionQueue
8530#[derive(Debug, PartialEq)]
8531pub enum UpdateGameSessionQueueError {
8532    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8533    InternalService(String),
8534    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8535    InvalidRequest(String),
8536    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8537    NotFound(String),
8538    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8539    Unauthorized(String),
8540}
8541
8542impl UpdateGameSessionQueueError {
8543    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateGameSessionQueueError> {
8544        if let Some(err) = proto::json::Error::parse(&res) {
8545            match err.typ.as_str() {
8546                "InternalServiceException" => {
8547                    return RusotoError::Service(UpdateGameSessionQueueError::InternalService(
8548                        err.msg,
8549                    ))
8550                }
8551                "InvalidRequestException" => {
8552                    return RusotoError::Service(UpdateGameSessionQueueError::InvalidRequest(
8553                        err.msg,
8554                    ))
8555                }
8556                "NotFoundException" => {
8557                    return RusotoError::Service(UpdateGameSessionQueueError::NotFound(err.msg))
8558                }
8559                "UnauthorizedException" => {
8560                    return RusotoError::Service(UpdateGameSessionQueueError::Unauthorized(err.msg))
8561                }
8562                "ValidationException" => return RusotoError::Validation(err.msg),
8563                _ => {}
8564            }
8565        }
8566        RusotoError::Unknown(res)
8567    }
8568}
8569impl fmt::Display for UpdateGameSessionQueueError {
8570    #[allow(unused_variables)]
8571    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8572        match *self {
8573            UpdateGameSessionQueueError::InternalService(ref cause) => write!(f, "{}", cause),
8574            UpdateGameSessionQueueError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8575            UpdateGameSessionQueueError::NotFound(ref cause) => write!(f, "{}", cause),
8576            UpdateGameSessionQueueError::Unauthorized(ref cause) => write!(f, "{}", cause),
8577        }
8578    }
8579}
8580impl Error for UpdateGameSessionQueueError {}
8581/// Errors returned by UpdateMatchmakingConfiguration
8582#[derive(Debug, PartialEq)]
8583pub enum UpdateMatchmakingConfigurationError {
8584    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8585    InternalService(String),
8586    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8587    InvalidRequest(String),
8588    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8589    NotFound(String),
8590    /// <p>The requested operation is not supported in the Region specified.</p>
8591    UnsupportedRegion(String),
8592}
8593
8594impl UpdateMatchmakingConfigurationError {
8595    pub fn from_response(
8596        res: BufferedHttpResponse,
8597    ) -> RusotoError<UpdateMatchmakingConfigurationError> {
8598        if let Some(err) = proto::json::Error::parse(&res) {
8599            match err.typ.as_str() {
8600                "InternalServiceException" => {
8601                    return RusotoError::Service(
8602                        UpdateMatchmakingConfigurationError::InternalService(err.msg),
8603                    )
8604                }
8605                "InvalidRequestException" => {
8606                    return RusotoError::Service(
8607                        UpdateMatchmakingConfigurationError::InvalidRequest(err.msg),
8608                    )
8609                }
8610                "NotFoundException" => {
8611                    return RusotoError::Service(UpdateMatchmakingConfigurationError::NotFound(
8612                        err.msg,
8613                    ))
8614                }
8615                "UnsupportedRegionException" => {
8616                    return RusotoError::Service(
8617                        UpdateMatchmakingConfigurationError::UnsupportedRegion(err.msg),
8618                    )
8619                }
8620                "ValidationException" => return RusotoError::Validation(err.msg),
8621                _ => {}
8622            }
8623        }
8624        RusotoError::Unknown(res)
8625    }
8626}
8627impl fmt::Display for UpdateMatchmakingConfigurationError {
8628    #[allow(unused_variables)]
8629    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8630        match *self {
8631            UpdateMatchmakingConfigurationError::InternalService(ref cause) => {
8632                write!(f, "{}", cause)
8633            }
8634            UpdateMatchmakingConfigurationError::InvalidRequest(ref cause) => {
8635                write!(f, "{}", cause)
8636            }
8637            UpdateMatchmakingConfigurationError::NotFound(ref cause) => write!(f, "{}", cause),
8638            UpdateMatchmakingConfigurationError::UnsupportedRegion(ref cause) => {
8639                write!(f, "{}", cause)
8640            }
8641        }
8642    }
8643}
8644impl Error for UpdateMatchmakingConfigurationError {}
8645/// Errors returned by UpdateRuntimeConfiguration
8646#[derive(Debug, PartialEq)]
8647pub enum UpdateRuntimeConfigurationError {
8648    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8649    InternalService(String),
8650    /// <p>The requested operation would cause a conflict with the current state of a resource associated with the request and/or the fleet. Resolve the conflict before retrying.</p>
8651    InvalidFleetStatus(String),
8652    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8653    InvalidRequest(String),
8654    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8655    NotFound(String),
8656    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8657    Unauthorized(String),
8658}
8659
8660impl UpdateRuntimeConfigurationError {
8661    pub fn from_response(
8662        res: BufferedHttpResponse,
8663    ) -> RusotoError<UpdateRuntimeConfigurationError> {
8664        if let Some(err) = proto::json::Error::parse(&res) {
8665            match err.typ.as_str() {
8666                "InternalServiceException" => {
8667                    return RusotoError::Service(UpdateRuntimeConfigurationError::InternalService(
8668                        err.msg,
8669                    ))
8670                }
8671                "InvalidFleetStatusException" => {
8672                    return RusotoError::Service(
8673                        UpdateRuntimeConfigurationError::InvalidFleetStatus(err.msg),
8674                    )
8675                }
8676                "InvalidRequestException" => {
8677                    return RusotoError::Service(UpdateRuntimeConfigurationError::InvalidRequest(
8678                        err.msg,
8679                    ))
8680                }
8681                "NotFoundException" => {
8682                    return RusotoError::Service(UpdateRuntimeConfigurationError::NotFound(err.msg))
8683                }
8684                "UnauthorizedException" => {
8685                    return RusotoError::Service(UpdateRuntimeConfigurationError::Unauthorized(
8686                        err.msg,
8687                    ))
8688                }
8689                "ValidationException" => return RusotoError::Validation(err.msg),
8690                _ => {}
8691            }
8692        }
8693        RusotoError::Unknown(res)
8694    }
8695}
8696impl fmt::Display for UpdateRuntimeConfigurationError {
8697    #[allow(unused_variables)]
8698    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8699        match *self {
8700            UpdateRuntimeConfigurationError::InternalService(ref cause) => write!(f, "{}", cause),
8701            UpdateRuntimeConfigurationError::InvalidFleetStatus(ref cause) => {
8702                write!(f, "{}", cause)
8703            }
8704            UpdateRuntimeConfigurationError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8705            UpdateRuntimeConfigurationError::NotFound(ref cause) => write!(f, "{}", cause),
8706            UpdateRuntimeConfigurationError::Unauthorized(ref cause) => write!(f, "{}", cause),
8707        }
8708    }
8709}
8710impl Error for UpdateRuntimeConfigurationError {}
8711/// Errors returned by UpdateScript
8712#[derive(Debug, PartialEq)]
8713pub enum UpdateScriptError {
8714    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8715    InternalService(String),
8716    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8717    InvalidRequest(String),
8718    /// <p>A service resource associated with the request could not be found. Clients should not retry such requests.</p>
8719    NotFound(String),
8720    /// <p>The client failed authentication. Clients should not retry such requests.</p>
8721    Unauthorized(String),
8722}
8723
8724impl UpdateScriptError {
8725    pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateScriptError> {
8726        if let Some(err) = proto::json::Error::parse(&res) {
8727            match err.typ.as_str() {
8728                "InternalServiceException" => {
8729                    return RusotoError::Service(UpdateScriptError::InternalService(err.msg))
8730                }
8731                "InvalidRequestException" => {
8732                    return RusotoError::Service(UpdateScriptError::InvalidRequest(err.msg))
8733                }
8734                "NotFoundException" => {
8735                    return RusotoError::Service(UpdateScriptError::NotFound(err.msg))
8736                }
8737                "UnauthorizedException" => {
8738                    return RusotoError::Service(UpdateScriptError::Unauthorized(err.msg))
8739                }
8740                "ValidationException" => return RusotoError::Validation(err.msg),
8741                _ => {}
8742            }
8743        }
8744        RusotoError::Unknown(res)
8745    }
8746}
8747impl fmt::Display for UpdateScriptError {
8748    #[allow(unused_variables)]
8749    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8750        match *self {
8751            UpdateScriptError::InternalService(ref cause) => write!(f, "{}", cause),
8752            UpdateScriptError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8753            UpdateScriptError::NotFound(ref cause) => write!(f, "{}", cause),
8754            UpdateScriptError::Unauthorized(ref cause) => write!(f, "{}", cause),
8755        }
8756    }
8757}
8758impl Error for UpdateScriptError {}
8759/// Errors returned by ValidateMatchmakingRuleSet
8760#[derive(Debug, PartialEq)]
8761pub enum ValidateMatchmakingRuleSetError {
8762    /// <p>The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period.</p>
8763    InternalService(String),
8764    /// <p>One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying.</p>
8765    InvalidRequest(String),
8766    /// <p>The requested operation is not supported in the Region specified.</p>
8767    UnsupportedRegion(String),
8768}
8769
8770impl ValidateMatchmakingRuleSetError {
8771    pub fn from_response(
8772        res: BufferedHttpResponse,
8773    ) -> RusotoError<ValidateMatchmakingRuleSetError> {
8774        if let Some(err) = proto::json::Error::parse(&res) {
8775            match err.typ.as_str() {
8776                "InternalServiceException" => {
8777                    return RusotoError::Service(ValidateMatchmakingRuleSetError::InternalService(
8778                        err.msg,
8779                    ))
8780                }
8781                "InvalidRequestException" => {
8782                    return RusotoError::Service(ValidateMatchmakingRuleSetError::InvalidRequest(
8783                        err.msg,
8784                    ))
8785                }
8786                "UnsupportedRegionException" => {
8787                    return RusotoError::Service(
8788                        ValidateMatchmakingRuleSetError::UnsupportedRegion(err.msg),
8789                    )
8790                }
8791                "ValidationException" => return RusotoError::Validation(err.msg),
8792                _ => {}
8793            }
8794        }
8795        RusotoError::Unknown(res)
8796    }
8797}
8798impl fmt::Display for ValidateMatchmakingRuleSetError {
8799    #[allow(unused_variables)]
8800    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8801        match *self {
8802            ValidateMatchmakingRuleSetError::InternalService(ref cause) => write!(f, "{}", cause),
8803            ValidateMatchmakingRuleSetError::InvalidRequest(ref cause) => write!(f, "{}", cause),
8804            ValidateMatchmakingRuleSetError::UnsupportedRegion(ref cause) => write!(f, "{}", cause),
8805        }
8806    }
8807}
8808impl Error for ValidateMatchmakingRuleSetError {}
8809/// Trait representing the capabilities of the Amazon GameLift API. Amazon GameLift clients implement this trait.
8810#[async_trait]
8811pub trait GameLift {
8812    /// <p><p>Registers a player&#39;s acceptance or rejection of a proposed FlexMatch match. A matchmaking configuration may require player acceptance; if so, then matches built with that configuration cannot be completed unless all players accept the proposed match within a specified time limit. </p> <p>When FlexMatch builds a match, all the matchmaking tickets involved in the proposed match are placed into status <code>REQUIRES_ACCEPTANCE</code>. This is a trigger for your game to get acceptance from all players in the ticket. Acceptances are only valid for tickets when they are in this status; all other acceptances result in an error.</p> <p>To register acceptance, specify the ticket ID, a response, and one or more players. Once all players have registered acceptance, the matchmaking tickets advance to status <code>PLACING</code>, where a new game session is created for the match. </p> <p>If any player rejects the match, or if acceptances are not received before a specified timeout, the proposed match is dropped. The matchmaking tickets are then handled in one of two ways: For tickets where one or more players rejected the match, the ticket status is returned to <code>SEARCHING</code> to find a new match. For tickets where one or more players failed to respond, the ticket status is set to <code>CANCELLED</code>, and processing is terminated. A new matchmaking request for these players can be submitted as needed. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-events.html"> FlexMatch Events Reference</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
8813    async fn accept_match(
8814        &self,
8815        input: AcceptMatchInput,
8816    ) -> Result<AcceptMatchOutput, RusotoError<AcceptMatchError>>;
8817
8818    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Locates an available game server and temporarily reserves it to host gameplay and players. This action is called by a game client or client service (such as a matchmaker) to request hosting resources for a new game session. In response, GameLift FleetIQ searches for an available game server in the specified game server group, places the game server in &quot;claimed&quot; status for 60 seconds, and returns connection information back to the requester so that players can connect to the game server. </p> <p>There are two ways you can claim a game server. For the first option, you provide a game server group ID only, which prompts GameLift FleetIQ to search for an available game server in the specified group and claim it. With this option, GameLift FleetIQ attempts to consolidate gameplay on as few instances as possible to minimize hosting costs. For the second option, you request a specific game server by its ID. This option results in a less efficient claiming process because it does not take advantage of consolidation and may fail if the requested game server is unavailable. </p> <p>To claim a game server, identify a game server group and (optionally) a game server ID. If your game requires that game data be provided to the game server at the start of a game, such as a game map or player information, you can provide it in your claim request. </p> <p>When a game server is successfully claimed, connection information is returned. A claimed game server&#39;s utilization status remains AVAILABLE, while the claim status is set to CLAIMED for up to 60 seconds. This time period allows the game server to be prompted to update its status to UTILIZED (using <a>UpdateGameServer</a>). If the game server&#39;s status is not updated within 60 seconds, the game server reverts to unclaimed status and is available to be claimed by another request.</p> <p>If you try to claim a specific game server, this request will fail in the following cases: (1) if the game server utilization status is UTILIZED, (2) if the game server claim status is CLAIMED, or (3) if the instance that the game server is running on is flagged as draining.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
8819    async fn claim_game_server(
8820        &self,
8821        input: ClaimGameServerInput,
8822    ) -> Result<ClaimGameServerOutput, RusotoError<ClaimGameServerError>>;
8823
8824    /// <p><p>Creates an alias for a fleet. In most situations, you can use an alias ID in place of a fleet ID. An alias provides a level of abstraction for a fleet that is useful when redirecting player traffic from one fleet to another, such as when updating your game build. </p> <p>Amazon GameLift supports two types of routing strategies for aliases: simple and terminal. A simple alias points to an active fleet. A terminal alias is used to display messaging or link to a URL instead of routing players to an active fleet. For example, you might use a terminal alias when a game version is no longer supported and you want to direct players to an upgrade site. </p> <p>To create a fleet alias, specify an alias name, routing strategy, and optional description. Each simple alias can point to only one fleet, but a fleet can have multiple aliases. If successful, a new alias record is returned, including an alias ID and an ARN. You can reassign an alias to another fleet by calling <code>UpdateAlias</code>.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
8825    async fn create_alias(
8826        &self,
8827        input: CreateAliasInput,
8828    ) -> Result<CreateAliasOutput, RusotoError<CreateAliasError>>;
8829
8830    /// <p><p>Creates a new Amazon GameLift build resource for your game server binary files. Game server binaries must be combined into a zip file for use with Amazon GameLift. </p> <important> <p>When setting up a new game build for GameLift, we recommend using the AWS CLI command <b> <a href="https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html">upload-build</a> </b>. This helper command combines two tasks: (1) it uploads your build files from a file directory to a GameLift Amazon S3 location, and (2) it creates a new build resource. </p> </important> <p>The <code>CreateBuild</code> operation can used in the following scenarios:</p> <ul> <li> <p>To create a new game build with build files that are in an S3 location under an AWS account that you control. To use this option, you must first give Amazon GameLift access to the S3 bucket. With permissions in place, call <code>CreateBuild</code> and specify a build name, operating system, and the S3 storage location of your game build.</p> </li> <li> <p>To directly upload your build files to a GameLift S3 location. To use this option, first call <code>CreateBuild</code> and specify a build name and operating system. This action creates a new build resource and also returns an S3 location with temporary access credentials. Use the credentials to manually upload your build files to the specified S3 location. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html">Uploading Objects</a> in the <i>Amazon S3 Developer Guide</i>. Build files can be uploaded to the GameLift S3 location once only; that can&#39;t be updated. </p> </li> </ul> <p>If successful, this operation creates a new build resource with a unique build ID and places it in <code>INITIALIZED</code> status. A build must be in <code>READY</code> status before you can create fleets with it.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html">Uploading Your Game</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html#gamelift-build-cli-uploading-create-build"> Create a Build with Files in Amazon S3</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
8831    async fn create_build(
8832        &self,
8833        input: CreateBuildInput,
8834    ) -> Result<CreateBuildOutput, RusotoError<CreateBuildError>>;
8835
8836    /// <p><p>Creates a new fleet to run your game servers. whether they are custom game builds or Realtime Servers with game-specific script. A fleet is a set of Amazon Elastic Compute Cloud (Amazon EC2) instances, each of which can host multiple game sessions. When creating a fleet, you choose the hardware specifications, set some configuration options, and specify the game server to deploy on the new fleet. </p> <p>To create a new fleet, provide the following: (1) a fleet name, (2) an EC2 instance type and fleet type (spot or on-demand), (3) the build ID for your game build or script ID if using Realtime Servers, and (4) a runtime configuration, which determines how game servers will run on each instance in the fleet. </p> <p>If the <code>CreateFleet</code> call is successful, Amazon GameLift performs the following tasks. You can track the process of a fleet by checking the fleet status or by monitoring fleet creation events:</p> <ul> <li> <p>Creates a fleet resource. Status: <code>NEW</code>.</p> </li> <li> <p>Begins writing events to the fleet event log, which can be accessed in the Amazon GameLift console.</p> </li> <li> <p>Sets the fleet&#39;s target capacity to 1 (desired instances), which triggers Amazon GameLift to start one new EC2 instance.</p> </li> <li> <p>Downloads the game build or Realtime script to the new instance and installs it. Statuses: <code>DOWNLOADING</code>, <code>VALIDATING</code>, <code>BUILDING</code>. </p> </li> <li> <p>Starts launching server processes on the instance. If the fleet is configured to run multiple server processes per instance, Amazon GameLift staggers each process launch by a few seconds. Status: <code>ACTIVATING</code>.</p> </li> <li> <p>Sets the fleet&#39;s status to <code>ACTIVE</code> as soon as one server process is ready to host a game session.</p> </li> </ul> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting Up Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation">Debug Fleet Creation Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
8837    async fn create_fleet(
8838        &self,
8839        input: CreateFleetInput,
8840    ) -> Result<CreateFleetOutput, RusotoError<CreateFleetError>>;
8841
8842    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Creates a GameLift FleetIQ game server group to manage a collection of EC2 instances for game hosting. In addition to creating the game server group, this action also creates an Auto Scaling group in your AWS account and establishes a link between the two groups. You have full control over configuration of the Auto Scaling group, but GameLift FleetIQ routinely certain Auto Scaling group properties in order to optimize the group&#39;s instances for low-cost game hosting. You can view the status of your game server groups in the GameLift Console. Game server group metrics and events are emitted to Amazon CloudWatch.</p> <p>Prior creating a new game server group, you must set up the following: </p> <ul> <li> <p>An EC2 launch template. The template provides configuration settings for a set of EC2 instances and includes the game server build that you want to deploy and run on each instance. For more information on creating a launch template, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html"> Launching an Instance from a Launch Template</a> in the <i>Amazon EC2 User Guide</i>. </p> </li> <li> <p>An IAM role. The role sets up limited access to your AWS account, allowing GameLift FleetIQ to create and manage the EC2 Auto Scaling group, get instance data, and emit metrics and events to CloudWatch. For more information on setting up an IAM permissions policy with principal access for GameLift, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html"> Specifying a Principal in a Policy</a> in the <i>Amazon S3 Developer Guide</i>.</p> </li> </ul> <p>To create a new game server group, provide a name and specify the IAM role and EC2 launch template. You also need to provide a list of instance types to be used in the group and set initial maximum and minimum limits on the group&#39;s instance count. You can optionally set an autoscaling policy with target tracking based on a GameLift FleetIQ metric.</p> <p>Once the game server group and corresponding Auto Scaling group are created, you have full access to change the Auto Scaling group&#39;s configuration as needed. Keep in mind, however, that some properties are periodically updated by GameLift FleetIQ as it balances the group&#39;s instances based on availability and cost.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-asgroups.html">Updating a GameLift FleetIQ-Linked Auto Scaling Group</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
8843    async fn create_game_server_group(
8844        &self,
8845        input: CreateGameServerGroupInput,
8846    ) -> Result<CreateGameServerGroupOutput, RusotoError<CreateGameServerGroupError>>;
8847
8848    /// <p><p>Creates a multiplayer game session for players. This action creates a game session record and assigns an available server process in the specified fleet to host the game session. A fleet must have an <code>ACTIVE</code> status before a game session can be created in it.</p> <p>To create a game session, specify either fleet ID or alias ID and indicate a maximum number of players to allow in the game session. You can also provide a name and game-specific properties for this game session. If successful, a <a>GameSession</a> object is returned containing the game session properties and other settings you specified.</p> <p> <b>Idempotency tokens.</b> You can add a token that uniquely identifies game session requests. This is useful for ensuring that game session requests are idempotent. Multiple requests with the same idempotency token are processed only once; subsequent requests return the original result. All response values are the same with the exception of game session status, which may change.</p> <p> <b>Resource creation limits.</b> If you are creating a game session on a fleet with a resource creation limit policy in force, then you must specify a creator ID. Without this ID, Amazon GameLift has no way to evaluate the policy for this new game session request.</p> <p> <b>Player acceptance policy.</b> By default, newly created game sessions are open to new players. You can restrict new player access by using <a>UpdateGameSession</a> to change the game session&#39;s player session creation policy.</p> <p> <b>Game session logs.</b> Logs are retained for all active game sessions for 14 days. To access the logs, call <a>GetGameSessionLogUrl</a> to download the log files.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
8849    async fn create_game_session(
8850        &self,
8851        input: CreateGameSessionInput,
8852    ) -> Result<CreateGameSessionOutput, RusotoError<CreateGameSessionError>>;
8853
8854    /// <p><p>Establishes a new queue for processing requests to place new game sessions. A queue identifies where new game sessions can be hosted -- by specifying a list of destinations (fleets or aliases) -- and how long requests can wait in the queue before timing out. You can set up a queue to try to place game sessions on fleets in multiple Regions. To add placement requests to a queue, call <a>StartGameSessionPlacement</a> and reference the queue name.</p> <p> <b>Destination order.</b> When processing a request for a game session, Amazon GameLift tries each destination in order until it finds one with available resources to host the new game session. A queue&#39;s default order is determined by how destinations are listed. The default order is overridden when a game session placement request provides player latency information. Player latency information enables Amazon GameLift to prioritize destinations where players report the lowest average latency, as a result placing the new game session where the majority of players will have the best possible gameplay experience.</p> <p> <b>Player latency policies.</b> For placement requests containing player latency information, use player latency policies to protect individual players from very high latencies. With a latency cap, even when a destination can deliver a low latency for most players, the game is not placed where any individual player is reporting latency higher than a policy&#39;s maximum. A queue can have multiple latency policies, which are enforced consecutively starting with the policy with the lowest latency cap. Use multiple policies to gradually relax latency controls; for example, you might set a policy with a low latency cap for the first 60 seconds, a second policy with a higher cap for the next 60 seconds, etc. </p> <p>To create a new queue, provide a name, timeout value, a list of destinations and, if desired, a set of latency policies. If successful, a new queue object is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-design.html"> Design a Game Session Queue</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-creating.html"> Create a Game Session Queue</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
8855    async fn create_game_session_queue(
8856        &self,
8857        input: CreateGameSessionQueueInput,
8858    ) -> Result<CreateGameSessionQueueOutput, RusotoError<CreateGameSessionQueueError>>;
8859
8860    /// <p><p>Defines a new matchmaking configuration for use with FlexMatch. A matchmaking configuration sets out guidelines for matching players and getting the matches into games. You can set up multiple matchmaking configurations to handle the scenarios needed for your game. Each matchmaking ticket (<a>StartMatchmaking</a> or <a>StartMatchBackfill</a>) specifies a configuration for the match and provides player attributes to support the configuration being used. </p> <p>To create a matchmaking configuration, at a minimum you must specify the following: configuration name; a rule set that governs how to evaluate players and find acceptable matches; a game session queue to use when placing a new game session for the match; and the maximum time allowed for a matchmaking attempt.</p> <p>There are two ways to track the progress of matchmaking tickets: (1) polling ticket status with <a>DescribeMatchmaking</a>; or (2) receiving notifications with Amazon Simple Notification Service (SNS). To use notifications, you first need to set up an SNS topic to receive the notifications, and provide the topic ARN in the matchmaking configuration. Since notifications promise only &quot;best effort&quot; delivery, we recommend calling <code>DescribeMatchmaking</code> if no notifications are received within 30 seconds.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html"> Design a FlexMatch Matchmaker</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Setting up Notifications for Matchmaking</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
8861    async fn create_matchmaking_configuration(
8862        &self,
8863        input: CreateMatchmakingConfigurationInput,
8864    ) -> Result<
8865        CreateMatchmakingConfigurationOutput,
8866        RusotoError<CreateMatchmakingConfigurationError>,
8867    >;
8868
8869    /// <p><p>Creates a new rule set for FlexMatch matchmaking. A rule set describes the type of match to create, such as the number and size of teams. It also sets the parameters for acceptable player matches, such as minimum skill level or character type. A rule set is used by a <a>MatchmakingConfiguration</a>. </p> <p>To create a matchmaking rule set, provide unique rule set name and the rule set body in JSON format. Rule sets must be defined in the same Region as the matchmaking configuration they are used with.</p> <p>Since matchmaking rule sets cannot be edited, it is a good idea to check the rule set syntax using <a>ValidateMatchmakingRuleSet</a> before creating a new rule set.</p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html">Design a Matchmaker</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-intro.html">Matchmaking with FlexMatch</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
8870    async fn create_matchmaking_rule_set(
8871        &self,
8872        input: CreateMatchmakingRuleSetInput,
8873    ) -> Result<CreateMatchmakingRuleSetOutput, RusotoError<CreateMatchmakingRuleSetError>>;
8874
8875    /// <p><p>Reserves an open player slot in an active game session. Before a player can be added, a game session must have an <code>ACTIVE</code> status, have a creation policy of <code>ALLOW_ALL</code>, and have an open player slot. To add a group of players to a game session, use <a>CreatePlayerSessions</a>. When the player connects to the game server and references a player session ID, the game server contacts the Amazon GameLift service to validate the player reservation and accept the player.</p> <p>To create a player session, specify a game session ID, player ID, and optionally a string of player data. If successful, a slot is reserved in the game session for the player and a new <a>PlayerSession</a> object is returned. Player sessions cannot be updated. </p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
8876    async fn create_player_session(
8877        &self,
8878        input: CreatePlayerSessionInput,
8879    ) -> Result<CreatePlayerSessionOutput, RusotoError<CreatePlayerSessionError>>;
8880
8881    /// <p><p>Reserves open slots in a game session for a group of players. Before players can be added, a game session must have an <code>ACTIVE</code> status, have a creation policy of <code>ALLOW_ALL</code>, and have an open player slot. To add a single player to a game session, use <a>CreatePlayerSession</a>. When a player connects to the game server and references a player session ID, the game server contacts the Amazon GameLift service to validate the player reservation and accept the player.</p> <p>To create player sessions, specify a game session ID, a list of player IDs, and optionally a set of player data strings. If successful, a slot is reserved in the game session for each player and a set of new <a>PlayerSession</a> objects is returned. Player sessions cannot be updated.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
8882    async fn create_player_sessions(
8883        &self,
8884        input: CreatePlayerSessionsInput,
8885    ) -> Result<CreatePlayerSessionsOutput, RusotoError<CreatePlayerSessionsError>>;
8886
8887    /// <p><p>Creates a new script record for your Realtime Servers script. Realtime scripts are JavaScript that provide configuration settings and optional custom game logic for your game. The script is deployed when you create a Realtime Servers fleet to host your game sessions. Script logic is executed during an active game session. </p> <p>To create a new script record, specify a script name and provide the script file(s). The script files and all dependencies must be zipped into a single file. You can pull the zip file from either of these locations: </p> <ul> <li> <p>A locally available directory. Use the <i>ZipFile</i> parameter for this option.</p> </li> <li> <p>An Amazon Simple Storage Service (Amazon S3) bucket under your AWS account. Use the <i>StorageLocation</i> parameter for this option. You&#39;ll need to have an Identity Access Management (IAM) role that allows the Amazon GameLift service to access your S3 bucket. </p> </li> </ul> <p>If the call is successful, a new script record is created with a unique script ID. If the script file is provided as a local file, the file is uploaded to an Amazon GameLift-owned S3 bucket and the script record&#39;s storage location reflects this location. If the script file is provided as an S3 bucket, Amazon GameLift accesses the file at this storage location as needed for deployment.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/setting-up-role.html">Set Up a Role for Amazon GameLift Access</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
8888    async fn create_script(
8889        &self,
8890        input: CreateScriptInput,
8891    ) -> Result<CreateScriptOutput, RusotoError<CreateScriptError>>;
8892
8893    /// <p><p>Requests authorization to create or delete a peer connection between the VPC for your Amazon GameLift fleet and a virtual private cloud (VPC) in your AWS account. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. Once you&#39;ve received authorization, call <a>CreateVpcPeeringConnection</a> to establish the peering connection. For more information, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p> <p>You can peer with VPCs that are owned by any AWS account you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different Regions.</p> <p>To request authorization to create a connection, call this operation from the AWS account with the VPC that you want to peer to your Amazon GameLift fleet. For example, to enable your game servers to retrieve data from a DynamoDB table, use the account that manages that DynamoDB resource. Identify the following values: (1) The ID of the VPC that you want to peer with, and (2) the ID of the AWS account that you use to manage Amazon GameLift. If successful, VPC peering is authorized for the specified VPC. </p> <p>To request authorization to delete a connection, call this operation from the AWS account with the VPC that is peered with your Amazon GameLift fleet. Identify the following values: (1) VPC ID that you want to delete the peering connection for, and (2) ID of the AWS account that you use to manage Amazon GameLift. </p> <p>The authorization remains valid for 24 hours unless it is canceled by a call to <a>DeleteVpcPeeringAuthorization</a>. You must create or delete the peering connection while the authorization is valid. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
8894    async fn create_vpc_peering_authorization(
8895        &self,
8896        input: CreateVpcPeeringAuthorizationInput,
8897    ) -> Result<CreateVpcPeeringAuthorizationOutput, RusotoError<CreateVpcPeeringAuthorizationError>>;
8898
8899    /// <p><p>Establishes a VPC peering connection between a virtual private cloud (VPC) in an AWS account with the VPC for your Amazon GameLift fleet. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. You can peer with VPCs in any AWS account that you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different Regions. For more information, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p> <p>Before calling this operation to establish the peering connection, you first need to call <a>CreateVpcPeeringAuthorization</a> and identify the VPC you want to peer with. Once the authorization for the specified VPC is issued, you have 24 hours to establish the connection. These two operations handle all tasks necessary to peer the two VPCs, including acceptance, updating routing tables, etc. </p> <p>To establish the connection, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the following values: (1) The ID of the fleet you want to be enable a VPC peering connection for; (2) The AWS account with the VPC that you want to peer with; and (3) The ID of the VPC you want to peer with. This operation is asynchronous. If successful, a <a>VpcPeeringConnection</a> request is created. You can use continuous polling to track the request&#39;s status using <a>DescribeVpcPeeringConnections</a>, or by monitoring fleet events for success or failure using <a>DescribeFleetEvents</a>. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
8900    async fn create_vpc_peering_connection(
8901        &self,
8902        input: CreateVpcPeeringConnectionInput,
8903    ) -> Result<CreateVpcPeeringConnectionOutput, RusotoError<CreateVpcPeeringConnectionError>>;
8904
8905    /// <p><p>Deletes an alias. This action removes all record of the alias. Game clients attempting to access a server process using the deleted alias receive an error. To delete an alias, specify the alias ID to be deleted.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
8906    async fn delete_alias(
8907        &self,
8908        input: DeleteAliasInput,
8909    ) -> Result<(), RusotoError<DeleteAliasError>>;
8910
8911    /// <p><p>Deletes a build. This action permanently deletes the build resource and any uploaded build files. Deleting a build does not affect the status of any active fleets using the build, but you can no longer create new fleets with the deleted build.</p> <p>To delete a build, specify the build ID. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
8912    async fn delete_build(
8913        &self,
8914        input: DeleteBuildInput,
8915    ) -> Result<(), RusotoError<DeleteBuildError>>;
8916
8917    /// <p><p>Deletes everything related to a fleet. Before deleting a fleet, you must set the fleet&#39;s desired capacity to zero. See <a>UpdateFleetCapacity</a>.</p> <p>If the fleet being deleted has a VPC peering connection, you first need to get a valid authorization (good for 24 hours) by calling <a>CreateVpcPeeringAuthorization</a>. You do not need to explicitly delete the VPC peering connection--this is done as part of the delete fleet process.</p> <p>This action removes the fleet and its resources. Once a fleet is deleted, you can no longer use any of the resource in that fleet.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
8918    async fn delete_fleet(
8919        &self,
8920        input: DeleteFleetInput,
8921    ) -> Result<(), RusotoError<DeleteFleetError>>;
8922
8923    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Terminates a game server group and permanently deletes the game server group record. You have several options for how these resources are impacted when deleting the game server group. Depending on the type of delete action selected, this action may affect three types of resources: the game server group, the corresponding Auto Scaling group, and all game servers currently running in the group. </p> <p>To delete a game server group, identify the game server group to delete and specify the type of delete action to initiate. Game server groups can only be deleted if they are in ACTIVE or ERROR status.</p> <p>If the delete request is successful, a series of actions are kicked off. The game server group status is changed to DELETE_SCHEDULED, which prevents new game servers from being registered and stops autoscaling activity. Once all game servers in the game server group are de-registered, GameLift FleetIQ can begin deleting resources. If any of the delete actions fail, the game server group is placed in ERROR status.</p> <p>GameLift FleetIQ emits delete events to Amazon CloudWatch.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
8924    async fn delete_game_server_group(
8925        &self,
8926        input: DeleteGameServerGroupInput,
8927    ) -> Result<DeleteGameServerGroupOutput, RusotoError<DeleteGameServerGroupError>>;
8928
8929    /// <p><p>Deletes a game session queue. This action means that any <a>StartGameSessionPlacement</a> requests that reference this queue will fail. To delete a queue, specify the queue name.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-intro.html"> Using Multi-Region Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
8930    async fn delete_game_session_queue(
8931        &self,
8932        input: DeleteGameSessionQueueInput,
8933    ) -> Result<DeleteGameSessionQueueOutput, RusotoError<DeleteGameSessionQueueError>>;
8934
8935    /// <p><p>Permanently removes a FlexMatch matchmaking configuration. To delete, specify the configuration name. A matchmaking configuration cannot be deleted if it is being used in any active matchmaking tickets.</p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
8936    async fn delete_matchmaking_configuration(
8937        &self,
8938        input: DeleteMatchmakingConfigurationInput,
8939    ) -> Result<
8940        DeleteMatchmakingConfigurationOutput,
8941        RusotoError<DeleteMatchmakingConfigurationError>,
8942    >;
8943
8944    /// <p><p>Deletes an existing matchmaking rule set. To delete the rule set, provide the rule set name. Rule sets cannot be deleted if they are currently being used by a matchmaking configuration. </p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
8945    async fn delete_matchmaking_rule_set(
8946        &self,
8947        input: DeleteMatchmakingRuleSetInput,
8948    ) -> Result<DeleteMatchmakingRuleSetOutput, RusotoError<DeleteMatchmakingRuleSetError>>;
8949
8950    /// <p><p>Deletes a fleet scaling policy. This action means that the policy is no longer in force and removes all record of it. To delete a scaling policy, specify both the scaling policy name and the fleet ID it is associated with.</p> <p>To temporarily suspend scaling policies, call <a>StopFleetActions</a>. This operation suspends all policies for the fleet.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
8951    async fn delete_scaling_policy(
8952        &self,
8953        input: DeleteScalingPolicyInput,
8954    ) -> Result<(), RusotoError<DeleteScalingPolicyError>>;
8955
8956    /// <p><p>Deletes a Realtime script. This action permanently deletes the script record. If script files were uploaded, they are also deleted (files stored in an S3 bucket are not deleted). </p> <p>To delete a script, specify the script ID. Before deleting a script, be sure to terminate all fleets that are deployed with the script being deleted. Fleet instances periodically check for script updates, and if the script record no longer exists, the instance will go into an error state and be unable to host game sessions.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
8957    async fn delete_script(
8958        &self,
8959        input: DeleteScriptInput,
8960    ) -> Result<(), RusotoError<DeleteScriptError>>;
8961
8962    /// <p><p>Cancels a pending VPC peering authorization for the specified VPC. If you need to delete an existing VPC peering connection, call <a>DeleteVpcPeeringConnection</a>. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
8963    async fn delete_vpc_peering_authorization(
8964        &self,
8965        input: DeleteVpcPeeringAuthorizationInput,
8966    ) -> Result<DeleteVpcPeeringAuthorizationOutput, RusotoError<DeleteVpcPeeringAuthorizationError>>;
8967
8968    /// <p><p>Removes a VPC peering connection. To delete the connection, you must have a valid authorization for the VPC peering connection that you want to delete. You can check for an authorization by calling <a>DescribeVpcPeeringAuthorizations</a> or request a new one using <a>CreateVpcPeeringAuthorization</a>. </p> <p>Once a valid authorization exists, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the connection to delete by the connection ID and fleet ID. If successful, the connection is removed. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
8969    async fn delete_vpc_peering_connection(
8970        &self,
8971        input: DeleteVpcPeeringConnectionInput,
8972    ) -> Result<DeleteVpcPeeringConnectionOutput, RusotoError<DeleteVpcPeeringConnectionError>>;
8973
8974    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Removes the game server resource from the game server group. As a result of this action, the de-registered game server can no longer be claimed and will not returned in a list of active game servers. </p> <p>To de-register a game server, specify the game server group and game server ID. If successful, this action emits a CloudWatch event with termination time stamp and reason.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
8975    async fn deregister_game_server(
8976        &self,
8977        input: DeregisterGameServerInput,
8978    ) -> Result<(), RusotoError<DeregisterGameServerError>>;
8979
8980    /// <p><p>Retrieves properties for an alias. This operation returns all alias metadata and settings. To get an alias&#39;s target fleet ID only, use <code>ResolveAlias</code>. </p> <p>To get alias properties, specify the alias ID. If successful, the requested alias record is returned.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
8981    async fn describe_alias(
8982        &self,
8983        input: DescribeAliasInput,
8984    ) -> Result<DescribeAliasOutput, RusotoError<DescribeAliasError>>;
8985
8986    /// <p><p>Retrieves properties for a custom game build. To request a build resource, specify a build ID. If successful, an object containing the build properties is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
8987    async fn describe_build(
8988        &self,
8989        input: DescribeBuildInput,
8990    ) -> Result<DescribeBuildOutput, RusotoError<DescribeBuildError>>;
8991
8992    /// <p><p>Retrieves the following information for the specified EC2 instance type:</p> <ul> <li> <p>Maximum number of instances allowed per AWS account (service limit).</p> </li> <li> <p>Current usage for the AWS account.</p> </li> </ul> <p>To learn more about the capabilities of each instance type, see <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a>. Note that the instance types offered may vary depending on the region.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
8993    async fn describe_ec2_instance_limits(
8994        &self,
8995        input: DescribeEC2InstanceLimitsInput,
8996    ) -> Result<DescribeEC2InstanceLimitsOutput, RusotoError<DescribeEC2InstanceLimitsError>>;
8997
8998    /// <p><p>Retrieves core properties, including configuration, status, and metadata, for a fleet. </p> <p>To get attributes for one or more fleets, provide a list of fleet IDs or fleet ARNs. To get attributes for all fleets, do not specify a fleet identifier. When requesting attributes for multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetAttributes</a> object is returned for each fleet requested, unless the fleet identifier is not found.</p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed number.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
8999    async fn describe_fleet_attributes(
9000        &self,
9001        input: DescribeFleetAttributesInput,
9002    ) -> Result<DescribeFleetAttributesOutput, RusotoError<DescribeFleetAttributesError>>;
9003
9004    /// <p><p>Retrieves the current capacity statistics for one or more fleets. These statistics present a snapshot of the fleet&#39;s instances and provide insight on current or imminent scaling activity. To get statistics on game hosting activity in the fleet, see <a>DescribeFleetUtilization</a>.</p> <p>You can request capacity for all fleets or specify a list of one or more fleet identifiers. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetCapacity</a> object is returned for each requested fleet ID. When a list of fleet IDs is provided, attribute objects are returned only for fleets that currently exist.</p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html#gamelift-metrics-fleet">GameLift Metrics for Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9005    async fn describe_fleet_capacity(
9006        &self,
9007        input: DescribeFleetCapacityInput,
9008    ) -> Result<DescribeFleetCapacityOutput, RusotoError<DescribeFleetCapacityError>>;
9009
9010    /// <p><p>Retrieves entries from the specified fleet&#39;s event log. You can specify a time range to limit the result set. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of event log entries matching the request are returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9011    async fn describe_fleet_events(
9012        &self,
9013        input: DescribeFleetEventsInput,
9014    ) -> Result<DescribeFleetEventsOutput, RusotoError<DescribeFleetEventsError>>;
9015
9016    /// <p><p>Retrieves a fleet&#39;s inbound connection permissions. Connection permissions specify the range of IP addresses and port settings that incoming traffic can use to access server processes in the fleet. Game sessions that are running on instances in the fleet use connections that fall in this range. </p> <p>To get a fleet&#39;s inbound connection permissions, specify the fleet&#39;s unique identifier. If successful, a collection of <a>IpPermission</a> objects is returned for the requested fleet ID. If the requested fleet has been deleted, the result set is empty.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9017    async fn describe_fleet_port_settings(
9018        &self,
9019        input: DescribeFleetPortSettingsInput,
9020    ) -> Result<DescribeFleetPortSettingsOutput, RusotoError<DescribeFleetPortSettingsError>>;
9021
9022    /// <p><p>Retrieves utilization statistics for one or more fleets. These statistics provide insight into how available hosting resources are currently being used. To get statistics on available hosting resources, see <a>DescribeFleetCapacity</a>.</p> <p>You can request utilization data for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetUtilization</a> object is returned for each requested fleet ID, unless the fleet identifier is not found. </p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html#gamelift-metrics-fleet">GameLift Metrics for Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9023    async fn describe_fleet_utilization(
9024        &self,
9025        input: DescribeFleetUtilizationInput,
9026    ) -> Result<DescribeFleetUtilizationOutput, RusotoError<DescribeFleetUtilizationError>>;
9027
9028    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information for a game server resource. Information includes the game server statuses, health check info, and the instance the game server is running on. </p> <p>To retrieve game server information, specify the game server ID. If successful, the requested game server object is returned. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9029    async fn describe_game_server(
9030        &self,
9031        input: DescribeGameServerInput,
9032    ) -> Result<DescribeGameServerOutput, RusotoError<DescribeGameServerError>>;
9033
9034    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on a game server group. </p> <p>To get attributes for a game server group, provide a group name or ARN value. If successful, a <a>GameServerGroup</a> object is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9035    async fn describe_game_server_group(
9036        &self,
9037        input: DescribeGameServerGroupInput,
9038    ) -> Result<DescribeGameServerGroupOutput, RusotoError<DescribeGameServerGroupError>>;
9039
9040    /// <p><p>Retrieves properties, including the protection policy in force, for one or more game sessions. This action can be used in several ways: (1) provide a <code>GameSessionId</code> or <code>GameSessionArn</code> to request details for a specific game session; (2) provide either a <code>FleetId</code> or an <code>AliasId</code> to request properties for all game sessions running on a fleet. </p> <p>To get game session record(s), specify just one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSessionDetail</a> object is returned for each session matching the request.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9041    async fn describe_game_session_details(
9042        &self,
9043        input: DescribeGameSessionDetailsInput,
9044    ) -> Result<DescribeGameSessionDetailsOutput, RusotoError<DescribeGameSessionDetailsError>>;
9045
9046    /// <p><p>Retrieves properties and current status of a game session placement request. To get game session placement details, specify the placement ID. If successful, a <a>GameSessionPlacement</a> object is returned.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9047    async fn describe_game_session_placement(
9048        &self,
9049        input: DescribeGameSessionPlacementInput,
9050    ) -> Result<DescribeGameSessionPlacementOutput, RusotoError<DescribeGameSessionPlacementError>>;
9051
9052    /// <p><p>Retrieves the properties for one or more game session queues. When requesting multiple queues, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSessionQueue</a> object is returned for each requested queue. When specifying a list of queues, objects are returned only for queues that currently exist in the Region.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-console.html"> View Your Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
9053    async fn describe_game_session_queues(
9054        &self,
9055        input: DescribeGameSessionQueuesInput,
9056    ) -> Result<DescribeGameSessionQueuesOutput, RusotoError<DescribeGameSessionQueuesError>>;
9057
9058    /// <p><p>Retrieves a set of one or more game sessions. Request a specific game session or request all game sessions on a fleet. Alternatively, use <a>SearchGameSessions</a> to request a set of active game sessions that are filtered by certain criteria. To retrieve protection policy settings for game sessions, use <a>DescribeGameSessionDetails</a>.</p> <p>To get game sessions, specify one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSession</a> object is returned for each game session matching the request.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9059    async fn describe_game_sessions(
9060        &self,
9061        input: DescribeGameSessionsInput,
9062    ) -> Result<DescribeGameSessionsOutput, RusotoError<DescribeGameSessionsError>>;
9063
9064    /// <p><p>Retrieves information about a fleet&#39;s instances, including instance IDs. Use this action to get details on all instances in the fleet or get details on one specific instance.</p> <p>To get a specific instance, specify fleet ID and instance ID. To get all instances in a fleet, specify a fleet ID only. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, an <a>Instance</a> object is returned for each result.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-remote-access.html">Remotely Access Fleet Instances</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html">Debug Fleet Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>DescribeInstances</a> </p> </li> <li> <p> <a>GetInstanceAccess</a> </p> </li> </ul></p>
9065    async fn describe_instances(
9066        &self,
9067        input: DescribeInstancesInput,
9068    ) -> Result<DescribeInstancesOutput, RusotoError<DescribeInstancesError>>;
9069
9070    /// <p><p>Retrieves one or more matchmaking tickets. Use this operation to retrieve ticket information, including status and--once a successful match is made--acquire connection information for the resulting new game session. </p> <p>You can use this operation to track the progress of matchmaking requests (through polling) as an alternative to using event notifications. See more details on tracking matchmaking requests through polling or notifications in <a>StartMatchmaking</a>. </p> <p>To request matchmaking tickets, provide a list of up to 10 ticket IDs. If the request is successful, a ticket object is returned for each requested ID that currently exists.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Set Up FlexMatch Event Notification</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
9071    async fn describe_matchmaking(
9072        &self,
9073        input: DescribeMatchmakingInput,
9074    ) -> Result<DescribeMatchmakingOutput, RusotoError<DescribeMatchmakingError>>;
9075
9076    /// <p><p>Retrieves the details of FlexMatch matchmaking configurations. With this operation, you have the following options: (1) retrieve all existing configurations, (2) provide the names of one or more configurations to retrieve, or (3) retrieve all configurations that use a specified rule set name. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a configuration is returned for each requested name. When specifying a list of names, only configurations that currently exist are returned. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/matchmaker-build.html"> Setting Up FlexMatch Matchmakers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9077    async fn describe_matchmaking_configurations(
9078        &self,
9079        input: DescribeMatchmakingConfigurationsInput,
9080    ) -> Result<
9081        DescribeMatchmakingConfigurationsOutput,
9082        RusotoError<DescribeMatchmakingConfigurationsError>,
9083    >;
9084
9085    /// <p><p>Retrieves the details for FlexMatch matchmaking rule sets. You can request all existing rule sets for the Region, or provide a list of one or more rule set names. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a rule set is returned for each requested name. </p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9086    async fn describe_matchmaking_rule_sets(
9087        &self,
9088        input: DescribeMatchmakingRuleSetsInput,
9089    ) -> Result<DescribeMatchmakingRuleSetsOutput, RusotoError<DescribeMatchmakingRuleSetsError>>;
9090
9091    /// <p><p>Retrieves properties for one or more player sessions. This action can be used in several ways: (1) provide a <code>PlayerSessionId</code> to request properties for a specific player session; (2) provide a <code>GameSessionId</code> to request properties for all player sessions in the specified game session; (3) provide a <code>PlayerId</code> to request properties for all player sessions of a specified player. </p> <p>To get game session record(s), specify only one of the following: a player session ID, a game session ID, or a player ID. You can filter this request by player session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>PlayerSession</a> object is returned for each session matching the request.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9092    async fn describe_player_sessions(
9093        &self,
9094        input: DescribePlayerSessionsInput,
9095    ) -> Result<DescribePlayerSessionsOutput, RusotoError<DescribePlayerSessionsError>>;
9096
9097    /// <p><p>Retrieves a fleet&#39;s runtime configuration settings. The runtime configuration tells Amazon GameLift which server processes to run (and how) on each instance in the fleet.</p> <p>To get a runtime configuration, specify the fleet&#39;s unique identifier. If successful, a <a>RuntimeConfiguration</a> object is returned for the requested fleet. If the requested fleet has been deleted, the result set is empty.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html">Running Multiple Processes on a Fleet</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9098    async fn describe_runtime_configuration(
9099        &self,
9100        input: DescribeRuntimeConfigurationInput,
9101    ) -> Result<DescribeRuntimeConfigurationOutput, RusotoError<DescribeRuntimeConfigurationError>>;
9102
9103    /// <p><p>Retrieves all scaling policies applied to a fleet.</p> <p>To get a fleet&#39;s scaling policies, specify the fleet ID. You can filter this request by policy status, such as to retrieve only active scaling policies. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, set of <a>ScalingPolicy</a> objects is returned for the fleet.</p> <p>A fleet may have all of its scaling policies suspended (<a>StopFleetActions</a>). This action does not affect the status of the scaling policies, which remains ACTIVE. To see whether a fleet&#39;s scaling policies are in force or suspended, call <a>DescribeFleetAttributes</a> and check the stopped actions.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
9104    async fn describe_scaling_policies(
9105        &self,
9106        input: DescribeScalingPoliciesInput,
9107    ) -> Result<DescribeScalingPoliciesOutput, RusotoError<DescribeScalingPoliciesError>>;
9108
9109    /// <p><p>Retrieves properties for a Realtime script. </p> <p>To request a script record, specify the script ID. If successful, an object containing the script properties is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
9110    async fn describe_script(
9111        &self,
9112        input: DescribeScriptInput,
9113    ) -> Result<DescribeScriptOutput, RusotoError<DescribeScriptError>>;
9114
9115    /// <p><p>Retrieves valid VPC peering authorizations that are pending for the AWS account. This operation returns all VPC peering authorizations and requests for peering. This includes those initiated and received by this account. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9116    async fn describe_vpc_peering_authorizations(
9117        &self,
9118    ) -> Result<
9119        DescribeVpcPeeringAuthorizationsOutput,
9120        RusotoError<DescribeVpcPeeringAuthorizationsError>,
9121    >;
9122
9123    /// <p><p>Retrieves information on VPC peering connections. Use this operation to get peering information for all fleets or for one specific fleet ID. </p> <p>To retrieve connection information, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Specify a fleet ID or leave the parameter empty to retrieve all connection records. If successful, the retrieved information includes both active and pending connections. Active connections identify the IpV4 CIDR block that the VPC uses to connect. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9124    async fn describe_vpc_peering_connections(
9125        &self,
9126        input: DescribeVpcPeeringConnectionsInput,
9127    ) -> Result<DescribeVpcPeeringConnectionsOutput, RusotoError<DescribeVpcPeeringConnectionsError>>;
9128
9129    /// <p><p>Retrieves the location of stored game session logs for a specified game session. When a game session is terminated, Amazon GameLift automatically stores the logs in Amazon S3 and retains them for 14 days. Use this URL to download the logs.</p> <note> <p>See the <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_gamelift">AWS Service Limits</a> page for maximum log file sizes. Log files that exceed this limit are not saved.</p> </note> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9130    async fn get_game_session_log_url(
9131        &self,
9132        input: GetGameSessionLogUrlInput,
9133    ) -> Result<GetGameSessionLogUrlOutput, RusotoError<GetGameSessionLogUrlError>>;
9134
9135    /// <p><p>Requests remote access to a fleet instance. Remote access is useful for debugging, gathering benchmarking data, or observing activity in real time. </p> <p>To remotely access an instance, you need credentials that match the operating system of the instance. For a Windows instance, Amazon GameLift returns a user name and password as strings for use with a Windows Remote Desktop client. For a Linux instance, Amazon GameLift returns a user name and RSA private key, also as strings, for use with an SSH client. The private key must be saved in the proper format to a <code>.pem</code> file before using. If you&#39;re making this request using the AWS CLI, saving the secret can be handled as part of the GetInstanceAccess request, as shown in one of the examples for this action. </p> <p>To request access to a specific instance, specify the IDs of both the instance and the fleet it belongs to. You can retrieve a fleet&#39;s instance IDs by calling <a>DescribeInstances</a>. If successful, an <a>InstanceAccess</a> object is returned that contains the instance&#39;s IP address and a set of credentials.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-remote-access.html">Remotely Access Fleet Instances</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html">Debug Fleet Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>DescribeInstances</a> </p> </li> <li> <p> <a>GetInstanceAccess</a> </p> </li> </ul></p>
9136    async fn get_instance_access(
9137        &self,
9138        input: GetInstanceAccessInput,
9139    ) -> Result<GetInstanceAccessOutput, RusotoError<GetInstanceAccessError>>;
9140
9141    /// <p><p>Retrieves all aliases for this AWS account. You can filter the result set by alias name and/or routing strategy type. Use the pagination parameters to retrieve results in sequential pages.</p> <note> <p>Returned aliases are not listed in any particular order.</p> </note> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9142    async fn list_aliases(
9143        &self,
9144        input: ListAliasesInput,
9145    ) -> Result<ListAliasesOutput, RusotoError<ListAliasesError>>;
9146
9147    /// <p><p>Retrieves build resources for all builds associated with the AWS account in use. You can limit results to builds that are in a specific status by using the <code>Status</code> parameter. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <note> <p>Build resources are not listed in any particular order.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9148    async fn list_builds(
9149        &self,
9150        input: ListBuildsInput,
9151    ) -> Result<ListBuildsOutput, RusotoError<ListBuildsError>>;
9152
9153    /// <p><p>Retrieves a collection of fleet resources for this AWS account. You can filter the result set to find only those fleets that are deployed with a specific build or script. Use the pagination parameters to retrieve results in sequential pages.</p> <note> <p>Fleet resources are not listed in a particular order.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9154    async fn list_fleets(
9155        &self,
9156        input: ListFleetsInput,
9157    ) -> Result<ListFleetsOutput, RusotoError<ListFleetsError>>;
9158
9159    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on all game servers groups that exist in the current AWS account for the selected region. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9160    async fn list_game_server_groups(
9161        &self,
9162        input: ListGameServerGroupsInput,
9163    ) -> Result<ListGameServerGroupsOutput, RusotoError<ListGameServerGroupsError>>;
9164
9165    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on all game servers that are currently running in a specified game server group. If there are custom key sort values for your game servers, you can opt to have the returned list sorted based on these values. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9166    async fn list_game_servers(
9167        &self,
9168        input: ListGameServersInput,
9169    ) -> Result<ListGameServersOutput, RusotoError<ListGameServersError>>;
9170
9171    /// <p><p>Retrieves script records for all Realtime scripts that are associated with the AWS account in use. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
9172    async fn list_scripts(
9173        &self,
9174        input: ListScriptsInput,
9175    ) -> Result<ListScriptsOutput, RusotoError<ListScriptsError>>;
9176
9177    /// <p><p> Retrieves all tags that are assigned to a GameLift resource. Resource tags are used to organize AWS resources for a range of purposes. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To list tags for a resource, specify the unique ARN value for the resource.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
9178    async fn list_tags_for_resource(
9179        &self,
9180        input: ListTagsForResourceRequest,
9181    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
9182
9183    /// <p><p>Creates or updates a scaling policy for a fleet. Scaling policies are used to automatically scale a fleet&#39;s hosting capacity to meet player demand. An active scaling policy instructs Amazon GameLift to track a fleet metric and automatically change the fleet&#39;s capacity when a certain threshold is reached. There are two types of scaling policies: target-based and rule-based. Use a target-based policy to quickly and efficiently manage fleet scaling; this option is the most commonly used. Use rule-based policies when you need to exert fine-grained control over auto-scaling. </p> <p>Fleets can have multiple scaling policies of each type in force at the same time; you can have one target-based policy, one or multiple rule-based scaling policies, or both. We recommend caution, however, because multiple auto-scaling policies can have unintended consequences.</p> <p>You can temporarily suspend all scaling policies for a fleet by calling <a>StopFleetActions</a> with the fleet action AUTO_SCALING. To resume scaling policies, call <a>StartFleetActions</a> with the same fleet action. To stop just one scaling policy--or to permanently remove it, you must delete the policy with <a>DeleteScalingPolicy</a>.</p> <p>Learn more about how to work with auto-scaling in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-autoscaling.html">Set Up Fleet Automatic Scaling</a>.</p> <p> <b>Target-based policy</b> </p> <p>A target-based policy tracks a single metric: PercentAvailableGameSessions. This metric tells us how much of a fleet&#39;s hosting capacity is ready to host game sessions but is not currently in use. This is the fleet&#39;s buffer; it measures the additional player demand that the fleet could handle at current capacity. With a target-based policy, you set your ideal buffer size and leave it to Amazon GameLift to take whatever action is needed to maintain that target. </p> <p>For example, you might choose to maintain a 10% buffer for a fleet that has the capacity to host 100 simultaneous game sessions. This policy tells Amazon GameLift to take action whenever the fleet&#39;s available capacity falls below or rises above 10 game sessions. Amazon GameLift will start new instances or stop unused instances in order to return to the 10% buffer. </p> <p>To create or update a target-based policy, specify a fleet ID and name, and set the policy type to &quot;TargetBased&quot;. Specify the metric to track (PercentAvailableGameSessions) and reference a <a>TargetConfiguration</a> object with your desired buffer value. Exclude all other parameters. On a successful request, the policy name is returned. The scaling policy is automatically in force as soon as it&#39;s successfully created. If the fleet&#39;s auto-scaling actions are temporarily suspended, the new policy will be in force once the fleet actions are restarted.</p> <p> <b>Rule-based policy</b> </p> <p>A rule-based policy tracks specified fleet metric, sets a threshold value, and specifies the type of action to initiate when triggered. With a rule-based policy, you can select from several available fleet metrics. Each policy specifies whether to scale up or scale down (and by how much), so you need one policy for each type of action. </p> <p>For example, a policy may make the following statement: &quot;If the percentage of idle instances is greater than 20% for more than 15 minutes, then reduce the fleet capacity by 10%.&quot;</p> <p>A policy&#39;s rule statement has the following structure:</p> <p>If <code>[MetricName]</code> is <code>[ComparisonOperator]</code> <code>[Threshold]</code> for <code>[EvaluationPeriods]</code> minutes, then <code>[ScalingAdjustmentType]</code> to/by <code>[ScalingAdjustment]</code>.</p> <p>To implement the example, the rule statement would look like this:</p> <p>If <code>[PercentIdleInstances]</code> is <code>[GreaterThanThreshold]</code> <code>[20]</code> for <code>[15]</code> minutes, then <code>[PercentChangeInCapacity]</code> to/by <code>[10]</code>.</p> <p>To create or update a scaling policy, specify a unique combination of name and fleet ID, and set the policy type to &quot;RuleBased&quot;. Specify the parameter values for a policy rule statement. On a successful request, the policy name is returned. Scaling policies are automatically in force as soon as they&#39;re successfully created. If the fleet&#39;s auto-scaling actions are temporarily suspended, the new policy will be in force once the fleet actions are restarted.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
9184    async fn put_scaling_policy(
9185        &self,
9186        input: PutScalingPolicyInput,
9187    ) -> Result<PutScalingPolicyOutput, RusotoError<PutScalingPolicyError>>;
9188
9189    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Creates a new game server resource and notifies GameLift FleetIQ that the game server is ready to host gameplay and players. This action is called by a game server process that is running on an instance in a game server group. Registering game servers enables GameLift FleetIQ to track available game servers and enables game clients and services to claim a game server for a new game session. </p> <p>To register a game server, identify the game server group and instance where the game server is running, and provide a unique identifier for the game server. You can also include connection and game server data; when a game client or service requests a game server by calling <a>ClaimGameServer</a>, this information is returned in response.</p> <p>Once a game server is successfully registered, it is put in status AVAILABLE. A request to register a game server may fail if the instance it is in the process of shutting down as part of instance rebalancing or scale-down activity. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9190    async fn register_game_server(
9191        &self,
9192        input: RegisterGameServerInput,
9193    ) -> Result<RegisterGameServerOutput, RusotoError<RegisterGameServerError>>;
9194
9195    /// <p><p>Retrieves a fresh set of credentials for use when uploading a new set of game build files to Amazon GameLift&#39;s Amazon S3. This is done as part of the build creation process; see <a>CreateBuild</a>.</p> <p>To request new credentials, specify the build ID as returned with an initial <code>CreateBuild</code> request. If successful, a new set of credentials are returned, along with the S3 storage location associated with the build ID.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html#gamelift-build-cli-uploading-create-build"> Create a Build with Files in S3</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9196    async fn request_upload_credentials(
9197        &self,
9198        input: RequestUploadCredentialsInput,
9199    ) -> Result<RequestUploadCredentialsOutput, RusotoError<RequestUploadCredentialsError>>;
9200
9201    /// <p><p>Retrieves the fleet ID that an alias is currently pointing to.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9202    async fn resolve_alias(
9203        &self,
9204        input: ResolveAliasInput,
9205    ) -> Result<ResolveAliasOutput, RusotoError<ResolveAliasError>>;
9206
9207    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Reinstates activity on a game server group after it has been suspended. A game server group may be suspended by calling <a>SuspendGameServerGroup</a>, or it may have been involuntarily suspended due to a configuration problem. You can manually resume activity on the group once the configuration problem has been resolved. Refer to the game server group status and status reason for more information on why group activity is suspended.</p> <p>To resume activity, specify a game server group ARN and the type of activity to be resumed.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9208    async fn resume_game_server_group(
9209        &self,
9210        input: ResumeGameServerGroupInput,
9211    ) -> Result<ResumeGameServerGroupOutput, RusotoError<ResumeGameServerGroupError>>;
9212
9213    /// <p><p>Retrieves all active game sessions that match a set of search criteria and sorts them in a specified order. You can search or sort by the following game session attributes:</p> <ul> <li> <p> <b>gameSessionId</b> -- A unique identifier for the game session. You can use either a <code>GameSessionId</code> or <code>GameSessionArn</code> value. </p> </li> <li> <p> <b>gameSessionName</b> -- Name assigned to a game session. This value is set when requesting a new game session with <a>CreateGameSession</a> or updating with <a>UpdateGameSession</a>. Game session names do not need to be unique to a game session.</p> </li> <li> <p> <b>gameSessionProperties</b> -- Custom data defined in a game session&#39;s <code>GameProperty</code> parameter. <code>GameProperty</code> values are stored as key:value pairs; the filter expression must indicate the key and a string to search the data values for. For example, to search for game sessions with custom data containing the key:value pair &quot;gameMode:brawl&quot;, specify the following: <code>gameSessionProperties.gameMode = &quot;brawl&quot;</code>. All custom data values are searched as strings.</p> </li> <li> <p> <b>maximumSessions</b> -- Maximum number of player sessions allowed for a game session. This value is set when requesting a new game session with <a>CreateGameSession</a> or updating with <a>UpdateGameSession</a>.</p> </li> <li> <p> <b>creationTimeMillis</b> -- Value indicating when a game session was created. It is expressed in Unix time as milliseconds.</p> </li> <li> <p> <b>playerSessionCount</b> -- Number of players currently connected to a game session. This value changes rapidly as players join the session or drop out.</p> </li> <li> <p> <b>hasAvailablePlayerSessions</b> -- Boolean value indicating whether a game session has reached its maximum number of players. It is highly recommended that all search requests include this filter attribute to optimize search performance and return only sessions that players can join. </p> </li> </ul> <note> <p>Returned values for <code>playerSessionCount</code> and <code>hasAvailablePlayerSessions</code> change quickly as players join sessions and others drop out. Results should be considered a snapshot in time. Be sure to refresh search results often, and handle sessions that fill up before a player can join. </p> </note> <p>To search or sort, specify either a fleet ID or an alias ID, and provide a search filter expression, a sort expression, or both. If successful, a collection of <a>GameSession</a> objects matching the request is returned. Use the pagination parameters to retrieve results as a set of sequential pages. </p> <p>You can search for game sessions one fleet at a time only. To find game sessions across multiple fleets, you must search each fleet separately and combine the results. This search feature finds only game sessions that are in <code>ACTIVE</code> status. To locate games in statuses other than active, use <a>DescribeGameSessionDetails</a>.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9214    async fn search_game_sessions(
9215        &self,
9216        input: SearchGameSessionsInput,
9217    ) -> Result<SearchGameSessionsOutput, RusotoError<SearchGameSessionsError>>;
9218
9219    /// <p><p>Resumes activity on a fleet that was suspended with <a>StopFleetActions</a>. Currently, this operation is used to restart a fleet&#39;s auto-scaling activity. </p> <p>To start fleet actions, specify the fleet ID and the type of actions to restart. When auto-scaling fleet actions are restarted, Amazon GameLift once again initiates scaling events as triggered by the fleet&#39;s scaling policies. If actions on the fleet were never stopped, this operation will have no effect. You can view a fleet&#39;s stopped actions using <a>DescribeFleetAttributes</a>.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9220    async fn start_fleet_actions(
9221        &self,
9222        input: StartFleetActionsInput,
9223    ) -> Result<StartFleetActionsOutput, RusotoError<StartFleetActionsError>>;
9224
9225    /// <p><p>Places a request for a new game session in a queue (see <a>CreateGameSessionQueue</a>). When processing a placement request, Amazon GameLift searches for available resources on the queue&#39;s destinations, scanning each until it finds resources or the placement request times out.</p> <p>A game session placement request can also request player sessions. When a new game session is successfully created, Amazon GameLift creates a player session for each player included in the request.</p> <p>When placing a game session, by default Amazon GameLift tries each fleet in the order they are listed in the queue configuration. Ideally, a queue&#39;s destinations are listed in preference order.</p> <p>Alternatively, when requesting a game session with players, you can also provide latency data for each player in relevant Regions. Latency data indicates the performance lag a player experiences when connected to a fleet in the Region. Amazon GameLift uses latency data to reorder the list of destinations to place the game session in a Region with minimal lag. If latency data is provided for multiple players, Amazon GameLift calculates each Region&#39;s average lag for all players and reorders to get the best game play across all players. </p> <p>To place a new game session request, specify the following:</p> <ul> <li> <p>The queue name and a set of game session properties and settings</p> </li> <li> <p>A unique ID (such as a UUID) for the placement. You use this ID to track the status of the placement request</p> </li> <li> <p>(Optional) A set of player data and a unique player ID for each player that you are joining to the new game session (player data is optional, but if you include it, you must also provide a unique ID for each player)</p> </li> <li> <p>Latency data for all players (if you want to optimize game play for the players)</p> </li> </ul> <p>If successful, a new game session placement is created.</p> <p>To track the status of a placement request, call <a>DescribeGameSessionPlacement</a> and check the request&#39;s status. If the status is <code>FULFILLED</code>, a new game session has been created and a game session ARN and Region are referenced. If the placement request times out, you can resubmit the request or retry it with a different queue. </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9226    async fn start_game_session_placement(
9227        &self,
9228        input: StartGameSessionPlacementInput,
9229    ) -> Result<StartGameSessionPlacementOutput, RusotoError<StartGameSessionPlacementError>>;
9230
9231    /// <p><p>Finds new players to fill open slots in an existing game session. This operation can be used to add players to matched games that start with fewer than the maximum number of players or to replace players when they drop out. By backfilling with the same matchmaker used to create the original match, you ensure that new players meet the match criteria and maintain a consistent experience throughout the game session. You can backfill a match anytime after a game session has been created. </p> <p>To request a match backfill, specify a unique ticket ID, the existing game session&#39;s ARN, a matchmaking configuration, and a set of data that describes all current players in the game session. If successful, a match backfill ticket is created and returned with status set to QUEUED. The ticket is placed in the matchmaker&#39;s ticket pool and processed. Track the status of the ticket to respond as needed. </p> <p>The process of finding backfill matches is essentially identical to the initial matchmaking process. The matchmaker searches the pool and groups tickets together to form potential matches, allowing only one backfill ticket per potential match. Once the a match is formed, the matchmaker creates player sessions for the new players. All tickets in the match are updated with the game session&#39;s connection information, and the <a>GameSession</a> object is updated to include matchmaker data on the new players. For more detail on how match backfill requests are processed, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How Amazon GameLift FlexMatch Works</a>. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html"> Backfill Existing Games with FlexMatch</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How GameLift FlexMatch Works</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
9232    async fn start_match_backfill(
9233        &self,
9234        input: StartMatchBackfillInput,
9235    ) -> Result<StartMatchBackfillOutput, RusotoError<StartMatchBackfillError>>;
9236
9237    /// <p><p>Uses FlexMatch to create a game match for a group of players based on custom matchmaking rules, and starts a new game for the matched players. Each matchmaking request specifies the type of match to build (team configuration, rules for an acceptable match, etc.). The request also specifies the players to find a match for and where to host the new game session for optimal performance. A matchmaking request might start with a single player or a group of players who want to play together. FlexMatch finds additional players as needed to fill the match. Match type, rules, and the queue used to place a new game session are defined in a <code>MatchmakingConfiguration</code>. </p> <p>To start matchmaking, provide a unique ticket ID, specify a matchmaking configuration, and include the players to be matched. You must also include a set of player attributes relevant for the matchmaking configuration. If successful, a matchmaking ticket is returned with status set to <code>QUEUED</code>. Track the status of the ticket to respond as needed and acquire game session connection information for successfully completed matches.</p> <p> <b>Tracking ticket status</b> -- A couple of options are available for tracking the status of matchmaking requests: </p> <ul> <li> <p>Polling -- Call <code>DescribeMatchmaking</code>. This operation returns the full ticket object, including current status and (for completed tickets) game session connection info. We recommend polling no more than once every 10 seconds.</p> </li> <li> <p>Notifications -- Get event notifications for changes in ticket status using Amazon Simple Notification Service (SNS). Notifications are easy to set up (see <a>CreateMatchmakingConfiguration</a>) and typically deliver match status changes faster and more efficiently than polling. We recommend that you use polling to back up to notifications (since delivery is not guaranteed) and call <code>DescribeMatchmaking</code> only when notifications are not received within 30 seconds.</p> </li> </ul> <p> <b>Processing a matchmaking request</b> -- FlexMatch handles a matchmaking request as follows: </p> <ol> <li> <p>Your client code submits a <code>StartMatchmaking</code> request for one or more players and tracks the status of the request ticket. </p> </li> <li> <p>FlexMatch uses this ticket and others in process to build an acceptable match. When a potential match is identified, all tickets in the proposed match are advanced to the next status. </p> </li> <li> <p>If the match requires player acceptance (set in the matchmaking configuration), the tickets move into status <code>REQUIRES_ACCEPTANCE</code>. This status triggers your client code to solicit acceptance from all players in every ticket involved in the match, and then call <a>AcceptMatch</a> for each player. If any player rejects or fails to accept the match before a specified timeout, the proposed match is dropped (see <code>AcceptMatch</code> for more details).</p> </li> <li> <p>Once a match is proposed and accepted, the matchmaking tickets move into status <code>PLACING</code>. FlexMatch locates resources for a new game session using the game session queue (set in the matchmaking configuration) and creates the game session based on the match data. </p> </li> <li> <p>When the match is successfully placed, the matchmaking tickets move into <code>COMPLETED</code> status. Connection information (including game session endpoint and player session) is added to the matchmaking tickets. Matched players can use the connection information to join the game. </p> </li> </ol> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Set Up FlexMatch Event Notification</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-tasks.html"> FlexMatch Integration Roadmap</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How GameLift FlexMatch Works</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
9238    async fn start_matchmaking(
9239        &self,
9240        input: StartMatchmakingInput,
9241    ) -> Result<StartMatchmakingOutput, RusotoError<StartMatchmakingError>>;
9242
9243    /// <p><p>Suspends activity on a fleet. Currently, this operation is used to stop a fleet&#39;s auto-scaling activity. It is used to temporarily stop triggering scaling events. The policies can be retained and auto-scaling activity can be restarted using <a>StartFleetActions</a>. You can view a fleet&#39;s stopped actions using <a>DescribeFleetAttributes</a>.</p> <p>To stop fleet actions, specify the fleet ID and the type of actions to suspend. When auto-scaling fleet actions are stopped, Amazon GameLift no longer initiates scaling events except in response to manual changes using <a>UpdateFleetCapacity</a>. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9244    async fn stop_fleet_actions(
9245        &self,
9246        input: StopFleetActionsInput,
9247    ) -> Result<StopFleetActionsOutput, RusotoError<StopFleetActionsError>>;
9248
9249    /// <p><p>Cancels a game session placement that is in <code>PENDING</code> status. To stop a placement, provide the placement ID values. If successful, the placement is moved to <code>CANCELLED</code> status.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9250    async fn stop_game_session_placement(
9251        &self,
9252        input: StopGameSessionPlacementInput,
9253    ) -> Result<StopGameSessionPlacementOutput, RusotoError<StopGameSessionPlacementError>>;
9254
9255    /// <p><p>Cancels a matchmaking ticket or match backfill ticket that is currently being processed. To stop the matchmaking operation, specify the ticket ID. If successful, work on the ticket is stopped, and the ticket status is changed to <code>CANCELLED</code>.</p> <p>This call is also used to turn off automatic backfill for an individual game session. This is for game sessions that are created with a matchmaking configuration that has automatic backfill enabled. The ticket ID is included in the <code>MatchmakerData</code> of an updated game session object, which is provided to the game server.</p> <note> <p>If the action is successful, the service sends back an empty JSON struct with the HTTP 200 response (not an empty HTTP body).</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
9256    async fn stop_matchmaking(
9257        &self,
9258        input: StopMatchmakingInput,
9259    ) -> Result<StopMatchmakingOutput, RusotoError<StopMatchmakingError>>;
9260
9261    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Temporarily stops activity on a game server group without terminating instances or the game server group. Activity can be restarted by calling <a>ResumeGameServerGroup</a>. Activities that can suspended are:</p> <ul> <li> <p>Instance type replacement. This activity evaluates the current Spot viability of all instance types that are defined for the game server group. It updates the Auto Scaling group to remove nonviable Spot instance types (which have a higher chance of game server interruptions) and rebalances capacity across the remaining viable Spot instance types. When this activity is suspended, the Auto Scaling group continues with its current balance, regardless of viability. Instance protection, utilization metrics, and capacity autoscaling activities continue to be active. </p> </li> </ul> <p>To suspend activity, specify a game server group ARN and the type of activity to be suspended.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9262    async fn suspend_game_server_group(
9263        &self,
9264        input: SuspendGameServerGroupInput,
9265    ) -> Result<SuspendGameServerGroupOutput, RusotoError<SuspendGameServerGroupError>>;
9266
9267    /// <p><p> Assigns a tag to a GameLift resource. AWS resource tags provide an additional management tool set. You can use tags to organize resources, create IAM permissions policies to manage access to groups of resources, customize AWS cost breakdowns, etc. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To add a tag to a resource, specify the unique ARN value for the resource and provide a tag list containing one or more tags. The operation succeeds even if the list includes tags that are already assigned to the specified resource. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
9268    async fn tag_resource(
9269        &self,
9270        input: TagResourceRequest,
9271    ) -> Result<TagResourceResponse, RusotoError<TagResourceError>>;
9272
9273    /// <p><p>Removes a tag that is assigned to a GameLift resource. Resource tags are used to organize AWS resources for a range of purposes. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To remove a tag from a resource, specify the unique ARN value for the resource and provide a string list containing one or more tags to be removed. This action succeeds even if the list includes tags that are not currently assigned to the specified resource.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
9274    async fn untag_resource(
9275        &self,
9276        input: UntagResourceRequest,
9277    ) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>>;
9278
9279    /// <p><p>Updates properties for an alias. To update properties, specify the alias ID to be updated and provide the information to be changed. To reassign an alias to another fleet, provide an updated routing strategy. If successful, the updated alias record is returned.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9280    async fn update_alias(
9281        &self,
9282        input: UpdateAliasInput,
9283    ) -> Result<UpdateAliasOutput, RusotoError<UpdateAliasError>>;
9284
9285    /// <p><p>Updates metadata in a build resource, including the build name and version. To update the metadata, specify the build ID to update and provide the new values. If successful, a build object containing the updated metadata is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9286    async fn update_build(
9287        &self,
9288        input: UpdateBuildInput,
9289    ) -> Result<UpdateBuildOutput, RusotoError<UpdateBuildError>>;
9290
9291    /// <p><p>Updates fleet properties, including name and description, for a fleet. To update metadata, specify the fleet ID and the property values that you want to change. If successful, the fleet ID for the updated fleet is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9292    async fn update_fleet_attributes(
9293        &self,
9294        input: UpdateFleetAttributesInput,
9295    ) -> Result<UpdateFleetAttributesOutput, RusotoError<UpdateFleetAttributesError>>;
9296
9297    /// <p><p>Updates capacity settings for a fleet. Use this action to specify the number of EC2 instances (hosts) that you want this fleet to contain. Before calling this action, you may want to call <a>DescribeEC2InstanceLimits</a> to get the maximum capacity based on the fleet&#39;s EC2 instance type.</p> <p>Specify minimum and maximum number of instances. Amazon GameLift will not change fleet capacity to values fall outside of this range. This is particularly important when using auto-scaling (see <a>PutScalingPolicy</a>) to allow capacity to adjust based on player demand while imposing limits on automatic adjustments.</p> <p>To update fleet capacity, specify the fleet ID and the number of instances you want the fleet to host. If successful, Amazon GameLift starts or terminates instances so that the fleet&#39;s active instance count matches the desired instance count. You can view a fleet&#39;s current capacity information by calling <a>DescribeFleetCapacity</a>. If the desired instance count is higher than the instance type&#39;s limit, the &quot;Limit Exceeded&quot; exception occurs.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9298    async fn update_fleet_capacity(
9299        &self,
9300        input: UpdateFleetCapacityInput,
9301    ) -> Result<UpdateFleetCapacityOutput, RusotoError<UpdateFleetCapacityError>>;
9302
9303    /// <p><p>Updates port settings for a fleet. To update settings, specify the fleet ID to be updated and list the permissions you want to update. List the permissions you want to add in <code>InboundPermissionAuthorizations</code>, and permissions you want to remove in <code>InboundPermissionRevocations</code>. Permissions to be removed must match existing fleet permissions. If successful, the fleet ID for the updated fleet is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9304    async fn update_fleet_port_settings(
9305        &self,
9306        input: UpdateFleetPortSettingsInput,
9307    ) -> Result<UpdateFleetPortSettingsOutput, RusotoError<UpdateFleetPortSettingsError>>;
9308
9309    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Updates information about a registered game server. This action is called by a game server process that is running on an instance in a game server group. There are three reasons to update game server information: (1) to change the utilization status of the game server, (2) to report game server health status, and (3) to change game server metadata. A registered game server should regularly report health and should update utilization status when it is supporting gameplay so that GameLift FleetIQ can accurately track game server availability. You can make all three types of updates in the same request.</p> <ul> <li> <p>To update the game server&#39;s utilization status, identify the game server and game server group and specify the current utilization status. Use this status to identify when game servers are currently hosting games and when they are available to be claimed. </p> </li> <li> <p>To report health status, identify the game server and game server group and set health check to HEALTHY. If a game server does not report health status for a certain length of time, the game server is no longer considered healthy and will be eventually de-registered from the game server group to avoid affecting utilization metrics. The best practice is to report health every 60 seconds.</p> </li> <li> <p>To change game server metadata, provide updated game server data and custom sort key values.</p> </li> </ul> <p>Once a game server is successfully updated, the relevant statuses and timestamps are updated.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9310    async fn update_game_server(
9311        &self,
9312        input: UpdateGameServerInput,
9313    ) -> Result<UpdateGameServerOutput, RusotoError<UpdateGameServerError>>;
9314
9315    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Updates GameLift FleetIQ-specific properties for a game server group. These properties include instance rebalancing and game server protection. Many Auto Scaling group properties are updated directly. These include autoscaling policies, minimum/maximum/desired instance counts, and launch template. </p> <p>To update the game server group, specify the game server group ID and provide the updated values.</p> <p>Updated properties are validated to ensure that GameLift FleetIQ can continue to perform its core instance rebalancing activity. When you change Auto Scaling group properties directly and the changes cause errors with GameLift FleetIQ activities, an alert is sent.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-asgroups.html">Updating a GameLift FleetIQ-Linked Auto Scaling Group</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9316    async fn update_game_server_group(
9317        &self,
9318        input: UpdateGameServerGroupInput,
9319    ) -> Result<UpdateGameServerGroupOutput, RusotoError<UpdateGameServerGroupError>>;
9320
9321    /// <p><p>Updates game session properties. This includes the session name, maximum player count, protection policy, which controls whether or not an active game session can be terminated during a scale-down event, and the player session creation policy, which controls whether or not new players can join the session. To update a game session, specify the game session ID and the values you want to change. If successful, an updated <a>GameSession</a> object is returned. </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9322    async fn update_game_session(
9323        &self,
9324        input: UpdateGameSessionInput,
9325    ) -> Result<UpdateGameSessionOutput, RusotoError<UpdateGameSessionError>>;
9326
9327    /// <p><p>Updates settings for a game session queue, which determines how new game session requests in the queue are processed. To update settings, specify the queue name to be updated and provide the new settings. When updating destinations, provide a complete list of destinations. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-intro.html"> Using Multi-Region Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
9328    async fn update_game_session_queue(
9329        &self,
9330        input: UpdateGameSessionQueueInput,
9331    ) -> Result<UpdateGameSessionQueueOutput, RusotoError<UpdateGameSessionQueueError>>;
9332
9333    /// <p><p>Updates settings for a FlexMatch matchmaking configuration. These changes affect all matches and game sessions that are created after the update. To update settings, specify the configuration name to be updated and provide the new settings. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html"> Design a FlexMatch Matchmaker</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9334    async fn update_matchmaking_configuration(
9335        &self,
9336        input: UpdateMatchmakingConfigurationInput,
9337    ) -> Result<
9338        UpdateMatchmakingConfigurationOutput,
9339        RusotoError<UpdateMatchmakingConfigurationError>,
9340    >;
9341
9342    /// <p><p>Updates the current runtime configuration for the specified fleet, which tells Amazon GameLift how to launch server processes on instances in the fleet. You can update a fleet&#39;s runtime configuration at any time after the fleet is created; it does not need to be in an <code>ACTIVE</code> status.</p> <p>To update runtime configuration, specify the fleet ID and provide a <code>RuntimeConfiguration</code> object with an updated set of server process configurations.</p> <p>Each instance in a Amazon GameLift fleet checks regularly for an updated runtime configuration and changes how it launches server processes to comply with the latest version. Existing server processes are not affected by the update; runtime configuration changes are applied gradually as existing processes shut down and new processes are launched during Amazon GameLift&#39;s normal process recycling activity.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9343    async fn update_runtime_configuration(
9344        &self,
9345        input: UpdateRuntimeConfigurationInput,
9346    ) -> Result<UpdateRuntimeConfigurationOutput, RusotoError<UpdateRuntimeConfigurationError>>;
9347
9348    /// <p><p>Updates Realtime script metadata and content.</p> <p>To update script metadata, specify the script ID and provide updated name and/or version values. </p> <p>To update script content, provide an updated zip file by pointing to either a local file or an Amazon S3 bucket location. You can use either method regardless of how the original script was uploaded. Use the <i>Version</i> parameter to track updates to the script.</p> <p>If the call is successful, the updated metadata is stored in the script record and a revised script is uploaded to the Amazon GameLift service. Once the script is updated and acquired by a fleet instance, the new version is used for all new game sessions. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
9349    async fn update_script(
9350        &self,
9351        input: UpdateScriptInput,
9352    ) -> Result<UpdateScriptOutput, RusotoError<UpdateScriptError>>;
9353
9354    /// <p><p>Validates the syntax of a matchmaking rule or rule set. This operation checks that the rule set is using syntactically correct JSON and that it conforms to allowed property expressions. To validate syntax, provide a rule set JSON string.</p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9355    async fn validate_matchmaking_rule_set(
9356        &self,
9357        input: ValidateMatchmakingRuleSetInput,
9358    ) -> Result<ValidateMatchmakingRuleSetOutput, RusotoError<ValidateMatchmakingRuleSetError>>;
9359}
9360/// A client for the Amazon GameLift API.
9361#[derive(Clone)]
9362pub struct GameLiftClient {
9363    client: Client,
9364    region: region::Region,
9365}
9366
9367impl GameLiftClient {
9368    /// Creates a client backed by the default tokio event loop.
9369    ///
9370    /// The client will use the default credentials provider and tls client.
9371    pub fn new(region: region::Region) -> GameLiftClient {
9372        GameLiftClient {
9373            client: Client::shared(),
9374            region,
9375        }
9376    }
9377
9378    pub fn new_with<P, D>(
9379        request_dispatcher: D,
9380        credentials_provider: P,
9381        region: region::Region,
9382    ) -> GameLiftClient
9383    where
9384        P: ProvideAwsCredentials + Send + Sync + 'static,
9385        D: DispatchSignedRequest + Send + Sync + 'static,
9386    {
9387        GameLiftClient {
9388            client: Client::new_with(credentials_provider, request_dispatcher),
9389            region,
9390        }
9391    }
9392
9393    pub fn new_with_client(client: Client, region: region::Region) -> GameLiftClient {
9394        GameLiftClient { client, region }
9395    }
9396}
9397
9398#[async_trait]
9399impl GameLift for GameLiftClient {
9400    /// <p><p>Registers a player&#39;s acceptance or rejection of a proposed FlexMatch match. A matchmaking configuration may require player acceptance; if so, then matches built with that configuration cannot be completed unless all players accept the proposed match within a specified time limit. </p> <p>When FlexMatch builds a match, all the matchmaking tickets involved in the proposed match are placed into status <code>REQUIRES_ACCEPTANCE</code>. This is a trigger for your game to get acceptance from all players in the ticket. Acceptances are only valid for tickets when they are in this status; all other acceptances result in an error.</p> <p>To register acceptance, specify the ticket ID, a response, and one or more players. Once all players have registered acceptance, the matchmaking tickets advance to status <code>PLACING</code>, where a new game session is created for the match. </p> <p>If any player rejects the match, or if acceptances are not received before a specified timeout, the proposed match is dropped. The matchmaking tickets are then handled in one of two ways: For tickets where one or more players rejected the match, the ticket status is returned to <code>SEARCHING</code> to find a new match. For tickets where one or more players failed to respond, the ticket status is set to <code>CANCELLED</code>, and processing is terminated. A new matchmaking request for these players can be submitted as needed. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-events.html"> FlexMatch Events Reference</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
9401    async fn accept_match(
9402        &self,
9403        input: AcceptMatchInput,
9404    ) -> Result<AcceptMatchOutput, RusotoError<AcceptMatchError>> {
9405        let mut request = self.new_signed_request("POST", "/");
9406        request.add_header("x-amz-target", "GameLift.AcceptMatch");
9407        let encoded = serde_json::to_string(&input).unwrap();
9408        request.set_payload(Some(encoded));
9409
9410        let response = self
9411            .sign_and_dispatch(request, AcceptMatchError::from_response)
9412            .await?;
9413        let mut response = response;
9414        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9415        proto::json::ResponsePayload::new(&response).deserialize::<AcceptMatchOutput, _>()
9416    }
9417
9418    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Locates an available game server and temporarily reserves it to host gameplay and players. This action is called by a game client or client service (such as a matchmaker) to request hosting resources for a new game session. In response, GameLift FleetIQ searches for an available game server in the specified game server group, places the game server in &quot;claimed&quot; status for 60 seconds, and returns connection information back to the requester so that players can connect to the game server. </p> <p>There are two ways you can claim a game server. For the first option, you provide a game server group ID only, which prompts GameLift FleetIQ to search for an available game server in the specified group and claim it. With this option, GameLift FleetIQ attempts to consolidate gameplay on as few instances as possible to minimize hosting costs. For the second option, you request a specific game server by its ID. This option results in a less efficient claiming process because it does not take advantage of consolidation and may fail if the requested game server is unavailable. </p> <p>To claim a game server, identify a game server group and (optionally) a game server ID. If your game requires that game data be provided to the game server at the start of a game, such as a game map or player information, you can provide it in your claim request. </p> <p>When a game server is successfully claimed, connection information is returned. A claimed game server&#39;s utilization status remains AVAILABLE, while the claim status is set to CLAIMED for up to 60 seconds. This time period allows the game server to be prompted to update its status to UTILIZED (using <a>UpdateGameServer</a>). If the game server&#39;s status is not updated within 60 seconds, the game server reverts to unclaimed status and is available to be claimed by another request.</p> <p>If you try to claim a specific game server, this request will fail in the following cases: (1) if the game server utilization status is UTILIZED, (2) if the game server claim status is CLAIMED, or (3) if the instance that the game server is running on is flagged as draining.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9419    async fn claim_game_server(
9420        &self,
9421        input: ClaimGameServerInput,
9422    ) -> Result<ClaimGameServerOutput, RusotoError<ClaimGameServerError>> {
9423        let mut request = self.new_signed_request("POST", "/");
9424        request.add_header("x-amz-target", "GameLift.ClaimGameServer");
9425        let encoded = serde_json::to_string(&input).unwrap();
9426        request.set_payload(Some(encoded));
9427
9428        let response = self
9429            .sign_and_dispatch(request, ClaimGameServerError::from_response)
9430            .await?;
9431        let mut response = response;
9432        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9433        proto::json::ResponsePayload::new(&response).deserialize::<ClaimGameServerOutput, _>()
9434    }
9435
9436    /// <p><p>Creates an alias for a fleet. In most situations, you can use an alias ID in place of a fleet ID. An alias provides a level of abstraction for a fleet that is useful when redirecting player traffic from one fleet to another, such as when updating your game build. </p> <p>Amazon GameLift supports two types of routing strategies for aliases: simple and terminal. A simple alias points to an active fleet. A terminal alias is used to display messaging or link to a URL instead of routing players to an active fleet. For example, you might use a terminal alias when a game version is no longer supported and you want to direct players to an upgrade site. </p> <p>To create a fleet alias, specify an alias name, routing strategy, and optional description. Each simple alias can point to only one fleet, but a fleet can have multiple aliases. If successful, a new alias record is returned, including an alias ID and an ARN. You can reassign an alias to another fleet by calling <code>UpdateAlias</code>.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9437    async fn create_alias(
9438        &self,
9439        input: CreateAliasInput,
9440    ) -> Result<CreateAliasOutput, RusotoError<CreateAliasError>> {
9441        let mut request = self.new_signed_request("POST", "/");
9442        request.add_header("x-amz-target", "GameLift.CreateAlias");
9443        let encoded = serde_json::to_string(&input).unwrap();
9444        request.set_payload(Some(encoded));
9445
9446        let response = self
9447            .sign_and_dispatch(request, CreateAliasError::from_response)
9448            .await?;
9449        let mut response = response;
9450        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9451        proto::json::ResponsePayload::new(&response).deserialize::<CreateAliasOutput, _>()
9452    }
9453
9454    /// <p><p>Creates a new Amazon GameLift build resource for your game server binary files. Game server binaries must be combined into a zip file for use with Amazon GameLift. </p> <important> <p>When setting up a new game build for GameLift, we recommend using the AWS CLI command <b> <a href="https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html">upload-build</a> </b>. This helper command combines two tasks: (1) it uploads your build files from a file directory to a GameLift Amazon S3 location, and (2) it creates a new build resource. </p> </important> <p>The <code>CreateBuild</code> operation can used in the following scenarios:</p> <ul> <li> <p>To create a new game build with build files that are in an S3 location under an AWS account that you control. To use this option, you must first give Amazon GameLift access to the S3 bucket. With permissions in place, call <code>CreateBuild</code> and specify a build name, operating system, and the S3 storage location of your game build.</p> </li> <li> <p>To directly upload your build files to a GameLift S3 location. To use this option, first call <code>CreateBuild</code> and specify a build name and operating system. This action creates a new build resource and also returns an S3 location with temporary access credentials. Use the credentials to manually upload your build files to the specified S3 location. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html">Uploading Objects</a> in the <i>Amazon S3 Developer Guide</i>. Build files can be uploaded to the GameLift S3 location once only; that can&#39;t be updated. </p> </li> </ul> <p>If successful, this operation creates a new build resource with a unique build ID and places it in <code>INITIALIZED</code> status. A build must be in <code>READY</code> status before you can create fleets with it.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html">Uploading Your Game</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html#gamelift-build-cli-uploading-create-build"> Create a Build with Files in Amazon S3</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9455    async fn create_build(
9456        &self,
9457        input: CreateBuildInput,
9458    ) -> Result<CreateBuildOutput, RusotoError<CreateBuildError>> {
9459        let mut request = self.new_signed_request("POST", "/");
9460        request.add_header("x-amz-target", "GameLift.CreateBuild");
9461        let encoded = serde_json::to_string(&input).unwrap();
9462        request.set_payload(Some(encoded));
9463
9464        let response = self
9465            .sign_and_dispatch(request, CreateBuildError::from_response)
9466            .await?;
9467        let mut response = response;
9468        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9469        proto::json::ResponsePayload::new(&response).deserialize::<CreateBuildOutput, _>()
9470    }
9471
9472    /// <p><p>Creates a new fleet to run your game servers. whether they are custom game builds or Realtime Servers with game-specific script. A fleet is a set of Amazon Elastic Compute Cloud (Amazon EC2) instances, each of which can host multiple game sessions. When creating a fleet, you choose the hardware specifications, set some configuration options, and specify the game server to deploy on the new fleet. </p> <p>To create a new fleet, provide the following: (1) a fleet name, (2) an EC2 instance type and fleet type (spot or on-demand), (3) the build ID for your game build or script ID if using Realtime Servers, and (4) a runtime configuration, which determines how game servers will run on each instance in the fleet. </p> <p>If the <code>CreateFleet</code> call is successful, Amazon GameLift performs the following tasks. You can track the process of a fleet by checking the fleet status or by monitoring fleet creation events:</p> <ul> <li> <p>Creates a fleet resource. Status: <code>NEW</code>.</p> </li> <li> <p>Begins writing events to the fleet event log, which can be accessed in the Amazon GameLift console.</p> </li> <li> <p>Sets the fleet&#39;s target capacity to 1 (desired instances), which triggers Amazon GameLift to start one new EC2 instance.</p> </li> <li> <p>Downloads the game build or Realtime script to the new instance and installs it. Statuses: <code>DOWNLOADING</code>, <code>VALIDATING</code>, <code>BUILDING</code>. </p> </li> <li> <p>Starts launching server processes on the instance. If the fleet is configured to run multiple server processes per instance, Amazon GameLift staggers each process launch by a few seconds. Status: <code>ACTIVATING</code>.</p> </li> <li> <p>Sets the fleet&#39;s status to <code>ACTIVE</code> as soon as one server process is ready to host a game session.</p> </li> </ul> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting Up Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation">Debug Fleet Creation Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9473    async fn create_fleet(
9474        &self,
9475        input: CreateFleetInput,
9476    ) -> Result<CreateFleetOutput, RusotoError<CreateFleetError>> {
9477        let mut request = self.new_signed_request("POST", "/");
9478        request.add_header("x-amz-target", "GameLift.CreateFleet");
9479        let encoded = serde_json::to_string(&input).unwrap();
9480        request.set_payload(Some(encoded));
9481
9482        let response = self
9483            .sign_and_dispatch(request, CreateFleetError::from_response)
9484            .await?;
9485        let mut response = response;
9486        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9487        proto::json::ResponsePayload::new(&response).deserialize::<CreateFleetOutput, _>()
9488    }
9489
9490    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Creates a GameLift FleetIQ game server group to manage a collection of EC2 instances for game hosting. In addition to creating the game server group, this action also creates an Auto Scaling group in your AWS account and establishes a link between the two groups. You have full control over configuration of the Auto Scaling group, but GameLift FleetIQ routinely certain Auto Scaling group properties in order to optimize the group&#39;s instances for low-cost game hosting. You can view the status of your game server groups in the GameLift Console. Game server group metrics and events are emitted to Amazon CloudWatch.</p> <p>Prior creating a new game server group, you must set up the following: </p> <ul> <li> <p>An EC2 launch template. The template provides configuration settings for a set of EC2 instances and includes the game server build that you want to deploy and run on each instance. For more information on creating a launch template, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html"> Launching an Instance from a Launch Template</a> in the <i>Amazon EC2 User Guide</i>. </p> </li> <li> <p>An IAM role. The role sets up limited access to your AWS account, allowing GameLift FleetIQ to create and manage the EC2 Auto Scaling group, get instance data, and emit metrics and events to CloudWatch. For more information on setting up an IAM permissions policy with principal access for GameLift, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html"> Specifying a Principal in a Policy</a> in the <i>Amazon S3 Developer Guide</i>.</p> </li> </ul> <p>To create a new game server group, provide a name and specify the IAM role and EC2 launch template. You also need to provide a list of instance types to be used in the group and set initial maximum and minimum limits on the group&#39;s instance count. You can optionally set an autoscaling policy with target tracking based on a GameLift FleetIQ metric.</p> <p>Once the game server group and corresponding Auto Scaling group are created, you have full access to change the Auto Scaling group&#39;s configuration as needed. Keep in mind, however, that some properties are periodically updated by GameLift FleetIQ as it balances the group&#39;s instances based on availability and cost.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-asgroups.html">Updating a GameLift FleetIQ-Linked Auto Scaling Group</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9491    async fn create_game_server_group(
9492        &self,
9493        input: CreateGameServerGroupInput,
9494    ) -> Result<CreateGameServerGroupOutput, RusotoError<CreateGameServerGroupError>> {
9495        let mut request = self.new_signed_request("POST", "/");
9496        request.add_header("x-amz-target", "GameLift.CreateGameServerGroup");
9497        let encoded = serde_json::to_string(&input).unwrap();
9498        request.set_payload(Some(encoded));
9499
9500        let response = self
9501            .sign_and_dispatch(request, CreateGameServerGroupError::from_response)
9502            .await?;
9503        let mut response = response;
9504        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9505        proto::json::ResponsePayload::new(&response).deserialize::<CreateGameServerGroupOutput, _>()
9506    }
9507
9508    /// <p><p>Creates a multiplayer game session for players. This action creates a game session record and assigns an available server process in the specified fleet to host the game session. A fleet must have an <code>ACTIVE</code> status before a game session can be created in it.</p> <p>To create a game session, specify either fleet ID or alias ID and indicate a maximum number of players to allow in the game session. You can also provide a name and game-specific properties for this game session. If successful, a <a>GameSession</a> object is returned containing the game session properties and other settings you specified.</p> <p> <b>Idempotency tokens.</b> You can add a token that uniquely identifies game session requests. This is useful for ensuring that game session requests are idempotent. Multiple requests with the same idempotency token are processed only once; subsequent requests return the original result. All response values are the same with the exception of game session status, which may change.</p> <p> <b>Resource creation limits.</b> If you are creating a game session on a fleet with a resource creation limit policy in force, then you must specify a creator ID. Without this ID, Amazon GameLift has no way to evaluate the policy for this new game session request.</p> <p> <b>Player acceptance policy.</b> By default, newly created game sessions are open to new players. You can restrict new player access by using <a>UpdateGameSession</a> to change the game session&#39;s player session creation policy.</p> <p> <b>Game session logs.</b> Logs are retained for all active game sessions for 14 days. To access the logs, call <a>GetGameSessionLogUrl</a> to download the log files.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9509    async fn create_game_session(
9510        &self,
9511        input: CreateGameSessionInput,
9512    ) -> Result<CreateGameSessionOutput, RusotoError<CreateGameSessionError>> {
9513        let mut request = self.new_signed_request("POST", "/");
9514        request.add_header("x-amz-target", "GameLift.CreateGameSession");
9515        let encoded = serde_json::to_string(&input).unwrap();
9516        request.set_payload(Some(encoded));
9517
9518        let response = self
9519            .sign_and_dispatch(request, CreateGameSessionError::from_response)
9520            .await?;
9521        let mut response = response;
9522        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9523        proto::json::ResponsePayload::new(&response).deserialize::<CreateGameSessionOutput, _>()
9524    }
9525
9526    /// <p><p>Establishes a new queue for processing requests to place new game sessions. A queue identifies where new game sessions can be hosted -- by specifying a list of destinations (fleets or aliases) -- and how long requests can wait in the queue before timing out. You can set up a queue to try to place game sessions on fleets in multiple Regions. To add placement requests to a queue, call <a>StartGameSessionPlacement</a> and reference the queue name.</p> <p> <b>Destination order.</b> When processing a request for a game session, Amazon GameLift tries each destination in order until it finds one with available resources to host the new game session. A queue&#39;s default order is determined by how destinations are listed. The default order is overridden when a game session placement request provides player latency information. Player latency information enables Amazon GameLift to prioritize destinations where players report the lowest average latency, as a result placing the new game session where the majority of players will have the best possible gameplay experience.</p> <p> <b>Player latency policies.</b> For placement requests containing player latency information, use player latency policies to protect individual players from very high latencies. With a latency cap, even when a destination can deliver a low latency for most players, the game is not placed where any individual player is reporting latency higher than a policy&#39;s maximum. A queue can have multiple latency policies, which are enforced consecutively starting with the policy with the lowest latency cap. Use multiple policies to gradually relax latency controls; for example, you might set a policy with a low latency cap for the first 60 seconds, a second policy with a higher cap for the next 60 seconds, etc. </p> <p>To create a new queue, provide a name, timeout value, a list of destinations and, if desired, a set of latency policies. If successful, a new queue object is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-design.html"> Design a Game Session Queue</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-creating.html"> Create a Game Session Queue</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
9527    async fn create_game_session_queue(
9528        &self,
9529        input: CreateGameSessionQueueInput,
9530    ) -> Result<CreateGameSessionQueueOutput, RusotoError<CreateGameSessionQueueError>> {
9531        let mut request = self.new_signed_request("POST", "/");
9532        request.add_header("x-amz-target", "GameLift.CreateGameSessionQueue");
9533        let encoded = serde_json::to_string(&input).unwrap();
9534        request.set_payload(Some(encoded));
9535
9536        let response = self
9537            .sign_and_dispatch(request, CreateGameSessionQueueError::from_response)
9538            .await?;
9539        let mut response = response;
9540        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9541        proto::json::ResponsePayload::new(&response)
9542            .deserialize::<CreateGameSessionQueueOutput, _>()
9543    }
9544
9545    /// <p><p>Defines a new matchmaking configuration for use with FlexMatch. A matchmaking configuration sets out guidelines for matching players and getting the matches into games. You can set up multiple matchmaking configurations to handle the scenarios needed for your game. Each matchmaking ticket (<a>StartMatchmaking</a> or <a>StartMatchBackfill</a>) specifies a configuration for the match and provides player attributes to support the configuration being used. </p> <p>To create a matchmaking configuration, at a minimum you must specify the following: configuration name; a rule set that governs how to evaluate players and find acceptable matches; a game session queue to use when placing a new game session for the match; and the maximum time allowed for a matchmaking attempt.</p> <p>There are two ways to track the progress of matchmaking tickets: (1) polling ticket status with <a>DescribeMatchmaking</a>; or (2) receiving notifications with Amazon Simple Notification Service (SNS). To use notifications, you first need to set up an SNS topic to receive the notifications, and provide the topic ARN in the matchmaking configuration. Since notifications promise only &quot;best effort&quot; delivery, we recommend calling <code>DescribeMatchmaking</code> if no notifications are received within 30 seconds.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html"> Design a FlexMatch Matchmaker</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Setting up Notifications for Matchmaking</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9546    async fn create_matchmaking_configuration(
9547        &self,
9548        input: CreateMatchmakingConfigurationInput,
9549    ) -> Result<
9550        CreateMatchmakingConfigurationOutput,
9551        RusotoError<CreateMatchmakingConfigurationError>,
9552    > {
9553        let mut request = self.new_signed_request("POST", "/");
9554        request.add_header("x-amz-target", "GameLift.CreateMatchmakingConfiguration");
9555        let encoded = serde_json::to_string(&input).unwrap();
9556        request.set_payload(Some(encoded));
9557
9558        let response = self
9559            .sign_and_dispatch(request, CreateMatchmakingConfigurationError::from_response)
9560            .await?;
9561        let mut response = response;
9562        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9563        proto::json::ResponsePayload::new(&response)
9564            .deserialize::<CreateMatchmakingConfigurationOutput, _>()
9565    }
9566
9567    /// <p><p>Creates a new rule set for FlexMatch matchmaking. A rule set describes the type of match to create, such as the number and size of teams. It also sets the parameters for acceptable player matches, such as minimum skill level or character type. A rule set is used by a <a>MatchmakingConfiguration</a>. </p> <p>To create a matchmaking rule set, provide unique rule set name and the rule set body in JSON format. Rule sets must be defined in the same Region as the matchmaking configuration they are used with.</p> <p>Since matchmaking rule sets cannot be edited, it is a good idea to check the rule set syntax using <a>ValidateMatchmakingRuleSet</a> before creating a new rule set.</p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html">Design a Matchmaker</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-intro.html">Matchmaking with FlexMatch</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9568    async fn create_matchmaking_rule_set(
9569        &self,
9570        input: CreateMatchmakingRuleSetInput,
9571    ) -> Result<CreateMatchmakingRuleSetOutput, RusotoError<CreateMatchmakingRuleSetError>> {
9572        let mut request = self.new_signed_request("POST", "/");
9573        request.add_header("x-amz-target", "GameLift.CreateMatchmakingRuleSet");
9574        let encoded = serde_json::to_string(&input).unwrap();
9575        request.set_payload(Some(encoded));
9576
9577        let response = self
9578            .sign_and_dispatch(request, CreateMatchmakingRuleSetError::from_response)
9579            .await?;
9580        let mut response = response;
9581        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9582        proto::json::ResponsePayload::new(&response)
9583            .deserialize::<CreateMatchmakingRuleSetOutput, _>()
9584    }
9585
9586    /// <p><p>Reserves an open player slot in an active game session. Before a player can be added, a game session must have an <code>ACTIVE</code> status, have a creation policy of <code>ALLOW_ALL</code>, and have an open player slot. To add a group of players to a game session, use <a>CreatePlayerSessions</a>. When the player connects to the game server and references a player session ID, the game server contacts the Amazon GameLift service to validate the player reservation and accept the player.</p> <p>To create a player session, specify a game session ID, player ID, and optionally a string of player data. If successful, a slot is reserved in the game session for the player and a new <a>PlayerSession</a> object is returned. Player sessions cannot be updated. </p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9587    async fn create_player_session(
9588        &self,
9589        input: CreatePlayerSessionInput,
9590    ) -> Result<CreatePlayerSessionOutput, RusotoError<CreatePlayerSessionError>> {
9591        let mut request = self.new_signed_request("POST", "/");
9592        request.add_header("x-amz-target", "GameLift.CreatePlayerSession");
9593        let encoded = serde_json::to_string(&input).unwrap();
9594        request.set_payload(Some(encoded));
9595
9596        let response = self
9597            .sign_and_dispatch(request, CreatePlayerSessionError::from_response)
9598            .await?;
9599        let mut response = response;
9600        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9601        proto::json::ResponsePayload::new(&response).deserialize::<CreatePlayerSessionOutput, _>()
9602    }
9603
9604    /// <p><p>Reserves open slots in a game session for a group of players. Before players can be added, a game session must have an <code>ACTIVE</code> status, have a creation policy of <code>ALLOW_ALL</code>, and have an open player slot. To add a single player to a game session, use <a>CreatePlayerSession</a>. When a player connects to the game server and references a player session ID, the game server contacts the Amazon GameLift service to validate the player reservation and accept the player.</p> <p>To create player sessions, specify a game session ID, a list of player IDs, and optionally a set of player data strings. If successful, a slot is reserved in the game session for each player and a set of new <a>PlayerSession</a> objects is returned. Player sessions cannot be updated.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
9605    async fn create_player_sessions(
9606        &self,
9607        input: CreatePlayerSessionsInput,
9608    ) -> Result<CreatePlayerSessionsOutput, RusotoError<CreatePlayerSessionsError>> {
9609        let mut request = self.new_signed_request("POST", "/");
9610        request.add_header("x-amz-target", "GameLift.CreatePlayerSessions");
9611        let encoded = serde_json::to_string(&input).unwrap();
9612        request.set_payload(Some(encoded));
9613
9614        let response = self
9615            .sign_and_dispatch(request, CreatePlayerSessionsError::from_response)
9616            .await?;
9617        let mut response = response;
9618        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9619        proto::json::ResponsePayload::new(&response).deserialize::<CreatePlayerSessionsOutput, _>()
9620    }
9621
9622    /// <p><p>Creates a new script record for your Realtime Servers script. Realtime scripts are JavaScript that provide configuration settings and optional custom game logic for your game. The script is deployed when you create a Realtime Servers fleet to host your game sessions. Script logic is executed during an active game session. </p> <p>To create a new script record, specify a script name and provide the script file(s). The script files and all dependencies must be zipped into a single file. You can pull the zip file from either of these locations: </p> <ul> <li> <p>A locally available directory. Use the <i>ZipFile</i> parameter for this option.</p> </li> <li> <p>An Amazon Simple Storage Service (Amazon S3) bucket under your AWS account. Use the <i>StorageLocation</i> parameter for this option. You&#39;ll need to have an Identity Access Management (IAM) role that allows the Amazon GameLift service to access your S3 bucket. </p> </li> </ul> <p>If the call is successful, a new script record is created with a unique script ID. If the script file is provided as a local file, the file is uploaded to an Amazon GameLift-owned S3 bucket and the script record&#39;s storage location reflects this location. If the script file is provided as an S3 bucket, Amazon GameLift accesses the file at this storage location as needed for deployment.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/setting-up-role.html">Set Up a Role for Amazon GameLift Access</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
9623    async fn create_script(
9624        &self,
9625        input: CreateScriptInput,
9626    ) -> Result<CreateScriptOutput, RusotoError<CreateScriptError>> {
9627        let mut request = self.new_signed_request("POST", "/");
9628        request.add_header("x-amz-target", "GameLift.CreateScript");
9629        let encoded = serde_json::to_string(&input).unwrap();
9630        request.set_payload(Some(encoded));
9631
9632        let response = self
9633            .sign_and_dispatch(request, CreateScriptError::from_response)
9634            .await?;
9635        let mut response = response;
9636        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9637        proto::json::ResponsePayload::new(&response).deserialize::<CreateScriptOutput, _>()
9638    }
9639
9640    /// <p><p>Requests authorization to create or delete a peer connection between the VPC for your Amazon GameLift fleet and a virtual private cloud (VPC) in your AWS account. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. Once you&#39;ve received authorization, call <a>CreateVpcPeeringConnection</a> to establish the peering connection. For more information, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p> <p>You can peer with VPCs that are owned by any AWS account you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different Regions.</p> <p>To request authorization to create a connection, call this operation from the AWS account with the VPC that you want to peer to your Amazon GameLift fleet. For example, to enable your game servers to retrieve data from a DynamoDB table, use the account that manages that DynamoDB resource. Identify the following values: (1) The ID of the VPC that you want to peer with, and (2) the ID of the AWS account that you use to manage Amazon GameLift. If successful, VPC peering is authorized for the specified VPC. </p> <p>To request authorization to delete a connection, call this operation from the AWS account with the VPC that is peered with your Amazon GameLift fleet. Identify the following values: (1) VPC ID that you want to delete the peering connection for, and (2) ID of the AWS account that you use to manage Amazon GameLift. </p> <p>The authorization remains valid for 24 hours unless it is canceled by a call to <a>DeleteVpcPeeringAuthorization</a>. You must create or delete the peering connection while the authorization is valid. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9641    async fn create_vpc_peering_authorization(
9642        &self,
9643        input: CreateVpcPeeringAuthorizationInput,
9644    ) -> Result<CreateVpcPeeringAuthorizationOutput, RusotoError<CreateVpcPeeringAuthorizationError>>
9645    {
9646        let mut request = self.new_signed_request("POST", "/");
9647        request.add_header("x-amz-target", "GameLift.CreateVpcPeeringAuthorization");
9648        let encoded = serde_json::to_string(&input).unwrap();
9649        request.set_payload(Some(encoded));
9650
9651        let response = self
9652            .sign_and_dispatch(request, CreateVpcPeeringAuthorizationError::from_response)
9653            .await?;
9654        let mut response = response;
9655        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9656        proto::json::ResponsePayload::new(&response)
9657            .deserialize::<CreateVpcPeeringAuthorizationOutput, _>()
9658    }
9659
9660    /// <p><p>Establishes a VPC peering connection between a virtual private cloud (VPC) in an AWS account with the VPC for your Amazon GameLift fleet. VPC peering enables the game servers on your fleet to communicate directly with other AWS resources. You can peer with VPCs in any AWS account that you have access to, including the account that you use to manage your Amazon GameLift fleets. You cannot peer with VPCs that are in different Regions. For more information, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/vpc-peering.html">VPC Peering with Amazon GameLift Fleets</a>.</p> <p>Before calling this operation to establish the peering connection, you first need to call <a>CreateVpcPeeringAuthorization</a> and identify the VPC you want to peer with. Once the authorization for the specified VPC is issued, you have 24 hours to establish the connection. These two operations handle all tasks necessary to peer the two VPCs, including acceptance, updating routing tables, etc. </p> <p>To establish the connection, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the following values: (1) The ID of the fleet you want to be enable a VPC peering connection for; (2) The AWS account with the VPC that you want to peer with; and (3) The ID of the VPC you want to peer with. This operation is asynchronous. If successful, a <a>VpcPeeringConnection</a> request is created. You can use continuous polling to track the request&#39;s status using <a>DescribeVpcPeeringConnections</a>, or by monitoring fleet events for success or failure using <a>DescribeFleetEvents</a>. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9661    async fn create_vpc_peering_connection(
9662        &self,
9663        input: CreateVpcPeeringConnectionInput,
9664    ) -> Result<CreateVpcPeeringConnectionOutput, RusotoError<CreateVpcPeeringConnectionError>>
9665    {
9666        let mut request = self.new_signed_request("POST", "/");
9667        request.add_header("x-amz-target", "GameLift.CreateVpcPeeringConnection");
9668        let encoded = serde_json::to_string(&input).unwrap();
9669        request.set_payload(Some(encoded));
9670
9671        let response = self
9672            .sign_and_dispatch(request, CreateVpcPeeringConnectionError::from_response)
9673            .await?;
9674        let mut response = response;
9675        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9676        proto::json::ResponsePayload::new(&response)
9677            .deserialize::<CreateVpcPeeringConnectionOutput, _>()
9678    }
9679
9680    /// <p><p>Deletes an alias. This action removes all record of the alias. Game clients attempting to access a server process using the deleted alias receive an error. To delete an alias, specify the alias ID to be deleted.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9681    async fn delete_alias(
9682        &self,
9683        input: DeleteAliasInput,
9684    ) -> Result<(), RusotoError<DeleteAliasError>> {
9685        let mut request = self.new_signed_request("POST", "/");
9686        request.add_header("x-amz-target", "GameLift.DeleteAlias");
9687        let encoded = serde_json::to_string(&input).unwrap();
9688        request.set_payload(Some(encoded));
9689
9690        let response = self
9691            .sign_and_dispatch(request, DeleteAliasError::from_response)
9692            .await?;
9693        std::mem::drop(response);
9694        Ok(())
9695    }
9696
9697    /// <p><p>Deletes a build. This action permanently deletes the build resource and any uploaded build files. Deleting a build does not affect the status of any active fleets using the build, but you can no longer create new fleets with the deleted build.</p> <p>To delete a build, specify the build ID. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9698    async fn delete_build(
9699        &self,
9700        input: DeleteBuildInput,
9701    ) -> Result<(), RusotoError<DeleteBuildError>> {
9702        let mut request = self.new_signed_request("POST", "/");
9703        request.add_header("x-amz-target", "GameLift.DeleteBuild");
9704        let encoded = serde_json::to_string(&input).unwrap();
9705        request.set_payload(Some(encoded));
9706
9707        let response = self
9708            .sign_and_dispatch(request, DeleteBuildError::from_response)
9709            .await?;
9710        std::mem::drop(response);
9711        Ok(())
9712    }
9713
9714    /// <p><p>Deletes everything related to a fleet. Before deleting a fleet, you must set the fleet&#39;s desired capacity to zero. See <a>UpdateFleetCapacity</a>.</p> <p>If the fleet being deleted has a VPC peering connection, you first need to get a valid authorization (good for 24 hours) by calling <a>CreateVpcPeeringAuthorization</a>. You do not need to explicitly delete the VPC peering connection--this is done as part of the delete fleet process.</p> <p>This action removes the fleet and its resources. Once a fleet is deleted, you can no longer use any of the resource in that fleet.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9715    async fn delete_fleet(
9716        &self,
9717        input: DeleteFleetInput,
9718    ) -> Result<(), RusotoError<DeleteFleetError>> {
9719        let mut request = self.new_signed_request("POST", "/");
9720        request.add_header("x-amz-target", "GameLift.DeleteFleet");
9721        let encoded = serde_json::to_string(&input).unwrap();
9722        request.set_payload(Some(encoded));
9723
9724        let response = self
9725            .sign_and_dispatch(request, DeleteFleetError::from_response)
9726            .await?;
9727        std::mem::drop(response);
9728        Ok(())
9729    }
9730
9731    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Terminates a game server group and permanently deletes the game server group record. You have several options for how these resources are impacted when deleting the game server group. Depending on the type of delete action selected, this action may affect three types of resources: the game server group, the corresponding Auto Scaling group, and all game servers currently running in the group. </p> <p>To delete a game server group, identify the game server group to delete and specify the type of delete action to initiate. Game server groups can only be deleted if they are in ACTIVE or ERROR status.</p> <p>If the delete request is successful, a series of actions are kicked off. The game server group status is changed to DELETE_SCHEDULED, which prevents new game servers from being registered and stops autoscaling activity. Once all game servers in the game server group are de-registered, GameLift FleetIQ can begin deleting resources. If any of the delete actions fail, the game server group is placed in ERROR status.</p> <p>GameLift FleetIQ emits delete events to Amazon CloudWatch.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
9732    async fn delete_game_server_group(
9733        &self,
9734        input: DeleteGameServerGroupInput,
9735    ) -> Result<DeleteGameServerGroupOutput, RusotoError<DeleteGameServerGroupError>> {
9736        let mut request = self.new_signed_request("POST", "/");
9737        request.add_header("x-amz-target", "GameLift.DeleteGameServerGroup");
9738        let encoded = serde_json::to_string(&input).unwrap();
9739        request.set_payload(Some(encoded));
9740
9741        let response = self
9742            .sign_and_dispatch(request, DeleteGameServerGroupError::from_response)
9743            .await?;
9744        let mut response = response;
9745        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9746        proto::json::ResponsePayload::new(&response).deserialize::<DeleteGameServerGroupOutput, _>()
9747    }
9748
9749    /// <p><p>Deletes a game session queue. This action means that any <a>StartGameSessionPlacement</a> requests that reference this queue will fail. To delete a queue, specify the queue name.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-intro.html"> Using Multi-Region Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
9750    async fn delete_game_session_queue(
9751        &self,
9752        input: DeleteGameSessionQueueInput,
9753    ) -> Result<DeleteGameSessionQueueOutput, RusotoError<DeleteGameSessionQueueError>> {
9754        let mut request = self.new_signed_request("POST", "/");
9755        request.add_header("x-amz-target", "GameLift.DeleteGameSessionQueue");
9756        let encoded = serde_json::to_string(&input).unwrap();
9757        request.set_payload(Some(encoded));
9758
9759        let response = self
9760            .sign_and_dispatch(request, DeleteGameSessionQueueError::from_response)
9761            .await?;
9762        let mut response = response;
9763        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9764        proto::json::ResponsePayload::new(&response)
9765            .deserialize::<DeleteGameSessionQueueOutput, _>()
9766    }
9767
9768    /// <p><p>Permanently removes a FlexMatch matchmaking configuration. To delete, specify the configuration name. A matchmaking configuration cannot be deleted if it is being used in any active matchmaking tickets.</p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9769    async fn delete_matchmaking_configuration(
9770        &self,
9771        input: DeleteMatchmakingConfigurationInput,
9772    ) -> Result<
9773        DeleteMatchmakingConfigurationOutput,
9774        RusotoError<DeleteMatchmakingConfigurationError>,
9775    > {
9776        let mut request = self.new_signed_request("POST", "/");
9777        request.add_header("x-amz-target", "GameLift.DeleteMatchmakingConfiguration");
9778        let encoded = serde_json::to_string(&input).unwrap();
9779        request.set_payload(Some(encoded));
9780
9781        let response = self
9782            .sign_and_dispatch(request, DeleteMatchmakingConfigurationError::from_response)
9783            .await?;
9784        let mut response = response;
9785        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9786        proto::json::ResponsePayload::new(&response)
9787            .deserialize::<DeleteMatchmakingConfigurationOutput, _>()
9788    }
9789
9790    /// <p><p>Deletes an existing matchmaking rule set. To delete the rule set, provide the rule set name. Rule sets cannot be deleted if they are currently being used by a matchmaking configuration. </p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
9791    async fn delete_matchmaking_rule_set(
9792        &self,
9793        input: DeleteMatchmakingRuleSetInput,
9794    ) -> Result<DeleteMatchmakingRuleSetOutput, RusotoError<DeleteMatchmakingRuleSetError>> {
9795        let mut request = self.new_signed_request("POST", "/");
9796        request.add_header("x-amz-target", "GameLift.DeleteMatchmakingRuleSet");
9797        let encoded = serde_json::to_string(&input).unwrap();
9798        request.set_payload(Some(encoded));
9799
9800        let response = self
9801            .sign_and_dispatch(request, DeleteMatchmakingRuleSetError::from_response)
9802            .await?;
9803        let mut response = response;
9804        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9805        proto::json::ResponsePayload::new(&response)
9806            .deserialize::<DeleteMatchmakingRuleSetOutput, _>()
9807    }
9808
9809    /// <p><p>Deletes a fleet scaling policy. This action means that the policy is no longer in force and removes all record of it. To delete a scaling policy, specify both the scaling policy name and the fleet ID it is associated with.</p> <p>To temporarily suspend scaling policies, call <a>StopFleetActions</a>. This operation suspends all policies for the fleet.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
9810    async fn delete_scaling_policy(
9811        &self,
9812        input: DeleteScalingPolicyInput,
9813    ) -> Result<(), RusotoError<DeleteScalingPolicyError>> {
9814        let mut request = self.new_signed_request("POST", "/");
9815        request.add_header("x-amz-target", "GameLift.DeleteScalingPolicy");
9816        let encoded = serde_json::to_string(&input).unwrap();
9817        request.set_payload(Some(encoded));
9818
9819        let response = self
9820            .sign_and_dispatch(request, DeleteScalingPolicyError::from_response)
9821            .await?;
9822        std::mem::drop(response);
9823        Ok(())
9824    }
9825
9826    /// <p><p>Deletes a Realtime script. This action permanently deletes the script record. If script files were uploaded, they are also deleted (files stored in an S3 bucket are not deleted). </p> <p>To delete a script, specify the script ID. Before deleting a script, be sure to terminate all fleets that are deployed with the script being deleted. Fleet instances periodically check for script updates, and if the script record no longer exists, the instance will go into an error state and be unable to host game sessions.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
9827    async fn delete_script(
9828        &self,
9829        input: DeleteScriptInput,
9830    ) -> Result<(), RusotoError<DeleteScriptError>> {
9831        let mut request = self.new_signed_request("POST", "/");
9832        request.add_header("x-amz-target", "GameLift.DeleteScript");
9833        let encoded = serde_json::to_string(&input).unwrap();
9834        request.set_payload(Some(encoded));
9835
9836        let response = self
9837            .sign_and_dispatch(request, DeleteScriptError::from_response)
9838            .await?;
9839        std::mem::drop(response);
9840        Ok(())
9841    }
9842
9843    /// <p><p>Cancels a pending VPC peering authorization for the specified VPC. If you need to delete an existing VPC peering connection, call <a>DeleteVpcPeeringConnection</a>. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9844    async fn delete_vpc_peering_authorization(
9845        &self,
9846        input: DeleteVpcPeeringAuthorizationInput,
9847    ) -> Result<DeleteVpcPeeringAuthorizationOutput, RusotoError<DeleteVpcPeeringAuthorizationError>>
9848    {
9849        let mut request = self.new_signed_request("POST", "/");
9850        request.add_header("x-amz-target", "GameLift.DeleteVpcPeeringAuthorization");
9851        let encoded = serde_json::to_string(&input).unwrap();
9852        request.set_payload(Some(encoded));
9853
9854        let response = self
9855            .sign_and_dispatch(request, DeleteVpcPeeringAuthorizationError::from_response)
9856            .await?;
9857        let mut response = response;
9858        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9859        proto::json::ResponsePayload::new(&response)
9860            .deserialize::<DeleteVpcPeeringAuthorizationOutput, _>()
9861    }
9862
9863    /// <p><p>Removes a VPC peering connection. To delete the connection, you must have a valid authorization for the VPC peering connection that you want to delete. You can check for an authorization by calling <a>DescribeVpcPeeringAuthorizations</a> or request a new one using <a>CreateVpcPeeringAuthorization</a>. </p> <p>Once a valid authorization exists, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Identify the connection to delete by the connection ID and fleet ID. If successful, the connection is removed. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
9864    async fn delete_vpc_peering_connection(
9865        &self,
9866        input: DeleteVpcPeeringConnectionInput,
9867    ) -> Result<DeleteVpcPeeringConnectionOutput, RusotoError<DeleteVpcPeeringConnectionError>>
9868    {
9869        let mut request = self.new_signed_request("POST", "/");
9870        request.add_header("x-amz-target", "GameLift.DeleteVpcPeeringConnection");
9871        let encoded = serde_json::to_string(&input).unwrap();
9872        request.set_payload(Some(encoded));
9873
9874        let response = self
9875            .sign_and_dispatch(request, DeleteVpcPeeringConnectionError::from_response)
9876            .await?;
9877        let mut response = response;
9878        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9879        proto::json::ResponsePayload::new(&response)
9880            .deserialize::<DeleteVpcPeeringConnectionOutput, _>()
9881    }
9882
9883    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Removes the game server resource from the game server group. As a result of this action, the de-registered game server can no longer be claimed and will not returned in a list of active game servers. </p> <p>To de-register a game server, specify the game server group and game server ID. If successful, this action emits a CloudWatch event with termination time stamp and reason.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
9884    async fn deregister_game_server(
9885        &self,
9886        input: DeregisterGameServerInput,
9887    ) -> Result<(), RusotoError<DeregisterGameServerError>> {
9888        let mut request = self.new_signed_request("POST", "/");
9889        request.add_header("x-amz-target", "GameLift.DeregisterGameServer");
9890        let encoded = serde_json::to_string(&input).unwrap();
9891        request.set_payload(Some(encoded));
9892
9893        let response = self
9894            .sign_and_dispatch(request, DeregisterGameServerError::from_response)
9895            .await?;
9896        std::mem::drop(response);
9897        Ok(())
9898    }
9899
9900    /// <p><p>Retrieves properties for an alias. This operation returns all alias metadata and settings. To get an alias&#39;s target fleet ID only, use <code>ResolveAlias</code>. </p> <p>To get alias properties, specify the alias ID. If successful, the requested alias record is returned.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
9901    async fn describe_alias(
9902        &self,
9903        input: DescribeAliasInput,
9904    ) -> Result<DescribeAliasOutput, RusotoError<DescribeAliasError>> {
9905        let mut request = self.new_signed_request("POST", "/");
9906        request.add_header("x-amz-target", "GameLift.DescribeAlias");
9907        let encoded = serde_json::to_string(&input).unwrap();
9908        request.set_payload(Some(encoded));
9909
9910        let response = self
9911            .sign_and_dispatch(request, DescribeAliasError::from_response)
9912            .await?;
9913        let mut response = response;
9914        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9915        proto::json::ResponsePayload::new(&response).deserialize::<DescribeAliasOutput, _>()
9916    }
9917
9918    /// <p><p>Retrieves properties for a custom game build. To request a build resource, specify a build ID. If successful, an object containing the build properties is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
9919    async fn describe_build(
9920        &self,
9921        input: DescribeBuildInput,
9922    ) -> Result<DescribeBuildOutput, RusotoError<DescribeBuildError>> {
9923        let mut request = self.new_signed_request("POST", "/");
9924        request.add_header("x-amz-target", "GameLift.DescribeBuild");
9925        let encoded = serde_json::to_string(&input).unwrap();
9926        request.set_payload(Some(encoded));
9927
9928        let response = self
9929            .sign_and_dispatch(request, DescribeBuildError::from_response)
9930            .await?;
9931        let mut response = response;
9932        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9933        proto::json::ResponsePayload::new(&response).deserialize::<DescribeBuildOutput, _>()
9934    }
9935
9936    /// <p><p>Retrieves the following information for the specified EC2 instance type:</p> <ul> <li> <p>Maximum number of instances allowed per AWS account (service limit).</p> </li> <li> <p>Current usage for the AWS account.</p> </li> </ul> <p>To learn more about the capabilities of each instance type, see <a href="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 Instance Types</a>. Note that the instance types offered may vary depending on the region.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9937    async fn describe_ec2_instance_limits(
9938        &self,
9939        input: DescribeEC2InstanceLimitsInput,
9940    ) -> Result<DescribeEC2InstanceLimitsOutput, RusotoError<DescribeEC2InstanceLimitsError>> {
9941        let mut request = self.new_signed_request("POST", "/");
9942        request.add_header("x-amz-target", "GameLift.DescribeEC2InstanceLimits");
9943        let encoded = serde_json::to_string(&input).unwrap();
9944        request.set_payload(Some(encoded));
9945
9946        let response = self
9947            .sign_and_dispatch(request, DescribeEC2InstanceLimitsError::from_response)
9948            .await?;
9949        let mut response = response;
9950        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9951        proto::json::ResponsePayload::new(&response)
9952            .deserialize::<DescribeEC2InstanceLimitsOutput, _>()
9953    }
9954
9955    /// <p><p>Retrieves core properties, including configuration, status, and metadata, for a fleet. </p> <p>To get attributes for one or more fleets, provide a list of fleet IDs or fleet ARNs. To get attributes for all fleets, do not specify a fleet identifier. When requesting attributes for multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetAttributes</a> object is returned for each fleet requested, unless the fleet identifier is not found.</p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed number.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9956    async fn describe_fleet_attributes(
9957        &self,
9958        input: DescribeFleetAttributesInput,
9959    ) -> Result<DescribeFleetAttributesOutput, RusotoError<DescribeFleetAttributesError>> {
9960        let mut request = self.new_signed_request("POST", "/");
9961        request.add_header("x-amz-target", "GameLift.DescribeFleetAttributes");
9962        let encoded = serde_json::to_string(&input).unwrap();
9963        request.set_payload(Some(encoded));
9964
9965        let response = self
9966            .sign_and_dispatch(request, DescribeFleetAttributesError::from_response)
9967            .await?;
9968        let mut response = response;
9969        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9970        proto::json::ResponsePayload::new(&response)
9971            .deserialize::<DescribeFleetAttributesOutput, _>()
9972    }
9973
9974    /// <p><p>Retrieves the current capacity statistics for one or more fleets. These statistics present a snapshot of the fleet&#39;s instances and provide insight on current or imminent scaling activity. To get statistics on game hosting activity in the fleet, see <a>DescribeFleetUtilization</a>.</p> <p>You can request capacity for all fleets or specify a list of one or more fleet identifiers. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetCapacity</a> object is returned for each requested fleet ID. When a list of fleet IDs is provided, attribute objects are returned only for fleets that currently exist.</p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html#gamelift-metrics-fleet">GameLift Metrics for Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9975    async fn describe_fleet_capacity(
9976        &self,
9977        input: DescribeFleetCapacityInput,
9978    ) -> Result<DescribeFleetCapacityOutput, RusotoError<DescribeFleetCapacityError>> {
9979        let mut request = self.new_signed_request("POST", "/");
9980        request.add_header("x-amz-target", "GameLift.DescribeFleetCapacity");
9981        let encoded = serde_json::to_string(&input).unwrap();
9982        request.set_payload(Some(encoded));
9983
9984        let response = self
9985            .sign_and_dispatch(request, DescribeFleetCapacityError::from_response)
9986            .await?;
9987        let mut response = response;
9988        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
9989        proto::json::ResponsePayload::new(&response).deserialize::<DescribeFleetCapacityOutput, _>()
9990    }
9991
9992    /// <p><p>Retrieves entries from the specified fleet&#39;s event log. You can specify a time range to limit the result set. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a collection of event log entries matching the request are returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
9993    async fn describe_fleet_events(
9994        &self,
9995        input: DescribeFleetEventsInput,
9996    ) -> Result<DescribeFleetEventsOutput, RusotoError<DescribeFleetEventsError>> {
9997        let mut request = self.new_signed_request("POST", "/");
9998        request.add_header("x-amz-target", "GameLift.DescribeFleetEvents");
9999        let encoded = serde_json::to_string(&input).unwrap();
10000        request.set_payload(Some(encoded));
10001
10002        let response = self
10003            .sign_and_dispatch(request, DescribeFleetEventsError::from_response)
10004            .await?;
10005        let mut response = response;
10006        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10007        proto::json::ResponsePayload::new(&response).deserialize::<DescribeFleetEventsOutput, _>()
10008    }
10009
10010    /// <p><p>Retrieves a fleet&#39;s inbound connection permissions. Connection permissions specify the range of IP addresses and port settings that incoming traffic can use to access server processes in the fleet. Game sessions that are running on instances in the fleet use connections that fall in this range. </p> <p>To get a fleet&#39;s inbound connection permissions, specify the fleet&#39;s unique identifier. If successful, a collection of <a>IpPermission</a> objects is returned for the requested fleet ID. If the requested fleet has been deleted, the result set is empty.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10011    async fn describe_fleet_port_settings(
10012        &self,
10013        input: DescribeFleetPortSettingsInput,
10014    ) -> Result<DescribeFleetPortSettingsOutput, RusotoError<DescribeFleetPortSettingsError>> {
10015        let mut request = self.new_signed_request("POST", "/");
10016        request.add_header("x-amz-target", "GameLift.DescribeFleetPortSettings");
10017        let encoded = serde_json::to_string(&input).unwrap();
10018        request.set_payload(Some(encoded));
10019
10020        let response = self
10021            .sign_and_dispatch(request, DescribeFleetPortSettingsError::from_response)
10022            .await?;
10023        let mut response = response;
10024        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10025        proto::json::ResponsePayload::new(&response)
10026            .deserialize::<DescribeFleetPortSettingsOutput, _>()
10027    }
10028
10029    /// <p><p>Retrieves utilization statistics for one or more fleets. These statistics provide insight into how available hosting resources are currently being used. To get statistics on available hosting resources, see <a>DescribeFleetCapacity</a>.</p> <p>You can request utilization data for all fleets, or specify a list of one or more fleet IDs. When requesting multiple fleets, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>FleetUtilization</a> object is returned for each requested fleet ID, unless the fleet identifier is not found. </p> <note> <p>Some API actions may limit the number of fleet IDs allowed in one request. If a request exceeds this limit, the request fails and the error message includes the maximum allowed.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/monitoring-cloudwatch.html#gamelift-metrics-fleet">GameLift Metrics for Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10030    async fn describe_fleet_utilization(
10031        &self,
10032        input: DescribeFleetUtilizationInput,
10033    ) -> Result<DescribeFleetUtilizationOutput, RusotoError<DescribeFleetUtilizationError>> {
10034        let mut request = self.new_signed_request("POST", "/");
10035        request.add_header("x-amz-target", "GameLift.DescribeFleetUtilization");
10036        let encoded = serde_json::to_string(&input).unwrap();
10037        request.set_payload(Some(encoded));
10038
10039        let response = self
10040            .sign_and_dispatch(request, DescribeFleetUtilizationError::from_response)
10041            .await?;
10042        let mut response = response;
10043        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10044        proto::json::ResponsePayload::new(&response)
10045            .deserialize::<DescribeFleetUtilizationOutput, _>()
10046    }
10047
10048    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information for a game server resource. Information includes the game server statuses, health check info, and the instance the game server is running on. </p> <p>To retrieve game server information, specify the game server ID. If successful, the requested game server object is returned. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
10049    async fn describe_game_server(
10050        &self,
10051        input: DescribeGameServerInput,
10052    ) -> Result<DescribeGameServerOutput, RusotoError<DescribeGameServerError>> {
10053        let mut request = self.new_signed_request("POST", "/");
10054        request.add_header("x-amz-target", "GameLift.DescribeGameServer");
10055        let encoded = serde_json::to_string(&input).unwrap();
10056        request.set_payload(Some(encoded));
10057
10058        let response = self
10059            .sign_and_dispatch(request, DescribeGameServerError::from_response)
10060            .await?;
10061        let mut response = response;
10062        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10063        proto::json::ResponsePayload::new(&response).deserialize::<DescribeGameServerOutput, _>()
10064    }
10065
10066    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on a game server group. </p> <p>To get attributes for a game server group, provide a group name or ARN value. If successful, a <a>GameServerGroup</a> object is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
10067    async fn describe_game_server_group(
10068        &self,
10069        input: DescribeGameServerGroupInput,
10070    ) -> Result<DescribeGameServerGroupOutput, RusotoError<DescribeGameServerGroupError>> {
10071        let mut request = self.new_signed_request("POST", "/");
10072        request.add_header("x-amz-target", "GameLift.DescribeGameServerGroup");
10073        let encoded = serde_json::to_string(&input).unwrap();
10074        request.set_payload(Some(encoded));
10075
10076        let response = self
10077            .sign_and_dispatch(request, DescribeGameServerGroupError::from_response)
10078            .await?;
10079        let mut response = response;
10080        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10081        proto::json::ResponsePayload::new(&response)
10082            .deserialize::<DescribeGameServerGroupOutput, _>()
10083    }
10084
10085    /// <p><p>Retrieves properties, including the protection policy in force, for one or more game sessions. This action can be used in several ways: (1) provide a <code>GameSessionId</code> or <code>GameSessionArn</code> to request details for a specific game session; (2) provide either a <code>FleetId</code> or an <code>AliasId</code> to request properties for all game sessions running on a fleet. </p> <p>To get game session record(s), specify just one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSessionDetail</a> object is returned for each session matching the request.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10086    async fn describe_game_session_details(
10087        &self,
10088        input: DescribeGameSessionDetailsInput,
10089    ) -> Result<DescribeGameSessionDetailsOutput, RusotoError<DescribeGameSessionDetailsError>>
10090    {
10091        let mut request = self.new_signed_request("POST", "/");
10092        request.add_header("x-amz-target", "GameLift.DescribeGameSessionDetails");
10093        let encoded = serde_json::to_string(&input).unwrap();
10094        request.set_payload(Some(encoded));
10095
10096        let response = self
10097            .sign_and_dispatch(request, DescribeGameSessionDetailsError::from_response)
10098            .await?;
10099        let mut response = response;
10100        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10101        proto::json::ResponsePayload::new(&response)
10102            .deserialize::<DescribeGameSessionDetailsOutput, _>()
10103    }
10104
10105    /// <p><p>Retrieves properties and current status of a game session placement request. To get game session placement details, specify the placement ID. If successful, a <a>GameSessionPlacement</a> object is returned.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10106    async fn describe_game_session_placement(
10107        &self,
10108        input: DescribeGameSessionPlacementInput,
10109    ) -> Result<DescribeGameSessionPlacementOutput, RusotoError<DescribeGameSessionPlacementError>>
10110    {
10111        let mut request = self.new_signed_request("POST", "/");
10112        request.add_header("x-amz-target", "GameLift.DescribeGameSessionPlacement");
10113        let encoded = serde_json::to_string(&input).unwrap();
10114        request.set_payload(Some(encoded));
10115
10116        let response = self
10117            .sign_and_dispatch(request, DescribeGameSessionPlacementError::from_response)
10118            .await?;
10119        let mut response = response;
10120        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10121        proto::json::ResponsePayload::new(&response)
10122            .deserialize::<DescribeGameSessionPlacementOutput, _>()
10123    }
10124
10125    /// <p><p>Retrieves the properties for one or more game session queues. When requesting multiple queues, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSessionQueue</a> object is returned for each requested queue. When specifying a list of queues, objects are returned only for queues that currently exist in the Region.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-console.html"> View Your Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
10126    async fn describe_game_session_queues(
10127        &self,
10128        input: DescribeGameSessionQueuesInput,
10129    ) -> Result<DescribeGameSessionQueuesOutput, RusotoError<DescribeGameSessionQueuesError>> {
10130        let mut request = self.new_signed_request("POST", "/");
10131        request.add_header("x-amz-target", "GameLift.DescribeGameSessionQueues");
10132        let encoded = serde_json::to_string(&input).unwrap();
10133        request.set_payload(Some(encoded));
10134
10135        let response = self
10136            .sign_and_dispatch(request, DescribeGameSessionQueuesError::from_response)
10137            .await?;
10138        let mut response = response;
10139        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10140        proto::json::ResponsePayload::new(&response)
10141            .deserialize::<DescribeGameSessionQueuesOutput, _>()
10142    }
10143
10144    /// <p><p>Retrieves a set of one or more game sessions. Request a specific game session or request all game sessions on a fleet. Alternatively, use <a>SearchGameSessions</a> to request a set of active game sessions that are filtered by certain criteria. To retrieve protection policy settings for game sessions, use <a>DescribeGameSessionDetails</a>.</p> <p>To get game sessions, specify one of the following: game session ID, fleet ID, or alias ID. You can filter this request by game session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>GameSession</a> object is returned for each game session matching the request.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10145    async fn describe_game_sessions(
10146        &self,
10147        input: DescribeGameSessionsInput,
10148    ) -> Result<DescribeGameSessionsOutput, RusotoError<DescribeGameSessionsError>> {
10149        let mut request = self.new_signed_request("POST", "/");
10150        request.add_header("x-amz-target", "GameLift.DescribeGameSessions");
10151        let encoded = serde_json::to_string(&input).unwrap();
10152        request.set_payload(Some(encoded));
10153
10154        let response = self
10155            .sign_and_dispatch(request, DescribeGameSessionsError::from_response)
10156            .await?;
10157        let mut response = response;
10158        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10159        proto::json::ResponsePayload::new(&response).deserialize::<DescribeGameSessionsOutput, _>()
10160    }
10161
10162    /// <p><p>Retrieves information about a fleet&#39;s instances, including instance IDs. Use this action to get details on all instances in the fleet or get details on one specific instance.</p> <p>To get a specific instance, specify fleet ID and instance ID. To get all instances in a fleet, specify a fleet ID only. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, an <a>Instance</a> object is returned for each result.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-remote-access.html">Remotely Access Fleet Instances</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html">Debug Fleet Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>DescribeInstances</a> </p> </li> <li> <p> <a>GetInstanceAccess</a> </p> </li> </ul></p>
10163    async fn describe_instances(
10164        &self,
10165        input: DescribeInstancesInput,
10166    ) -> Result<DescribeInstancesOutput, RusotoError<DescribeInstancesError>> {
10167        let mut request = self.new_signed_request("POST", "/");
10168        request.add_header("x-amz-target", "GameLift.DescribeInstances");
10169        let encoded = serde_json::to_string(&input).unwrap();
10170        request.set_payload(Some(encoded));
10171
10172        let response = self
10173            .sign_and_dispatch(request, DescribeInstancesError::from_response)
10174            .await?;
10175        let mut response = response;
10176        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10177        proto::json::ResponsePayload::new(&response).deserialize::<DescribeInstancesOutput, _>()
10178    }
10179
10180    /// <p><p>Retrieves one or more matchmaking tickets. Use this operation to retrieve ticket information, including status and--once a successful match is made--acquire connection information for the resulting new game session. </p> <p>You can use this operation to track the progress of matchmaking requests (through polling) as an alternative to using event notifications. See more details on tracking matchmaking requests through polling or notifications in <a>StartMatchmaking</a>. </p> <p>To request matchmaking tickets, provide a list of up to 10 ticket IDs. If the request is successful, a ticket object is returned for each requested ID that currently exists.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Set Up FlexMatch Event Notification</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
10181    async fn describe_matchmaking(
10182        &self,
10183        input: DescribeMatchmakingInput,
10184    ) -> Result<DescribeMatchmakingOutput, RusotoError<DescribeMatchmakingError>> {
10185        let mut request = self.new_signed_request("POST", "/");
10186        request.add_header("x-amz-target", "GameLift.DescribeMatchmaking");
10187        let encoded = serde_json::to_string(&input).unwrap();
10188        request.set_payload(Some(encoded));
10189
10190        let response = self
10191            .sign_and_dispatch(request, DescribeMatchmakingError::from_response)
10192            .await?;
10193        let mut response = response;
10194        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10195        proto::json::ResponsePayload::new(&response).deserialize::<DescribeMatchmakingOutput, _>()
10196    }
10197
10198    /// <p><p>Retrieves the details of FlexMatch matchmaking configurations. With this operation, you have the following options: (1) retrieve all existing configurations, (2) provide the names of one or more configurations to retrieve, or (3) retrieve all configurations that use a specified rule set name. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a configuration is returned for each requested name. When specifying a list of names, only configurations that currently exist are returned. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/matchmaker-build.html"> Setting Up FlexMatch Matchmakers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
10199    async fn describe_matchmaking_configurations(
10200        &self,
10201        input: DescribeMatchmakingConfigurationsInput,
10202    ) -> Result<
10203        DescribeMatchmakingConfigurationsOutput,
10204        RusotoError<DescribeMatchmakingConfigurationsError>,
10205    > {
10206        let mut request = self.new_signed_request("POST", "/");
10207        request.add_header("x-amz-target", "GameLift.DescribeMatchmakingConfigurations");
10208        let encoded = serde_json::to_string(&input).unwrap();
10209        request.set_payload(Some(encoded));
10210
10211        let response = self
10212            .sign_and_dispatch(
10213                request,
10214                DescribeMatchmakingConfigurationsError::from_response,
10215            )
10216            .await?;
10217        let mut response = response;
10218        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10219        proto::json::ResponsePayload::new(&response)
10220            .deserialize::<DescribeMatchmakingConfigurationsOutput, _>()
10221    }
10222
10223    /// <p><p>Retrieves the details for FlexMatch matchmaking rule sets. You can request all existing rule sets for the Region, or provide a list of one or more rule set names. When requesting multiple items, use the pagination parameters to retrieve results as a set of sequential pages. If successful, a rule set is returned for each requested name. </p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
10224    async fn describe_matchmaking_rule_sets(
10225        &self,
10226        input: DescribeMatchmakingRuleSetsInput,
10227    ) -> Result<DescribeMatchmakingRuleSetsOutput, RusotoError<DescribeMatchmakingRuleSetsError>>
10228    {
10229        let mut request = self.new_signed_request("POST", "/");
10230        request.add_header("x-amz-target", "GameLift.DescribeMatchmakingRuleSets");
10231        let encoded = serde_json::to_string(&input).unwrap();
10232        request.set_payload(Some(encoded));
10233
10234        let response = self
10235            .sign_and_dispatch(request, DescribeMatchmakingRuleSetsError::from_response)
10236            .await?;
10237        let mut response = response;
10238        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10239        proto::json::ResponsePayload::new(&response)
10240            .deserialize::<DescribeMatchmakingRuleSetsOutput, _>()
10241    }
10242
10243    /// <p><p>Retrieves properties for one or more player sessions. This action can be used in several ways: (1) provide a <code>PlayerSessionId</code> to request properties for a specific player session; (2) provide a <code>GameSessionId</code> to request properties for all player sessions in the specified game session; (3) provide a <code>PlayerId</code> to request properties for all player sessions of a specified player. </p> <p>To get game session record(s), specify only one of the following: a player session ID, a game session ID, or a player ID. You can filter this request by player session status. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a <a>PlayerSession</a> object is returned for each session matching the request.</p> <p> <i>Available in Amazon GameLift Local.</i> </p> <ul> <li> <p> <a>CreatePlayerSession</a> </p> </li> <li> <p> <a>CreatePlayerSessions</a> </p> </li> <li> <p> <a>DescribePlayerSessions</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10244    async fn describe_player_sessions(
10245        &self,
10246        input: DescribePlayerSessionsInput,
10247    ) -> Result<DescribePlayerSessionsOutput, RusotoError<DescribePlayerSessionsError>> {
10248        let mut request = self.new_signed_request("POST", "/");
10249        request.add_header("x-amz-target", "GameLift.DescribePlayerSessions");
10250        let encoded = serde_json::to_string(&input).unwrap();
10251        request.set_payload(Some(encoded));
10252
10253        let response = self
10254            .sign_and_dispatch(request, DescribePlayerSessionsError::from_response)
10255            .await?;
10256        let mut response = response;
10257        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10258        proto::json::ResponsePayload::new(&response)
10259            .deserialize::<DescribePlayerSessionsOutput, _>()
10260    }
10261
10262    /// <p><p>Retrieves a fleet&#39;s runtime configuration settings. The runtime configuration tells Amazon GameLift which server processes to run (and how) on each instance in the fleet.</p> <p>To get a runtime configuration, specify the fleet&#39;s unique identifier. If successful, a <a>RuntimeConfiguration</a> object is returned for the requested fleet. If the requested fleet has been deleted, the result set is empty.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-multiprocess.html">Running Multiple Processes on a Fleet</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p>Describe fleets:</p> <ul> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>DescribeFleetPortSettings</a> </p> </li> <li> <p> <a>DescribeFleetUtilization</a> </p> </li> <li> <p> <a>DescribeRuntimeConfiguration</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p> <a>DescribeFleetEvents</a> </p> </li> </ul> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10263    async fn describe_runtime_configuration(
10264        &self,
10265        input: DescribeRuntimeConfigurationInput,
10266    ) -> Result<DescribeRuntimeConfigurationOutput, RusotoError<DescribeRuntimeConfigurationError>>
10267    {
10268        let mut request = self.new_signed_request("POST", "/");
10269        request.add_header("x-amz-target", "GameLift.DescribeRuntimeConfiguration");
10270        let encoded = serde_json::to_string(&input).unwrap();
10271        request.set_payload(Some(encoded));
10272
10273        let response = self
10274            .sign_and_dispatch(request, DescribeRuntimeConfigurationError::from_response)
10275            .await?;
10276        let mut response = response;
10277        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10278        proto::json::ResponsePayload::new(&response)
10279            .deserialize::<DescribeRuntimeConfigurationOutput, _>()
10280    }
10281
10282    /// <p><p>Retrieves all scaling policies applied to a fleet.</p> <p>To get a fleet&#39;s scaling policies, specify the fleet ID. You can filter this request by policy status, such as to retrieve only active scaling policies. Use the pagination parameters to retrieve results as a set of sequential pages. If successful, set of <a>ScalingPolicy</a> objects is returned for the fleet.</p> <p>A fleet may have all of its scaling policies suspended (<a>StopFleetActions</a>). This action does not affect the status of the scaling policies, which remains ACTIVE. To see whether a fleet&#39;s scaling policies are in force or suspended, call <a>DescribeFleetAttributes</a> and check the stopped actions.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
10283    async fn describe_scaling_policies(
10284        &self,
10285        input: DescribeScalingPoliciesInput,
10286    ) -> Result<DescribeScalingPoliciesOutput, RusotoError<DescribeScalingPoliciesError>> {
10287        let mut request = self.new_signed_request("POST", "/");
10288        request.add_header("x-amz-target", "GameLift.DescribeScalingPolicies");
10289        let encoded = serde_json::to_string(&input).unwrap();
10290        request.set_payload(Some(encoded));
10291
10292        let response = self
10293            .sign_and_dispatch(request, DescribeScalingPoliciesError::from_response)
10294            .await?;
10295        let mut response = response;
10296        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10297        proto::json::ResponsePayload::new(&response)
10298            .deserialize::<DescribeScalingPoliciesOutput, _>()
10299    }
10300
10301    /// <p><p>Retrieves properties for a Realtime script. </p> <p>To request a script record, specify the script ID. If successful, an object containing the script properties is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
10302    async fn describe_script(
10303        &self,
10304        input: DescribeScriptInput,
10305    ) -> Result<DescribeScriptOutput, RusotoError<DescribeScriptError>> {
10306        let mut request = self.new_signed_request("POST", "/");
10307        request.add_header("x-amz-target", "GameLift.DescribeScript");
10308        let encoded = serde_json::to_string(&input).unwrap();
10309        request.set_payload(Some(encoded));
10310
10311        let response = self
10312            .sign_and_dispatch(request, DescribeScriptError::from_response)
10313            .await?;
10314        let mut response = response;
10315        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10316        proto::json::ResponsePayload::new(&response).deserialize::<DescribeScriptOutput, _>()
10317    }
10318
10319    /// <p><p>Retrieves valid VPC peering authorizations that are pending for the AWS account. This operation returns all VPC peering authorizations and requests for peering. This includes those initiated and received by this account. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
10320    async fn describe_vpc_peering_authorizations(
10321        &self,
10322    ) -> Result<
10323        DescribeVpcPeeringAuthorizationsOutput,
10324        RusotoError<DescribeVpcPeeringAuthorizationsError>,
10325    > {
10326        let mut request = self.new_signed_request("POST", "/");
10327        request.add_header("x-amz-target", "GameLift.DescribeVpcPeeringAuthorizations");
10328        request.set_payload(Some(bytes::Bytes::from_static(b"{}")));
10329
10330        let response = self
10331            .sign_and_dispatch(
10332                request,
10333                DescribeVpcPeeringAuthorizationsError::from_response,
10334            )
10335            .await?;
10336        let mut response = response;
10337        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10338        proto::json::ResponsePayload::new(&response)
10339            .deserialize::<DescribeVpcPeeringAuthorizationsOutput, _>()
10340    }
10341
10342    /// <p><p>Retrieves information on VPC peering connections. Use this operation to get peering information for all fleets or for one specific fleet ID. </p> <p>To retrieve connection information, call this operation from the AWS account that is used to manage the Amazon GameLift fleets. Specify a fleet ID or leave the parameter empty to retrieve all connection records. If successful, the retrieved information includes both active and pending connections. Active connections identify the IpV4 CIDR block that the VPC uses to connect. </p> <ul> <li> <p> <a>CreateVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>DescribeVpcPeeringAuthorizations</a> </p> </li> <li> <p> <a>DeleteVpcPeeringAuthorization</a> </p> </li> <li> <p> <a>CreateVpcPeeringConnection</a> </p> </li> <li> <p> <a>DescribeVpcPeeringConnections</a> </p> </li> <li> <p> <a>DeleteVpcPeeringConnection</a> </p> </li> </ul></p>
10343    async fn describe_vpc_peering_connections(
10344        &self,
10345        input: DescribeVpcPeeringConnectionsInput,
10346    ) -> Result<DescribeVpcPeeringConnectionsOutput, RusotoError<DescribeVpcPeeringConnectionsError>>
10347    {
10348        let mut request = self.new_signed_request("POST", "/");
10349        request.add_header("x-amz-target", "GameLift.DescribeVpcPeeringConnections");
10350        let encoded = serde_json::to_string(&input).unwrap();
10351        request.set_payload(Some(encoded));
10352
10353        let response = self
10354            .sign_and_dispatch(request, DescribeVpcPeeringConnectionsError::from_response)
10355            .await?;
10356        let mut response = response;
10357        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10358        proto::json::ResponsePayload::new(&response)
10359            .deserialize::<DescribeVpcPeeringConnectionsOutput, _>()
10360    }
10361
10362    /// <p><p>Retrieves the location of stored game session logs for a specified game session. When a game session is terminated, Amazon GameLift automatically stores the logs in Amazon S3 and retains them for 14 days. Use this URL to download the logs.</p> <note> <p>See the <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_gamelift">AWS Service Limits</a> page for maximum log file sizes. Log files that exceed this limit are not saved.</p> </note> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10363    async fn get_game_session_log_url(
10364        &self,
10365        input: GetGameSessionLogUrlInput,
10366    ) -> Result<GetGameSessionLogUrlOutput, RusotoError<GetGameSessionLogUrlError>> {
10367        let mut request = self.new_signed_request("POST", "/");
10368        request.add_header("x-amz-target", "GameLift.GetGameSessionLogUrl");
10369        let encoded = serde_json::to_string(&input).unwrap();
10370        request.set_payload(Some(encoded));
10371
10372        let response = self
10373            .sign_and_dispatch(request, GetGameSessionLogUrlError::from_response)
10374            .await?;
10375        let mut response = response;
10376        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10377        proto::json::ResponsePayload::new(&response).deserialize::<GetGameSessionLogUrlOutput, _>()
10378    }
10379
10380    /// <p><p>Requests remote access to a fleet instance. Remote access is useful for debugging, gathering benchmarking data, or observing activity in real time. </p> <p>To remotely access an instance, you need credentials that match the operating system of the instance. For a Windows instance, Amazon GameLift returns a user name and password as strings for use with a Windows Remote Desktop client. For a Linux instance, Amazon GameLift returns a user name and RSA private key, also as strings, for use with an SSH client. The private key must be saved in the proper format to a <code>.pem</code> file before using. If you&#39;re making this request using the AWS CLI, saving the secret can be handled as part of the GetInstanceAccess request, as shown in one of the examples for this action. </p> <p>To request access to a specific instance, specify the IDs of both the instance and the fleet it belongs to. You can retrieve a fleet&#39;s instance IDs by calling <a>DescribeInstances</a>. If successful, an <a>InstanceAccess</a> object is returned that contains the instance&#39;s IP address and a set of credentials.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-remote-access.html">Remotely Access Fleet Instances</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html">Debug Fleet Issues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>DescribeInstances</a> </p> </li> <li> <p> <a>GetInstanceAccess</a> </p> </li> </ul></p>
10381    async fn get_instance_access(
10382        &self,
10383        input: GetInstanceAccessInput,
10384    ) -> Result<GetInstanceAccessOutput, RusotoError<GetInstanceAccessError>> {
10385        let mut request = self.new_signed_request("POST", "/");
10386        request.add_header("x-amz-target", "GameLift.GetInstanceAccess");
10387        let encoded = serde_json::to_string(&input).unwrap();
10388        request.set_payload(Some(encoded));
10389
10390        let response = self
10391            .sign_and_dispatch(request, GetInstanceAccessError::from_response)
10392            .await?;
10393        let mut response = response;
10394        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10395        proto::json::ResponsePayload::new(&response).deserialize::<GetInstanceAccessOutput, _>()
10396    }
10397
10398    /// <p><p>Retrieves all aliases for this AWS account. You can filter the result set by alias name and/or routing strategy type. Use the pagination parameters to retrieve results in sequential pages.</p> <note> <p>Returned aliases are not listed in any particular order.</p> </note> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
10399    async fn list_aliases(
10400        &self,
10401        input: ListAliasesInput,
10402    ) -> Result<ListAliasesOutput, RusotoError<ListAliasesError>> {
10403        let mut request = self.new_signed_request("POST", "/");
10404        request.add_header("x-amz-target", "GameLift.ListAliases");
10405        let encoded = serde_json::to_string(&input).unwrap();
10406        request.set_payload(Some(encoded));
10407
10408        let response = self
10409            .sign_and_dispatch(request, ListAliasesError::from_response)
10410            .await?;
10411        let mut response = response;
10412        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10413        proto::json::ResponsePayload::new(&response).deserialize::<ListAliasesOutput, _>()
10414    }
10415
10416    /// <p><p>Retrieves build resources for all builds associated with the AWS account in use. You can limit results to builds that are in a specific status by using the <code>Status</code> parameter. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <note> <p>Build resources are not listed in any particular order.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
10417    async fn list_builds(
10418        &self,
10419        input: ListBuildsInput,
10420    ) -> Result<ListBuildsOutput, RusotoError<ListBuildsError>> {
10421        let mut request = self.new_signed_request("POST", "/");
10422        request.add_header("x-amz-target", "GameLift.ListBuilds");
10423        let encoded = serde_json::to_string(&input).unwrap();
10424        request.set_payload(Some(encoded));
10425
10426        let response = self
10427            .sign_and_dispatch(request, ListBuildsError::from_response)
10428            .await?;
10429        let mut response = response;
10430        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10431        proto::json::ResponsePayload::new(&response).deserialize::<ListBuildsOutput, _>()
10432    }
10433
10434    /// <p><p>Retrieves a collection of fleet resources for this AWS account. You can filter the result set to find only those fleets that are deployed with a specific build or script. Use the pagination parameters to retrieve results in sequential pages.</p> <note> <p>Fleet resources are not listed in a particular order.</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10435    async fn list_fleets(
10436        &self,
10437        input: ListFleetsInput,
10438    ) -> Result<ListFleetsOutput, RusotoError<ListFleetsError>> {
10439        let mut request = self.new_signed_request("POST", "/");
10440        request.add_header("x-amz-target", "GameLift.ListFleets");
10441        let encoded = serde_json::to_string(&input).unwrap();
10442        request.set_payload(Some(encoded));
10443
10444        let response = self
10445            .sign_and_dispatch(request, ListFleetsError::from_response)
10446            .await?;
10447        let mut response = response;
10448        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10449        proto::json::ResponsePayload::new(&response).deserialize::<ListFleetsOutput, _>()
10450    }
10451
10452    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on all game servers groups that exist in the current AWS account for the selected region. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
10453    async fn list_game_server_groups(
10454        &self,
10455        input: ListGameServerGroupsInput,
10456    ) -> Result<ListGameServerGroupsOutput, RusotoError<ListGameServerGroupsError>> {
10457        let mut request = self.new_signed_request("POST", "/");
10458        request.add_header("x-amz-target", "GameLift.ListGameServerGroups");
10459        let encoded = serde_json::to_string(&input).unwrap();
10460        request.set_payload(Some(encoded));
10461
10462        let response = self
10463            .sign_and_dispatch(request, ListGameServerGroupsError::from_response)
10464            .await?;
10465        let mut response = response;
10466        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10467        proto::json::ResponsePayload::new(&response).deserialize::<ListGameServerGroupsOutput, _>()
10468    }
10469
10470    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Retrieves information on all game servers that are currently running in a specified game server group. If there are custom key sort values for your game servers, you can opt to have the returned list sorted based on these values. Use the pagination parameters to retrieve results in a set of sequential pages. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
10471    async fn list_game_servers(
10472        &self,
10473        input: ListGameServersInput,
10474    ) -> Result<ListGameServersOutput, RusotoError<ListGameServersError>> {
10475        let mut request = self.new_signed_request("POST", "/");
10476        request.add_header("x-amz-target", "GameLift.ListGameServers");
10477        let encoded = serde_json::to_string(&input).unwrap();
10478        request.set_payload(Some(encoded));
10479
10480        let response = self
10481            .sign_and_dispatch(request, ListGameServersError::from_response)
10482            .await?;
10483        let mut response = response;
10484        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10485        proto::json::ResponsePayload::new(&response).deserialize::<ListGameServersOutput, _>()
10486    }
10487
10488    /// <p><p>Retrieves script records for all Realtime scripts that are associated with the AWS account in use. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
10489    async fn list_scripts(
10490        &self,
10491        input: ListScriptsInput,
10492    ) -> Result<ListScriptsOutput, RusotoError<ListScriptsError>> {
10493        let mut request = self.new_signed_request("POST", "/");
10494        request.add_header("x-amz-target", "GameLift.ListScripts");
10495        let encoded = serde_json::to_string(&input).unwrap();
10496        request.set_payload(Some(encoded));
10497
10498        let response = self
10499            .sign_and_dispatch(request, ListScriptsError::from_response)
10500            .await?;
10501        let mut response = response;
10502        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10503        proto::json::ResponsePayload::new(&response).deserialize::<ListScriptsOutput, _>()
10504    }
10505
10506    /// <p><p> Retrieves all tags that are assigned to a GameLift resource. Resource tags are used to organize AWS resources for a range of purposes. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To list tags for a resource, specify the unique ARN value for the resource.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
10507    async fn list_tags_for_resource(
10508        &self,
10509        input: ListTagsForResourceRequest,
10510    ) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
10511        let mut request = self.new_signed_request("POST", "/");
10512        request.add_header("x-amz-target", "GameLift.ListTagsForResource");
10513        let encoded = serde_json::to_string(&input).unwrap();
10514        request.set_payload(Some(encoded));
10515
10516        let response = self
10517            .sign_and_dispatch(request, ListTagsForResourceError::from_response)
10518            .await?;
10519        let mut response = response;
10520        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10521        proto::json::ResponsePayload::new(&response).deserialize::<ListTagsForResourceResponse, _>()
10522    }
10523
10524    /// <p><p>Creates or updates a scaling policy for a fleet. Scaling policies are used to automatically scale a fleet&#39;s hosting capacity to meet player demand. An active scaling policy instructs Amazon GameLift to track a fleet metric and automatically change the fleet&#39;s capacity when a certain threshold is reached. There are two types of scaling policies: target-based and rule-based. Use a target-based policy to quickly and efficiently manage fleet scaling; this option is the most commonly used. Use rule-based policies when you need to exert fine-grained control over auto-scaling. </p> <p>Fleets can have multiple scaling policies of each type in force at the same time; you can have one target-based policy, one or multiple rule-based scaling policies, or both. We recommend caution, however, because multiple auto-scaling policies can have unintended consequences.</p> <p>You can temporarily suspend all scaling policies for a fleet by calling <a>StopFleetActions</a> with the fleet action AUTO_SCALING. To resume scaling policies, call <a>StartFleetActions</a> with the same fleet action. To stop just one scaling policy--or to permanently remove it, you must delete the policy with <a>DeleteScalingPolicy</a>.</p> <p>Learn more about how to work with auto-scaling in <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-autoscaling.html">Set Up Fleet Automatic Scaling</a>.</p> <p> <b>Target-based policy</b> </p> <p>A target-based policy tracks a single metric: PercentAvailableGameSessions. This metric tells us how much of a fleet&#39;s hosting capacity is ready to host game sessions but is not currently in use. This is the fleet&#39;s buffer; it measures the additional player demand that the fleet could handle at current capacity. With a target-based policy, you set your ideal buffer size and leave it to Amazon GameLift to take whatever action is needed to maintain that target. </p> <p>For example, you might choose to maintain a 10% buffer for a fleet that has the capacity to host 100 simultaneous game sessions. This policy tells Amazon GameLift to take action whenever the fleet&#39;s available capacity falls below or rises above 10 game sessions. Amazon GameLift will start new instances or stop unused instances in order to return to the 10% buffer. </p> <p>To create or update a target-based policy, specify a fleet ID and name, and set the policy type to &quot;TargetBased&quot;. Specify the metric to track (PercentAvailableGameSessions) and reference a <a>TargetConfiguration</a> object with your desired buffer value. Exclude all other parameters. On a successful request, the policy name is returned. The scaling policy is automatically in force as soon as it&#39;s successfully created. If the fleet&#39;s auto-scaling actions are temporarily suspended, the new policy will be in force once the fleet actions are restarted.</p> <p> <b>Rule-based policy</b> </p> <p>A rule-based policy tracks specified fleet metric, sets a threshold value, and specifies the type of action to initiate when triggered. With a rule-based policy, you can select from several available fleet metrics. Each policy specifies whether to scale up or scale down (and by how much), so you need one policy for each type of action. </p> <p>For example, a policy may make the following statement: &quot;If the percentage of idle instances is greater than 20% for more than 15 minutes, then reduce the fleet capacity by 10%.&quot;</p> <p>A policy&#39;s rule statement has the following structure:</p> <p>If <code>[MetricName]</code> is <code>[ComparisonOperator]</code> <code>[Threshold]</code> for <code>[EvaluationPeriods]</code> minutes, then <code>[ScalingAdjustmentType]</code> to/by <code>[ScalingAdjustment]</code>.</p> <p>To implement the example, the rule statement would look like this:</p> <p>If <code>[PercentIdleInstances]</code> is <code>[GreaterThanThreshold]</code> <code>[20]</code> for <code>[15]</code> minutes, then <code>[PercentChangeInCapacity]</code> to/by <code>[10]</code>.</p> <p>To create or update a scaling policy, specify a unique combination of name and fleet ID, and set the policy type to &quot;RuleBased&quot;. Specify the parameter values for a policy rule statement. On a successful request, the policy name is returned. Scaling policies are automatically in force as soon as they&#39;re successfully created. If the fleet&#39;s auto-scaling actions are temporarily suspended, the new policy will be in force once the fleet actions are restarted.</p> <ul> <li> <p> <a>DescribeFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>DescribeEC2InstanceLimits</a> </p> </li> <li> <p>Manage scaling policies:</p> <ul> <li> <p> <a>PutScalingPolicy</a> (auto-scaling)</p> </li> <li> <p> <a>DescribeScalingPolicies</a> (auto-scaling)</p> </li> <li> <p> <a>DeleteScalingPolicy</a> (auto-scaling)</p> </li> </ul> </li> <li> <p>Manage fleet actions:</p> <ul> <li> <p> <a>StartFleetActions</a> </p> </li> <li> <p> <a>StopFleetActions</a> </p> </li> </ul> </li> </ul></p>
10525    async fn put_scaling_policy(
10526        &self,
10527        input: PutScalingPolicyInput,
10528    ) -> Result<PutScalingPolicyOutput, RusotoError<PutScalingPolicyError>> {
10529        let mut request = self.new_signed_request("POST", "/");
10530        request.add_header("x-amz-target", "GameLift.PutScalingPolicy");
10531        let encoded = serde_json::to_string(&input).unwrap();
10532        request.set_payload(Some(encoded));
10533
10534        let response = self
10535            .sign_and_dispatch(request, PutScalingPolicyError::from_response)
10536            .await?;
10537        let mut response = response;
10538        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10539        proto::json::ResponsePayload::new(&response).deserialize::<PutScalingPolicyOutput, _>()
10540    }
10541
10542    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Creates a new game server resource and notifies GameLift FleetIQ that the game server is ready to host gameplay and players. This action is called by a game server process that is running on an instance in a game server group. Registering game servers enables GameLift FleetIQ to track available game servers and enables game clients and services to claim a game server for a new game session. </p> <p>To register a game server, identify the game server group and instance where the game server is running, and provide a unique identifier for the game server. You can also include connection and game server data; when a game client or service requests a game server by calling <a>ClaimGameServer</a>, this information is returned in response.</p> <p>Once a game server is successfully registered, it is put in status AVAILABLE. A request to register a game server may fail if the instance it is in the process of shutting down as part of instance rebalancing or scale-down activity. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
10543    async fn register_game_server(
10544        &self,
10545        input: RegisterGameServerInput,
10546    ) -> Result<RegisterGameServerOutput, RusotoError<RegisterGameServerError>> {
10547        let mut request = self.new_signed_request("POST", "/");
10548        request.add_header("x-amz-target", "GameLift.RegisterGameServer");
10549        let encoded = serde_json::to_string(&input).unwrap();
10550        request.set_payload(Some(encoded));
10551
10552        let response = self
10553            .sign_and_dispatch(request, RegisterGameServerError::from_response)
10554            .await?;
10555        let mut response = response;
10556        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10557        proto::json::ResponsePayload::new(&response).deserialize::<RegisterGameServerOutput, _>()
10558    }
10559
10560    /// <p><p>Retrieves a fresh set of credentials for use when uploading a new set of game build files to Amazon GameLift&#39;s Amazon S3. This is done as part of the build creation process; see <a>CreateBuild</a>.</p> <p>To request new credentials, specify the build ID as returned with an initial <code>CreateBuild</code> request. If successful, a new set of credentials are returned, along with the S3 storage location associated with the build ID.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html#gamelift-build-cli-uploading-create-build"> Create a Build with Files in S3</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
10561    async fn request_upload_credentials(
10562        &self,
10563        input: RequestUploadCredentialsInput,
10564    ) -> Result<RequestUploadCredentialsOutput, RusotoError<RequestUploadCredentialsError>> {
10565        let mut request = self.new_signed_request("POST", "/");
10566        request.add_header("x-amz-target", "GameLift.RequestUploadCredentials");
10567        let encoded = serde_json::to_string(&input).unwrap();
10568        request.set_payload(Some(encoded));
10569
10570        let response = self
10571            .sign_and_dispatch(request, RequestUploadCredentialsError::from_response)
10572            .await?;
10573        let mut response = response;
10574        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10575        proto::json::ResponsePayload::new(&response)
10576            .deserialize::<RequestUploadCredentialsOutput, _>()
10577    }
10578
10579    /// <p><p>Retrieves the fleet ID that an alias is currently pointing to.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
10580    async fn resolve_alias(
10581        &self,
10582        input: ResolveAliasInput,
10583    ) -> Result<ResolveAliasOutput, RusotoError<ResolveAliasError>> {
10584        let mut request = self.new_signed_request("POST", "/");
10585        request.add_header("x-amz-target", "GameLift.ResolveAlias");
10586        let encoded = serde_json::to_string(&input).unwrap();
10587        request.set_payload(Some(encoded));
10588
10589        let response = self
10590            .sign_and_dispatch(request, ResolveAliasError::from_response)
10591            .await?;
10592        let mut response = response;
10593        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10594        proto::json::ResponsePayload::new(&response).deserialize::<ResolveAliasOutput, _>()
10595    }
10596
10597    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Reinstates activity on a game server group after it has been suspended. A game server group may be suspended by calling <a>SuspendGameServerGroup</a>, or it may have been involuntarily suspended due to a configuration problem. You can manually resume activity on the group once the configuration problem has been resolved. Refer to the game server group status and status reason for more information on why group activity is suspended.</p> <p>To resume activity, specify a game server group ARN and the type of activity to be resumed.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
10598    async fn resume_game_server_group(
10599        &self,
10600        input: ResumeGameServerGroupInput,
10601    ) -> Result<ResumeGameServerGroupOutput, RusotoError<ResumeGameServerGroupError>> {
10602        let mut request = self.new_signed_request("POST", "/");
10603        request.add_header("x-amz-target", "GameLift.ResumeGameServerGroup");
10604        let encoded = serde_json::to_string(&input).unwrap();
10605        request.set_payload(Some(encoded));
10606
10607        let response = self
10608            .sign_and_dispatch(request, ResumeGameServerGroupError::from_response)
10609            .await?;
10610        let mut response = response;
10611        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10612        proto::json::ResponsePayload::new(&response).deserialize::<ResumeGameServerGroupOutput, _>()
10613    }
10614
10615    /// <p><p>Retrieves all active game sessions that match a set of search criteria and sorts them in a specified order. You can search or sort by the following game session attributes:</p> <ul> <li> <p> <b>gameSessionId</b> -- A unique identifier for the game session. You can use either a <code>GameSessionId</code> or <code>GameSessionArn</code> value. </p> </li> <li> <p> <b>gameSessionName</b> -- Name assigned to a game session. This value is set when requesting a new game session with <a>CreateGameSession</a> or updating with <a>UpdateGameSession</a>. Game session names do not need to be unique to a game session.</p> </li> <li> <p> <b>gameSessionProperties</b> -- Custom data defined in a game session&#39;s <code>GameProperty</code> parameter. <code>GameProperty</code> values are stored as key:value pairs; the filter expression must indicate the key and a string to search the data values for. For example, to search for game sessions with custom data containing the key:value pair &quot;gameMode:brawl&quot;, specify the following: <code>gameSessionProperties.gameMode = &quot;brawl&quot;</code>. All custom data values are searched as strings.</p> </li> <li> <p> <b>maximumSessions</b> -- Maximum number of player sessions allowed for a game session. This value is set when requesting a new game session with <a>CreateGameSession</a> or updating with <a>UpdateGameSession</a>.</p> </li> <li> <p> <b>creationTimeMillis</b> -- Value indicating when a game session was created. It is expressed in Unix time as milliseconds.</p> </li> <li> <p> <b>playerSessionCount</b> -- Number of players currently connected to a game session. This value changes rapidly as players join the session or drop out.</p> </li> <li> <p> <b>hasAvailablePlayerSessions</b> -- Boolean value indicating whether a game session has reached its maximum number of players. It is highly recommended that all search requests include this filter attribute to optimize search performance and return only sessions that players can join. </p> </li> </ul> <note> <p>Returned values for <code>playerSessionCount</code> and <code>hasAvailablePlayerSessions</code> change quickly as players join sessions and others drop out. Results should be considered a snapshot in time. Be sure to refresh search results often, and handle sessions that fill up before a player can join. </p> </note> <p>To search or sort, specify either a fleet ID or an alias ID, and provide a search filter expression, a sort expression, or both. If successful, a collection of <a>GameSession</a> objects matching the request is returned. Use the pagination parameters to retrieve results as a set of sequential pages. </p> <p>You can search for game sessions one fleet at a time only. To find game sessions across multiple fleets, you must search each fleet separately and combine the results. This search feature finds only game sessions that are in <code>ACTIVE</code> status. To locate games in statuses other than active, use <a>DescribeGameSessionDetails</a>.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10616    async fn search_game_sessions(
10617        &self,
10618        input: SearchGameSessionsInput,
10619    ) -> Result<SearchGameSessionsOutput, RusotoError<SearchGameSessionsError>> {
10620        let mut request = self.new_signed_request("POST", "/");
10621        request.add_header("x-amz-target", "GameLift.SearchGameSessions");
10622        let encoded = serde_json::to_string(&input).unwrap();
10623        request.set_payload(Some(encoded));
10624
10625        let response = self
10626            .sign_and_dispatch(request, SearchGameSessionsError::from_response)
10627            .await?;
10628        let mut response = response;
10629        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10630        proto::json::ResponsePayload::new(&response).deserialize::<SearchGameSessionsOutput, _>()
10631    }
10632
10633    /// <p><p>Resumes activity on a fleet that was suspended with <a>StopFleetActions</a>. Currently, this operation is used to restart a fleet&#39;s auto-scaling activity. </p> <p>To start fleet actions, specify the fleet ID and the type of actions to restart. When auto-scaling fleet actions are restarted, Amazon GameLift once again initiates scaling events as triggered by the fleet&#39;s scaling policies. If actions on the fleet were never stopped, this operation will have no effect. You can view a fleet&#39;s stopped actions using <a>DescribeFleetAttributes</a>.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10634    async fn start_fleet_actions(
10635        &self,
10636        input: StartFleetActionsInput,
10637    ) -> Result<StartFleetActionsOutput, RusotoError<StartFleetActionsError>> {
10638        let mut request = self.new_signed_request("POST", "/");
10639        request.add_header("x-amz-target", "GameLift.StartFleetActions");
10640        let encoded = serde_json::to_string(&input).unwrap();
10641        request.set_payload(Some(encoded));
10642
10643        let response = self
10644            .sign_and_dispatch(request, StartFleetActionsError::from_response)
10645            .await?;
10646        let mut response = response;
10647        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10648        proto::json::ResponsePayload::new(&response).deserialize::<StartFleetActionsOutput, _>()
10649    }
10650
10651    /// <p><p>Places a request for a new game session in a queue (see <a>CreateGameSessionQueue</a>). When processing a placement request, Amazon GameLift searches for available resources on the queue&#39;s destinations, scanning each until it finds resources or the placement request times out.</p> <p>A game session placement request can also request player sessions. When a new game session is successfully created, Amazon GameLift creates a player session for each player included in the request.</p> <p>When placing a game session, by default Amazon GameLift tries each fleet in the order they are listed in the queue configuration. Ideally, a queue&#39;s destinations are listed in preference order.</p> <p>Alternatively, when requesting a game session with players, you can also provide latency data for each player in relevant Regions. Latency data indicates the performance lag a player experiences when connected to a fleet in the Region. Amazon GameLift uses latency data to reorder the list of destinations to place the game session in a Region with minimal lag. If latency data is provided for multiple players, Amazon GameLift calculates each Region&#39;s average lag for all players and reorders to get the best game play across all players. </p> <p>To place a new game session request, specify the following:</p> <ul> <li> <p>The queue name and a set of game session properties and settings</p> </li> <li> <p>A unique ID (such as a UUID) for the placement. You use this ID to track the status of the placement request</p> </li> <li> <p>(Optional) A set of player data and a unique player ID for each player that you are joining to the new game session (player data is optional, but if you include it, you must also provide a unique ID for each player)</p> </li> <li> <p>Latency data for all players (if you want to optimize game play for the players)</p> </li> </ul> <p>If successful, a new game session placement is created.</p> <p>To track the status of a placement request, call <a>DescribeGameSessionPlacement</a> and check the request&#39;s status. If the status is <code>FULFILLED</code>, a new game session has been created and a game session ARN and Region are referenced. If the placement request times out, you can resubmit the request or retry it with a different queue. </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10652    async fn start_game_session_placement(
10653        &self,
10654        input: StartGameSessionPlacementInput,
10655    ) -> Result<StartGameSessionPlacementOutput, RusotoError<StartGameSessionPlacementError>> {
10656        let mut request = self.new_signed_request("POST", "/");
10657        request.add_header("x-amz-target", "GameLift.StartGameSessionPlacement");
10658        let encoded = serde_json::to_string(&input).unwrap();
10659        request.set_payload(Some(encoded));
10660
10661        let response = self
10662            .sign_and_dispatch(request, StartGameSessionPlacementError::from_response)
10663            .await?;
10664        let mut response = response;
10665        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10666        proto::json::ResponsePayload::new(&response)
10667            .deserialize::<StartGameSessionPlacementOutput, _>()
10668    }
10669
10670    /// <p><p>Finds new players to fill open slots in an existing game session. This operation can be used to add players to matched games that start with fewer than the maximum number of players or to replace players when they drop out. By backfilling with the same matchmaker used to create the original match, you ensure that new players meet the match criteria and maintain a consistent experience throughout the game session. You can backfill a match anytime after a game session has been created. </p> <p>To request a match backfill, specify a unique ticket ID, the existing game session&#39;s ARN, a matchmaking configuration, and a set of data that describes all current players in the game session. If successful, a match backfill ticket is created and returned with status set to QUEUED. The ticket is placed in the matchmaker&#39;s ticket pool and processed. Track the status of the ticket to respond as needed. </p> <p>The process of finding backfill matches is essentially identical to the initial matchmaking process. The matchmaker searches the pool and groups tickets together to form potential matches, allowing only one backfill ticket per potential match. Once the a match is formed, the matchmaker creates player sessions for the new players. All tickets in the match are updated with the game session&#39;s connection information, and the <a>GameSession</a> object is updated to include matchmaker data on the new players. For more detail on how match backfill requests are processed, see <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How Amazon GameLift FlexMatch Works</a>. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html"> Backfill Existing Games with FlexMatch</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How GameLift FlexMatch Works</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
10671    async fn start_match_backfill(
10672        &self,
10673        input: StartMatchBackfillInput,
10674    ) -> Result<StartMatchBackfillOutput, RusotoError<StartMatchBackfillError>> {
10675        let mut request = self.new_signed_request("POST", "/");
10676        request.add_header("x-amz-target", "GameLift.StartMatchBackfill");
10677        let encoded = serde_json::to_string(&input).unwrap();
10678        request.set_payload(Some(encoded));
10679
10680        let response = self
10681            .sign_and_dispatch(request, StartMatchBackfillError::from_response)
10682            .await?;
10683        let mut response = response;
10684        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10685        proto::json::ResponsePayload::new(&response).deserialize::<StartMatchBackfillOutput, _>()
10686    }
10687
10688    /// <p><p>Uses FlexMatch to create a game match for a group of players based on custom matchmaking rules, and starts a new game for the matched players. Each matchmaking request specifies the type of match to build (team configuration, rules for an acceptable match, etc.). The request also specifies the players to find a match for and where to host the new game session for optimal performance. A matchmaking request might start with a single player or a group of players who want to play together. FlexMatch finds additional players as needed to fill the match. Match type, rules, and the queue used to place a new game session are defined in a <code>MatchmakingConfiguration</code>. </p> <p>To start matchmaking, provide a unique ticket ID, specify a matchmaking configuration, and include the players to be matched. You must also include a set of player attributes relevant for the matchmaking configuration. If successful, a matchmaking ticket is returned with status set to <code>QUEUED</code>. Track the status of the ticket to respond as needed and acquire game session connection information for successfully completed matches.</p> <p> <b>Tracking ticket status</b> -- A couple of options are available for tracking the status of matchmaking requests: </p> <ul> <li> <p>Polling -- Call <code>DescribeMatchmaking</code>. This operation returns the full ticket object, including current status and (for completed tickets) game session connection info. We recommend polling no more than once every 10 seconds.</p> </li> <li> <p>Notifications -- Get event notifications for changes in ticket status using Amazon Simple Notification Service (SNS). Notifications are easy to set up (see <a>CreateMatchmakingConfiguration</a>) and typically deliver match status changes faster and more efficiently than polling. We recommend that you use polling to back up to notifications (since delivery is not guaranteed) and call <code>DescribeMatchmaking</code> only when notifications are not received within 30 seconds.</p> </li> </ul> <p> <b>Processing a matchmaking request</b> -- FlexMatch handles a matchmaking request as follows: </p> <ol> <li> <p>Your client code submits a <code>StartMatchmaking</code> request for one or more players and tracks the status of the request ticket. </p> </li> <li> <p>FlexMatch uses this ticket and others in process to build an acceptable match. When a potential match is identified, all tickets in the proposed match are advanced to the next status. </p> </li> <li> <p>If the match requires player acceptance (set in the matchmaking configuration), the tickets move into status <code>REQUIRES_ACCEPTANCE</code>. This status triggers your client code to solicit acceptance from all players in every ticket involved in the match, and then call <a>AcceptMatch</a> for each player. If any player rejects or fails to accept the match before a specified timeout, the proposed match is dropped (see <code>AcceptMatch</code> for more details).</p> </li> <li> <p>Once a match is proposed and accepted, the matchmaking tickets move into status <code>PLACING</code>. FlexMatch locates resources for a new game session using the game session queue (set in the matchmaking configuration) and creates the game session based on the match data. </p> </li> <li> <p>When the match is successfully placed, the matchmaking tickets move into <code>COMPLETED</code> status. Connection information (including game session endpoint and player session) is added to the matchmaking tickets. Matched players can use the connection information to join the game. </p> </li> </ol> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-notification.html"> Set Up FlexMatch Event Notification</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-tasks.html"> FlexMatch Integration Roadmap</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html"> How GameLift FlexMatch Works</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
10689    async fn start_matchmaking(
10690        &self,
10691        input: StartMatchmakingInput,
10692    ) -> Result<StartMatchmakingOutput, RusotoError<StartMatchmakingError>> {
10693        let mut request = self.new_signed_request("POST", "/");
10694        request.add_header("x-amz-target", "GameLift.StartMatchmaking");
10695        let encoded = serde_json::to_string(&input).unwrap();
10696        request.set_payload(Some(encoded));
10697
10698        let response = self
10699            .sign_and_dispatch(request, StartMatchmakingError::from_response)
10700            .await?;
10701        let mut response = response;
10702        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10703        proto::json::ResponsePayload::new(&response).deserialize::<StartMatchmakingOutput, _>()
10704    }
10705
10706    /// <p><p>Suspends activity on a fleet. Currently, this operation is used to stop a fleet&#39;s auto-scaling activity. It is used to temporarily stop triggering scaling events. The policies can be retained and auto-scaling activity can be restarted using <a>StartFleetActions</a>. You can view a fleet&#39;s stopped actions using <a>DescribeFleetAttributes</a>.</p> <p>To stop fleet actions, specify the fleet ID and the type of actions to suspend. When auto-scaling fleet actions are stopped, Amazon GameLift no longer initiates scaling events except in response to manual changes using <a>UpdateFleetCapacity</a>. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10707    async fn stop_fleet_actions(
10708        &self,
10709        input: StopFleetActionsInput,
10710    ) -> Result<StopFleetActionsOutput, RusotoError<StopFleetActionsError>> {
10711        let mut request = self.new_signed_request("POST", "/");
10712        request.add_header("x-amz-target", "GameLift.StopFleetActions");
10713        let encoded = serde_json::to_string(&input).unwrap();
10714        request.set_payload(Some(encoded));
10715
10716        let response = self
10717            .sign_and_dispatch(request, StopFleetActionsError::from_response)
10718            .await?;
10719        let mut response = response;
10720        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10721        proto::json::ResponsePayload::new(&response).deserialize::<StopFleetActionsOutput, _>()
10722    }
10723
10724    /// <p><p>Cancels a game session placement that is in <code>PENDING</code> status. To stop a placement, provide the placement ID values. If successful, the placement is moved to <code>CANCELLED</code> status.</p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10725    async fn stop_game_session_placement(
10726        &self,
10727        input: StopGameSessionPlacementInput,
10728    ) -> Result<StopGameSessionPlacementOutput, RusotoError<StopGameSessionPlacementError>> {
10729        let mut request = self.new_signed_request("POST", "/");
10730        request.add_header("x-amz-target", "GameLift.StopGameSessionPlacement");
10731        let encoded = serde_json::to_string(&input).unwrap();
10732        request.set_payload(Some(encoded));
10733
10734        let response = self
10735            .sign_and_dispatch(request, StopGameSessionPlacementError::from_response)
10736            .await?;
10737        let mut response = response;
10738        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10739        proto::json::ResponsePayload::new(&response)
10740            .deserialize::<StopGameSessionPlacementOutput, _>()
10741    }
10742
10743    /// <p><p>Cancels a matchmaking ticket or match backfill ticket that is currently being processed. To stop the matchmaking operation, specify the ticket ID. If successful, work on the ticket is stopped, and the ticket status is changed to <code>CANCELLED</code>.</p> <p>This call is also used to turn off automatic backfill for an individual game session. This is for game sessions that are created with a matchmaking configuration that has automatic backfill enabled. The ticket ID is included in the <code>MatchmakerData</code> of an updated game session object, which is provided to the game server.</p> <note> <p>If the action is successful, the service sends back an empty JSON struct with the HTTP 200 response (not an empty HTTP body).</p> </note> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-client.html"> Add FlexMatch to a Game Client</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>StartMatchmaking</a> </p> </li> <li> <p> <a>DescribeMatchmaking</a> </p> </li> <li> <p> <a>StopMatchmaking</a> </p> </li> <li> <p> <a>AcceptMatch</a> </p> </li> <li> <p> <a>StartMatchBackfill</a> </p> </li> </ul></p>
10744    async fn stop_matchmaking(
10745        &self,
10746        input: StopMatchmakingInput,
10747    ) -> Result<StopMatchmakingOutput, RusotoError<StopMatchmakingError>> {
10748        let mut request = self.new_signed_request("POST", "/");
10749        request.add_header("x-amz-target", "GameLift.StopMatchmaking");
10750        let encoded = serde_json::to_string(&input).unwrap();
10751        request.set_payload(Some(encoded));
10752
10753        let response = self
10754            .sign_and_dispatch(request, StopMatchmakingError::from_response)
10755            .await?;
10756        let mut response = response;
10757        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10758        proto::json::ResponsePayload::new(&response).deserialize::<StopMatchmakingOutput, _>()
10759    }
10760
10761    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Temporarily stops activity on a game server group without terminating instances or the game server group. Activity can be restarted by calling <a>ResumeGameServerGroup</a>. Activities that can suspended are:</p> <ul> <li> <p>Instance type replacement. This activity evaluates the current Spot viability of all instance types that are defined for the game server group. It updates the Auto Scaling group to remove nonviable Spot instance types (which have a higher chance of game server interruptions) and rebalances capacity across the remaining viable Spot instance types. When this activity is suspended, the Auto Scaling group continues with its current balance, regardless of viability. Instance protection, utilization metrics, and capacity autoscaling activities continue to be active. </p> </li> </ul> <p>To suspend activity, specify a game server group ARN and the type of activity to be suspended.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
10762    async fn suspend_game_server_group(
10763        &self,
10764        input: SuspendGameServerGroupInput,
10765    ) -> Result<SuspendGameServerGroupOutput, RusotoError<SuspendGameServerGroupError>> {
10766        let mut request = self.new_signed_request("POST", "/");
10767        request.add_header("x-amz-target", "GameLift.SuspendGameServerGroup");
10768        let encoded = serde_json::to_string(&input).unwrap();
10769        request.set_payload(Some(encoded));
10770
10771        let response = self
10772            .sign_and_dispatch(request, SuspendGameServerGroupError::from_response)
10773            .await?;
10774        let mut response = response;
10775        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10776        proto::json::ResponsePayload::new(&response)
10777            .deserialize::<SuspendGameServerGroupOutput, _>()
10778    }
10779
10780    /// <p><p> Assigns a tag to a GameLift resource. AWS resource tags provide an additional management tool set. You can use tags to organize resources, create IAM permissions policies to manage access to groups of resources, customize AWS cost breakdowns, etc. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To add a tag to a resource, specify the unique ARN value for the resource and provide a tag list containing one or more tags. The operation succeeds even if the list includes tags that are already assigned to the specified resource. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
10781    async fn tag_resource(
10782        &self,
10783        input: TagResourceRequest,
10784    ) -> Result<TagResourceResponse, RusotoError<TagResourceError>> {
10785        let mut request = self.new_signed_request("POST", "/");
10786        request.add_header("x-amz-target", "GameLift.TagResource");
10787        let encoded = serde_json::to_string(&input).unwrap();
10788        request.set_payload(Some(encoded));
10789
10790        let response = self
10791            .sign_and_dispatch(request, TagResourceError::from_response)
10792            .await?;
10793        let mut response = response;
10794        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10795        proto::json::ResponsePayload::new(&response).deserialize::<TagResourceResponse, _>()
10796    }
10797
10798    /// <p><p>Removes a tag that is assigned to a GameLift resource. Resource tags are used to organize AWS resources for a range of purposes. This action handles the permissions necessary to manage tags for the following GameLift resource types:</p> <ul> <li> <p>Build</p> </li> <li> <p>Script</p> </li> <li> <p>Fleet</p> </li> <li> <p>Alias</p> </li> <li> <p>GameSessionQueue</p> </li> <li> <p>MatchmakingConfiguration</p> </li> <li> <p>MatchmakingRuleSet</p> </li> </ul> <p>To remove a tag from a resource, specify the unique ARN value for the resource and provide a string list containing one or more tags to be removed. This action succeeds even if the list includes tags that are not currently assigned to the specified resource.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html">Tagging AWS Resources</a> in the <i>AWS General Reference</i> </p> <p> <a href="http://aws.amazon.com/answers/account-management/aws-tagging-strategies/"> AWS Tagging Strategies</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>TagResource</a> </p> </li> <li> <p> <a>UntagResource</a> </p> </li> <li> <p> <a>ListTagsForResource</a> </p> </li> </ul></p>
10799    async fn untag_resource(
10800        &self,
10801        input: UntagResourceRequest,
10802    ) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>> {
10803        let mut request = self.new_signed_request("POST", "/");
10804        request.add_header("x-amz-target", "GameLift.UntagResource");
10805        let encoded = serde_json::to_string(&input).unwrap();
10806        request.set_payload(Some(encoded));
10807
10808        let response = self
10809            .sign_and_dispatch(request, UntagResourceError::from_response)
10810            .await?;
10811        let mut response = response;
10812        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10813        proto::json::ResponsePayload::new(&response).deserialize::<UntagResourceResponse, _>()
10814    }
10815
10816    /// <p><p>Updates properties for an alias. To update properties, specify the alias ID to be updated and provide the information to be changed. To reassign an alias to another fleet, provide an updated routing strategy. If successful, the updated alias record is returned.</p> <ul> <li> <p> <a>CreateAlias</a> </p> </li> <li> <p> <a>ListAliases</a> </p> </li> <li> <p> <a>DescribeAlias</a> </p> </li> <li> <p> <a>UpdateAlias</a> </p> </li> <li> <p> <a>DeleteAlias</a> </p> </li> <li> <p> <a>ResolveAlias</a> </p> </li> </ul></p>
10817    async fn update_alias(
10818        &self,
10819        input: UpdateAliasInput,
10820    ) -> Result<UpdateAliasOutput, RusotoError<UpdateAliasError>> {
10821        let mut request = self.new_signed_request("POST", "/");
10822        request.add_header("x-amz-target", "GameLift.UpdateAlias");
10823        let encoded = serde_json::to_string(&input).unwrap();
10824        request.set_payload(Some(encoded));
10825
10826        let response = self
10827            .sign_and_dispatch(request, UpdateAliasError::from_response)
10828            .await?;
10829        let mut response = response;
10830        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10831        proto::json::ResponsePayload::new(&response).deserialize::<UpdateAliasOutput, _>()
10832    }
10833
10834    /// <p><p>Updates metadata in a build resource, including the build name and version. To update the metadata, specify the build ID to update and provide the new values. If successful, a build object containing the updated metadata is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-intro.html"> Upload a Custom Server Build</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateBuild</a> </p> </li> <li> <p> <a>ListBuilds</a> </p> </li> <li> <p> <a>DescribeBuild</a> </p> </li> <li> <p> <a>UpdateBuild</a> </p> </li> <li> <p> <a>DeleteBuild</a> </p> </li> </ul></p>
10835    async fn update_build(
10836        &self,
10837        input: UpdateBuildInput,
10838    ) -> Result<UpdateBuildOutput, RusotoError<UpdateBuildError>> {
10839        let mut request = self.new_signed_request("POST", "/");
10840        request.add_header("x-amz-target", "GameLift.UpdateBuild");
10841        let encoded = serde_json::to_string(&input).unwrap();
10842        request.set_payload(Some(encoded));
10843
10844        let response = self
10845            .sign_and_dispatch(request, UpdateBuildError::from_response)
10846            .await?;
10847        let mut response = response;
10848        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10849        proto::json::ResponsePayload::new(&response).deserialize::<UpdateBuildOutput, _>()
10850    }
10851
10852    /// <p><p>Updates fleet properties, including name and description, for a fleet. To update metadata, specify the fleet ID and the property values that you want to change. If successful, the fleet ID for the updated fleet is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10853    async fn update_fleet_attributes(
10854        &self,
10855        input: UpdateFleetAttributesInput,
10856    ) -> Result<UpdateFleetAttributesOutput, RusotoError<UpdateFleetAttributesError>> {
10857        let mut request = self.new_signed_request("POST", "/");
10858        request.add_header("x-amz-target", "GameLift.UpdateFleetAttributes");
10859        let encoded = serde_json::to_string(&input).unwrap();
10860        request.set_payload(Some(encoded));
10861
10862        let response = self
10863            .sign_and_dispatch(request, UpdateFleetAttributesError::from_response)
10864            .await?;
10865        let mut response = response;
10866        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10867        proto::json::ResponsePayload::new(&response).deserialize::<UpdateFleetAttributesOutput, _>()
10868    }
10869
10870    /// <p><p>Updates capacity settings for a fleet. Use this action to specify the number of EC2 instances (hosts) that you want this fleet to contain. Before calling this action, you may want to call <a>DescribeEC2InstanceLimits</a> to get the maximum capacity based on the fleet&#39;s EC2 instance type.</p> <p>Specify minimum and maximum number of instances. Amazon GameLift will not change fleet capacity to values fall outside of this range. This is particularly important when using auto-scaling (see <a>PutScalingPolicy</a>) to allow capacity to adjust based on player demand while imposing limits on automatic adjustments.</p> <p>To update fleet capacity, specify the fleet ID and the number of instances you want the fleet to host. If successful, Amazon GameLift starts or terminates instances so that the fleet&#39;s active instance count matches the desired instance count. You can view a fleet&#39;s current capacity information by calling <a>DescribeFleetCapacity</a>. If the desired instance count is higher than the instance type&#39;s limit, the &quot;Limit Exceeded&quot; exception occurs.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10871    async fn update_fleet_capacity(
10872        &self,
10873        input: UpdateFleetCapacityInput,
10874    ) -> Result<UpdateFleetCapacityOutput, RusotoError<UpdateFleetCapacityError>> {
10875        let mut request = self.new_signed_request("POST", "/");
10876        request.add_header("x-amz-target", "GameLift.UpdateFleetCapacity");
10877        let encoded = serde_json::to_string(&input).unwrap();
10878        request.set_payload(Some(encoded));
10879
10880        let response = self
10881            .sign_and_dispatch(request, UpdateFleetCapacityError::from_response)
10882            .await?;
10883        let mut response = response;
10884        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10885        proto::json::ResponsePayload::new(&response).deserialize::<UpdateFleetCapacityOutput, _>()
10886    }
10887
10888    /// <p><p>Updates port settings for a fleet. To update settings, specify the fleet ID to be updated and list the permissions you want to update. List the permissions you want to add in <code>InboundPermissionAuthorizations</code>, and permissions you want to remove in <code>InboundPermissionRevocations</code>. Permissions to be removed must match existing fleet permissions. If successful, the fleet ID for the updated fleet is returned.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
10889    async fn update_fleet_port_settings(
10890        &self,
10891        input: UpdateFleetPortSettingsInput,
10892    ) -> Result<UpdateFleetPortSettingsOutput, RusotoError<UpdateFleetPortSettingsError>> {
10893        let mut request = self.new_signed_request("POST", "/");
10894        request.add_header("x-amz-target", "GameLift.UpdateFleetPortSettings");
10895        let encoded = serde_json::to_string(&input).unwrap();
10896        request.set_payload(Some(encoded));
10897
10898        let response = self
10899            .sign_and_dispatch(request, UpdateFleetPortSettingsError::from_response)
10900            .await?;
10901        let mut response = response;
10902        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10903        proto::json::ResponsePayload::new(&response)
10904            .deserialize::<UpdateFleetPortSettingsOutput, _>()
10905    }
10906
10907    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Updates information about a registered game server. This action is called by a game server process that is running on an instance in a game server group. There are three reasons to update game server information: (1) to change the utilization status of the game server, (2) to report game server health status, and (3) to change game server metadata. A registered game server should regularly report health and should update utilization status when it is supporting gameplay so that GameLift FleetIQ can accurately track game server availability. You can make all three types of updates in the same request.</p> <ul> <li> <p>To update the game server&#39;s utilization status, identify the game server and game server group and specify the current utilization status. Use this status to identify when game servers are currently hosting games and when they are available to be claimed. </p> </li> <li> <p>To report health status, identify the game server and game server group and set health check to HEALTHY. If a game server does not report health status for a certain length of time, the game server is no longer considered healthy and will be eventually de-registered from the game server group to avoid affecting utilization metrics. The best practice is to report health every 60 seconds.</p> </li> <li> <p>To change game server metadata, provide updated game server data and custom sort key values.</p> </li> </ul> <p>Once a game server is successfully updated, the relevant statuses and timestamps are updated.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>RegisterGameServer</a> </p> </li> <li> <p> <a>ListGameServers</a> </p> </li> <li> <p> <a>ClaimGameServer</a> </p> </li> <li> <p> <a>DescribeGameServer</a> </p> </li> <li> <p> <a>UpdateGameServer</a> </p> </li> <li> <p> <a>DeregisterGameServer</a> </p> </li> </ul></p>
10908    async fn update_game_server(
10909        &self,
10910        input: UpdateGameServerInput,
10911    ) -> Result<UpdateGameServerOutput, RusotoError<UpdateGameServerError>> {
10912        let mut request = self.new_signed_request("POST", "/");
10913        request.add_header("x-amz-target", "GameLift.UpdateGameServer");
10914        let encoded = serde_json::to_string(&input).unwrap();
10915        request.set_payload(Some(encoded));
10916
10917        let response = self
10918            .sign_and_dispatch(request, UpdateGameServerError::from_response)
10919            .await?;
10920        let mut response = response;
10921        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10922        proto::json::ResponsePayload::new(&response).deserialize::<UpdateGameServerOutput, _>()
10923    }
10924
10925    /// <p><p> <b>This action is part of Amazon GameLift FleetIQ with game server groups, which is in preview release and is subject to change.</b> </p> <p>Updates GameLift FleetIQ-specific properties for a game server group. These properties include instance rebalancing and game server protection. Many Auto Scaling group properties are updated directly. These include autoscaling policies, minimum/maximum/desired instance counts, and launch template. </p> <p>To update the game server group, specify the game server group ID and provide the updated values.</p> <p>Updated properties are validated to ensure that GameLift FleetIQ can continue to perform its core instance rebalancing activity. When you change Auto Scaling group properties directly and the changes cause errors with GameLift FleetIQ activities, an alert is sent.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-intro.html">GameLift FleetIQ Guide</a> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/gsg-asgroups.html">Updating a GameLift FleetIQ-Linked Auto Scaling Group</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameServerGroup</a> </p> </li> <li> <p> <a>ListGameServerGroups</a> </p> </li> <li> <p> <a>DescribeGameServerGroup</a> </p> </li> <li> <p> <a>UpdateGameServerGroup</a> </p> </li> <li> <p> <a>DeleteGameServerGroup</a> </p> </li> <li> <p> <a>ResumeGameServerGroup</a> </p> </li> <li> <p> <a>SuspendGameServerGroup</a> </p> </li> </ul></p>
10926    async fn update_game_server_group(
10927        &self,
10928        input: UpdateGameServerGroupInput,
10929    ) -> Result<UpdateGameServerGroupOutput, RusotoError<UpdateGameServerGroupError>> {
10930        let mut request = self.new_signed_request("POST", "/");
10931        request.add_header("x-amz-target", "GameLift.UpdateGameServerGroup");
10932        let encoded = serde_json::to_string(&input).unwrap();
10933        request.set_payload(Some(encoded));
10934
10935        let response = self
10936            .sign_and_dispatch(request, UpdateGameServerGroupError::from_response)
10937            .await?;
10938        let mut response = response;
10939        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10940        proto::json::ResponsePayload::new(&response).deserialize::<UpdateGameServerGroupOutput, _>()
10941    }
10942
10943    /// <p><p>Updates game session properties. This includes the session name, maximum player count, protection policy, which controls whether or not an active game session can be terminated during a scale-down event, and the player session creation policy, which controls whether or not new players can join the session. To update a game session, specify the game session ID and the values you want to change. If successful, an updated <a>GameSession</a> object is returned. </p> <ul> <li> <p> <a>CreateGameSession</a> </p> </li> <li> <p> <a>DescribeGameSessions</a> </p> </li> <li> <p> <a>DescribeGameSessionDetails</a> </p> </li> <li> <p> <a>SearchGameSessions</a> </p> </li> <li> <p> <a>UpdateGameSession</a> </p> </li> <li> <p> <a>GetGameSessionLogUrl</a> </p> </li> <li> <p>Game session placements</p> <ul> <li> <p> <a>StartGameSessionPlacement</a> </p> </li> <li> <p> <a>DescribeGameSessionPlacement</a> </p> </li> <li> <p> <a>StopGameSessionPlacement</a> </p> </li> </ul> </li> </ul></p>
10944    async fn update_game_session(
10945        &self,
10946        input: UpdateGameSessionInput,
10947    ) -> Result<UpdateGameSessionOutput, RusotoError<UpdateGameSessionError>> {
10948        let mut request = self.new_signed_request("POST", "/");
10949        request.add_header("x-amz-target", "GameLift.UpdateGameSession");
10950        let encoded = serde_json::to_string(&input).unwrap();
10951        request.set_payload(Some(encoded));
10952
10953        let response = self
10954            .sign_and_dispatch(request, UpdateGameSessionError::from_response)
10955            .await?;
10956        let mut response = response;
10957        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10958        proto::json::ResponsePayload::new(&response).deserialize::<UpdateGameSessionOutput, _>()
10959    }
10960
10961    /// <p><p>Updates settings for a game session queue, which determines how new game session requests in the queue are processed. To update settings, specify the queue name to be updated and provide the new settings. When updating destinations, provide a complete list of destinations. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-intro.html"> Using Multi-Region Queues</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateGameSessionQueue</a> </p> </li> <li> <p> <a>DescribeGameSessionQueues</a> </p> </li> <li> <p> <a>UpdateGameSessionQueue</a> </p> </li> <li> <p> <a>DeleteGameSessionQueue</a> </p> </li> </ul></p>
10962    async fn update_game_session_queue(
10963        &self,
10964        input: UpdateGameSessionQueueInput,
10965    ) -> Result<UpdateGameSessionQueueOutput, RusotoError<UpdateGameSessionQueueError>> {
10966        let mut request = self.new_signed_request("POST", "/");
10967        request.add_header("x-amz-target", "GameLift.UpdateGameSessionQueue");
10968        let encoded = serde_json::to_string(&input).unwrap();
10969        request.set_payload(Some(encoded));
10970
10971        let response = self
10972            .sign_and_dispatch(request, UpdateGameSessionQueueError::from_response)
10973            .await?;
10974        let mut response = response;
10975        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10976        proto::json::ResponsePayload::new(&response)
10977            .deserialize::<UpdateGameSessionQueueOutput, _>()
10978    }
10979
10980    /// <p><p>Updates settings for a FlexMatch matchmaking configuration. These changes affect all matches and game sessions that are created after the update. To update settings, specify the configuration name to be updated and provide the new settings. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-configuration.html"> Design a FlexMatch Matchmaker</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
10981    async fn update_matchmaking_configuration(
10982        &self,
10983        input: UpdateMatchmakingConfigurationInput,
10984    ) -> Result<
10985        UpdateMatchmakingConfigurationOutput,
10986        RusotoError<UpdateMatchmakingConfigurationError>,
10987    > {
10988        let mut request = self.new_signed_request("POST", "/");
10989        request.add_header("x-amz-target", "GameLift.UpdateMatchmakingConfiguration");
10990        let encoded = serde_json::to_string(&input).unwrap();
10991        request.set_payload(Some(encoded));
10992
10993        let response = self
10994            .sign_and_dispatch(request, UpdateMatchmakingConfigurationError::from_response)
10995            .await?;
10996        let mut response = response;
10997        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
10998        proto::json::ResponsePayload::new(&response)
10999            .deserialize::<UpdateMatchmakingConfigurationOutput, _>()
11000    }
11001
11002    /// <p><p>Updates the current runtime configuration for the specified fleet, which tells Amazon GameLift how to launch server processes on instances in the fleet. You can update a fleet&#39;s runtime configuration at any time after the fleet is created; it does not need to be in an <code>ACTIVE</code> status.</p> <p>To update runtime configuration, specify the fleet ID and provide a <code>RuntimeConfiguration</code> object with an updated set of server process configurations.</p> <p>Each instance in a Amazon GameLift fleet checks regularly for an updated runtime configuration and changes how it launches server processes to comply with the latest version. Existing server processes are not affected by the update; runtime configuration changes are applied gradually as existing processes shut down and new processes are launched during Amazon GameLift&#39;s normal process recycling activity.</p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html">Setting up GameLift Fleets</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateFleet</a> </p> </li> <li> <p> <a>ListFleets</a> </p> </li> <li> <p> <a>DeleteFleet</a> </p> </li> <li> <p> <a>DescribeFleetAttributes</a> </p> </li> <li> <p>Update fleets:</p> <ul> <li> <p> <a>UpdateFleetAttributes</a> </p> </li> <li> <p> <a>UpdateFleetCapacity</a> </p> </li> <li> <p> <a>UpdateFleetPortSettings</a> </p> </li> <li> <p> <a>UpdateRuntimeConfiguration</a> </p> </li> </ul> </li> <li> <p> <a>StartFleetActions</a> or <a>StopFleetActions</a> </p> </li> </ul></p>
11003    async fn update_runtime_configuration(
11004        &self,
11005        input: UpdateRuntimeConfigurationInput,
11006    ) -> Result<UpdateRuntimeConfigurationOutput, RusotoError<UpdateRuntimeConfigurationError>>
11007    {
11008        let mut request = self.new_signed_request("POST", "/");
11009        request.add_header("x-amz-target", "GameLift.UpdateRuntimeConfiguration");
11010        let encoded = serde_json::to_string(&input).unwrap();
11011        request.set_payload(Some(encoded));
11012
11013        let response = self
11014            .sign_and_dispatch(request, UpdateRuntimeConfigurationError::from_response)
11015            .await?;
11016        let mut response = response;
11017        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11018        proto::json::ResponsePayload::new(&response)
11019            .deserialize::<UpdateRuntimeConfigurationOutput, _>()
11020    }
11021
11022    /// <p><p>Updates Realtime script metadata and content.</p> <p>To update script metadata, specify the script ID and provide updated name and/or version values. </p> <p>To update script content, provide an updated zip file by pointing to either a local file or an Amazon S3 bucket location. You can use either method regardless of how the original script was uploaded. Use the <i>Version</i> parameter to track updates to the script.</p> <p>If the call is successful, the updated metadata is stored in the script record and a revised script is uploaded to the Amazon GameLift service. Once the script is updated and acquired by a fleet instance, the new version is used for all new game sessions. </p> <p> <b>Learn more</b> </p> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-intro.html">Amazon GameLift Realtime Servers</a> </p> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateScript</a> </p> </li> <li> <p> <a>ListScripts</a> </p> </li> <li> <p> <a>DescribeScript</a> </p> </li> <li> <p> <a>UpdateScript</a> </p> </li> <li> <p> <a>DeleteScript</a> </p> </li> </ul></p>
11023    async fn update_script(
11024        &self,
11025        input: UpdateScriptInput,
11026    ) -> Result<UpdateScriptOutput, RusotoError<UpdateScriptError>> {
11027        let mut request = self.new_signed_request("POST", "/");
11028        request.add_header("x-amz-target", "GameLift.UpdateScript");
11029        let encoded = serde_json::to_string(&input).unwrap();
11030        request.set_payload(Some(encoded));
11031
11032        let response = self
11033            .sign_and_dispatch(request, UpdateScriptError::from_response)
11034            .await?;
11035        let mut response = response;
11036        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11037        proto::json::ResponsePayload::new(&response).deserialize::<UpdateScriptOutput, _>()
11038    }
11039
11040    /// <p><p>Validates the syntax of a matchmaking rule or rule set. This operation checks that the rule set is using syntactically correct JSON and that it conforms to allowed property expressions. To validate syntax, provide a rule set JSON string.</p> <p> <b>Learn more</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/gamelift/latest/developerguide/match-rulesets.html">Build a Rule Set</a> </p> </li> </ul> <p> <b>Related operations</b> </p> <ul> <li> <p> <a>CreateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DescribeMatchmakingConfigurations</a> </p> </li> <li> <p> <a>UpdateMatchmakingConfiguration</a> </p> </li> <li> <p> <a>DeleteMatchmakingConfiguration</a> </p> </li> <li> <p> <a>CreateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DescribeMatchmakingRuleSets</a> </p> </li> <li> <p> <a>ValidateMatchmakingRuleSet</a> </p> </li> <li> <p> <a>DeleteMatchmakingRuleSet</a> </p> </li> </ul></p>
11041    async fn validate_matchmaking_rule_set(
11042        &self,
11043        input: ValidateMatchmakingRuleSetInput,
11044    ) -> Result<ValidateMatchmakingRuleSetOutput, RusotoError<ValidateMatchmakingRuleSetError>>
11045    {
11046        let mut request = self.new_signed_request("POST", "/");
11047        request.add_header("x-amz-target", "GameLift.ValidateMatchmakingRuleSet");
11048        let encoded = serde_json::to_string(&input).unwrap();
11049        request.set_payload(Some(encoded));
11050
11051        let response = self
11052            .sign_and_dispatch(request, ValidateMatchmakingRuleSetError::from_response)
11053            .await?;
11054        let mut response = response;
11055        let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
11056        proto::json::ResponsePayload::new(&response)
11057            .deserialize::<ValidateMatchmakingRuleSetOutput, _>()
11058    }
11059}