/*
 * 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 pinpoint-2016-12-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.Pinpoint.Model
{
    /// 
    /// Specifies the default settings and content for a push notification that's sent directly
    /// to an endpoint.
    /// 
    public partial class DefaultPushNotificationMessage
    {
        private Action _action;
        private string _body;
        private Dictionary _data = new Dictionary();
        private bool? _silentPush;
        private Dictionary> _substitutions = new Dictionary>();
        private string _title;
        private string _url;
        /// 
        /// Gets and sets the property Action. 
        /// 
        /// The default action to occur if a recipient taps the push notification. Valid values
        /// are:
        /// 
        ///  - 
        /// 
        /// OPEN_APP - Your app opens or it becomes the foreground app if it was sent to the background.
        /// This is the default action.
        /// 
        /// 
- 
        /// 
        /// DEEP_LINK - Your app opens and displays a designated user interface in the app. This
        /// setting uses the deep-linking features of the iOS and Android platforms.
        /// 
        /// 
- 
        /// 
        /// URL - The default mobile browser on the recipient's device opens and loads the web
        /// page at a URL that you specify.
        /// 
        /// 
/// 
        public Action Action
        {
            get { return this._action; }
            set { this._action = value; }
        }
        // Check to see if Action property is set
        internal bool IsSetAction()
        {
            return this._action != null;
        }
        /// 
        /// Gets and sets the property Body. 
        /// 
        /// The default body of the notification message.
        /// 
        /// 
        public string Body
        {
            get { return this._body; }
            set { this._body = value; }
        }
        // Check to see if Body property is set
        internal bool IsSetBody()
        {
            return this._body != null;
        }
        /// 
        /// Gets and sets the property Data. 
        /// 
        /// The JSON data payload to use for the default push notification, if the notification
        /// is a silent push notification. This payload is added to the data.pinpoint.jsonBody
        /// object of the notification.
        /// 
        /// 
        public Dictionary Data
        {
            get { return this._data; }
            set { this._data = value; }
        }
        // Check to see if Data property is set
        internal bool IsSetData()
        {
            return this._data != null && this._data.Count > 0; 
        }
        /// 
        /// Gets and sets the property SilentPush. 
        /// 
        /// Specifies whether the default notification is a silent push notification, which is
        /// a push notification that doesn't display on a recipient's device. Silent push notifications
        /// can be used for cases such as updating an app's configuration or delivering messages
        /// to an in-app notification center.
        /// 
        /// 
        public bool SilentPush
        {
            get { return this._silentPush.GetValueOrDefault(); }
            set { this._silentPush = value; }
        }
        // Check to see if SilentPush property is set
        internal bool IsSetSilentPush()
        {
            return this._silentPush.HasValue; 
        }
        /// 
        /// Gets and sets the property Substitutions. 
        /// 
        /// The default message variables to use in the notification message. You can override
        /// the default variables with individual address variables.
        /// 
        /// 
        public Dictionary> Substitutions
        {
            get { return this._substitutions; }
            set { this._substitutions = value; }
        }
        // Check to see if Substitutions property is set
        internal bool IsSetSubstitutions()
        {
            return this._substitutions != null && this._substitutions.Count > 0; 
        }
        /// 
        /// Gets and sets the property Title. 
        /// 
        /// The default title to display above the notification message on a recipient's device.
        /// 
        /// 
        public string Title
        {
            get { return this._title; }
            set { this._title = value; }
        }
        // Check to see if Title property is set
        internal bool IsSetTitle()
        {
            return this._title != null;
        }
        /// 
        /// Gets and sets the property Url. 
        /// 
        /// The default URL to open in a recipient's default mobile browser, if a recipient taps
        /// the push notification and the value of the Action property is URL.
        /// 
        /// 
        public string Url
        {
            get { return this._url; }
            set { this._url = value; }
        }
        // Check to see if Url property is set
        internal bool IsSetUrl()
        {
            return this._url != null;
        }
    }
}