// Code generated by msgraph.go/gen DO NOT EDIT.

package msgraph

// VPNConfiguration Base VPN Configuration profile.
type VPNConfiguration struct {
	// DeviceConfiguration is the base model of VPNConfiguration
	DeviceConfiguration
	// AuthenticationMethod Authentication method.
	AuthenticationMethod *VPNAuthenticationMethod `json:"authenticationMethod,omitempty"`
	// ConnectionName Connection name displayed to the user.
	ConnectionName *string `json:"connectionName,omitempty"`
	// Role Role when connection type is set to Pulse Secure.
	Role *string `json:"role,omitempty"`
	// Realm Realm when connection type is set to Pulse Secure.
	Realm *string `json:"realm,omitempty"`
	// Servers List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain a maximum of 500 elements.
	Servers []VPNServer `json:"servers,omitempty"`
}

// VPNDNSRule undocumented
type VPNDNSRule struct {
	// Object is the base model of VPNDNSRule
	Object
	// Name Name.
	Name *string `json:"name,omitempty"`
	// Servers Servers.
	Servers []string `json:"servers,omitempty"`
	// ProxyServerURI Proxy Server Uri.
	ProxyServerURI *string `json:"proxyServerUri,omitempty"`
	// AutoTrigger Automatically connect to the VPN when the device connects to this domain: Default False.
	AutoTrigger *bool `json:"autoTrigger,omitempty"`
	// Persistent Keep this rule active even when the VPN is not connected: Default False
	Persistent *bool `json:"persistent,omitempty"`
}

// VPNOnDemandRule undocumented
type VPNOnDemandRule struct {
	// Object is the base model of VPNOnDemandRule
	Object
	// Ssids Network Service Set Identifiers (SSIDs).
	Ssids []string `json:"ssids,omitempty"`
	// DNSSearchDomains DNS Search Domains.
	DNSSearchDomains []string `json:"dnsSearchDomains,omitempty"`
	// ProbeURL A URL to probe. If this URL is successfully fetched (returning a 200 HTTP status code) without redirection, this rule matches.
	ProbeURL *string `json:"probeUrl,omitempty"`
	// Action Action.
	Action *VPNOnDemandRuleConnectionAction `json:"action,omitempty"`
	// DomainAction Domain Action (Only applicable when Action is evaluate connection).
	DomainAction *VPNOnDemandRuleConnectionDomainAction `json:"domainAction,omitempty"`
	// Domains Domains (Only applicable when Action is evaluate connection).
	Domains []string `json:"domains,omitempty"`
	// ProbeRequiredURL Probe Required Url (Only applicable when Action is evaluate connection and DomainAction is connect if needed).
	ProbeRequiredURL *string `json:"probeRequiredUrl,omitempty"`
}

// VPNProxyServer undocumented
type VPNProxyServer struct {
	// Object is the base model of VPNProxyServer
	Object
	// AutomaticConfigurationScriptURL Proxy's automatic configuration script url.
	AutomaticConfigurationScriptURL *string `json:"automaticConfigurationScriptUrl,omitempty"`
	// Address Address.
	Address *string `json:"address,omitempty"`
	// Port Port. Valid values 0 to 65535
	Port *int `json:"port,omitempty"`
}

// VPNRoute undocumented
type VPNRoute struct {
	// Object is the base model of VPNRoute
	Object
	// DestinationPrefix Destination prefix (IPv4/v6 address).
	DestinationPrefix *string `json:"destinationPrefix,omitempty"`
	// PrefixSize Prefix size. (1-32). Valid values 1 to 32
	PrefixSize *int `json:"prefixSize,omitempty"`
}

// VPNServer undocumented
type VPNServer struct {
	// Object is the base model of VPNServer
	Object
	// Description Description.
	Description *string `json:"description,omitempty"`
	// Address Address (IP address, FQDN or URL)
	Address *string `json:"address,omitempty"`
	// IsDefaultServer Default server.
	IsDefaultServer *bool `json:"isDefaultServer,omitempty"`
}

// VPNTrafficRule undocumented
type VPNTrafficRule struct {
	// Object is the base model of VPNTrafficRule
	Object
	// Name Name.
	Name *string `json:"name,omitempty"`
	// Protocols Protocols (0-255). Valid values 0 to 255
	Protocols *int `json:"protocols,omitempty"`
	// LocalPortRanges Local port range can be set only when protocol is either TCP or UDP (6 or 17). This collection can contain a maximum of 500 elements.
	LocalPortRanges []NumberRange `json:"localPortRanges,omitempty"`
	// RemotePortRanges Remote port range can be set only when protocol is either TCP or UDP (6 or 17). This collection can contain a maximum of 500 elements.
	RemotePortRanges []NumberRange `json:"remotePortRanges,omitempty"`
	// LocalAddressRanges Local address range. This collection can contain a maximum of 500 elements.
	LocalAddressRanges []IPv4Range `json:"localAddressRanges,omitempty"`
	// RemoteAddressRanges Remote address range. This collection can contain a maximum of 500 elements.
	RemoteAddressRanges []IPv4Range `json:"remoteAddressRanges,omitempty"`
	// AppID App identifier, if this traffic rule is triggered by an app.
	AppID *string `json:"appId,omitempty"`
	// AppType App type, if this traffic rule is triggered by an app.
	AppType *VPNTrafficRuleAppType `json:"appType,omitempty"`
	// RoutingPolicyType When app triggered, indicates whether to enable split tunneling along this route.
	RoutingPolicyType *VPNTrafficRuleRoutingPolicyType `json:"routingPolicyType,omitempty"`
	// Claims Claims associated with this traffic rule.
	Claims *string `json:"claims,omitempty"`
}
