/*
 * 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 support-2013-04-15.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.AWSSupport.Model
{
    /// 
    /// Container for the parameters to the CreateCase operation.
    /// Creates a case in the Amazon Web Services Support Center. This operation is similar
    /// to how you create a case in the Amazon Web Services Support Center Create
    /// Case page.
    /// 
    ///  
    /// 
    /// The Amazon Web Services Support API doesn't support requesting service limit increases.
    /// You can submit a service limit increase in the following ways: 
    /// 
    ///   
    /// 
    /// A successful CreateCase request returns an Amazon Web Services Support
    /// case number. You can use the DescribeCases operation and specify the case number
    /// to get existing Amazon Web Services Support cases. After you create a case, use the
    /// AddCommunicationToCase operation to add additional communication or attachments
    /// to an existing case.
    /// 
    ///  
    /// 
    /// The caseId is separate from the displayId that appears in
    /// the Amazon Web Services Support Center.
    /// Use the DescribeCases operation to get the displayId.
    /// 
    ///    -  
    /// 
    /// You must have a Business, Enterprise On-Ramp, or Enterprise Support plan to use the
    /// Amazon Web Services Support API. 
    /// 
    ///  
-  
    /// 
    /// If you call the Amazon Web Services Support API from an account that doesn't have
    /// a Business, Enterprise On-Ramp, or Enterprise Support plan, the SubscriptionRequiredException/// error message appears. For information about changing your support plan, see Amazon
    /// Web Services Support.
    /// 
    ///
/// 
    public partial class CreateCaseRequest : AmazonAWSSupportRequest
    {
        private string _attachmentSetId;
        private string _categoryCode;
        private List _ccEmailAddresses = new List();
        private string _communicationBody;
        private string _issueType;
        private string _language;
        private string _serviceCode;
        private string _severityCode;
        private string _subject;
        /// 
        /// Gets and sets the property AttachmentSetId. 
        /// 
        /// The ID of a set of one or more attachments for the case. Create the set by using the
        /// AddAttachmentsToSet operation.
        /// 
        /// 
        public string AttachmentSetId
        {
            get { return this._attachmentSetId; }
            set { this._attachmentSetId = value; }
        }
        // Check to see if AttachmentSetId property is set
        internal bool IsSetAttachmentSetId()
        {
            return this._attachmentSetId != null;
        }
        /// 
        /// Gets and sets the property CategoryCode. 
        /// 
        /// The category of problem for the support case. You also use the DescribeServices
        /// operation to get the category code for a service. Each Amazon Web Services service
        /// defines its own set of category codes.
        /// 
        /// 
        public string CategoryCode
        {
            get { return this._categoryCode; }
            set { this._categoryCode = value; }
        }
        // Check to see if CategoryCode property is set
        internal bool IsSetCategoryCode()
        {
            return this._categoryCode != null;
        }
        /// 
        /// Gets and sets the property CcEmailAddresses. 
        /// 
        /// A list of email addresses that Amazon Web Services Support copies on case correspondence.
        /// Amazon Web Services Support identifies the account that creates the case when you
        /// specify your Amazon Web Services credentials in an HTTP POST method or use the Amazon Web Services SDKs. 
        /// 
        /// 
        [AWSProperty(Min=0, Max=10)]
        public List CcEmailAddresses
        {
            get { return this._ccEmailAddresses; }
            set { this._ccEmailAddresses = value; }
        }
        // Check to see if CcEmailAddresses property is set
        internal bool IsSetCcEmailAddresses()
        {
            return this._ccEmailAddresses != null && this._ccEmailAddresses.Count > 0; 
        }
        /// 
        /// Gets and sets the property CommunicationBody. 
        /// 
        /// The communication body text that describes the issue. This text appears in the Description
        /// field on the Amazon Web Services Support Center Create
        /// Case page.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=8000)]
        public string CommunicationBody
        {
            get { return this._communicationBody; }
            set { this._communicationBody = value; }
        }
        // Check to see if CommunicationBody property is set
        internal bool IsSetCommunicationBody()
        {
            return this._communicationBody != null;
        }
        /// 
        /// Gets and sets the property IssueType. 
        /// 
        /// The type of issue for the case. You can specifycustomer-service or technical.
        /// If you don't specify a value, the default is technical.
        /// 
        /// 
        public string IssueType
        {
            get { return this._issueType; }
            set { this._issueType = value; }
        }
        // Check to see if IssueType property is set
        internal bool IsSetIssueType()
        {
            return this._issueType != null;
        }
        /// 
        /// Gets and sets the property Language. 
        /// 
        /// The language in which Amazon Web Services Support handles the case. Amazon Web Services
        /// Support currently supports Chinese (“zh”), English ("en"), Japanese ("ja") and Korean
        /// (“ko”). You must specify the ISO 639-1 code for the language parameter
        /// if you want support in that language.
        /// 
        /// 
        public string Language
        {
            get { return this._language; }
            set { this._language = value; }
        }
        // Check to see if Language property is set
        internal bool IsSetLanguage()
        {
            return this._language != null;
        }
        /// 
        /// Gets and sets the property ServiceCode. 
        /// 
        /// The code for the Amazon Web Services service. You can use the DescribeServices
        /// operation to get the possible serviceCode values.
        /// 
        /// 
        public string ServiceCode
        {
            get { return this._serviceCode; }
            set { this._serviceCode = value; }
        }
        // Check to see if ServiceCode property is set
        internal bool IsSetServiceCode()
        {
            return this._serviceCode != null;
        }
        /// 
        /// Gets and sets the property SeverityCode. 
        /// 
        /// A value that indicates the urgency of the case. This value determines the response
        /// time according to your service level agreement with Amazon Web Services Support. You
        /// can use the DescribeSeverityLevels operation to get the possible values for
        /// severityCode. 
        /// 
        ///  
        /// 
        /// For more information, see SeverityLevel and Choosing
        /// a Severity in the Amazon Web Services Support User Guide.
        /// 
        ///   
        /// 
        /// The availability of severity levels depends on the support plan for the Amazon Web
        /// Services account.
        /// 
        ///  
        /// 
        public string SeverityCode
        {
            get { return this._severityCode; }
            set { this._severityCode = value; }
        }
        // Check to see if SeverityCode property is set
        internal bool IsSetSeverityCode()
        {
            return this._severityCode != null;
        }
        /// 
        /// Gets and sets the property Subject. 
        /// 
        /// The title of the support case. The title appears in the Subject field on the
        /// Amazon Web Services Support Center Create
        /// Case page.
        /// 
        /// 
        [AWSProperty(Required=true)]
        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;
        }
    }
}