generated/api/Models/Company.cs

// Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.9.4, generator: @autorest/powershell@3.0.415)
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

namespace Commvault.Powershell.Models
{
    using static Commvault.Powershell.Runtime.Extensions;

    /// <summary>Used to return details of a company whose companyId has been provided</summary>
    public partial class Company :
        Commvault.Powershell.Models.ICompany,
        Commvault.Powershell.Models.ICompanyInternal
    {

        /// <summary>Internal Acessors for EmailSettings</summary>
        Commvault.Powershell.Models.IEmailSettings Commvault.Powershell.Models.ICompanyInternal.EmailSettings { get => (this._emailSettings = this._emailSettings ?? new Commvault.Powershell.Models.EmailSettings()); set { {_emailSettings = value;} } }

        /// <summary>Internal Acessors for FileExceptions</summary>
        Commvault.Powershell.Models.IFileExceptions Commvault.Powershell.Models.ICompanyInternal.FileExceptions { get => (this._fileExceptions = this._fileExceptions ?? new Commvault.Powershell.Models.FileExceptions()); set { {_fileExceptions = value;} } }

        /// <summary>Internal Acessors for General</summary>
        Commvault.Powershell.Models.IGeneral Commvault.Powershell.Models.ICompanyInternal.General { get => (this._general = this._general ?? new Commvault.Powershell.Models.General()); set { {_general = value;} } }

        /// <summary>Internal Acessors for GeneralTwoFactorAuth</summary>
        Commvault.Powershell.Models.ITwoFactorAuth Commvault.Powershell.Models.ICompanyInternal.GeneralTwoFactorAuth { get => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuth; set => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuth = value; }

        /// <summary>Internal Acessors for Sites</summary>
        Commvault.Powershell.Models.ISites Commvault.Powershell.Models.ICompanyInternal.Sites { get => (this._sites = this._sites ?? new Commvault.Powershell.Models.Sites()); set { {_sites = value;} } }

        /// <summary>Backing field for <see cref="Contacts" /> property.</summary>
        private Commvault.Powershell.Models.IContactResp[] _contacts;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IContactResp[] Contacts { get => this._contacts; set => this._contacts = value; }

        /// <summary>Backing field for <see cref="CreationTime" /> property.</summary>
        private long? _creationTime;

        /// <summary>The date and time of the creation of the company.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? CreationTime { get => this._creationTime; set => this._creationTime = value; }

        /// <summary>Email id of the sender</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string EmailSettingSenderEmail { get => ((Commvault.Powershell.Models.IEmailSettingsInternal)EmailSettings).SenderEmail; set => ((Commvault.Powershell.Models.IEmailSettingsInternal)EmailSettings).SenderEmail = value ?? null; }

        /// <summary>Name of the sender sending the email</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string EmailSettingSenderName { get => ((Commvault.Powershell.Models.IEmailSettingsInternal)EmailSettings).SenderName; set => ((Commvault.Powershell.Models.IEmailSettingsInternal)EmailSettings).SenderName = value ?? null; }

        /// <summary>Backing field for <see cref="EmailSettings" /> property.</summary>
        private Commvault.Powershell.Models.IEmailSettings _emailSettings;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IEmailSettings EmailSettings { get => (this._emailSettings = this._emailSettings ?? new Commvault.Powershell.Models.EmailSettings()); set => this._emailSettings = value; }

        /// <summary>Unix file paths to be excluded.Comma separated string.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string FileExceptionUnix { get => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).Unix; set => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).Unix = value ?? null; }

        /// <summary>
        /// Enable or disable the use of the file path filters on all subclients. By default, it is enabled when filters are added
        /// for either Windows or Unix or both.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? FileExceptionUseCompanyGlobalFilter { get => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).UseCompanyGlobalFilter; set => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).UseCompanyGlobalFilter = value ?? default(bool); }

        /// <summary>Window file paths to be excluded.Comma separated string.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string FileExceptionWindows { get => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).Windows; set => ((Commvault.Powershell.Models.IFileExceptionsInternal)FileExceptions).Windows = value ?? null; }

        /// <summary>Backing field for <see cref="FileExceptions" /> property.</summary>
        private Commvault.Powershell.Models.IFileExceptions _fileExceptions;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IFileExceptions FileExceptions { get => (this._fileExceptions = this._fileExceptions ?? new Commvault.Powershell.Models.FileExceptions()); set => this._fileExceptions = value; }

        /// <summary>Backing field for <see cref="General" /> property.</summary>
        private Commvault.Powershell.Models.IGeneral _general;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.IGeneral General { get => (this._general = this._general ?? new Commvault.Powershell.Models.General()); set => this._general = value; }

        /// <summary>
        /// Used to assign owners to laptops automatically after installation. The owners can be all the logged in active directory
        /// users, the first user to login into the laptop after installation or the users belonging to the laptop's local user group
        /// list. The option to assign automatically can also be disabled.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralAssignLaptopOwners { get => ((Commvault.Powershell.Models.IGeneralInternal)General).AssignLaptopOwners; set => ((Commvault.Powershell.Models.IGeneralInternal)General).AssignLaptopOwners = value ?? null; }

        /// <summary>Enable or disable authcode for installation.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralAuthcodeForInstallation { get => ((Commvault.Powershell.Models.IGeneralInternal)General).AuthcodeForInstallation; set => ((Commvault.Powershell.Models.IGeneralInternal)General).AuthcodeForInstallation = value ?? default(bool); }

        /// <summary>
        /// Enable or Disable Auto Discover Applications.When Auto discover applications is enabled, each member server of this company
        /// is searched once every 24 hours to discover any applications that need to be backed up. For any newly-discovered and unprotected
        /// applications, the agent software is automatically installed on the server.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralAutoDiscoverApp { get => ((Commvault.Powershell.Models.IGeneralInternal)General).AutoDiscoverApp; set => ((Commvault.Powershell.Models.IGeneralInternal)General).AutoDiscoverApp = value ?? default(bool); }

        /// <summary>Supported domains for the company</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralEmailSuffix { get => ((Commvault.Powershell.Models.IGeneralInternal)General).EmailSuffix; set => ((Commvault.Powershell.Models.IGeneralInternal)General).EmailSuffix = value ?? null; }

        /// <summary>Enable or disable data encryption</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralEnableDataEncryption { get => ((Commvault.Powershell.Models.IGeneralInternal)General).EnableDataEncryption; set => ((Commvault.Powershell.Models.IGeneralInternal)General).EnableDataEncryption = value ?? default(bool); }

        /// <summary>
        /// These are different types of infrastructure provided for storage in companies. It can be rented from the provider, owned
        /// or can be a hybrid. Cannot move back to rented storage from owned storage and cannot move back to rented storage/owned
        /// storage from rented and owned storage.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralInfrastructureType { get => ((Commvault.Powershell.Models.IGeneralInternal)General).InfrastructureType; set => ((Commvault.Powershell.Models.IGeneralInternal)General).InfrastructureType = value ?? null; }

        /// <summary>The company domain or NetBIOS name</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string GeneralNewAlias { get => ((Commvault.Powershell.Models.IGeneralInternal)General).NewAlias; set => ((Commvault.Powershell.Models.IGeneralInternal)General).NewAlias = value ?? null; }

        /// <summary>
        /// Enable reseller mode. A reseller is a user or user groups who can operate multiple tenant environments. The service provider
        /// can assign one or more resellers as the tenant operator for a company. The reseller can switch to any of their assigned
        /// tenant environment and operate on the company as a tenant user. Once enabled, the reseller mode cannot be disabled.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralResellerMode { get => ((Commvault.Powershell.Models.IGeneralInternal)General).ResellerMode; set => ((Commvault.Powershell.Models.IGeneralInternal)General).ResellerMode = value ?? default(bool); }

        /// <summary>Service commcells associated with the master commcell.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IIdName[] GeneralServiceCommcells { get => ((Commvault.Powershell.Models.IGeneralInternal)General).ServiceCommcells; set => ((Commvault.Powershell.Models.IGeneralInternal)General).ServiceCommcells = value ?? null /* arrayOf */; }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] GeneralSupportedSolutions { get => ((Commvault.Powershell.Models.IGeneralInternal)General).SupportedSolutions; set => ((Commvault.Powershell.Models.IGeneralInternal)General).SupportedSolutions = value ?? null /* arrayOf */; }

        /// <summary>Enable or disable the use of User Pricipal Name in place of an email address.</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? GeneralUpnInsteadOfEmail { get => ((Commvault.Powershell.Models.IGeneralInternal)General).UpnInsteadOfEmail; set => ((Commvault.Powershell.Models.IGeneralInternal)General).UpnInsteadOfEmail = value ?? default(bool); }

        /// <summary>Backing field for <see cref="Id" /> property.</summary>
        private long? _id;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? Id { get => this._id; set => this._id = value; }

        /// <summary>Backing field for <see cref="OperatorsOperationType" /> property.</summary>
        private long? _operatorsOperationType;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public long? OperatorsOperationType { get => this._operatorsOperationType; set => this._operatorsOperationType = value; }

        /// <summary>Backing field for <see cref="Plans" /> property.</summary>
        private Commvault.Powershell.Models.IIdName[] _plans;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.IIdName[] Plans { get => this._plans; set => this._plans = value; }

        /// <summary>Backing field for <see cref="Security" /> property.</summary>
        private Commvault.Powershell.Models.ISecurityAssoc[] _security;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.ISecurityAssoc[] Security { get => this._security; set => this._security = value; }

        /// <summary>Primary site name</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string SitePrimarySiteName { get => ((Commvault.Powershell.Models.ISitesInternal)Sites).PrimarySiteName; set => ((Commvault.Powershell.Models.ISitesInternal)Sites).PrimarySiteName = value ?? null; }

        /// <summary>Secondary site names</summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public string[] SiteSecondarySiteNames { get => ((Commvault.Powershell.Models.ISitesInternal)Sites).SecondarySiteNames; set => ((Commvault.Powershell.Models.ISitesInternal)Sites).SecondarySiteNames = value ?? null /* arrayOf */; }

        /// <summary>Backing field for <see cref="Sites" /> property.</summary>
        private Commvault.Powershell.Models.ISites _sites;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        internal Commvault.Powershell.Models.ISites Sites { get => (this._sites = this._sites ?? new Commvault.Powershell.Models.Sites()); set => this._sites = value; }

        /// <summary>Backing field for <see cref="TenantOperators" /> property.</summary>
        private Commvault.Powershell.Models.ITenantOperator[] _tenantOperators;

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Owned)]
        public Commvault.Powershell.Models.ITenantOperator[] TenantOperators { get => this._tenantOperators; set => this._tenantOperators = value; }

        /// <summary>
        /// enable two factor authentication for every entity. if set to false when Two factor authentication is enabled, provide
        /// userGroupId or userGroupName. If both are provided, userGroupId is taken
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? TwoFactorAuthAll { get => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthAll; set => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthAll = value ?? default(bool); }

        /// <summary>
        /// enable or disable two factor authentication. if enabled, all or userGroups value should be provided.
        /// </summary>
        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public bool? TwoFactorAuthEnable { get => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthEnable; set => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthEnable = value ?? default(bool); }

        [Commvault.Powershell.Origin(Commvault.Powershell.PropertyOrigin.Inlined)]
        public Commvault.Powershell.Models.IIdName[] TwoFactorAuthUserGroups { get => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthUserGroups; set => ((Commvault.Powershell.Models.IGeneralInternal)General).TwoFactorAuthUserGroups = value ?? null /* arrayOf */; }

        /// <summary>Creates an new <see cref="Company" /> instance.</summary>
        public Company()
        {

        }
    }
    /// Used to return details of a company whose companyId has been provided
    public partial interface ICompany :
        Commvault.Powershell.Runtime.IJsonSerializable
    {
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"contacts",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IContactResp) })]
        Commvault.Powershell.Models.IContactResp[] Contacts { get; set; }
        /// <summary>The date and time of the creation of the company.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The date and time of the creation of the company.",
        SerializedName = @"creationTime",
        PossibleTypes = new [] { typeof(long) })]
        long? CreationTime { get; set; }
        /// <summary>Email id of the sender</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Email id of the sender",
        SerializedName = @"senderEmail",
        PossibleTypes = new [] { typeof(string) })]
        string EmailSettingSenderEmail { get; set; }
        /// <summary>Name of the sender sending the email</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Name of the sender sending the email",
        SerializedName = @"senderName",
        PossibleTypes = new [] { typeof(string) })]
        string EmailSettingSenderName { get; set; }
        /// <summary>Unix file paths to be excluded.Comma separated string.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Unix file paths to be excluded.Comma separated string.",
        SerializedName = @"unix",
        PossibleTypes = new [] { typeof(string) })]
        string FileExceptionUnix { get; set; }
        /// <summary>
        /// Enable or disable the use of the file path filters on all subclients. By default, it is enabled when filters are added
        /// for either Windows or Unix or both.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable or disable the use of the file path filters on all subclients. By default, it is enabled when filters are added for either Windows or Unix or both.",
        SerializedName = @"useCompanyGlobalFilter",
        PossibleTypes = new [] { typeof(bool) })]
        bool? FileExceptionUseCompanyGlobalFilter { get; set; }
        /// <summary>Window file paths to be excluded.Comma separated string.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Window file paths to be excluded.Comma separated string.",
        SerializedName = @"windows",
        PossibleTypes = new [] { typeof(string) })]
        string FileExceptionWindows { get; set; }
        /// <summary>
        /// Used to assign owners to laptops automatically after installation. The owners can be all the logged in active directory
        /// users, the first user to login into the laptop after installation or the users belonging to the laptop's local user group
        /// list. The option to assign automatically can also be disabled.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Used to assign owners to laptops automatically after installation. The owners can be all the logged in active directory users, the first user to login into the laptop after installation or the users belonging to the laptop's local user group list. The option to assign automatically can also be disabled.",
        SerializedName = @"assignLaptopOwners",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralAssignLaptopOwners { get; set; }
        /// <summary>Enable or disable authcode for installation.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable or disable authcode for installation.",
        SerializedName = @"authcodeForInstallation",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralAuthcodeForInstallation { get; set; }
        /// <summary>
        /// Enable or Disable Auto Discover Applications.When Auto discover applications is enabled, each member server of this company
        /// is searched once every 24 hours to discover any applications that need to be backed up. For any newly-discovered and unprotected
        /// applications, the agent software is automatically installed on the server.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable or Disable Auto Discover Applications.When Auto discover applications is enabled, each member server of this company is searched once every 24 hours to discover any applications that need to be backed up. For any newly-discovered and unprotected applications, the agent software is automatically installed on the server.",
        SerializedName = @"autoDiscoverApp",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralAutoDiscoverApp { get; set; }
        /// <summary>Supported domains for the company</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Supported domains for the company",
        SerializedName = @"emailSuffix",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralEmailSuffix { get; set; }
        /// <summary>Enable or disable data encryption</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable or disable data encryption",
        SerializedName = @"enableDataEncryption",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralEnableDataEncryption { get; set; }
        /// <summary>
        /// These are different types of infrastructure provided for storage in companies. It can be rented from the provider, owned
        /// or can be a hybrid. Cannot move back to rented storage from owned storage and cannot move back to rented storage/owned
        /// storage from rented and owned storage.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"These are different types of infrastructure provided for storage in companies. It can be rented from the provider, owned or can be a hybrid. Cannot move back to rented storage from owned storage and cannot move back to rented storage/owned storage from rented and owned storage.",
        SerializedName = @"infrastructureType",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralInfrastructureType { get; set; }
        /// <summary>The company domain or NetBIOS name</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"The company domain or NetBIOS name",
        SerializedName = @"newAlias",
        PossibleTypes = new [] { typeof(string) })]
        string GeneralNewAlias { get; set; }
        /// <summary>
        /// Enable reseller mode. A reseller is a user or user groups who can operate multiple tenant environments. The service provider
        /// can assign one or more resellers as the tenant operator for a company. The reseller can switch to any of their assigned
        /// tenant environment and operate on the company as a tenant user. Once enabled, the reseller mode cannot be disabled.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable reseller mode. A reseller is a user or user groups who can operate multiple tenant environments. The service provider can assign one or more resellers as the tenant operator for a company. The reseller can switch to any of their assigned tenant environment and operate on the company as a tenant user. Once enabled, the reseller mode cannot be disabled.",
        SerializedName = @"resellerMode",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralResellerMode { get; set; }
        /// <summary>Service commcells associated with the master commcell.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Service commcells associated with the master commcell.",
        SerializedName = @"serviceCommcells",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] GeneralServiceCommcells { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"supportedSolutions",
        PossibleTypes = new [] { typeof(string) })]
        string[] GeneralSupportedSolutions { get; set; }
        /// <summary>Enable or disable the use of User Pricipal Name in place of an email address.</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Enable or disable the use of User Pricipal Name in place of an email address.",
        SerializedName = @"upnInsteadOfEmail",
        PossibleTypes = new [] { typeof(bool) })]
        bool? GeneralUpnInsteadOfEmail { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"id",
        PossibleTypes = new [] { typeof(long) })]
        long? Id { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"operatorsOperationType",
        PossibleTypes = new [] { typeof(long) })]
        long? OperatorsOperationType { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"plans",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] Plans { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"security",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.ISecurityAssoc) })]
        Commvault.Powershell.Models.ISecurityAssoc[] Security { get; set; }
        /// <summary>Primary site name</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Primary site name",
        SerializedName = @"primarySiteName",
        PossibleTypes = new [] { typeof(string) })]
        string SitePrimarySiteName { get; set; }
        /// <summary>Secondary site names</summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"Secondary site names",
        SerializedName = @"secondarySiteNames",
        PossibleTypes = new [] { typeof(string) })]
        string[] SiteSecondarySiteNames { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"tenantOperators",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.ITenantOperator) })]
        Commvault.Powershell.Models.ITenantOperator[] TenantOperators { get; set; }
        /// <summary>
        /// enable two factor authentication for every entity. if set to false when Two factor authentication is enabled, provide
        /// userGroupId or userGroupName. If both are provided, userGroupId is taken
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"enable two factor authentication for every entity. if set to false when Two factor authentication is enabled, provide userGroupId or userGroupName. If both are provided, userGroupId is taken",
        SerializedName = @"all",
        PossibleTypes = new [] { typeof(bool) })]
        bool? TwoFactorAuthAll { get; set; }
        /// <summary>
        /// enable or disable two factor authentication. if enabled, all or userGroups value should be provided.
        /// </summary>
        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"enable or disable two factor authentication. if enabled, all or userGroups value should be provided.",
        SerializedName = @"enable",
        PossibleTypes = new [] { typeof(bool) })]
        bool? TwoFactorAuthEnable { get; set; }

        [Commvault.Powershell.Runtime.Info(
        Required = false,
        ReadOnly = false,
        Description = @"",
        SerializedName = @"userGroups",
        PossibleTypes = new [] { typeof(Commvault.Powershell.Models.IIdName) })]
        Commvault.Powershell.Models.IIdName[] TwoFactorAuthUserGroups { get; set; }

    }
    /// Used to return details of a company whose companyId has been provided
    internal partial interface ICompanyInternal

    {
        Commvault.Powershell.Models.IContactResp[] Contacts { get; set; }
        /// <summary>The date and time of the creation of the company.</summary>
        long? CreationTime { get; set; }
        /// <summary>Email id of the sender</summary>
        string EmailSettingSenderEmail { get; set; }
        /// <summary>Name of the sender sending the email</summary>
        string EmailSettingSenderName { get; set; }

        Commvault.Powershell.Models.IEmailSettings EmailSettings { get; set; }
        /// <summary>Unix file paths to be excluded.Comma separated string.</summary>
        string FileExceptionUnix { get; set; }
        /// <summary>
        /// Enable or disable the use of the file path filters on all subclients. By default, it is enabled when filters are added
        /// for either Windows or Unix or both.
        /// </summary>
        bool? FileExceptionUseCompanyGlobalFilter { get; set; }
        /// <summary>Window file paths to be excluded.Comma separated string.</summary>
        string FileExceptionWindows { get; set; }

        Commvault.Powershell.Models.IFileExceptions FileExceptions { get; set; }

        Commvault.Powershell.Models.IGeneral General { get; set; }
        /// <summary>
        /// Used to assign owners to laptops automatically after installation. The owners can be all the logged in active directory
        /// users, the first user to login into the laptop after installation or the users belonging to the laptop's local user group
        /// list. The option to assign automatically can also be disabled.
        /// </summary>
        string GeneralAssignLaptopOwners { get; set; }
        /// <summary>Enable or disable authcode for installation.</summary>
        bool? GeneralAuthcodeForInstallation { get; set; }
        /// <summary>
        /// Enable or Disable Auto Discover Applications.When Auto discover applications is enabled, each member server of this company
        /// is searched once every 24 hours to discover any applications that need to be backed up. For any newly-discovered and unprotected
        /// applications, the agent software is automatically installed on the server.
        /// </summary>
        bool? GeneralAutoDiscoverApp { get; set; }
        /// <summary>Supported domains for the company</summary>
        string GeneralEmailSuffix { get; set; }
        /// <summary>Enable or disable data encryption</summary>
        bool? GeneralEnableDataEncryption { get; set; }
        /// <summary>
        /// These are different types of infrastructure provided for storage in companies. It can be rented from the provider, owned
        /// or can be a hybrid. Cannot move back to rented storage from owned storage and cannot move back to rented storage/owned
        /// storage from rented and owned storage.
        /// </summary>
        string GeneralInfrastructureType { get; set; }
        /// <summary>The company domain or NetBIOS name</summary>
        string GeneralNewAlias { get; set; }
        /// <summary>
        /// Enable reseller mode. A reseller is a user or user groups who can operate multiple tenant environments. The service provider
        /// can assign one or more resellers as the tenant operator for a company. The reseller can switch to any of their assigned
        /// tenant environment and operate on the company as a tenant user. Once enabled, the reseller mode cannot be disabled.
        /// </summary>
        bool? GeneralResellerMode { get; set; }
        /// <summary>Service commcells associated with the master commcell.</summary>
        Commvault.Powershell.Models.IIdName[] GeneralServiceCommcells { get; set; }

        string[] GeneralSupportedSolutions { get; set; }

        Commvault.Powershell.Models.ITwoFactorAuth GeneralTwoFactorAuth { get; set; }
        /// <summary>Enable or disable the use of User Pricipal Name in place of an email address.</summary>
        bool? GeneralUpnInsteadOfEmail { get; set; }

        long? Id { get; set; }

        long? OperatorsOperationType { get; set; }

        Commvault.Powershell.Models.IIdName[] Plans { get; set; }

        Commvault.Powershell.Models.ISecurityAssoc[] Security { get; set; }
        /// <summary>Primary site name</summary>
        string SitePrimarySiteName { get; set; }
        /// <summary>Secondary site names</summary>
        string[] SiteSecondarySiteNames { get; set; }

        Commvault.Powershell.Models.ISites Sites { get; set; }

        Commvault.Powershell.Models.ITenantOperator[] TenantOperators { get; set; }
        /// <summary>
        /// enable two factor authentication for every entity. if set to false when Two factor authentication is enabled, provide
        /// userGroupId or userGroupName. If both are provided, userGroupId is taken
        /// </summary>
        bool? TwoFactorAuthAll { get; set; }
        /// <summary>
        /// enable or disable two factor authentication. if enabled, all or userGroups value should be provided.
        /// </summary>
        bool? TwoFactorAuthEnable { get; set; }

        Commvault.Powershell.Models.IIdName[] TwoFactorAuthUserGroups { get; set; }

    }
}