/*
 * 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 ssm-contacts-2021-05-03.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.SSMContacts.Model
{
    /// 
    /// Container for the parameters to the StartEngagement operation.
    /// Starts an engagement to a contact or escalation plan. The engagement engages each
    /// contact specified in the incident.
    /// 
    public partial class StartEngagementRequest : AmazonSSMContactsRequest
    {
        private string _contactId;
        private string _content;
        private string _idempotencyToken;
        private string _incidentId;
        private string _publicContent;
        private string _publicSubject;
        private string _sender;
        private string _subject;
        /// 
        /// Gets and sets the property ContactId. 
        /// 
        /// The Amazon Resource Name (ARN) of the contact being engaged.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=2048)]
        public string ContactId
        {
            get { return this._contactId; }
            set { this._contactId = value; }
        }
        // Check to see if ContactId property is set
        internal bool IsSetContactId()
        {
            return this._contactId != null;
        }
        /// 
        /// Gets and sets the property Content. 
        /// 
        /// The secure content of the message that was sent to the contact. Use this field for
        /// engagements to VOICE or EMAIL.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=8192)]
        public string Content
        {
            get { return this._content; }
            set { this._content = value; }
        }
        // Check to see if Content property is set
        internal bool IsSetContent()
        {
            return this._content != null;
        }
        /// 
        /// Gets and sets the property IdempotencyToken. 
        /// 
        /// A token ensuring that the operation is called only once with the specified details.
        /// 
        /// 
        [AWSProperty(Max=2048)]
        public string IdempotencyToken
        {
            get { return this._idempotencyToken; }
            set { this._idempotencyToken = value; }
        }
        // Check to see if IdempotencyToken property is set
        internal bool IsSetIdempotencyToken()
        {
            return this._idempotencyToken != null;
        }
        /// 
        /// Gets and sets the property IncidentId. 
        /// 
        /// The ARN of the incident that the engagement is part of.
        /// 
        /// 
        [AWSProperty(Max=1024)]
        public string IncidentId
        {
            get { return this._incidentId; }
            set { this._incidentId = value; }
        }
        // Check to see if IncidentId property is set
        internal bool IsSetIncidentId()
        {
            return this._incidentId != null;
        }
        /// 
        /// Gets and sets the property PublicContent. 
        /// 
        /// The insecure content of the message that was sent to the contact. Use this field for
        /// engagements to SMS.
        /// 
        /// 
        [AWSProperty(Min=1, Max=8192)]
        public string PublicContent
        {
            get { return this._publicContent; }
            set { this._publicContent = value; }
        }
        // Check to see if PublicContent property is set
        internal bool IsSetPublicContent()
        {
            return this._publicContent != null;
        }
        /// 
        /// Gets and sets the property PublicSubject. 
        /// 
        /// The insecure subject of the message that was sent to the contact. Use this field for
        /// engagements to SMS.
        /// 
        /// 
        [AWSProperty(Min=1, Max=2048)]
        public string PublicSubject
        {
            get { return this._publicSubject; }
            set { this._publicSubject = value; }
        }
        // Check to see if PublicSubject property is set
        internal bool IsSetPublicSubject()
        {
            return this._publicSubject != null;
        }
        /// 
        /// Gets and sets the property Sender. 
        /// 
        /// The user that started the engagement.
        /// 
        /// 
        [AWSProperty(Required=true, Max=255)]
        public string Sender
        {
            get { return this._sender; }
            set { this._sender = value; }
        }
        // Check to see if Sender property is set
        internal bool IsSetSender()
        {
            return this._sender != null;
        }
        /// 
        /// Gets and sets the property Subject. 
        /// 
        /// The secure subject of the message that was sent to the contact. Use this field for
        /// engagements to VOICE or EMAIL.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=2048)]
        public string Subject
        {
            get { return this._subject; }
            set { this._subject = value; }
        }
        // Check to see if Subject property is set
        internal bool IsSetSubject()
        {
            return this._subject != null;
        }
    }
}