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

type Service_STATUS struct {
	// Etag: ETag of the resource.
	Etag *string `json:"etag,omitempty"`

	// Id: Resource ID.
	Id *string `json:"id,omitempty"`

	// Identity: Managed service identity of the Api Management service.
	Identity *ApiManagementServiceIdentity_STATUS `json:"identity,omitempty"`

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

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

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

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

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

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

	// Type: Resource type for API Management resource is set to Microsoft.ApiManagement.
	Type *string `json:"type,omitempty"`

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

// Identity properties of the Api Management service resource.
type ApiManagementServiceIdentity_STATUS struct {
	// PrincipalId: The principal id of the identity.
	PrincipalId *string `json:"principalId,omitempty"`

	// TenantId: The client tenant id of the identity.
	TenantId *string `json:"tenantId,omitempty"`

	// 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_STATUS `json:"type,omitempty"`

	// UserAssignedIdentities: The list of user identities associated with the resource. The user identity
	// dictionary key references will be ARM resource ids in the form:
	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
	// providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
	UserAssignedIdentities map[string]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"`
}

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

	// ApiVersionConstraint: Control Plane Apis version constraint for the API Management service.
	ApiVersionConstraint *ApiVersionConstraint_STATUS `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_STATUS `json:"certificates,omitempty"`

	// CreatedAtUtc: Creation UTC date of the API Management service.The date conforms to the following format:
	// `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.
	CreatedAtUtc *string `json:"createdAtUtc,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"`

	// DeveloperPortalUrl: DEveloper Portal endpoint URL of the API Management service.
	DeveloperPortalUrl *string `json:"developerPortalUrl,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"`

	// GatewayRegionalUrl: Gateway URL of the API Management service in the Default Region.
	GatewayRegionalUrl *string `json:"gatewayRegionalUrl,omitempty"`

	// GatewayUrl: Gateway URL of the API Management service.
	GatewayUrl *string `json:"gatewayUrl,omitempty"`

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

	// ManagementApiUrl: Management API endpoint URL of the API Management service.
	ManagementApiUrl *string `json:"managementApiUrl,omitempty"`

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

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

	// OutboundPublicIPAddresses: Outbound public IPV4 address prefixes associated with NAT Gateway deployed service. Available
	// only for Premium SKU on stv2 platform.
	OutboundPublicIPAddresses []string `json:"outboundPublicIPAddresses,omitempty"`

	// PlatformVersion: Compute Platform Version running the service in this location.
	PlatformVersion *ApiManagementServiceProperties_PlatformVersion_STATUS `json:"platformVersion,omitempty"`

	// PortalUrl: Publisher portal endpoint Url of the API Management service.
	PortalUrl *string `json:"portalUrl,omitempty"`

	// PrivateEndpointConnections: List of Private Endpoint Connections of this service.
	PrivateEndpointConnections []RemotePrivateEndpointConnectionWrapper_STATUS `json:"privateEndpointConnections,omitempty"`

	// PrivateIPAddresses: Private Static Load Balanced IP addresses of the API Management service in Primary region which is
	// deployed in an Internal Virtual Network. Available only for Basic, Standard, Premium and Isolated SKU.
	PrivateIPAddresses []string `json:"privateIPAddresses,omitempty"`

	// ProvisioningState: The current provisioning state of the API Management service which can be one of the following:
	// Created/Activating/Succeeded/Updating/Failed/Stopped/Terminating/TerminationFailed/Deleted.
	ProvisioningState *string `json:"provisioningState,omitempty"`

	// PublicIPAddresses: Public Static Load Balanced IP addresses of the API Management service in Primary region. Available
	// only for Basic, Standard, Premium and Isolated SKU.
	PublicIPAddresses []string `json:"publicIPAddresses,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_STATUS `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"`

	// ScmUrl: SCM endpoint URL of the API Management service.
	ScmUrl *string `json:"scmUrl,omitempty"`

	// TargetProvisioningState: The provisioning state of the API Management service, which is targeted by the long running
	// operation started on the service.
	TargetProvisioningState *string `json:"targetProvisioningState,omitempty"`

	// VirtualNetworkConfiguration: Virtual network configuration of the API Management service.
	VirtualNetworkConfiguration *VirtualNetworkConfiguration_STATUS `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_STATUS `json:"virtualNetworkType,omitempty"`
}

// API Management service resource SKU properties.
type ApiManagementServiceSkuProperties_STATUS 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_STATUS `json:"name,omitempty"`
}

// Metadata pertaining to creation and last modification of the resource.
type SystemData_STATUS struct {
	// CreatedAt: The timestamp of resource creation (UTC).
	CreatedAt *string `json:"createdAt,omitempty"`

	// CreatedBy: The identity that created the resource.
	CreatedBy *string `json:"createdBy,omitempty"`

	// CreatedByType: The type of identity that created the resource.
	CreatedByType *SystemData_CreatedByType_STATUS `json:"createdByType,omitempty"`

	// LastModifiedAt: The timestamp of resource last modification (UTC)
	LastModifiedAt *string `json:"lastModifiedAt,omitempty"`

	// LastModifiedBy: The identity that last modified the resource.
	LastModifiedBy *string `json:"lastModifiedBy,omitempty"`

	// LastModifiedByType: The type of identity that last modified the resource.
	LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"`
}

// Description of an additional API Management resource location.
type AdditionalLocation_STATUS 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"`

	// GatewayRegionalUrl: Gateway URL of the API Management service in the Region.
	GatewayRegionalUrl *string `json:"gatewayRegionalUrl,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_STATUS `json:"natGatewayState,omitempty"`

	// OutboundPublicIPAddresses: Outbound public IPV4 address prefixes associated with NAT Gateway deployed service. Available
	// only for Premium SKU on stv2 platform.
	OutboundPublicIPAddresses []string `json:"outboundPublicIPAddresses,omitempty"`

	// PlatformVersion: Compute Platform Version running the service.
	PlatformVersion *AdditionalLocation_PlatformVersion_STATUS `json:"platformVersion,omitempty"`

	// PrivateIPAddresses: Private Static Load Balanced IP addresses of the API Management service which is deployed in an
	// Internal Virtual Network in a particular additional location. Available only for Basic, Standard, Premium and Isolated
	// SKU.
	PrivateIPAddresses []string `json:"privateIPAddresses,omitempty"`

	// PublicIPAddresses: Public Static Load Balanced IP addresses of the API Management service in the additional location.
	// Available only for Basic, Standard, Premium and Isolated SKU.
	PublicIPAddresses []string `json:"publicIPAddresses,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_STATUS `json:"sku,omitempty"`

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

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

type ApiManagementServiceIdentity_Type_STATUS string

const (
	ApiManagementServiceIdentity_Type_STATUS_None                       = ApiManagementServiceIdentity_Type_STATUS("None")
	ApiManagementServiceIdentity_Type_STATUS_SystemAssigned             = ApiManagementServiceIdentity_Type_STATUS("SystemAssigned")
	ApiManagementServiceIdentity_Type_STATUS_SystemAssignedUserAssigned = ApiManagementServiceIdentity_Type_STATUS("SystemAssigned, UserAssigned")
	ApiManagementServiceIdentity_Type_STATUS_UserAssigned               = ApiManagementServiceIdentity_Type_STATUS("UserAssigned")
)

// Mapping from string to ApiManagementServiceIdentity_Type_STATUS
var apiManagementServiceIdentity_Type_STATUS_Values = map[string]ApiManagementServiceIdentity_Type_STATUS{
	"none":                         ApiManagementServiceIdentity_Type_STATUS_None,
	"systemassigned":               ApiManagementServiceIdentity_Type_STATUS_SystemAssigned,
	"systemassigned, userassigned": ApiManagementServiceIdentity_Type_STATUS_SystemAssignedUserAssigned,
	"userassigned":                 ApiManagementServiceIdentity_Type_STATUS_UserAssigned,
}

type ApiManagementServiceProperties_NatGatewayState_STATUS string

const (
	ApiManagementServiceProperties_NatGatewayState_STATUS_Disabled = ApiManagementServiceProperties_NatGatewayState_STATUS("Disabled")
	ApiManagementServiceProperties_NatGatewayState_STATUS_Enabled  = ApiManagementServiceProperties_NatGatewayState_STATUS("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_NatGatewayState_STATUS
var apiManagementServiceProperties_NatGatewayState_STATUS_Values = map[string]ApiManagementServiceProperties_NatGatewayState_STATUS{
	"disabled": ApiManagementServiceProperties_NatGatewayState_STATUS_Disabled,
	"enabled":  ApiManagementServiceProperties_NatGatewayState_STATUS_Enabled,
}

type ApiManagementServiceProperties_PlatformVersion_STATUS string

const (
	ApiManagementServiceProperties_PlatformVersion_STATUS_Mtv1         = ApiManagementServiceProperties_PlatformVersion_STATUS("mtv1")
	ApiManagementServiceProperties_PlatformVersion_STATUS_Stv1         = ApiManagementServiceProperties_PlatformVersion_STATUS("stv1")
	ApiManagementServiceProperties_PlatformVersion_STATUS_Stv2         = ApiManagementServiceProperties_PlatformVersion_STATUS("stv2")
	ApiManagementServiceProperties_PlatformVersion_STATUS_Undetermined = ApiManagementServiceProperties_PlatformVersion_STATUS("undetermined")
)

// Mapping from string to ApiManagementServiceProperties_PlatformVersion_STATUS
var apiManagementServiceProperties_PlatformVersion_STATUS_Values = map[string]ApiManagementServiceProperties_PlatformVersion_STATUS{
	"mtv1":         ApiManagementServiceProperties_PlatformVersion_STATUS_Mtv1,
	"stv1":         ApiManagementServiceProperties_PlatformVersion_STATUS_Stv1,
	"stv2":         ApiManagementServiceProperties_PlatformVersion_STATUS_Stv2,
	"undetermined": ApiManagementServiceProperties_PlatformVersion_STATUS_Undetermined,
}

type ApiManagementServiceProperties_PublicNetworkAccess_STATUS string

const (
	ApiManagementServiceProperties_PublicNetworkAccess_STATUS_Disabled = ApiManagementServiceProperties_PublicNetworkAccess_STATUS("Disabled")
	ApiManagementServiceProperties_PublicNetworkAccess_STATUS_Enabled  = ApiManagementServiceProperties_PublicNetworkAccess_STATUS("Enabled")
)

// Mapping from string to ApiManagementServiceProperties_PublicNetworkAccess_STATUS
var apiManagementServiceProperties_PublicNetworkAccess_STATUS_Values = map[string]ApiManagementServiceProperties_PublicNetworkAccess_STATUS{
	"disabled": ApiManagementServiceProperties_PublicNetworkAccess_STATUS_Disabled,
	"enabled":  ApiManagementServiceProperties_PublicNetworkAccess_STATUS_Enabled,
}

type ApiManagementServiceProperties_VirtualNetworkType_STATUS string

const (
	ApiManagementServiceProperties_VirtualNetworkType_STATUS_External = ApiManagementServiceProperties_VirtualNetworkType_STATUS("External")
	ApiManagementServiceProperties_VirtualNetworkType_STATUS_Internal = ApiManagementServiceProperties_VirtualNetworkType_STATUS("Internal")
	ApiManagementServiceProperties_VirtualNetworkType_STATUS_None     = ApiManagementServiceProperties_VirtualNetworkType_STATUS("None")
)

// Mapping from string to ApiManagementServiceProperties_VirtualNetworkType_STATUS
var apiManagementServiceProperties_VirtualNetworkType_STATUS_Values = map[string]ApiManagementServiceProperties_VirtualNetworkType_STATUS{
	"external": ApiManagementServiceProperties_VirtualNetworkType_STATUS_External,
	"internal": ApiManagementServiceProperties_VirtualNetworkType_STATUS_Internal,
	"none":     ApiManagementServiceProperties_VirtualNetworkType_STATUS_None,
}

type ApiManagementServiceSkuProperties_Name_STATUS string

const (
	ApiManagementServiceSkuProperties_Name_STATUS_Basic       = ApiManagementServiceSkuProperties_Name_STATUS("Basic")
	ApiManagementServiceSkuProperties_Name_STATUS_Consumption = ApiManagementServiceSkuProperties_Name_STATUS("Consumption")
	ApiManagementServiceSkuProperties_Name_STATUS_Developer   = ApiManagementServiceSkuProperties_Name_STATUS("Developer")
	ApiManagementServiceSkuProperties_Name_STATUS_Isolated    = ApiManagementServiceSkuProperties_Name_STATUS("Isolated")
	ApiManagementServiceSkuProperties_Name_STATUS_Premium     = ApiManagementServiceSkuProperties_Name_STATUS("Premium")
	ApiManagementServiceSkuProperties_Name_STATUS_Standard    = ApiManagementServiceSkuProperties_Name_STATUS("Standard")
)

// Mapping from string to ApiManagementServiceSkuProperties_Name_STATUS
var apiManagementServiceSkuProperties_Name_STATUS_Values = map[string]ApiManagementServiceSkuProperties_Name_STATUS{
	"basic":       ApiManagementServiceSkuProperties_Name_STATUS_Basic,
	"consumption": ApiManagementServiceSkuProperties_Name_STATUS_Consumption,
	"developer":   ApiManagementServiceSkuProperties_Name_STATUS_Developer,
	"isolated":    ApiManagementServiceSkuProperties_Name_STATUS_Isolated,
	"premium":     ApiManagementServiceSkuProperties_Name_STATUS_Premium,
	"standard":    ApiManagementServiceSkuProperties_Name_STATUS_Standard,
}

// Control Plane Apis version constraint for the API Management service.
type ApiVersionConstraint_STATUS 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_STATUS struct {
	// Certificate: Certificate information.
	Certificate *CertificateInformation_STATUS `json:"certificate,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_STATUS `json:"storeName,omitempty"`
}

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

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

	// CertificateStatus: Certificate Status.
	CertificateStatus *HostnameConfiguration_CertificateStatus_STATUS `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"`

	// 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_STATUS `json:"type,omitempty"`
}

// Remote Private Endpoint Connection resource.
type RemotePrivateEndpointConnectionWrapper_STATUS struct {
	// Id: Private Endpoint connection resource id
	Id *string `json:"id,omitempty"`

	// Name: Private Endpoint Connection Name
	Name *string `json:"name,omitempty"`

	// Properties: Resource properties.
	Properties *PrivateEndpointConnectionWrapperProperties_STATUS `json:"properties,omitempty"`

	// Type: Private Endpoint Connection Resource Type
	Type *string `json:"type,omitempty"`
}

type SystemData_CreatedByType_STATUS string

const (
	SystemData_CreatedByType_STATUS_Application     = SystemData_CreatedByType_STATUS("Application")
	SystemData_CreatedByType_STATUS_Key             = SystemData_CreatedByType_STATUS("Key")
	SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity")
	SystemData_CreatedByType_STATUS_User            = SystemData_CreatedByType_STATUS("User")
)

// Mapping from string to SystemData_CreatedByType_STATUS
var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{
	"application":     SystemData_CreatedByType_STATUS_Application,
	"key":             SystemData_CreatedByType_STATUS_Key,
	"managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity,
	"user":            SystemData_CreatedByType_STATUS_User,
}

type SystemData_LastModifiedByType_STATUS string

const (
	SystemData_LastModifiedByType_STATUS_Application     = SystemData_LastModifiedByType_STATUS("Application")
	SystemData_LastModifiedByType_STATUS_Key             = SystemData_LastModifiedByType_STATUS("Key")
	SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity")
	SystemData_LastModifiedByType_STATUS_User            = SystemData_LastModifiedByType_STATUS("User")
)

// Mapping from string to SystemData_LastModifiedByType_STATUS
var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{
	"application":     SystemData_LastModifiedByType_STATUS_Application,
	"key":             SystemData_LastModifiedByType_STATUS_Key,
	"managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity,
	"user":            SystemData_LastModifiedByType_STATUS_User,
}

type UserIdentityProperties_STATUS struct {
	// ClientId: The client id of user assigned identity.
	ClientId *string `json:"clientId,omitempty"`

	// PrincipalId: The principal id of user assigned identity.
	PrincipalId *string `json:"principalId,omitempty"`
}

// Configuration of a virtual network to which API Management service is deployed.
type VirtualNetworkConfiguration_STATUS 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"`

	// Subnetname: The name of the subnet.
	Subnetname *string `json:"subnetname,omitempty"`

	// Vnetid: The virtual network ID. This is typically a GUID. Expect a null GUID by default.
	Vnetid *string `json:"vnetid,omitempty"`
}

type AdditionalLocation_NatGatewayState_STATUS string

const (
	AdditionalLocation_NatGatewayState_STATUS_Disabled = AdditionalLocation_NatGatewayState_STATUS("Disabled")
	AdditionalLocation_NatGatewayState_STATUS_Enabled  = AdditionalLocation_NatGatewayState_STATUS("Enabled")
)

// Mapping from string to AdditionalLocation_NatGatewayState_STATUS
var additionalLocation_NatGatewayState_STATUS_Values = map[string]AdditionalLocation_NatGatewayState_STATUS{
	"disabled": AdditionalLocation_NatGatewayState_STATUS_Disabled,
	"enabled":  AdditionalLocation_NatGatewayState_STATUS_Enabled,
}

type AdditionalLocation_PlatformVersion_STATUS string

const (
	AdditionalLocation_PlatformVersion_STATUS_Mtv1         = AdditionalLocation_PlatformVersion_STATUS("mtv1")
	AdditionalLocation_PlatformVersion_STATUS_Stv1         = AdditionalLocation_PlatformVersion_STATUS("stv1")
	AdditionalLocation_PlatformVersion_STATUS_Stv2         = AdditionalLocation_PlatformVersion_STATUS("stv2")
	AdditionalLocation_PlatformVersion_STATUS_Undetermined = AdditionalLocation_PlatformVersion_STATUS("undetermined")
)

// Mapping from string to AdditionalLocation_PlatformVersion_STATUS
var additionalLocation_PlatformVersion_STATUS_Values = map[string]AdditionalLocation_PlatformVersion_STATUS{
	"mtv1":         AdditionalLocation_PlatformVersion_STATUS_Mtv1,
	"stv1":         AdditionalLocation_PlatformVersion_STATUS_Stv1,
	"stv2":         AdditionalLocation_PlatformVersion_STATUS_Stv2,
	"undetermined": AdditionalLocation_PlatformVersion_STATUS_Undetermined,
}

type CertificateConfiguration_StoreName_STATUS string

const (
	CertificateConfiguration_StoreName_STATUS_CertificateAuthority = CertificateConfiguration_StoreName_STATUS("CertificateAuthority")
	CertificateConfiguration_StoreName_STATUS_Root                 = CertificateConfiguration_StoreName_STATUS("Root")
)

// Mapping from string to CertificateConfiguration_StoreName_STATUS
var certificateConfiguration_StoreName_STATUS_Values = map[string]CertificateConfiguration_StoreName_STATUS{
	"certificateauthority": CertificateConfiguration_StoreName_STATUS_CertificateAuthority,
	"root":                 CertificateConfiguration_StoreName_STATUS_Root,
}

// SSL certificate information.
type CertificateInformation_STATUS 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"`

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

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

type HostnameConfiguration_CertificateSource_STATUS string

const (
	HostnameConfiguration_CertificateSource_STATUS_BuiltIn  = HostnameConfiguration_CertificateSource_STATUS("BuiltIn")
	HostnameConfiguration_CertificateSource_STATUS_Custom   = HostnameConfiguration_CertificateSource_STATUS("Custom")
	HostnameConfiguration_CertificateSource_STATUS_KeyVault = HostnameConfiguration_CertificateSource_STATUS("KeyVault")
	HostnameConfiguration_CertificateSource_STATUS_Managed  = HostnameConfiguration_CertificateSource_STATUS("Managed")
)

// Mapping from string to HostnameConfiguration_CertificateSource_STATUS
var hostnameConfiguration_CertificateSource_STATUS_Values = map[string]HostnameConfiguration_CertificateSource_STATUS{
	"builtin":  HostnameConfiguration_CertificateSource_STATUS_BuiltIn,
	"custom":   HostnameConfiguration_CertificateSource_STATUS_Custom,
	"keyvault": HostnameConfiguration_CertificateSource_STATUS_KeyVault,
	"managed":  HostnameConfiguration_CertificateSource_STATUS_Managed,
}

type HostnameConfiguration_CertificateStatus_STATUS string

const (
	HostnameConfiguration_CertificateStatus_STATUS_Completed  = HostnameConfiguration_CertificateStatus_STATUS("Completed")
	HostnameConfiguration_CertificateStatus_STATUS_Failed     = HostnameConfiguration_CertificateStatus_STATUS("Failed")
	HostnameConfiguration_CertificateStatus_STATUS_InProgress = HostnameConfiguration_CertificateStatus_STATUS("InProgress")
)

// Mapping from string to HostnameConfiguration_CertificateStatus_STATUS
var hostnameConfiguration_CertificateStatus_STATUS_Values = map[string]HostnameConfiguration_CertificateStatus_STATUS{
	"completed":  HostnameConfiguration_CertificateStatus_STATUS_Completed,
	"failed":     HostnameConfiguration_CertificateStatus_STATUS_Failed,
	"inprogress": HostnameConfiguration_CertificateStatus_STATUS_InProgress,
}

type HostnameConfiguration_Type_STATUS string

const (
	HostnameConfiguration_Type_STATUS_DeveloperPortal = HostnameConfiguration_Type_STATUS("DeveloperPortal")
	HostnameConfiguration_Type_STATUS_Management      = HostnameConfiguration_Type_STATUS("Management")
	HostnameConfiguration_Type_STATUS_Portal          = HostnameConfiguration_Type_STATUS("Portal")
	HostnameConfiguration_Type_STATUS_Proxy           = HostnameConfiguration_Type_STATUS("Proxy")
	HostnameConfiguration_Type_STATUS_Scm             = HostnameConfiguration_Type_STATUS("Scm")
)

// Mapping from string to HostnameConfiguration_Type_STATUS
var hostnameConfiguration_Type_STATUS_Values = map[string]HostnameConfiguration_Type_STATUS{
	"developerportal": HostnameConfiguration_Type_STATUS_DeveloperPortal,
	"management":      HostnameConfiguration_Type_STATUS_Management,
	"portal":          HostnameConfiguration_Type_STATUS_Portal,
	"proxy":           HostnameConfiguration_Type_STATUS_Proxy,
	"scm":             HostnameConfiguration_Type_STATUS_Scm,
}

// Properties of the PrivateEndpointConnectProperties.
type PrivateEndpointConnectionWrapperProperties_STATUS struct {
	// GroupIds: All the Group ids.
	GroupIds []string `json:"groupIds,omitempty"`

	// PrivateEndpoint: The resource of private end point.
	PrivateEndpoint *ArmIdWrapper_STATUS `json:"privateEndpoint,omitempty"`

	// PrivateLinkServiceConnectionState: A collection of information about the state of the connection between service
	// consumer and provider.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState_STATUS `json:"privateLinkServiceConnectionState,omitempty"`

	// ProvisioningState: The provisioning state of the private endpoint connection resource.
	ProvisioningState *string `json:"provisioningState,omitempty"`
}

// A wrapper for an ARM resource id
type ArmIdWrapper_STATUS struct {
	Id *string `json:"id,omitempty"`
}

// A collection of information about the state of the connection between service consumer and provider.
type PrivateLinkServiceConnectionState_STATUS struct {
	// ActionsRequired: A message indicating if changes on the service provider require any updates on the consumer.
	ActionsRequired *string `json:"actionsRequired,omitempty"`

	// Description: The reason for approval/rejection of the connection.
	Description *string `json:"description,omitempty"`

	// Status: Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
	Status *PrivateEndpointServiceConnectionStatus_STATUS `json:"status,omitempty"`
}

// The private endpoint connection status.
type PrivateEndpointServiceConnectionStatus_STATUS string

const (
	PrivateEndpointServiceConnectionStatus_STATUS_Approved = PrivateEndpointServiceConnectionStatus_STATUS("Approved")
	PrivateEndpointServiceConnectionStatus_STATUS_Pending  = PrivateEndpointServiceConnectionStatus_STATUS("Pending")
	PrivateEndpointServiceConnectionStatus_STATUS_Rejected = PrivateEndpointServiceConnectionStatus_STATUS("Rejected")
)

// Mapping from string to PrivateEndpointServiceConnectionStatus_STATUS
var privateEndpointServiceConnectionStatus_STATUS_Values = map[string]PrivateEndpointServiceConnectionStatus_STATUS{
	"approved": PrivateEndpointServiceConnectionStatus_STATUS_Approved,
	"pending":  PrivateEndpointServiceConnectionStatus_STATUS_Pending,
	"rejected": PrivateEndpointServiceConnectionStatus_STATUS_Rejected,
}
