// 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 Service_Spec struct {
	// Identity: Managed service identity of the Api Management service.
	Identity *ApiManagementServiceIdentity `json:"identity,omitempty"`

	// Location: Resource location.
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: Properties of the API Management service.
	Properties *ApiManagementServiceProperties `json:"properties,omitempty"`

	// Sku: SKU properties of the API Management service.
	Sku *ApiManagementServiceSkuProperties `json:"sku,omitempty"`

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

	// Zones: A list of availability zones denoting where the resource needs to come from.
	Zones []string `json:"zones,omitempty"`
}

var _ genruntime.ARMResourceSpec = &Service_Spec{}

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

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

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

// Identity properties of the Api Management service resource.
type ApiManagementServiceIdentity struct {
	// Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly
	// created identity and a set of user assigned identities. The type 'None' will remove any identities from the service.
	Type                   *ApiManagementServiceIdentity_Type     `json:"type,omitempty"`
	UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"`
}

// Properties of an API Management service resource description.
type ApiManagementServiceProperties struct {
	// AdditionalLocations: Additional datacenter locations of the API Management service.
	AdditionalLocations []AdditionalLocation `json:"additionalLocations,omitempty"`

	// ApiVersionConstraint: Control Plane Apis version constraint for the API Management service.
	ApiVersionConstraint *ApiVersionConstraint `json:"apiVersionConstraint,omitempty"`

	// Certificates: List of Certificates that need to be installed in the API Management service. Max supported certificates
	// that can be installed is 10.
	Certificates []CertificateConfiguration `json:"certificates,omitempty"`

	// ConfigurationApi: Configuration API configuration of the API Management service.
	ConfigurationApi *ConfigurationApi `json:"configurationApi,omitempty"`

	// CustomProperties: Custom properties of the API Management service.</br>Setting
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168` will disable the cipher
	// TLS_RSA_WITH_3DES_EDE_CBC_SHA for all TLS(1.0, 1.1 and 1.2).</br>Setting
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11` can be used to disable just TLS 1.1.</br>Setting
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10` can be used to disable TLS 1.0 on an API
	// Management service.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11` can be
	// used to disable just TLS 1.1 for communications with backends.</br>Setting
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10` can be used to disable TLS 1.0 for
	// communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2` can be
	// used to enable HTTP2 protocol on an API Management service.</br>Not specifying any of these properties on PATCH
	// operation will reset omitted properties' values to their defaults. For all the settings except Http2 the default value
	// is `True` if the service was created on or before April 1, 2018 and `False` otherwise. Http2 setting's default value is
	// `False`.</br></br>You can disable any of the following ciphers by using settings
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]`: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
	// TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
	// TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256,
	// TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA. For example,
	// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256`:`false`. The default
	// value is `true` for them.</br> Note: The following ciphers can't be disabled since they are required by internal
	// platform components:
	// TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
	CustomProperties map[string]string `json:"customProperties,omitempty"`

	// DeveloperPortalStatus: Status of developer portal in this API Management service.
	DeveloperPortalStatus *ApiManagementServiceProperties_DeveloperPortalStatus `json:"developerPortalStatus,omitempty"`

	// DisableGateway: Property only valid for an Api Management service deployed in multiple locations. This can be used to
	// disable the gateway in master region.
	DisableGateway *bool `json:"disableGateway,omitempty"`

	// EnableClientCertificate: Property only meant to be used for Consumption SKU Service. This enforces a client certificate
	// to be presented on each request to the gateway. This also enables the ability to authenticate the certificate in the
	// policy on the gateway.
	EnableClientCertificate *bool `json:"enableClientCertificate,omitempty"`

	// HostnameConfigurations: Custom hostname configuration of the API Management service.
	HostnameConfigurations []HostnameConfiguration `json:"hostnameConfigurations,omitempty"`

	// LegacyPortalStatus: Status of legacy portal in the API Management service.
	LegacyPortalStatus *ApiManagementServiceProperties_LegacyPortalStatus `json:"legacyPortalStatus,omitempty"`

	// NatGatewayState: Property can be used to enable NAT Gateway for this API Management service.
	NatGatewayState *ApiManagementServiceProperties_NatGatewayState `json:"natGatewayState,omitempty"`

	// NotificationSenderEmail: Email address from which the notification will be sent.
	NotificationSenderEmail *string `json:"notificationSenderEmail,omitempty"`

	// PublicIpAddressId: Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in
	// the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
	PublicIpAddressId *string `json:"publicIpAddressId,omitempty"`

	// PublicNetworkAccess: Whether or not public endpoint access is allowed for this API Management service.  Value is
	// optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access
	// method. Default value is 'Enabled'
	PublicNetworkAccess *ApiManagementServiceProperties_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"`

	// PublisherEmail: Publisher email.
	PublisherEmail *string `json:"publisherEmail,omitempty"`

	// PublisherName: Publisher name.
	PublisherName *string `json:"publisherName,omitempty"`

	// Restore: Undelete Api Management Service if it was previously soft-deleted. If this flag is specified and set to True
	// all other properties will be ignored.
	Restore *bool `json:"restore,omitempty"`

	// VirtualNetworkConfiguration: Virtual network configuration of the API Management service.
	VirtualNetworkConfiguration *VirtualNetworkConfiguration `json:"virtualNetworkConfiguration,omitempty"`

	// VirtualNetworkType: The type of VPN in which API Management service needs to be configured in. None (Default Value)
	// means the API Management service is not part of any Virtual Network, External means the API Management deployment is set
	// up inside a Virtual Network having an Internet Facing Endpoint, and Internal means that API Management deployment is
	// setup inside a Virtual Network having an Intranet Facing Endpoint only.
	VirtualNetworkType *ApiManagementServiceProperties_VirtualNetworkType `json:"virtualNetworkType,omitempty"`
}

// API Management service resource SKU properties.
type ApiManagementServiceSkuProperties struct {
	// Capacity: Capacity of the SKU (number of deployed units of the SKU). For Consumption SKU capacity must be specified as 0.
	Capacity *int `json:"capacity,omitempty"`

	// Name: Name of the Sku.
	Name *ApiManagementServiceSkuProperties_Name `json:"name,omitempty"`
}

// Description of an additional API Management resource location.
type AdditionalLocation struct {
	// DisableGateway: Property only valid for an Api Management service deployed in multiple locations. This can be used to
	// disable the gateway in this additional location.
	DisableGateway *bool `json:"disableGateway,omitempty"`

	// Location: The location name of the additional region among Azure Data center regions.
	Location *string `json:"location,omitempty"`

	// NatGatewayState: Property can be used to enable NAT Gateway for this API Management service.
	NatGatewayState *AdditionalLocation_NatGatewayState `json:"natGatewayState,omitempty"`

	// PublicIpAddressId: Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in
	// the location. Supported only for Premium SKU being deployed in Virtual Network.
	PublicIpAddressId *string `json:"publicIpAddressId,omitempty"`

	// Sku: SKU properties of the API Management service.
	Sku *ApiManagementServiceSkuProperties `json:"sku,omitempty"`

	// VirtualNetworkConfiguration: Virtual network configuration for the location.
	VirtualNetworkConfiguration *VirtualNetworkConfiguration `json:"virtualNetworkConfiguration,omitempty"`

	// Zones: A list of availability zones denoting where the resource needs to come from.
	Zones []string `json:"zones,omitempty"`
}

// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned, UserAssigned","UserAssigned"}
type ApiManagementServiceIdentity_Type string

const (
	ApiManagementServiceIdentity_Type_None                       = ApiManagementServiceIdentity_Type("None")
	ApiManagementServiceIdentity_Type_SystemAssigned             = ApiManagementServiceIdentity_Type("SystemAssigned")
	ApiManagementServiceIdentity_Type_SystemAssignedUserAssigned = ApiManagementServiceIdentity_Type("SystemAssigned, UserAssigned")
	ApiManagementServiceIdentity_Type_UserAssigned               = ApiManagementServiceIdentity_Type("UserAssigned")
)

// Mapping from string to ApiManagementServiceIdentity_Type
var apiManagementServiceIdentity_Type_Values = map[string]ApiManagementServiceIdentity_Type{
	"none":                         ApiManagementServiceIdentity_Type_None,
	"systemassigned":               ApiManagementServiceIdentity_Type_SystemAssigned,
	"systemassigned, userassigned": ApiManagementServiceIdentity_Type_SystemAssignedUserAssigned,
	"userassigned":                 ApiManagementServiceIdentity_Type_UserAssigned,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type ApiManagementServiceProperties_DeveloperPortalStatus string

const (
	ApiManagementServiceProperties_DeveloperPortalStatus_Disabled = ApiManagementServiceProperties_DeveloperPortalStatus("Disabled")
	ApiManagementServiceProperties_DeveloperPortalStatus_Enabled  = ApiManagementServiceProperties_DeveloperPortalStatus("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_DeveloperPortalStatus
var apiManagementServiceProperties_DeveloperPortalStatus_Values = map[string]ApiManagementServiceProperties_DeveloperPortalStatus{
	"disabled": ApiManagementServiceProperties_DeveloperPortalStatus_Disabled,
	"enabled":  ApiManagementServiceProperties_DeveloperPortalStatus_Enabled,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type ApiManagementServiceProperties_LegacyPortalStatus string

const (
	ApiManagementServiceProperties_LegacyPortalStatus_Disabled = ApiManagementServiceProperties_LegacyPortalStatus("Disabled")
	ApiManagementServiceProperties_LegacyPortalStatus_Enabled  = ApiManagementServiceProperties_LegacyPortalStatus("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_LegacyPortalStatus
var apiManagementServiceProperties_LegacyPortalStatus_Values = map[string]ApiManagementServiceProperties_LegacyPortalStatus{
	"disabled": ApiManagementServiceProperties_LegacyPortalStatus_Disabled,
	"enabled":  ApiManagementServiceProperties_LegacyPortalStatus_Enabled,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type ApiManagementServiceProperties_NatGatewayState string

const (
	ApiManagementServiceProperties_NatGatewayState_Disabled = ApiManagementServiceProperties_NatGatewayState("Disabled")
	ApiManagementServiceProperties_NatGatewayState_Enabled  = ApiManagementServiceProperties_NatGatewayState("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_NatGatewayState
var apiManagementServiceProperties_NatGatewayState_Values = map[string]ApiManagementServiceProperties_NatGatewayState{
	"disabled": ApiManagementServiceProperties_NatGatewayState_Disabled,
	"enabled":  ApiManagementServiceProperties_NatGatewayState_Enabled,
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type ApiManagementServiceProperties_PublicNetworkAccess string

const (
	ApiManagementServiceProperties_PublicNetworkAccess_Disabled = ApiManagementServiceProperties_PublicNetworkAccess("Disabled")
	ApiManagementServiceProperties_PublicNetworkAccess_Enabled  = ApiManagementServiceProperties_PublicNetworkAccess("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_PublicNetworkAccess
var apiManagementServiceProperties_PublicNetworkAccess_Values = map[string]ApiManagementServiceProperties_PublicNetworkAccess{
	"disabled": ApiManagementServiceProperties_PublicNetworkAccess_Disabled,
	"enabled":  ApiManagementServiceProperties_PublicNetworkAccess_Enabled,
}

// +kubebuilder:validation:Enum={"External","Internal","None"}
type ApiManagementServiceProperties_VirtualNetworkType string

const (
	ApiManagementServiceProperties_VirtualNetworkType_External = ApiManagementServiceProperties_VirtualNetworkType("External")
	ApiManagementServiceProperties_VirtualNetworkType_Internal = ApiManagementServiceProperties_VirtualNetworkType("Internal")
	ApiManagementServiceProperties_VirtualNetworkType_None     = ApiManagementServiceProperties_VirtualNetworkType("None")
)

// Mapping from string to ApiManagementServiceProperties_VirtualNetworkType
var apiManagementServiceProperties_VirtualNetworkType_Values = map[string]ApiManagementServiceProperties_VirtualNetworkType{
	"external": ApiManagementServiceProperties_VirtualNetworkType_External,
	"internal": ApiManagementServiceProperties_VirtualNetworkType_Internal,
	"none":     ApiManagementServiceProperties_VirtualNetworkType_None,
}

// +kubebuilder:validation:Enum={"Basic","BasicV2","Consumption","Developer","Isolated","Premium","Standard","StandardV2"}
type ApiManagementServiceSkuProperties_Name string

const (
	ApiManagementServiceSkuProperties_Name_Basic       = ApiManagementServiceSkuProperties_Name("Basic")
	ApiManagementServiceSkuProperties_Name_BasicV2     = ApiManagementServiceSkuProperties_Name("BasicV2")
	ApiManagementServiceSkuProperties_Name_Consumption = ApiManagementServiceSkuProperties_Name("Consumption")
	ApiManagementServiceSkuProperties_Name_Developer   = ApiManagementServiceSkuProperties_Name("Developer")
	ApiManagementServiceSkuProperties_Name_Isolated    = ApiManagementServiceSkuProperties_Name("Isolated")
	ApiManagementServiceSkuProperties_Name_Premium     = ApiManagementServiceSkuProperties_Name("Premium")
	ApiManagementServiceSkuProperties_Name_Standard    = ApiManagementServiceSkuProperties_Name("Standard")
	ApiManagementServiceSkuProperties_Name_StandardV2  = ApiManagementServiceSkuProperties_Name("StandardV2")
)

// Mapping from string to ApiManagementServiceSkuProperties_Name
var apiManagementServiceSkuProperties_Name_Values = map[string]ApiManagementServiceSkuProperties_Name{
	"basic":       ApiManagementServiceSkuProperties_Name_Basic,
	"basicv2":     ApiManagementServiceSkuProperties_Name_BasicV2,
	"consumption": ApiManagementServiceSkuProperties_Name_Consumption,
	"developer":   ApiManagementServiceSkuProperties_Name_Developer,
	"isolated":    ApiManagementServiceSkuProperties_Name_Isolated,
	"premium":     ApiManagementServiceSkuProperties_Name_Premium,
	"standard":    ApiManagementServiceSkuProperties_Name_Standard,
	"standardv2":  ApiManagementServiceSkuProperties_Name_StandardV2,
}

// Control Plane Apis version constraint for the API Management service.
type ApiVersionConstraint struct {
	// MinApiVersion: Limit control plane API calls to API Management service with version equal to or newer than this value.
	MinApiVersion *string `json:"minApiVersion,omitempty"`
}

// Certificate configuration which consist of non-trusted intermediates and root certificates.
type CertificateConfiguration struct {
	// Certificate: Certificate information.
	Certificate *CertificateInformation `json:"certificate,omitempty"`

	// CertificatePassword: Certificate Password.
	CertificatePassword *string `json:"certificatePassword,omitempty"`

	// EncodedCertificate: Base64 Encoded certificate.
	EncodedCertificate *string `json:"encodedCertificate,omitempty"`

	// StoreName: The System.Security.Cryptography.x509certificates.StoreName certificate store location. Only Root and
	// CertificateAuthority are valid locations.
	StoreName *CertificateConfiguration_StoreName `json:"storeName,omitempty"`
}

// Information regarding the Configuration API of the API Management service.
type ConfigurationApi struct {
	// LegacyApi: Indication whether or not the legacy Configuration API (v1) should be exposed on the API Management service.
	// Value is optional but must be 'Enabled' or 'Disabled'. If 'Disabled', legacy Configuration API (v1) will not be
	// available for self-hosted gateways. Default value is 'Enabled'
	LegacyApi *ConfigurationApi_LegacyApi `json:"legacyApi,omitempty"`
}

// Custom hostname configuration.
type HostnameConfiguration struct {
	// Certificate: Certificate information.
	Certificate *CertificateInformation `json:"certificate,omitempty"`

	// CertificatePassword: Certificate Password.
	CertificatePassword *string `json:"certificatePassword,omitempty"`

	// CertificateSource: Certificate Source.
	CertificateSource *HostnameConfiguration_CertificateSource `json:"certificateSource,omitempty"`

	// CertificateStatus: Certificate Status.
	CertificateStatus *HostnameConfiguration_CertificateStatus `json:"certificateStatus,omitempty"`

	// DefaultSslBinding: Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate.
	// If a client does not send the SNI header, then this will be the certificate that will be challenged. The property is
	// useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The
	// setting only applied to gateway Hostname Type.
	DefaultSslBinding *bool `json:"defaultSslBinding,omitempty"`

	// EncodedCertificate: Base64 Encoded certificate.
	EncodedCertificate *string `json:"encodedCertificate,omitempty"`

	// HostName: Hostname to configure on the Api Management service.
	HostName *string `json:"hostName,omitempty"`

	// IdentityClientId: System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to
	// the keyVault containing the SSL certificate.
	IdentityClientId *string `json:"identityClientId,omitempty" optionalConfigMapPair:"IdentityClientId"`

	// KeyVaultId: Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided,
	// auto-update of ssl certificate will not work. This requires Api Management service to be configured with aka.ms/apimmsi.
	// The secret should be of type *application/x-pkcs12*
	KeyVaultId *string `json:"keyVaultId,omitempty"`

	// NegotiateClientCertificate: Specify true to always negotiate client certificate on the hostname. Default Value is false.
	NegotiateClientCertificate *bool `json:"negotiateClientCertificate,omitempty"`

	// Type: Hostname type.
	Type *HostnameConfiguration_Type `json:"type,omitempty"`
}

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

// Configuration of a virtual network to which API Management service is deployed.
type VirtualNetworkConfiguration struct {
	// SubnetResourceId: The full resource ID of a subnet in a virtual network to deploy the API Management service in.
	SubnetResourceId *string `json:"subnetResourceId,omitempty"`
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type AdditionalLocation_NatGatewayState string

const (
	AdditionalLocation_NatGatewayState_Disabled = AdditionalLocation_NatGatewayState("Disabled")
	AdditionalLocation_NatGatewayState_Enabled  = AdditionalLocation_NatGatewayState("Enabled")
)

// Mapping from string to AdditionalLocation_NatGatewayState
var additionalLocation_NatGatewayState_Values = map[string]AdditionalLocation_NatGatewayState{
	"disabled": AdditionalLocation_NatGatewayState_Disabled,
	"enabled":  AdditionalLocation_NatGatewayState_Enabled,
}

// +kubebuilder:validation:Enum={"CertificateAuthority","Root"}
type CertificateConfiguration_StoreName string

const (
	CertificateConfiguration_StoreName_CertificateAuthority = CertificateConfiguration_StoreName("CertificateAuthority")
	CertificateConfiguration_StoreName_Root                 = CertificateConfiguration_StoreName("Root")
)

// Mapping from string to CertificateConfiguration_StoreName
var certificateConfiguration_StoreName_Values = map[string]CertificateConfiguration_StoreName{
	"certificateauthority": CertificateConfiguration_StoreName_CertificateAuthority,
	"root":                 CertificateConfiguration_StoreName_Root,
}

// SSL certificate information.
type CertificateInformation struct {
	// Expiry: Expiration date of the certificate. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as
	// specified by the ISO 8601 standard.
	Expiry *string `json:"expiry,omitempty" optionalConfigMapPair:"Expiry"`

	// Subject: Subject of the certificate.
	Subject *string `json:"subject,omitempty" optionalConfigMapPair:"Subject"`

	// Thumbprint: Thumbprint of the certificate.
	Thumbprint *string `json:"thumbprint,omitempty" optionalConfigMapPair:"Thumbprint"`
}

// +kubebuilder:validation:Enum={"Disabled","Enabled"}
type ConfigurationApi_LegacyApi string

const (
	ConfigurationApi_LegacyApi_Disabled = ConfigurationApi_LegacyApi("Disabled")
	ConfigurationApi_LegacyApi_Enabled  = ConfigurationApi_LegacyApi("Enabled")
)

// Mapping from string to ConfigurationApi_LegacyApi
var configurationApi_LegacyApi_Values = map[string]ConfigurationApi_LegacyApi{
	"disabled": ConfigurationApi_LegacyApi_Disabled,
	"enabled":  ConfigurationApi_LegacyApi_Enabled,
}

// +kubebuilder:validation:Enum={"BuiltIn","Custom","KeyVault","Managed"}
type HostnameConfiguration_CertificateSource string

const (
	HostnameConfiguration_CertificateSource_BuiltIn  = HostnameConfiguration_CertificateSource("BuiltIn")
	HostnameConfiguration_CertificateSource_Custom   = HostnameConfiguration_CertificateSource("Custom")
	HostnameConfiguration_CertificateSource_KeyVault = HostnameConfiguration_CertificateSource("KeyVault")
	HostnameConfiguration_CertificateSource_Managed  = HostnameConfiguration_CertificateSource("Managed")
)

// Mapping from string to HostnameConfiguration_CertificateSource
var hostnameConfiguration_CertificateSource_Values = map[string]HostnameConfiguration_CertificateSource{
	"builtin":  HostnameConfiguration_CertificateSource_BuiltIn,
	"custom":   HostnameConfiguration_CertificateSource_Custom,
	"keyvault": HostnameConfiguration_CertificateSource_KeyVault,
	"managed":  HostnameConfiguration_CertificateSource_Managed,
}

// +kubebuilder:validation:Enum={"Completed","Failed","InProgress"}
type HostnameConfiguration_CertificateStatus string

const (
	HostnameConfiguration_CertificateStatus_Completed  = HostnameConfiguration_CertificateStatus("Completed")
	HostnameConfiguration_CertificateStatus_Failed     = HostnameConfiguration_CertificateStatus("Failed")
	HostnameConfiguration_CertificateStatus_InProgress = HostnameConfiguration_CertificateStatus("InProgress")
)

// Mapping from string to HostnameConfiguration_CertificateStatus
var hostnameConfiguration_CertificateStatus_Values = map[string]HostnameConfiguration_CertificateStatus{
	"completed":  HostnameConfiguration_CertificateStatus_Completed,
	"failed":     HostnameConfiguration_CertificateStatus_Failed,
	"inprogress": HostnameConfiguration_CertificateStatus_InProgress,
}

// +kubebuilder:validation:Enum={"ConfigurationApi","DeveloperPortal","Management","Portal","Proxy","Scm"}
type HostnameConfiguration_Type string

const (
	HostnameConfiguration_Type_ConfigurationApi = HostnameConfiguration_Type("ConfigurationApi")
	HostnameConfiguration_Type_DeveloperPortal  = HostnameConfiguration_Type("DeveloperPortal")
	HostnameConfiguration_Type_Management       = HostnameConfiguration_Type("Management")
	HostnameConfiguration_Type_Portal           = HostnameConfiguration_Type("Portal")
	HostnameConfiguration_Type_Proxy            = HostnameConfiguration_Type("Proxy")
	HostnameConfiguration_Type_Scm              = HostnameConfiguration_Type("Scm")
)

// Mapping from string to HostnameConfiguration_Type
var hostnameConfiguration_Type_Values = map[string]HostnameConfiguration_Type{
	"configurationapi": HostnameConfiguration_Type_ConfigurationApi,
	"developerportal":  HostnameConfiguration_Type_DeveloperPortal,
	"management":       HostnameConfiguration_Type_Management,
	"portal":           HostnameConfiguration_Type_Portal,
	"proxy":            HostnameConfiguration_Type_Proxy,
	"scm":              HostnameConfiguration_Type_Scm,
}
