// 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 Workbook_Spec struct {
	// Identity: Identity used for BYOS
	Identity *ManagedServiceIdentity `json:"identity,omitempty"`

	// Kind: The kind of workbook. Only valid value is shared.
	Kind *Workbook_Kind_Spec `json:"kind,omitempty"`

	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: Metadata describing a workbook for an Azure resource.
	Properties *WorkbookProperties `json:"properties,omitempty"`

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

var _ genruntime.ARMResourceSpec = &Workbook_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2023-06-01"
func (workbook Workbook_Spec) GetAPIVersion() string {
	return "2023-06-01"
}

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.Insights/workbooks"
func (workbook *Workbook_Spec) GetType() string {
	return "Microsoft.Insights/workbooks"
}

// Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity struct {
	// Type: Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
	Type                   *ManagedServiceIdentityType            `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"`
}

// +kubebuilder:validation:Enum={"shared"}
type Workbook_Kind_Spec string

const Workbook_Kind_Spec_Shared = Workbook_Kind_Spec("shared")

// Mapping from string to Workbook_Kind_Spec
var workbook_Kind_Spec_Values = map[string]Workbook_Kind_Spec{
	"shared": Workbook_Kind_Spec_Shared,
}

// Properties that contain a workbook.
type WorkbookProperties struct {
	// Category: Workbook category, as defined by the user at creation time.
	Category *string `json:"category,omitempty"`

	// Description: The description of the workbook.
	Description *string `json:"description,omitempty"`

	// DisplayName: The user-defined name (display name) of the workbook.
	DisplayName *string `json:"displayName,omitempty"`

	// SerializedData: Configuration of this particular workbook. Configuration data is a string containing valid JSON
	SerializedData *string `json:"serializedData,omitempty"`

	// SourceId: ResourceId for a source resource.
	SourceId *string `json:"sourceId,omitempty"`

	// StorageUri: The resourceId to the storage account when bring your own storage is used
	StorageUri *string `json:"storageUri,omitempty"`

	// Tags: Being deprecated, please use the other tags field
	Tags []string `json:"tags,omitempty"`

	// Version: Workbook schema version format, like 'Notebook/1.0', which should match the workbook in serializedData
	Version *string `json:"version,omitempty"`
}

// Type of managed service identity (where both SystemAssigned and UserAssigned types are allowed).
// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned,UserAssigned","UserAssigned"}
type ManagedServiceIdentityType string

const (
	ManagedServiceIdentityType_None                       = ManagedServiceIdentityType("None")
	ManagedServiceIdentityType_SystemAssigned             = ManagedServiceIdentityType("SystemAssigned")
	ManagedServiceIdentityType_SystemAssignedUserAssigned = ManagedServiceIdentityType("SystemAssigned,UserAssigned")
	ManagedServiceIdentityType_UserAssigned               = ManagedServiceIdentityType("UserAssigned")
)

// Mapping from string to ManagedServiceIdentityType
var managedServiceIdentityType_Values = map[string]ManagedServiceIdentityType{
	"none":                        ManagedServiceIdentityType_None,
	"systemassigned":              ManagedServiceIdentityType_SystemAssigned,
	"systemassigned,userassigned": ManagedServiceIdentityType_SystemAssignedUserAssigned,
	"userassigned":                ManagedServiceIdentityType_UserAssigned,
}

// Information about the user assigned identity for the resource
type UserAssignedIdentityDetails struct {
}
