// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

type Namespace_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`

	// Identity: Properties of BYOK Identity description
	Identity *Identity_STATUS `json:"identity,omitempty"`

	// Location: Resource location.
	Location *string `json:"location,omitempty"`

	// Name: The name of the resource
	Name *string `json:"name,omitempty"`

	// Properties: Namespace properties supplied for create namespace operation.
	Properties *Namespace_Properties_STATUS `json:"properties,omitempty"`

	// Sku: Properties of sku resource
	Sku *Sku_STATUS `json:"sku,omitempty"`

	// SystemData: The system meta data relating to this resource.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

	// Tags: Resource tags.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string `json:"type,omitempty"`
}

// Properties to configure Identity for Bring your Own Keys
type Identity_STATUS struct {
	// PrincipalId: ObjectId from the KeyVault
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: TenantId from the KeyVault
	TenantId *string `json:"tenantId,omitempty"`

	// Type: Type of managed service identity.
	Type *Identity_Type_STATUS `json:"type,omitempty"`

	// UserAssignedIdentities: Properties for User Assigned Identities
	UserAssignedIdentities map[string]UserAssignedIdentity_STATUS `json:"userAssignedIdentities,omitempty"`
}

type Namespace_Properties_STATUS struct {
	// AlternateName: Alternate name specified when alias and namespace names are same.
	AlternateName *string `json:"alternateName,omitempty"`

	// ClusterArmId: Cluster ARM ID of the Namespace.
	ClusterArmId *string `json:"clusterArmId,omitempty"`

	// CreatedAt: The time the Namespace was created.
	CreatedAt *string `json:"createdAt,omitempty"`

	// DisableLocalAuth: This property disables SAS authentication for the Event Hubs namespace.
	DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"`

	// Encryption: Properties of BYOK Encryption description
	Encryption *Encryption_STATUS `json:"encryption,omitempty"`

	// IsAutoInflateEnabled: Value that indicates whether AutoInflate is enabled for eventhub namespace.
	IsAutoInflateEnabled *bool `json:"isAutoInflateEnabled,omitempty"`

	// KafkaEnabled: Value that indicates whether Kafka is enabled for eventhub namespace.
	KafkaEnabled *bool `json:"kafkaEnabled,omitempty"`

	// MaximumThroughputUnits: Upper limit of throughput units when AutoInflate is enabled, value should be within 0 to 20
	// throughput units. ( '0' if AutoInflateEnabled = true)
	MaximumThroughputUnits *int `json:"maximumThroughputUnits,omitempty"`

	// MetricId: Identifier for Azure Insights metrics.
	MetricId *string `json:"metricId,omitempty"`

	// MinimumTlsVersion: The minimum TLS version for the cluster to support, e.g. '1.2'
	MinimumTlsVersion *Namespace_Properties_MinimumTlsVersion_STATUS `json:"minimumTlsVersion,omitempty"`

	// PrivateEndpointConnections: List of private endpoint connections.
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"`

	// ProvisioningState: Provisioning state of the Namespace.
	ProvisioningState *string `json:"provisioningState,omitempty"`

	// PublicNetworkAccess: This determines if traffic is allowed over public network. By default it is enabled.
	PublicNetworkAccess *Namespace_Properties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"`

	// ServiceBusEndpoint: Endpoint you can use to perform Service Bus operations.
	ServiceBusEndpoint *string `json:"serviceBusEndpoint,omitempty"`

	// Status: Status of the Namespace.
	Status *string `json:"status,omitempty"`

	// UpdatedAt: The time the Namespace was updated.
	UpdatedAt *string `json:"updatedAt,omitempty"`

	// ZoneRedundant: Enabling this property creates a Standard Event Hubs Namespace in regions supported availability zones.
	ZoneRedundant *bool `json:"zoneRedundant,omitempty"`
}

// SKU parameters supplied to the create namespace operation
type Sku_STATUS struct {
	// Capacity: The Event Hubs throughput units for Basic or Standard tiers, where value should be 0 to 20 throughput units.
	// The Event Hubs premium units for Premium tier, where value should be 0 to 10 premium units.
	Capacity *int `json:"capacity,omitempty"`

	// Name: Name of this SKU.
	Name *Sku_Name_STATUS `json:"name,omitempty"`

	// Tier: The billing tier of this particular SKU.
	Tier *Sku_Tier_STATUS `json:"tier,omitempty"`
}

// Metadata pertaining to creation and last modification of the resource.
type SystemData_STATUS struct {
	// CreatedAt: The timestamp of resource creation (UTC).
	CreatedAt *string `json:"createdAt,omitempty"`

	// CreatedBy: The identity that created the resource.
	CreatedBy *string `json:"createdBy,omitempty"`

	// CreatedByType: The type of identity that created the resource.
	CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"`

	// LastModifiedAt: The type of identity that last modified the resource.
	LastModifiedAt *string `json:"lastModifiedAt,omitempty"`

	// LastModifiedBy: The identity that last modified the resource.
	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`

	// LastModifiedByType: The type of identity that last modified the resource.
	LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"`
}

// Properties to configure Encryption
type Encryption_STATUS struct {
	// KeySource: Enumerates the possible value of keySource for Encryption
	KeySource *Encryption_KeySource_STATUS `json:"keySource,omitempty"`

	// KeyVaultProperties: Properties of KeyVault
	KeyVaultProperties []KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"`

	// RequireInfrastructureEncryption: Enable Infrastructure Encryption (Double Encryption)
	RequireInfrastructureEncryption *bool `json:"requireInfrastructureEncryption,omitempty"`
}

type Identity_Type_STATUS string

const (
	Identity_Type_STATUS_None                       = Identity_Type_STATUS("None")
	Identity_Type_STATUS_SystemAssigned             = Identity_Type_STATUS("SystemAssigned")
	Identity_Type_STATUS_SystemAssignedUserAssigned = Identity_Type_STATUS("SystemAssigned, UserAssigned")
	Identity_Type_STATUS_UserAssigned               = Identity_Type_STATUS("UserAssigned")
)

// Mapping from string to Identity_Type_STATUS
var identity_Type_STATUS_Values = map[string]Identity_Type_STATUS{
	"none":                         Identity_Type_STATUS_None,
	"systemassigned":               Identity_Type_STATUS_SystemAssigned,
	"systemassigned, userassigned": Identity_Type_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 Identity_Type_STATUS_UserAssigned,
}

type Namespace_Properties_MinimumTlsVersion_STATUS string

const (
	Namespace_Properties_MinimumTlsVersion_STATUS_10 = Namespace_Properties_MinimumTlsVersion_STATUS("1.0")
	Namespace_Properties_MinimumTlsVersion_STATUS_11 = Namespace_Properties_MinimumTlsVersion_STATUS("1.1")
	Namespace_Properties_MinimumTlsVersion_STATUS_12 = Namespace_Properties_MinimumTlsVersion_STATUS("1.2")
)

// Mapping from string to Namespace_Properties_MinimumTlsVersion_STATUS
var namespace_Properties_MinimumTlsVersion_STATUS_Values = map[string]Namespace_Properties_MinimumTlsVersion_STATUS{
	"1.0": Namespace_Properties_MinimumTlsVersion_STATUS_10,
	"1.1": Namespace_Properties_MinimumTlsVersion_STATUS_11,
	"1.2": Namespace_Properties_MinimumTlsVersion_STATUS_12,
}

type Namespace_Properties_PublicNetworkAccess_STATUS string

const (
	Namespace_Properties_PublicNetworkAccess_STATUS_Disabled           = Namespace_Properties_PublicNetworkAccess_STATUS("Disabled")
	Namespace_Properties_PublicNetworkAccess_STATUS_Enabled            = Namespace_Properties_PublicNetworkAccess_STATUS("Enabled")
	Namespace_Properties_PublicNetworkAccess_STATUS_SecuredByPerimeter = Namespace_Properties_PublicNetworkAccess_STATUS("SecuredByPerimeter")
)

// Mapping from string to Namespace_Properties_PublicNetworkAccess_STATUS
var namespace_Properties_PublicNetworkAccess_STATUS_Values = map[string]Namespace_Properties_PublicNetworkAccess_STATUS{
	"disabled":           Namespace_Properties_PublicNetworkAccess_STATUS_Disabled,
	"enabled":            Namespace_Properties_PublicNetworkAccess_STATUS_Enabled,
	"securedbyperimeter": Namespace_Properties_PublicNetworkAccess_STATUS_SecuredByPerimeter,
}

// Properties of the PrivateEndpointConnection.
type PrivateEndpointConnection_STATUS struct {
	// Id: Fully qualified resource ID for the resource. Ex -
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	Id *string `json:"id,omitempty"`
}

type Sku_Name_STATUS string

const (
	Sku_Name_STATUS_Basic    = Sku_Name_STATUS("Basic")
	Sku_Name_STATUS_Premium  = Sku_Name_STATUS("Premium")
	Sku_Name_STATUS_Standard = Sku_Name_STATUS("Standard")
)

// Mapping from string to Sku_Name_STATUS
var sku_Name_STATUS_Values = map[string]Sku_Name_STATUS{
	"basic":    Sku_Name_STATUS_Basic,
	"premium":  Sku_Name_STATUS_Premium,
	"standard": Sku_Name_STATUS_Standard,
}

type Sku_Tier_STATUS string

const (
	Sku_Tier_STATUS_Basic    = Sku_Tier_STATUS("Basic")
	Sku_Tier_STATUS_Premium  = Sku_Tier_STATUS("Premium")
	Sku_Tier_STATUS_Standard = Sku_Tier_STATUS("Standard")
)

// Mapping from string to Sku_Tier_STATUS
var sku_Tier_STATUS_Values = map[string]Sku_Tier_STATUS{
	"basic":    Sku_Tier_STATUS_Basic,
	"premium":  Sku_Tier_STATUS_Premium,
	"standard": Sku_Tier_STATUS_Standard,
}

type SystemData_CreatedByType_STATUS string

const (
	SystemData_CreatedByType_STATUS_Application     = SystemData_CreatedByType_STATUS("Application")
	SystemData_CreatedByType_STATUS_Key             = SystemData_CreatedByType_STATUS("Key")
	SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity")
	SystemData_CreatedByType_STATUS_User            = SystemData_CreatedByType_STATUS("User")
)

// Mapping from string to SystemData_CreatedByType_STATUS
var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{
	"application":     SystemData_CreatedByType_STATUS_Application,
	"key":             SystemData_CreatedByType_STATUS_Key,
	"managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity,
	"user":            SystemData_CreatedByType_STATUS_User,
}

type SystemData_LastModifiedByType_STATUS string

const (
	SystemData_LastModifiedByType_STATUS_Application     = SystemData_LastModifiedByType_STATUS("Application")
	SystemData_LastModifiedByType_STATUS_Key             = SystemData_LastModifiedByType_STATUS("Key")
	SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity")
	SystemData_LastModifiedByType_STATUS_User            = SystemData_LastModifiedByType_STATUS("User")
)

// Mapping from string to SystemData_LastModifiedByType_STATUS
var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{
	"application":     SystemData_LastModifiedByType_STATUS_Application,
	"key":             SystemData_LastModifiedByType_STATUS_Key,
	"managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity,
	"user":            SystemData_LastModifiedByType_STATUS_User,
}

// Recognized Dictionary value.
type UserAssignedIdentity_STATUS struct {
	// ClientId: Client Id of user assigned identity
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: Principal Id of user assigned identity
	PrincipalId *string `json:"principalId,omitempty"`
}

type Encryption_KeySource_STATUS string

const Encryption_KeySource_STATUS_MicrosoftKeyVault = Encryption_KeySource_STATUS("Microsoft.KeyVault")

// Mapping from string to Encryption_KeySource_STATUS
var encryption_KeySource_STATUS_Values = map[string]Encryption_KeySource_STATUS{
	"microsoft.keyvault": Encryption_KeySource_STATUS_MicrosoftKeyVault,
}

// Properties to configure keyVault Properties
type KeyVaultProperties_STATUS struct {
	Identity *UserAssignedIdentityProperties_STATUS `json:"identity,omitempty"`

	// KeyName: Name of the Key from KeyVault
	KeyName *string `json:"keyName,omitempty"`

	// KeyVaultUri: Uri of KeyVault
	KeyVaultUri *string `json:"keyVaultUri,omitempty"`

	// KeyVersion: Key Version
	KeyVersion *string `json:"keyVersion,omitempty"`
}

type UserAssignedIdentityProperties_STATUS struct {
	// UserAssignedIdentity: ARM ID of user Identity selected for encryption
	UserAssignedIdentity *string `json:"userAssignedIdentity,omitempty"`
}
