/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the gamelift-2015-10-01.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.GameLift.Model
{
    /// 
    /// Container for the parameters to the AcceptMatch operation.
    /// Registers a player'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. 
    /// 
    ///  
    /// 
    /// When FlexMatch builds a match, all the matchmaking tickets involved in the proposed
    /// match are placed into status REQUIRES_ACCEPTANCE. 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.
    /// 
    ///  
    /// 
    /// 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
    /// PLACING, where a new game session is created for the match. 
    /// 
    ///  
    /// 
    /// 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 or failed
    /// to respond, the ticket status is set to CANCELLED, and processing is
    /// terminated. For tickets where players have accepted or not yet responded, the ticket
    /// status is returned to SEARCHING to find a new match. A new matchmaking
    /// request for these players can be submitted as needed. 
    /// 
    ///  
    /// 
    ///  Learn more 
    /// 
    ///  
    /// 
    ///  
    /// Add FlexMatch to a game client 
    /// 
    ///  
    /// 
    ///  
    /// FlexMatch events (reference)
    /// 
    /// 
    public partial class AcceptMatchRequest : AmazonGameLiftRequest
    {
        private AcceptanceType _acceptanceType;
        private List _playerIds = new List();
        private string _ticketId;
        /// 
        /// Gets and sets the property AcceptanceType. 
        /// 
        /// Player response to the proposed match.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public AcceptanceType AcceptanceType
        {
            get { return this._acceptanceType; }
            set { this._acceptanceType = value; }
        }
        // Check to see if AcceptanceType property is set
        internal bool IsSetAcceptanceType()
        {
            return this._acceptanceType != null;
        }
        /// 
        /// Gets and sets the property PlayerIds. 
        /// 
        /// A unique identifier for a player delivering the response. This parameter can include
        /// one or multiple player IDs.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public List PlayerIds
        {
            get { return this._playerIds; }
            set { this._playerIds = value; }
        }
        // Check to see if PlayerIds property is set
        internal bool IsSetPlayerIds()
        {
            return this._playerIds != null && this._playerIds.Count > 0; 
        }
        /// 
        /// Gets and sets the property TicketId. 
        /// 
        /// A unique identifier for a matchmaking ticket. The ticket must be in status REQUIRES_ACCEPTANCE;
        /// otherwise this request will fail.
        /// 
        /// 
        [AWSProperty(Required=true, Max=128)]
        public string TicketId
        {
            get { return this._ticketId; }
            set { this._ticketId = value; }
        }
        // Check to see if TicketId property is set
        internal bool IsSetTicketId()
        {
            return this._ticketId != null;
        }
    }
}