// 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 Alias_Spec struct {
	Name string `json:"name,omitempty"`

	// Properties: Put alias request properties.
	Properties *PutAliasRequestProperties `json:"properties,omitempty"`
}

var _ genruntime.ARMResourceSpec = &Alias_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2021-10-01"
func (alias Alias_Spec) GetAPIVersion() string {
	return "2021-10-01"
}

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.Subscription/aliases"
func (alias *Alias_Spec) GetType() string {
	return "Microsoft.Subscription/aliases"
}

// Put subscription properties.
type PutAliasRequestProperties struct {
	// AdditionalProperties: Put alias request additional properties.
	AdditionalProperties *PutAliasRequestAdditionalProperties `json:"additionalProperties,omitempty"`
	BillingScope         *string                              `json:"billingScope,omitempty"`

	// DisplayName: The friendly name of the subscription.
	DisplayName *string `json:"displayName,omitempty"`

	// ResellerId: Reseller Id
	ResellerId *string `json:"resellerId,omitempty"`

	// SubscriptionId: This parameter can be used to create alias for existing subscription Id
	SubscriptionId *string `json:"subscriptionId,omitempty"`

	// Workload: The workload type of the subscription. It can be either Production or DevTest.
	Workload *Workload `json:"workload,omitempty"`
}

// Put subscription additional properties.
type PutAliasRequestAdditionalProperties struct {
	// ManagementGroupId: Management group Id for the subscription.
	ManagementGroupId *string `json:"managementGroupId,omitempty"`

	// SubscriptionOwnerId: Owner Id of the subscription
	SubscriptionOwnerId *string `json:"subscriptionOwnerId,omitempty"`

	// SubscriptionTenantId: Tenant Id of the subscription
	SubscriptionTenantId *string `json:"subscriptionTenantId,omitempty"`

	// Tags: Tags for the subscription
	Tags map[string]string `json:"tags,omitempty"`
}

// The workload type of the subscription. It can be either Production or DevTest.
// +kubebuilder:validation:Enum={"DevTest","Production"}
type Workload string

const (
	Workload_DevTest    = Workload("DevTest")
	Workload_Production = Workload("Production")
)

// Mapping from string to Workload
var workload_Values = map[string]Workload{
	"devtest":    Workload_DevTest,
	"production": Workload_Production,
}
