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

import "encoding/json"

type BackupVaultsBackupInstance_STATUS struct {
	// Id: Proxy Resource Id represents the complete path to the resource.
	Id *string `json:"id,omitempty"`

	// Name: Proxy Resource name associated with the resource.
	Name *string `json:"name,omitempty"`

	// Properties: BackupInstanceResource properties
	Properties *BackupInstance_STATUS `json:"properties,omitempty"`

	// SystemData: Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

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

	// Type: Proxy Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/...
	Type *string `json:"type,omitempty"`
}

// Backup Instance
type BackupInstance_STATUS struct {
	// CurrentProtectionState: Specifies the current protection state of the resource
	CurrentProtectionState *BackupInstance_CurrentProtectionState_STATUS `json:"currentProtectionState,omitempty"`

	// DataSourceInfo: Gets or sets the data source information.
	DataSourceInfo *Datasource_STATUS `json:"dataSourceInfo,omitempty"`

	// DataSourceSetInfo: Gets or sets the data source set information.
	DataSourceSetInfo *DatasourceSet_STATUS `json:"dataSourceSetInfo,omitempty"`

	// DatasourceAuthCredentials: Credentials to use to authenticate with data source provider.
	DatasourceAuthCredentials *AuthCredentials_STATUS `json:"datasourceAuthCredentials,omitempty"`

	// FriendlyName: Gets or sets the Backup Instance friendly name.
	FriendlyName *string `json:"friendlyName,omitempty"`

	// IdentityDetails: Contains information of the Identity Details for the BI.
	// If it is null, default will be considered as System Assigned.
	IdentityDetails *IdentityDetails_STATUS `json:"identityDetails,omitempty"`
	ObjectType      *string                 `json:"objectType,omitempty"`

	// PolicyInfo: Gets or sets the policy information.
	PolicyInfo *PolicyInfo_STATUS `json:"policyInfo,omitempty"`

	// ProtectionErrorDetails: Specifies the protection error of the resource
	ProtectionErrorDetails *UserFacingError_STATUS `json:"protectionErrorDetails,omitempty"`

	// ProtectionStatus: Specifies the protection status of the resource
	ProtectionStatus *ProtectionStatusDetails_STATUS `json:"protectionStatus,omitempty"`

	// ProvisioningState: Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed
	ProvisioningState *string `json:"provisioningState,omitempty"`

	// ValidationType: Specifies the type of validation. In case of DeepValidation, all validations from /validateForBackup API
	// will run again.
	ValidationType *BackupInstance_ValidationType_STATUS `json:"validationType,omitempty"`
}

type AuthCredentials_STATUS struct {
	// SecretStoreBasedAuthCredentials: Mutually exclusive with all other properties
	SecretStoreBasedAuthCredentials *SecretStoreBasedAuthCredentials_STATUS `json:"secretStoreBasedAuthCredentials,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because AuthCredentials_STATUS represents a discriminated union (JSON OneOf)
func (credentials AuthCredentials_STATUS) MarshalJSON() ([]byte, error) {
	if credentials.SecretStoreBasedAuthCredentials != nil {
		return json.Marshal(credentials.SecretStoreBasedAuthCredentials)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the AuthCredentials_STATUS
func (credentials *AuthCredentials_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["objectType"]
	if discriminator == "SecretStoreBasedAuthCredentials" {
		credentials.SecretStoreBasedAuthCredentials = &SecretStoreBasedAuthCredentials_STATUS{}
		return json.Unmarshal(data, credentials.SecretStoreBasedAuthCredentials)
	}

	// No error
	return nil
}

type BackupInstance_CurrentProtectionState_STATUS string

const (
	BackupInstance_CurrentProtectionState_STATUS_BackupSchedulesSuspended    = BackupInstance_CurrentProtectionState_STATUS("BackupSchedulesSuspended")
	BackupInstance_CurrentProtectionState_STATUS_ConfiguringProtection       = BackupInstance_CurrentProtectionState_STATUS("ConfiguringProtection")
	BackupInstance_CurrentProtectionState_STATUS_ConfiguringProtectionFailed = BackupInstance_CurrentProtectionState_STATUS("ConfiguringProtectionFailed")
	BackupInstance_CurrentProtectionState_STATUS_Invalid                     = BackupInstance_CurrentProtectionState_STATUS("Invalid")
	BackupInstance_CurrentProtectionState_STATUS_NotProtected                = BackupInstance_CurrentProtectionState_STATUS("NotProtected")
	BackupInstance_CurrentProtectionState_STATUS_ProtectionConfigured        = BackupInstance_CurrentProtectionState_STATUS("ProtectionConfigured")
	BackupInstance_CurrentProtectionState_STATUS_ProtectionError             = BackupInstance_CurrentProtectionState_STATUS("ProtectionError")
	BackupInstance_CurrentProtectionState_STATUS_ProtectionStopped           = BackupInstance_CurrentProtectionState_STATUS("ProtectionStopped")
	BackupInstance_CurrentProtectionState_STATUS_RetentionSchedulesSuspended = BackupInstance_CurrentProtectionState_STATUS("RetentionSchedulesSuspended")
	BackupInstance_CurrentProtectionState_STATUS_SoftDeleted                 = BackupInstance_CurrentProtectionState_STATUS("SoftDeleted")
	BackupInstance_CurrentProtectionState_STATUS_SoftDeleting                = BackupInstance_CurrentProtectionState_STATUS("SoftDeleting")
	BackupInstance_CurrentProtectionState_STATUS_UpdatingProtection          = BackupInstance_CurrentProtectionState_STATUS("UpdatingProtection")
)

// Mapping from string to BackupInstance_CurrentProtectionState_STATUS
var backupInstance_CurrentProtectionState_STATUS_Values = map[string]BackupInstance_CurrentProtectionState_STATUS{
	"backupschedulessuspended":    BackupInstance_CurrentProtectionState_STATUS_BackupSchedulesSuspended,
	"configuringprotection":       BackupInstance_CurrentProtectionState_STATUS_ConfiguringProtection,
	"configuringprotectionfailed": BackupInstance_CurrentProtectionState_STATUS_ConfiguringProtectionFailed,
	"invalid":                     BackupInstance_CurrentProtectionState_STATUS_Invalid,
	"notprotected":                BackupInstance_CurrentProtectionState_STATUS_NotProtected,
	"protectionconfigured":        BackupInstance_CurrentProtectionState_STATUS_ProtectionConfigured,
	"protectionerror":             BackupInstance_CurrentProtectionState_STATUS_ProtectionError,
	"protectionstopped":           BackupInstance_CurrentProtectionState_STATUS_ProtectionStopped,
	"retentionschedulessuspended": BackupInstance_CurrentProtectionState_STATUS_RetentionSchedulesSuspended,
	"softdeleted":                 BackupInstance_CurrentProtectionState_STATUS_SoftDeleted,
	"softdeleting":                BackupInstance_CurrentProtectionState_STATUS_SoftDeleting,
	"updatingprotection":          BackupInstance_CurrentProtectionState_STATUS_UpdatingProtection,
}

type BackupInstance_ValidationType_STATUS string

const (
	BackupInstance_ValidationType_STATUS_DeepValidation    = BackupInstance_ValidationType_STATUS("DeepValidation")
	BackupInstance_ValidationType_STATUS_ShallowValidation = BackupInstance_ValidationType_STATUS("ShallowValidation")
)

// Mapping from string to BackupInstance_ValidationType_STATUS
var backupInstance_ValidationType_STATUS_Values = map[string]BackupInstance_ValidationType_STATUS{
	"deepvalidation":    BackupInstance_ValidationType_STATUS_DeepValidation,
	"shallowvalidation": BackupInstance_ValidationType_STATUS_ShallowValidation,
}

// Datasource to be backed up
type Datasource_STATUS struct {
	// DatasourceType: DatasourceType of the resource.
	DatasourceType *string `json:"datasourceType,omitempty"`

	// ObjectType: Type of Datasource object, used to initialize the right inherited type
	ObjectType *string `json:"objectType,omitempty"`

	// ResourceID: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the
	// ID created by backup service via Fabric/Vault.
	ResourceID *string `json:"resourceID,omitempty"`

	// ResourceLocation: Location of datasource.
	ResourceLocation *string `json:"resourceLocation,omitempty"`

	// ResourceName: Unique identifier of the resource in the context of parent.
	ResourceName *string `json:"resourceName,omitempty"`

	// ResourceProperties: Properties specific to data source
	ResourceProperties *BaseResourceProperties_STATUS `json:"resourceProperties,omitempty"`

	// ResourceType: Resource Type of Datasource.
	ResourceType *string `json:"resourceType,omitempty"`

	// ResourceUri: Uri of the resource.
	ResourceUri *string `json:"resourceUri,omitempty"`
}

// DatasourceSet details of datasource to be backed up
type DatasourceSet_STATUS struct {
	// DatasourceType: DatasourceType of the resource.
	DatasourceType *string `json:"datasourceType,omitempty"`

	// ObjectType: Type of Datasource object, used to initialize the right inherited type
	ObjectType *string `json:"objectType,omitempty"`

	// ResourceID: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the
	// ID created by backup service via Fabric/Vault.
	ResourceID *string `json:"resourceID,omitempty"`

	// ResourceLocation: Location of datasource.
	ResourceLocation *string `json:"resourceLocation,omitempty"`

	// ResourceName: Unique identifier of the resource in the context of parent.
	ResourceName *string `json:"resourceName,omitempty"`

	// ResourceProperties: Properties specific to data source set
	ResourceProperties *BaseResourceProperties_STATUS `json:"resourceProperties,omitempty"`

	// ResourceType: Resource Type of Datasource.
	ResourceType *string `json:"resourceType,omitempty"`

	// ResourceUri: Uri of the resource.
	ResourceUri *string `json:"resourceUri,omitempty"`
}

type IdentityDetails_STATUS struct {
	// UseSystemAssignedIdentity: Specifies if the BI is protected by System Identity.
	UseSystemAssignedIdentity *bool `json:"useSystemAssignedIdentity,omitempty"`

	// UserAssignedIdentityArmUrl: ARM URL for User Assigned Identity.
	UserAssignedIdentityArmUrl *string `json:"userAssignedIdentityArmUrl,omitempty"`
}

// Policy Info in backupInstance
type PolicyInfo_STATUS struct {
	PolicyId *string `json:"policyId,omitempty"`

	// PolicyParameters: Policy parameters for the backup instance
	PolicyParameters *PolicyParameters_STATUS `json:"policyParameters,omitempty"`
	PolicyVersion    *string                  `json:"policyVersion,omitempty"`
}

// Protection status details
type ProtectionStatusDetails_STATUS struct {
	// ErrorDetails: Specifies the protection status error of the resource
	ErrorDetails *UserFacingError_STATUS `json:"errorDetails,omitempty"`

	// Status: Specifies the protection status of the resource
	Status *ProtectionStatusDetails_Status_STATUS `json:"status,omitempty"`
}

// Error object used by layers that have access to localized content, and propagate that to user
type UserFacingError_STATUS struct {
	// Code: Unique code for this error
	Code *string `json:"code,omitempty"`

	// Details: Additional related Errors
	Details []UserFacingError_STATUS_Unrolled `json:"details,omitempty"`

	// InnerError: Inner Error
	InnerError *InnerError_STATUS `json:"innerError,omitempty"`

	// IsRetryable: Whether the operation will be retryable or not
	IsRetryable *bool `json:"isRetryable,omitempty"`

	// IsUserError: Whether the operation is due to a user error or service error
	IsUserError *bool   `json:"isUserError,omitempty"`
	Message     *string `json:"message,omitempty"`

	// Properties: Any key value pairs that can be injected inside error object
	Properties map[string]string `json:"properties,omitempty"`

	// RecommendedAction: RecommendedAction � localized.
	RecommendedAction []string `json:"recommendedAction,omitempty"`

	// Target: Target of the error.
	Target *string `json:"target,omitempty"`
}

type BaseResourceProperties_STATUS struct {
	// DefaultResourceProperties: Mutually exclusive with all other properties
	DefaultResourceProperties *DefaultResourceProperties_STATUS `json:"defaultResourceProperties,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because BaseResourceProperties_STATUS represents a discriminated union (JSON OneOf)
func (properties BaseResourceProperties_STATUS) MarshalJSON() ([]byte, error) {
	if properties.DefaultResourceProperties != nil {
		return json.Marshal(properties.DefaultResourceProperties)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the BaseResourceProperties_STATUS
func (properties *BaseResourceProperties_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["objectType"]
	if discriminator == "DefaultResourceProperties" {
		properties.DefaultResourceProperties = &DefaultResourceProperties_STATUS{}
		return json.Unmarshal(data, properties.DefaultResourceProperties)
	}

	// No error
	return nil
}

// Inner Error
type InnerError_STATUS struct {
	// AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.
	AdditionalInfo map[string]string `json:"additionalInfo,omitempty"`

	// Code: Unique code for this error
	Code *string `json:"code,omitempty"`

	// EmbeddedInnerError: Child Inner Error, to allow Nesting.
	EmbeddedInnerError *InnerError_STATUS_Unrolled `json:"embeddedInnerError,omitempty"`
}

// Parameters in Policy
type PolicyParameters_STATUS struct {
	// BackupDatasourceParametersList: Gets or sets the Backup Data Source Parameters
	BackupDatasourceParametersList []BackupDatasourceParameters_STATUS `json:"backupDatasourceParametersList,omitempty"`

	// DataStoreParametersList: Gets or sets the DataStore Parameters
	DataStoreParametersList []DataStoreParameters_STATUS `json:"dataStoreParametersList,omitempty"`
}

type ProtectionStatusDetails_Status_STATUS string

const (
	ProtectionStatusDetails_Status_STATUS_ConfiguringProtection       = ProtectionStatusDetails_Status_STATUS("ConfiguringProtection")
	ProtectionStatusDetails_Status_STATUS_ConfiguringProtectionFailed = ProtectionStatusDetails_Status_STATUS("ConfiguringProtectionFailed")
	ProtectionStatusDetails_Status_STATUS_ProtectionConfigured        = ProtectionStatusDetails_Status_STATUS("ProtectionConfigured")
	ProtectionStatusDetails_Status_STATUS_ProtectionStopped           = ProtectionStatusDetails_Status_STATUS("ProtectionStopped")
	ProtectionStatusDetails_Status_STATUS_SoftDeleted                 = ProtectionStatusDetails_Status_STATUS("SoftDeleted")
	ProtectionStatusDetails_Status_STATUS_SoftDeleting                = ProtectionStatusDetails_Status_STATUS("SoftDeleting")
)

// Mapping from string to ProtectionStatusDetails_Status_STATUS
var protectionStatusDetails_Status_STATUS_Values = map[string]ProtectionStatusDetails_Status_STATUS{
	"configuringprotection":       ProtectionStatusDetails_Status_STATUS_ConfiguringProtection,
	"configuringprotectionfailed": ProtectionStatusDetails_Status_STATUS_ConfiguringProtectionFailed,
	"protectionconfigured":        ProtectionStatusDetails_Status_STATUS_ProtectionConfigured,
	"protectionstopped":           ProtectionStatusDetails_Status_STATUS_ProtectionStopped,
	"softdeleted":                 ProtectionStatusDetails_Status_STATUS_SoftDeleted,
	"softdeleting":                ProtectionStatusDetails_Status_STATUS_SoftDeleting,
}

type SecretStoreBasedAuthCredentials_STATUS struct {
	// ObjectType: Type of the specific object - used for deserializing
	ObjectType SecretStoreBasedAuthCredentials_ObjectType_STATUS `json:"objectType,omitempty"`

	// SecretStoreResource: Secret store resource
	SecretStoreResource *SecretStoreResource_STATUS `json:"secretStoreResource,omitempty"`
}

type UserFacingError_STATUS_Unrolled struct {
	// Code: Unique code for this error
	Code *string `json:"code,omitempty"`

	// InnerError: Inner Error
	InnerError *InnerError_STATUS `json:"innerError,omitempty"`

	// IsRetryable: Whether the operation will be retryable or not
	IsRetryable *bool `json:"isRetryable,omitempty"`

	// IsUserError: Whether the operation is due to a user error or service error
	IsUserError *bool   `json:"isUserError,omitempty"`
	Message     *string `json:"message,omitempty"`

	// Properties: Any key value pairs that can be injected inside error object
	Properties map[string]string `json:"properties,omitempty"`

	// RecommendedAction: RecommendedAction � localized.
	RecommendedAction []string `json:"recommendedAction,omitempty"`

	// Target: Target of the error.
	Target *string `json:"target,omitempty"`
}

type BackupDatasourceParameters_STATUS struct {
	// Blob: Mutually exclusive with all other properties
	Blob *BlobBackupDatasourceParameters_STATUS `json:"blobBackupDatasourceParameters,omitempty"`

	// KubernetesCluster: Mutually exclusive with all other properties
	KubernetesCluster *KubernetesClusterBackupDatasourceParameters_STATUS `json:"kubernetesClusterBackupDatasourceParameters,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because BackupDatasourceParameters_STATUS represents a discriminated union (JSON OneOf)
func (parameters BackupDatasourceParameters_STATUS) MarshalJSON() ([]byte, error) {
	if parameters.Blob != nil {
		return json.Marshal(parameters.Blob)
	}

	if parameters.KubernetesCluster != nil {
		return json.Marshal(parameters.KubernetesCluster)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the BackupDatasourceParameters_STATUS
func (parameters *BackupDatasourceParameters_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["objectType"]
	if discriminator == "BlobBackupDatasourceParameters" {
		parameters.Blob = &BlobBackupDatasourceParameters_STATUS{}
		return json.Unmarshal(data, parameters.Blob)
	}
	if discriminator == "KubernetesClusterBackupDatasourceParameters" {
		parameters.KubernetesCluster = &KubernetesClusterBackupDatasourceParameters_STATUS{}
		return json.Unmarshal(data, parameters.KubernetesCluster)
	}

	// No error
	return nil
}

type DataStoreParameters_STATUS struct {
	// AzureOperationalStoreParameters: Mutually exclusive with all other properties
	AzureOperationalStoreParameters *AzureOperationalStoreParameters_STATUS `json:"azureOperationalStoreParameters,omitempty"`
}

// MarshalJSON defers JSON marshaling to the first non-nil property, because DataStoreParameters_STATUS represents a discriminated union (JSON OneOf)
func (parameters DataStoreParameters_STATUS) MarshalJSON() ([]byte, error) {
	if parameters.AzureOperationalStoreParameters != nil {
		return json.Marshal(parameters.AzureOperationalStoreParameters)
	}

	return nil, nil
}

// UnmarshalJSON unmarshals the DataStoreParameters_STATUS
func (parameters *DataStoreParameters_STATUS) UnmarshalJSON(data []byte) error {
	var rawJson map[string]interface{}
	err := json.Unmarshal(data, &rawJson)
	if err != nil {
		return err
	}
	discriminator := rawJson["objectType"]
	if discriminator == "AzureOperationalStoreParameters" {
		parameters.AzureOperationalStoreParameters = &AzureOperationalStoreParameters_STATUS{}
		return json.Unmarshal(data, parameters.AzureOperationalStoreParameters)
	}

	// No error
	return nil
}

type DefaultResourceProperties_STATUS struct {
	// ObjectType: Type of the specific object - used for deserializing
	ObjectType DefaultResourceProperties_ObjectType_STATUS `json:"objectType,omitempty"`
}

type InnerError_STATUS_Unrolled struct {
	// AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.
	AdditionalInfo map[string]string `json:"additionalInfo,omitempty"`

	// Code: Unique code for this error
	Code *string `json:"code,omitempty"`
}

type SecretStoreBasedAuthCredentials_ObjectType_STATUS string

const SecretStoreBasedAuthCredentials_ObjectType_STATUS_SecretStoreBasedAuthCredentials = SecretStoreBasedAuthCredentials_ObjectType_STATUS("SecretStoreBasedAuthCredentials")

// Mapping from string to SecretStoreBasedAuthCredentials_ObjectType_STATUS
var secretStoreBasedAuthCredentials_ObjectType_STATUS_Values = map[string]SecretStoreBasedAuthCredentials_ObjectType_STATUS{
	"secretstorebasedauthcredentials": SecretStoreBasedAuthCredentials_ObjectType_STATUS_SecretStoreBasedAuthCredentials,
}

// Class representing a secret store resource.
type SecretStoreResource_STATUS struct {
	// SecretStoreType: Gets or sets the type of secret store
	SecretStoreType *SecretStoreResource_SecretStoreType_STATUS `json:"secretStoreType,omitempty"`

	// Uri: Uri to get to the resource
	Uri *string `json:"uri,omitempty"`

	// Value: Gets or sets value stored in secret store resource
	Value *string `json:"value,omitempty"`
}

type AzureOperationalStoreParameters_STATUS struct {
	// DataStoreType: type of datastore; Operational/Vault/Archive
	DataStoreType *AzureOperationalStoreParameters_DataStoreType_STATUS `json:"dataStoreType,omitempty"`

	// ObjectType: Type of the specific object - used for deserializing
	ObjectType AzureOperationalStoreParameters_ObjectType_STATUS `json:"objectType,omitempty"`

	// ResourceGroupId: Gets or sets the Snapshot Resource Group Uri.
	ResourceGroupId *string `json:"resourceGroupId,omitempty"`
}

type BlobBackupDatasourceParameters_STATUS struct {
	// ContainersList: List of containers to be backed up during configuration of backup of blobs
	ContainersList []string `json:"containersList,omitempty"`

	// ObjectType: Type of the specific object - used for deserializing
	ObjectType BlobBackupDatasourceParameters_ObjectType_STATUS `json:"objectType,omitempty"`
}

type DefaultResourceProperties_ObjectType_STATUS string

const DefaultResourceProperties_ObjectType_STATUS_DefaultResourceProperties = DefaultResourceProperties_ObjectType_STATUS("DefaultResourceProperties")

// Mapping from string to DefaultResourceProperties_ObjectType_STATUS
var defaultResourceProperties_ObjectType_STATUS_Values = map[string]DefaultResourceProperties_ObjectType_STATUS{
	"defaultresourceproperties": DefaultResourceProperties_ObjectType_STATUS_DefaultResourceProperties,
}

type KubernetesClusterBackupDatasourceParameters_STATUS struct {
	// BackupHookReferences: Gets or sets the backup hook references. This property sets the hook reference to be executed
	// during backup.
	BackupHookReferences []NamespacedNameResource_STATUS `json:"backupHookReferences,omitempty"`

	// ExcludedNamespaces: Gets or sets the exclude namespaces property. This property sets the namespaces to be excluded
	// during backup.
	ExcludedNamespaces []string `json:"excludedNamespaces,omitempty"`

	// ExcludedResourceTypes: Gets or sets the exclude resource types property. This property sets the resource types to be
	// excluded during backup.
	ExcludedResourceTypes []string `json:"excludedResourceTypes,omitempty"`

	// IncludeClusterScopeResources: Gets or sets the include cluster resources property. This property if enabled will include
	// cluster scope resources during backup.
	IncludeClusterScopeResources *bool `json:"includeClusterScopeResources,omitempty"`

	// IncludedNamespaces: Gets or sets the include namespaces property. This property sets the namespaces to be included
	// during backup.
	IncludedNamespaces []string `json:"includedNamespaces,omitempty"`

	// IncludedResourceTypes: Gets or sets the include resource types property. This property sets the resource types to be
	// included during backup.
	IncludedResourceTypes []string `json:"includedResourceTypes,omitempty"`

	// LabelSelectors: Gets or sets the LabelSelectors property. This property sets the resource with such label selectors to
	// be included during backup.
	LabelSelectors []string `json:"labelSelectors,omitempty"`

	// ObjectType: Type of the specific object - used for deserializing
	ObjectType KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS `json:"objectType,omitempty"`

	// SnapshotVolumes: Gets or sets the volume snapshot property. This property if enabled will take volume snapshots during
	// backup.
	SnapshotVolumes *bool `json:"snapshotVolumes,omitempty"`
}

type SecretStoreResource_SecretStoreType_STATUS string

const (
	SecretStoreResource_SecretStoreType_STATUS_AzureKeyVault = SecretStoreResource_SecretStoreType_STATUS("AzureKeyVault")
	SecretStoreResource_SecretStoreType_STATUS_Invalid       = SecretStoreResource_SecretStoreType_STATUS("Invalid")
)

// Mapping from string to SecretStoreResource_SecretStoreType_STATUS
var secretStoreResource_SecretStoreType_STATUS_Values = map[string]SecretStoreResource_SecretStoreType_STATUS{
	"azurekeyvault": SecretStoreResource_SecretStoreType_STATUS_AzureKeyVault,
	"invalid":       SecretStoreResource_SecretStoreType_STATUS_Invalid,
}

type AzureOperationalStoreParameters_DataStoreType_STATUS string

const (
	AzureOperationalStoreParameters_DataStoreType_STATUS_ArchiveStore     = AzureOperationalStoreParameters_DataStoreType_STATUS("ArchiveStore")
	AzureOperationalStoreParameters_DataStoreType_STATUS_OperationalStore = AzureOperationalStoreParameters_DataStoreType_STATUS("OperationalStore")
	AzureOperationalStoreParameters_DataStoreType_STATUS_VaultStore       = AzureOperationalStoreParameters_DataStoreType_STATUS("VaultStore")
)

// Mapping from string to AzureOperationalStoreParameters_DataStoreType_STATUS
var azureOperationalStoreParameters_DataStoreType_STATUS_Values = map[string]AzureOperationalStoreParameters_DataStoreType_STATUS{
	"archivestore":     AzureOperationalStoreParameters_DataStoreType_STATUS_ArchiveStore,
	"operationalstore": AzureOperationalStoreParameters_DataStoreType_STATUS_OperationalStore,
	"vaultstore":       AzureOperationalStoreParameters_DataStoreType_STATUS_VaultStore,
}

type AzureOperationalStoreParameters_ObjectType_STATUS string

const AzureOperationalStoreParameters_ObjectType_STATUS_AzureOperationalStoreParameters = AzureOperationalStoreParameters_ObjectType_STATUS("AzureOperationalStoreParameters")

// Mapping from string to AzureOperationalStoreParameters_ObjectType_STATUS
var azureOperationalStoreParameters_ObjectType_STATUS_Values = map[string]AzureOperationalStoreParameters_ObjectType_STATUS{
	"azureoperationalstoreparameters": AzureOperationalStoreParameters_ObjectType_STATUS_AzureOperationalStoreParameters,
}

type BlobBackupDatasourceParameters_ObjectType_STATUS string

const BlobBackupDatasourceParameters_ObjectType_STATUS_BlobBackupDatasourceParameters = BlobBackupDatasourceParameters_ObjectType_STATUS("BlobBackupDatasourceParameters")

// Mapping from string to BlobBackupDatasourceParameters_ObjectType_STATUS
var blobBackupDatasourceParameters_ObjectType_STATUS_Values = map[string]BlobBackupDatasourceParameters_ObjectType_STATUS{
	"blobbackupdatasourceparameters": BlobBackupDatasourceParameters_ObjectType_STATUS_BlobBackupDatasourceParameters,
}

type KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS string

const KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS_KubernetesClusterBackupDatasourceParameters = KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS("KubernetesClusterBackupDatasourceParameters")

// Mapping from string to KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS
var kubernetesClusterBackupDatasourceParameters_ObjectType_STATUS_Values = map[string]KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS{
	"kubernetesclusterbackupdatasourceparameters": KubernetesClusterBackupDatasourceParameters_ObjectType_STATUS_KubernetesClusterBackupDatasourceParameters,
}

// Class to refer resources which contains namespace and name
type NamespacedNameResource_STATUS struct {
	// Name: Name of the resource
	Name *string `json:"name,omitempty"`

	// Namespace: Namespace in which the resource exists
	Namespace *string `json:"namespace,omitempty"`
}
