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

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type StorageAccountsBlobServicesContainer_Spec struct {
	Name string `json:"name,omitempty"`

	// Properties: Properties of the blob container.
	Properties *ContainerProperties `json:"properties,omitempty"`
}

var _ genruntime.ARMResourceSpec = &StorageAccountsBlobServicesContainer_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2022-09-01"
func (container StorageAccountsBlobServicesContainer_Spec) GetAPIVersion() string {
	return "2022-09-01"
}

// GetName returns the Name of the resource
func (container *StorageAccountsBlobServicesContainer_Spec) GetName() string {
	return container.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.Storage/storageAccounts/blobServices/containers"
func (container *StorageAccountsBlobServicesContainer_Spec) GetType() string {
	return "Microsoft.Storage/storageAccounts/blobServices/containers"
}

// The properties of a container.
type ContainerProperties struct {
	// DefaultEncryptionScope: Default the container to use specified encryption scope for all writes.
	DefaultEncryptionScope *string `json:"defaultEncryptionScope,omitempty"`

	// DenyEncryptionScopeOverride: Block override of encryption scope from the container default.
	DenyEncryptionScopeOverride *bool `json:"denyEncryptionScopeOverride,omitempty"`

	// EnableNfsV3AllSquash: Enable NFSv3 all squash on blob container.
	EnableNfsV3AllSquash *bool `json:"enableNfsV3AllSquash,omitempty"`

	// EnableNfsV3RootSquash: Enable NFSv3 root squash on blob container.
	EnableNfsV3RootSquash *bool `json:"enableNfsV3RootSquash,omitempty"`

	// ImmutableStorageWithVersioning: The object level immutability property of the container. The property is immutable and
	// can only be set to true at the container creation time. Existing containers must undergo a migration process.
	ImmutableStorageWithVersioning *ImmutableStorageWithVersioning `json:"immutableStorageWithVersioning,omitempty"`

	// Metadata: A name-value pair to associate with the container as metadata.
	Metadata map[string]string `json:"metadata"`

	// PublicAccess: Specifies whether data in the container may be accessed publicly and the level of access.
	PublicAccess *ContainerProperties_PublicAccess `json:"publicAccess,omitempty"`
}

// +kubebuilder:validation:Enum={"Blob","Container","None"}
type ContainerProperties_PublicAccess string

const (
	ContainerProperties_PublicAccess_Blob      = ContainerProperties_PublicAccess("Blob")
	ContainerProperties_PublicAccess_Container = ContainerProperties_PublicAccess("Container")
	ContainerProperties_PublicAccess_None      = ContainerProperties_PublicAccess("None")
)

// Mapping from string to ContainerProperties_PublicAccess
var containerProperties_PublicAccess_Values = map[string]ContainerProperties_PublicAccess{
	"blob":      ContainerProperties_PublicAccess_Blob,
	"container": ContainerProperties_PublicAccess_Container,
	"none":      ContainerProperties_PublicAccess_None,
}

// Object level immutability properties of the container.
type ImmutableStorageWithVersioning struct {
	// Enabled: This is an immutable property, when set to true it enables object level immutability at the container level.
	Enabled *bool `json:"enabled,omitempty"`
}
