/*
 * 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 quicksight-2018-04-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.QuickSight.Model
{
    /// 
    /// Information about a dataset that contains permissions for row-level security (RLS).
    /// The permissions dataset maps fields to users or groups. For more information, see
    /// Using
    /// Row-Level Security (RLS) to Restrict Access to a Dataset in the Amazon QuickSight
    /// User Guide.
    /// 
    ///  
    /// 
    /// The option to deny permissions by setting PermissionPolicy to DENY_ACCESS
    /// is not supported for new RLS datasets.
    /// 
    /// 
    public partial class RowLevelPermissionDataSet
    {
        private string _arn;
        private RowLevelPermissionFormatVersion _formatVersion;
        private string _awsNamespace;
        private RowLevelPermissionPolicy _permissionPolicy;
        private Status _status;
        /// 
        /// Gets and sets the property Arn. 
        /// 
        /// The Amazon Resource Name (ARN) of the dataset that contains permissions for RLS.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public string Arn
        {
            get { return this._arn; }
            set { this._arn = value; }
        }
        // Check to see if Arn property is set
        internal bool IsSetArn()
        {
            return this._arn != null;
        }
        /// 
        /// Gets and sets the property FormatVersion. 
        /// 
        /// The user or group rules associated with the dataset that contains permissions for
        /// RLS.
        /// 
        ///  
        /// 
        /// By default, FormatVersion is VERSION_1. When FormatVersion
        /// is VERSION_1, UserName and GroupName are required.
        /// When FormatVersion is VERSION_2, UserARN and
        /// GroupARN are required, and Namespace must not exist.
        /// 
        /// 
        public RowLevelPermissionFormatVersion FormatVersion
        {
            get { return this._formatVersion; }
            set { this._formatVersion = value; }
        }
        // Check to see if FormatVersion property is set
        internal bool IsSetFormatVersion()
        {
            return this._formatVersion != null;
        }
        /// 
        /// Gets and sets the property Namespace. 
        /// 
        /// The namespace associated with the dataset that contains permissions for RLS.
        /// 
        /// 
        [AWSProperty(Max=64)]
        public string Namespace
        {
            get { return this._awsNamespace; }
            set { this._awsNamespace = value; }
        }
        // Check to see if Namespace property is set
        internal bool IsSetNamespace()
        {
            return this._awsNamespace != null;
        }
        /// 
        /// Gets and sets the property PermissionPolicy. 
        /// 
        /// The type of permissions to use when interpreting the permissions for RLS. DENY_ACCESS
        /// is included for backward compatibility only.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public RowLevelPermissionPolicy PermissionPolicy
        {
            get { return this._permissionPolicy; }
            set { this._permissionPolicy = value; }
        }
        // Check to see if PermissionPolicy property is set
        internal bool IsSetPermissionPolicy()
        {
            return this._permissionPolicy != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        /// The status of the row-level security permission dataset. If enabled, the status is
        /// ENABLED. If disabled, the status is DISABLED.
        /// 
        /// 
        public Status Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
    }
}