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

type VirtualNetworksSubnet_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

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

	// Name: The name of the resource that is unique within a resource group. This name can be used to access the resource.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the subnet.
	Properties *SubnetPropertiesFormat_STATUS `json:"properties,omitempty"`

	// Type: Resource type.
	Type *string `json:"type,omitempty"`
}

// Properties of the subnet.
type SubnetPropertiesFormat_STATUS struct {
	// AddressPrefix: The address prefix for the subnet.
	AddressPrefix *string `json:"addressPrefix,omitempty"`

	// AddressPrefixes: List of address prefixes for the subnet.
	AddressPrefixes []string `json:"addressPrefixes,omitempty"`

	// ApplicationGatewayIPConfigurations: Application gateway IP configurations of virtual network resource.
	ApplicationGatewayIPConfigurations []ApplicationGatewayIPConfiguration_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded `json:"applicationGatewayIPConfigurations,omitempty"`

	// DefaultOutboundAccess: Set this property to false to disable default outbound connectivity for all VMs in the subnet.
	// This property can only be set at the time of subnet creation and cannot be updated for an existing subnet.
	DefaultOutboundAccess *bool `json:"defaultOutboundAccess,omitempty"`

	// Delegations: An array of references to the delegations on the subnet.
	Delegations []Delegation_STATUS `json:"delegations,omitempty"`

	// IpAllocations: Array of IpAllocation which reference this subnet.
	IpAllocations []SubResource_STATUS `json:"ipAllocations,omitempty"`

	// IpConfigurationProfiles: Array of IP configuration profiles which reference this subnet.
	IpConfigurationProfiles []IPConfigurationProfile_STATUS `json:"ipConfigurationProfiles,omitempty"`

	// IpConfigurations: An array of references to the network interface IP configurations using subnet.
	IpConfigurations []IPConfiguration_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded `json:"ipConfigurations,omitempty"`

	// NatGateway: Nat gateway associated with this subnet.
	NatGateway *SubResource_STATUS `json:"natGateway,omitempty"`

	// NetworkSecurityGroup: The reference to the NetworkSecurityGroup resource.
	NetworkSecurityGroup *NetworkSecurityGroup_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded `json:"networkSecurityGroup,omitempty"`

	// PrivateEndpointNetworkPolicies: Enable or Disable apply network policies on private end point in the subnet.
	PrivateEndpointNetworkPolicies *SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS `json:"privateEndpointNetworkPolicies,omitempty"`

	// PrivateEndpoints: An array of references to private endpoints.
	PrivateEndpoints []PrivateEndpoint_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded `json:"privateEndpoints,omitempty"`

	// PrivateLinkServiceNetworkPolicies: Enable or Disable apply network policies on private link service in the subnet.
	PrivateLinkServiceNetworkPolicies *SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS `json:"privateLinkServiceNetworkPolicies,omitempty"`

	// ProvisioningState: The provisioning state of the subnet resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// Purpose: A read-only string identifying the intention of use for this subnet based on delegations and other user-defined
	// properties.
	Purpose *string `json:"purpose,omitempty"`

	// ResourceNavigationLinks: An array of references to the external resources using subnet.
	ResourceNavigationLinks []ResourceNavigationLink_STATUS `json:"resourceNavigationLinks,omitempty"`

	// RouteTable: The reference to the RouteTable resource.
	RouteTable *RouteTable_STATUS_SubResourceEmbedded `json:"routeTable,omitempty"`

	// ServiceAssociationLinks: An array of references to services injecting into this subnet.
	ServiceAssociationLinks []ServiceAssociationLink_STATUS `json:"serviceAssociationLinks,omitempty"`

	// ServiceEndpointPolicies: An array of service endpoint policies.
	ServiceEndpointPolicies []ServiceEndpointPolicy_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded `json:"serviceEndpointPolicies,omitempty"`

	// ServiceEndpoints: An array of service endpoints.
	ServiceEndpoints []ServiceEndpointPropertiesFormat_STATUS `json:"serviceEndpoints,omitempty"`

	// SharingScope: Set this property to Tenant to allow sharing subnet with other subscriptions in your AAD tenant. This
	// property can only be set if defaultOutboundAccess is set to false, both properties can only be set if subnet is empty.
	SharingScope *SubnetPropertiesFormat_SharingScope_STATUS `json:"sharingScope,omitempty"`
}

// IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
type ApplicationGatewayIPConfiguration_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Details the service to which the subnet is delegated.
type Delegation_STATUS struct {
	// Etag: A unique read-only string that changes whenever the resource is updated.
	Etag *string `json:"etag,omitempty"`

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

	// Name: The name of the resource that is unique within a subnet. This name can be used to access the resource.
	Name *string `json:"name,omitempty"`

	// Properties: Properties of the subnet.
	Properties *ServiceDelegationPropertiesFormat_STATUS `json:"properties,omitempty"`

	// Type: Resource type.
	Type *string `json:"type,omitempty"`
}

// IP configuration.
type IPConfiguration_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// IP configuration profile child resource.
type IPConfigurationProfile_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// NetworkSecurityGroup resource.
type NetworkSecurityGroup_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Private endpoint resource.
type PrivateEndpoint_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// ResourceNavigationLink resource.
type ResourceNavigationLink_STATUS struct {
	// Id: Resource navigation link identifier.
	Id *string `json:"id,omitempty"`
}

// Route table resource.
type RouteTable_STATUS_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// ServiceAssociationLink resource.
type ServiceAssociationLink_STATUS struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// Service End point policy resource.
type ServiceEndpointPolicy_STATUS_VirtualNetworks_Subnet_SubResourceEmbedded struct {
	// Id: Resource ID.
	Id *string `json:"id,omitempty"`
}

// The service endpoint properties.
type ServiceEndpointPropertiesFormat_STATUS struct {
	// Locations: A list of locations.
	Locations []string `json:"locations,omitempty"`

	// NetworkIdentifier: SubResource as network identifier.
	NetworkIdentifier *SubResource_STATUS `json:"networkIdentifier,omitempty"`

	// ProvisioningState: The provisioning state of the service endpoint resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// Service: The type of the endpoint service.
	Service *string `json:"service,omitempty"`
}

type SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS string

const (
	SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_Disabled                    = SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS("Disabled")
	SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_Enabled                     = SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS("Enabled")
	SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_NetworkSecurityGroupEnabled = SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS("NetworkSecurityGroupEnabled")
	SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_RouteTableEnabled           = SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS("RouteTableEnabled")
)

// Mapping from string to SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS
var subnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_Values = map[string]SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS{
	"disabled":                    SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_Disabled,
	"enabled":                     SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_Enabled,
	"networksecuritygroupenabled": SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_NetworkSecurityGroupEnabled,
	"routetableenabled":           SubnetPropertiesFormat_PrivateEndpointNetworkPolicies_STATUS_RouteTableEnabled,
}

type SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS string

const (
	SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS_Disabled = SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS("Disabled")
	SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS_Enabled  = SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS("Enabled")
)

// Mapping from string to SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS
var subnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS_Values = map[string]SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS{
	"disabled": SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS_Disabled,
	"enabled":  SubnetPropertiesFormat_PrivateLinkServiceNetworkPolicies_STATUS_Enabled,
}

type SubnetPropertiesFormat_SharingScope_STATUS string

const (
	SubnetPropertiesFormat_SharingScope_STATUS_DelegatedServices = SubnetPropertiesFormat_SharingScope_STATUS("DelegatedServices")
	SubnetPropertiesFormat_SharingScope_STATUS_Tenant            = SubnetPropertiesFormat_SharingScope_STATUS("Tenant")
)

// Mapping from string to SubnetPropertiesFormat_SharingScope_STATUS
var subnetPropertiesFormat_SharingScope_STATUS_Values = map[string]SubnetPropertiesFormat_SharingScope_STATUS{
	"delegatedservices": SubnetPropertiesFormat_SharingScope_STATUS_DelegatedServices,
	"tenant":            SubnetPropertiesFormat_SharingScope_STATUS_Tenant,
}

// Properties of a service delegation.
type ServiceDelegationPropertiesFormat_STATUS struct {
	// Actions: The actions permitted to the service upon delegation.
	Actions []string `json:"actions,omitempty"`

	// ProvisioningState: The provisioning state of the service delegation resource.
	ProvisioningState *ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// ServiceName: The name of the service to whom the subnet should be delegated (e.g. Microsoft.Sql/servers).
	ServiceName *string `json:"serviceName,omitempty"`
}
