/*
 * 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 events-2015-10-07.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.CloudWatchEvents.Model
{
    /// 
    /// Represents an event to be submitted.
    /// 
    public partial class PutEventsRequestEntry
    {
        private string _detail;
        private string _detailType;
        private string _eventBusName;
        private List _resources = new List();
        private string _source;
        private DateTime? _time;
        private string _traceHeader;
        /// 
        /// Gets and sets the property Detail. 
        /// 
        /// A valid JSON string. There is no other schema imposed. The JSON string may contain
        /// fields and nested subobjects.
        /// 
        /// 
        public string Detail
        {
            get { return this._detail; }
            set { this._detail = value; }
        }
        // Check to see if Detail property is set
        internal bool IsSetDetail()
        {
            return this._detail != null;
        }
        /// 
        /// Gets and sets the property DetailType. 
        /// 
        /// Free-form string used to decide what fields to expect in the event detail.
        /// 
        /// 
        public string DetailType
        {
            get { return this._detailType; }
            set { this._detailType = value; }
        }
        // Check to see if DetailType property is set
        internal bool IsSetDetailType()
        {
            return this._detailType != null;
        }
        /// 
        /// Gets and sets the property EventBusName. 
        /// 
        /// The name or ARN of the event bus to receive the event. Only the rules that are associated
        /// with this event bus are used to match the event. If you omit this, the default event
        /// bus is used.
        /// 
        /// 
        [AWSProperty(Min=1, Max=1600)]
        public string EventBusName
        {
            get { return this._eventBusName; }
            set { this._eventBusName = value; }
        }
        // Check to see if EventBusName property is set
        internal bool IsSetEventBusName()
        {
            return this._eventBusName != null;
        }
        /// 
        /// Gets and sets the property Resources. 
        /// 
        /// Amazon Web Services resources, identified by Amazon Resource Name (ARN), which the
        /// event primarily concerns. Any number, including zero, may be present.
        /// 
        /// 
        public List Resources
        {
            get { return this._resources; }
            set { this._resources = value; }
        }
        // Check to see if Resources property is set
        internal bool IsSetResources()
        {
            return this._resources != null && this._resources.Count > 0; 
        }
        /// 
        /// Gets and sets the property Source. 
        /// 
        /// The source of the event.
        /// 
        /// 
        public string Source
        {
            get { return this._source; }
            set { this._source = value; }
        }
        // Check to see if Source property is set
        internal bool IsSetSource()
        {
            return this._source != null;
        }
        /// 
        /// Gets and sets the property Time. 
        /// 
        /// The time stamp of the event, per RFC3339.
        /// If no time stamp is provided, the time stamp of the PutEvents
        /// call is used.
        /// 
        /// 
        public DateTime Time
        {
            get { return this._time.GetValueOrDefault(); }
            set { this._time = value; }
        }
        // Check to see if Time property is set
        internal bool IsSetTime()
        {
            return this._time.HasValue; 
        }
        /// 
        /// Gets and sets the property TraceHeader. 
        /// 
        /// An X-Ray trade header, which is an http header (X-Amzn-Trace-Id) that contains the
        /// trace-id associated with the event.
        /// 
        ///  
        /// 
        /// To learn more about X-Ray trace headers, see Tracing
        /// header in the X-Ray Developer Guide.
        /// 
        /// 
        [AWSProperty(Min=1, Max=500)]
        public string TraceHeader
        {
            get { return this._traceHeader; }
            set { this._traceHeader = value; }
        }
        // Check to see if TraceHeader property is set
        internal bool IsSetTraceHeader()
        {
            return this._traceHeader != null;
        }
    }
}