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

	// Properties: API VersionSet contract properties.
	Properties *ApiVersionSetContractProperties `json:"properties,omitempty"`
}

var _ genruntime.ARMResourceSpec = &ApiVersionSet_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2023-05-01-preview"
func (versionSet ApiVersionSet_Spec) GetAPIVersion() string {
	return "2023-05-01-preview"
}

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.ApiManagement/service/apiVersionSets"
func (versionSet *ApiVersionSet_Spec) GetType() string {
	return "Microsoft.ApiManagement/service/apiVersionSets"
}

// Properties of an API Version Set.
type ApiVersionSetContractProperties struct {
	// Description: Description of API Version Set.
	Description *string `json:"description,omitempty"`

	// DisplayName: Name of API Version Set
	DisplayName *string `json:"displayName,omitempty"`

	// VersionHeaderName: Name of HTTP header parameter that indicates the API Version if versioningScheme is set to `header`.
	VersionHeaderName *string `json:"versionHeaderName,omitempty"`

	// VersionQueryName: Name of query parameter that indicates the API Version if versioningScheme is set to `query`.
	VersionQueryName *string `json:"versionQueryName,omitempty"`

	// VersioningScheme: An value that determines where the API Version identifier will be located in a HTTP request.
	VersioningScheme *ApiVersionSetContractProperties_VersioningScheme `json:"versioningScheme,omitempty"`
}

// +kubebuilder:validation:Enum={"Header","Query","Segment"}
type ApiVersionSetContractProperties_VersioningScheme string

const (
	ApiVersionSetContractProperties_VersioningScheme_Header  = ApiVersionSetContractProperties_VersioningScheme("Header")
	ApiVersionSetContractProperties_VersioningScheme_Query   = ApiVersionSetContractProperties_VersioningScheme("Query")
	ApiVersionSetContractProperties_VersioningScheme_Segment = ApiVersionSetContractProperties_VersioningScheme("Segment")
)

// Mapping from string to ApiVersionSetContractProperties_VersioningScheme
var apiVersionSetContractProperties_VersioningScheme_Values = map[string]ApiVersionSetContractProperties_VersioningScheme{
	"header":  ApiVersionSetContractProperties_VersioningScheme_Header,
	"query":   ApiVersionSetContractProperties_VersioningScheme_Query,
	"segment": ApiVersionSetContractProperties_VersioningScheme_Segment,
}
