Branch Office VPNs (BOVPNs) API

A Branch Office Virtual Private Network (BOVPN) enables secure, encrypted connections between networks at geographically separated locations. You can configure an IPSec BOVPN tunnel between cloud-managed Fireboxes in your WatchGuard Cloud account or from a cloud-managed Firebox to any other Firebox or third-party VPN endpoint. For more information, go to Manage BOVPNs for Cloud-Managed Fireboxes.

BOVPN API operations work only with cloud‑managed Fireboxes that store configuration in WatchGuard Cloud. They do not work with locally‑managed Fireboxes, including those with WatchGuard Cloud reporting, because these devices store no configuration in WatchGuard Cloud. The API returns an empty response for locally‑managed Fireboxes.

This API does not automatically deploy BOVPN configuration changes to the Firebox. To apply these changes, you must manually deploy them from the WatchGuard Cloud UI or through a separate public API call. For more information, go to Deployments.

You can use the Firebox Management API to:

Endpoints:

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

Get a BOVPN Tunnel

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels?device={device}

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

Make a request to this endpoint to retrieve information about BOVPN tunnels. You can retrieve BOVPN tunnels for a specific account, device, or tunnel ID. The information you must provide in the request depends on the BOVPN tunnels you want to retrieve:

Example Response

The response includes details of the requested BOVPN IPSec tunnels in JSON format:

                {
"id": "ipsgp_12345_ARBHLJ70Y78rGOIGBS",
"object": "ipsec_gatewaypair",
"version": 1,
"account": "WGC-1-123abc456",
"created": 1579907960,
"author": "testuser",
"name": "PBoVPN1",
"endpoint_a": "136162",
"endpoint_b_name": "CentralVPNServer",
"vpn_type": "route-based",
"address_family": 4,
"interfaces": [
	{
	"endpoint_a": {
		"network": "External"
	},
	"endpoint_b": {
		"id": {
			"type": "ip",
			"value": "192.88.99.200"
			}
		}
	}
],
"psk": "12345678",
"ipsec_tunnel_core": {
	"ike_proposals": [
	{
	"encryption": "AES-CBC-256",
	"dh_group": "DH-14",
	"lifetime": 24,
	"authentication": "SHA2-256"
	}
],
	"ipsec_proposals": [
		{
		"encryption": "AES-CBC-256",
		"lifetime": 8,
		"lifebyte": 0,
		"authentication": "SHA2-256"
	}
],
	"pfs_dh_group": "DH-14",
	"natt_interval": 20,
	"dpd": {
		"dpd_type": "traffic",
		"idle_time": 20,
		"retries": 5
	}
},
"routes": {
	"endpoint_a": {
		"local_routes": [
		{
		"metric": 1,
		"route": "192.168.1.0/24"
		}
	]
},
	"endpoint_b": {
		"local_routes": [
		{
		"metric": 6,
		"route": "192.168.100.0/24"
			}
		]
	}
},
	"vif": {
		"endpoint_a": {
			"vif_df_bit": "set",
			"vif_local_ip": "9.9.9.9/32",
			"vif_mtu": 1399,
			"vif_remote_ip": "10.10.10.10/32"
		},
		"endpoint_b": {
			"vif_local_ip": "10.10.10.10/32",
			"vif_remote_ip": "9.9.9.9/32"
		}
	}
}

            

This table shows and describes the data returned in the response:

id
string

Unique ID of the IPSec gateway.

Example: ipstp_12345_ARBHLJ70Y78rGOIGBS

object
string

Type of object returned.

Example: ipsec_gatewaytemplate

version
integer

Version number of the BOVPN.

Example: 1

account
string

WatchGuard Cloud account ID associated with this gateway pair.

Example: WGC-1-123abc456

created
integer

Unix time stamp of when the gateway pair was created.

Example: 1579907960

author
string

Author of the object. Empty for objects added or updated with the Firebox Management API.

name
string

Name of the gateway pair.

Example: PBoVPN1

endpoint_a
string

Name of the cloud-managed Firebox.

Example: 12345

endpoint_b_name
string

Name of the second Firebox.

Example: CentralVPNServer

vpn_type
string

VPN IPSec tunnel type. Must be either route‑based or policy‑based. Default is route-based.

Example: route-based

address_family
integer

IP address family for all gateway endpoints. Default is 4. This can be one of these values:

  • 4 (IPv4)
  • 6 (IPv6)

Example: 4

interfaces
array

Array of interface endpoint mappings between endpoint A and endpoint B.

endpoint_a
object


Defines the cloud-managed Firebox interface settings.

network
string

Network definition for the tunnel. This can be one of these values:

  • External
  • Trusted
  • Optional

Example: External

endpoint_b
object

Identifies the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

id
object

Unique ID for the IPSec gateway.

type
string

Gateway endpoint ID type. Default is ip. This can be one of these values:

  • ip — An IP address.
  • fqdn — A fully qualified domain name.
  • ufqdn — A user fully qualified domain name.
  • x500_name — An X.500 distinguished name.

Example: ip

value
string

Specifies the identifier string (IP address, FQDN, user FQDN, or X.500 Distinguished Name). Depends on type.

Example: 192.88.99.200

psk
string

Pre-shared key (PSK) used for authentication between endpoints.

Example: 24681012

ipsec_tunnel_core
object

Phase 1 (IKE) and Phase 2 (IPSec) settings, Dead Peer Detection (DPD), and NAT-T keep-alive configurations for the tunnel.

ike_proposals
array

Array of IKE Phase 1 proposals that define encryption and authentication settings for tunnel negotiation.

encryption
string

Encryption algorithm. This can be one of these values:

  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256 (Default)
  • AES-GCM-128
  • AES-GCM-192
  • AES-GCM-256

Example: AES-CBC-256

dh_group
string

Diffie-Hellman group. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

lifetime
integer

Lifetime of the security association. Specify the number of hours or minutes. The minimum value is 1, and the default value is 24.

Example: 24

lifetime_unit
string

Specifies the time unit for the lifetime value. This can be one of these values:

  • hours (Default)
  • minutes

Example: hours

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

pfs_dh_group
string

Diffie-Hellman (DH) group used for Perfect Forward Secrecy (PFS) in Phase 2 of the VPN tunnel. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

natt_interval
integer

Keep-alive interval (in seconds). Specify a number of seconds from 1 through 65535. The default value is 20.

Example: 20

dpd
object

Dead Peer Detection settings used to detect if the remote peer is no longer responsive.

dpd_type
string

Dead Peer Detection type. This can be one of these values:

  • traffic — Default. Based on traffic activity. If no traffic is detected for a specified idle time, DPD messages are sent.
  • timer — Sent at regular intervals, regardless of traffic.

Example: traffic

idle_time
integer

Amount of time (in seconds) before the peer is considered idle. Specify a number of seconds from 10-300. Default value is 30.

Example: 20

retries
integer

Number of retries to make before the peer is considered unreachable. Specify a number from 1-30. Default value is 5.

Example: 5

routes
object

Routes to establish through the tunnel.

endpoint_a
object


Route object for the cloud-managed Firebox.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 1

route
string

Route to establish through the tunnel.

Example: 192.168.1.0/24

endpoint_b
object

Route object for the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 1

route
string

Route to establish through the tunnel.

Example: 192.168.100.0/24

vif
object

Virtual interface configuration for each VPN endpoint.

endpoint_a
object


Route object for the cloud-managed Firebox.

vif_df_bit
string

Specifies the DF (Don't Fragment) bit value. This can be one of these values:

  • copy — Copies the DF bit from the original packet.
  • set — Sets the DF bit to 1 (prevent fragmentation).
  • clear — Clears the DF bit (allow fragmentation).

Example: set

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 9.9.9.9/32

vif_mtu
integer

Maximum packet size (in bytes) that can be transmitted through the virtual interface without fragmentation. Can be an integer between 68 and 9000.

Example: 1500

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 10.10.10.10/32

endpoint_b
object

Route object for the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 10.10.10.10/32

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 9.9.9.9/32

Create a BOVPN Tunnel

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

Make a request to this endpoint to configure a route-based or policy-based BOVPN IPSec tunnel between two devices. All tunnels require at least one cloud-managed Firebox endpoint.

Requests for policy-based and route-based BOVPNs have some differences. For policy-based BOVPNs, you must:

  • Set the value of the vpn_type parameter to policy-based.
  • Configure the routes section, and optionally use the local_remote_pairs section to control traffic direction.
  • Not submit request parameters in the vif section, which does not apply for policy-based BOVPNs.

Path Parameters

When you send a request to this endpoint, you must include these path parameters:

accountid
string
REQUIRED

Your WatchGuard Cloud account ID. You can view your accountId on the My Account page in WatchGuard Cloud.

Example: WGC-1-123abc456 or ACC-1234567

The information you must provide in the request body depends on the type of BOVPN configuration you want to add:

Example Response

This response includes the route-based BOVPN tunnel that uses a pre-shared key in JSON format:

                {
"id": "ipsgp_12345_ARBHLJ70Y78rGOIGBS",
"object": "ipsec_gatewaypair",
"version": 1,
"account": "WGC-1-123abc456",
"created": 1579907960,
"author": "testuser",
"name": "PBoVPN1",
"endpoint_a": "136162",
"endpoint_b_name": "CentralVPNServer",
"vpn_type": "route-based",
"address_family": 4,
"interfaces": [
	{
	"endpoint_a": {
		"network": "External"
		},
	"endpoint_b": {
		"id": {
		"type": "ip",
		"value": "192.88.99.200"
		}
	}
	}
],
"psk": "12345678",
"ipsec_tunnel_core": {
	"ike_proposals": [
	{
	"encryption": "AES-CBC-256",
	"dh_group": "DH-14",
	"lifetime": 24,
	"authentication": "SHA2-256"
	}
],
"ipsec_proposals": [
	{
	"encryption": "AES-CBC-256",
	"lifetime": 8,
	"lifebyte": 0,
	"authentication": "SHA2-256"
	}
	],
"pfs_dh_group": "DH-14",
"natt_interval": 20,
"dpd": {
	"dpd_type": "traffic",
	"idle_time": 20,
	"retries": 5
	}
},
"routes": {
	"endpoint_a": {
		"local_routes": [
			{
			"metric": 1,
			"route": "192.168.1.0/24"
		}
	]
},
	"endpoint_b": {
		"local_routes": [
			{
			"metric": 6,
			"route": "192.168.100.0/24"
			}
		]
	}
},
"vif": {
	"endpoint_a": {
		"vif_df_bit": "set",
		"vif_local_ip": "9.9.9.9/32",
		"vif_mtu": 1399,
		"vif_remote_ip": "10.10.10.10/32"
	},
	"endpoint_b": {
		"vif_local_ip": "10.10.10.10/32",
		"vif_remote_ip": "9.9.9.9/32"
	}
	}
}
            

This table lists and describes the data returned in the response:

id
string

Unique ID of the IPSec gateway.

Example: ipstp_12345_ARBHLJ70Y78rGOIGBS

object
string

Type of object returned.

Example: ipsec_gatewaytemplate

version
integer

Version number of the BOVPN.

Example: 1

account
string

WatchGuard Cloud account ID associated with this gateway pair.

Example: WGC-1-123abc456

created
integer

Unix time stamp when the gateway pair was created.

Example: 1579907960

author
string

Author of the gateway pair.

Example: YourName

name
string

Name for the gateway pair.

Example: PBoVPN1

endpoint_a
string

Name of the cloud-managed Firebox.

Example: 136162

endpoint_b_name
string

Name of the second Firebox.

Example: CentralVPNServer

vpn_type
string

VPN IPSec tunnel type. Must be either route‑based or policy‑based. Default is route-based.

Example: route-based

address_family
integer

IP address family for all gateway endpoints. Default is 4. This can be one of these values:

  • 4 (IPv4)
  • 6 (IPv6)

Example: 4

interfaces
array

Array of interface endpoint mappings between endpoint A and endpoint B.

endpoint_a
object


Route object for the device.

network
string

Network definition for the tunnel. This can be one of these values:

  • External
  • Trusted
  • Optional

Example: External

endpoint_b
object

Route object for the remote device or endpoint that endpoint_a connects to.

id
object

Unique ID for the IPSec gateway.

type
string

Gateway endpoint ID type. This can be one of these values:

  • ip — An address.
  • fqdn — A fully qualified domain name.
  • ufqdn — A user fully qualified domain name.
  • x500_name — An X.500 distinguished name.

Example: ip

value
string

Specifies the identifier string (IP address, FQDN, user FQDN, or X.500 Distinguished Name). Depends on type.

Example: 192.88.99.200

psk
string

Pre-shared key (PSK) used for authentication between endpoints.

Example: 12345678

ipsec_tunnel_core
object

Phase 1 (IKE) and Phase 2 (IPSec) settings, Dead Peer Detection (DPD), and NAT-T keep-alive configurations for the tunnel.

ike_proposals
array

Array of IKE Phase 1 proposals that define encryption and authentication settings for tunnel negotiation.

encryption
string

Encryption algorithm. This can be one of these values:

  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256 (Default)
  • AES-GCM-128
  • AES-GCM-192
  • AES-GCM-256

Example: AES-CBC-256

dh_group
string

Diffie-Hellman group. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

lifetime
integer

Lifetime of the security association. Specify the number of hours or minutes. The minimum value is 1, and the default value is 24.

Example: 24

lifetime_unit
string

Specifies the time unit for the lifetime value. This can be one of these values:

  • hours (Default)
  • minutes

Example: hours

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

ipsec_proposals
array

Array of IPSec Phase 2 proposals.

encryption
string

Encryption algorithm. This can be one of these values:

  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256 (Default)
  • AES-GCM-128
  • AES-GCM-192

Example: AES-GCM-256

lifetime
integer

Lifetime of the security association. Specify the number of hours or minutes. The minimum value is 1, and the default value is 8.

Example: 8

lifetime_unit
string

Specifies the time unit for the lifetime value. This can be one of these values:

  • hours (Default)
  • minutes

Example: hours

lifebyte
integer

Maximum amount of data (in bytes) that you can be transmit through an IPSec Security Association (SA) before it expires and must rekey.

Example: 0

authentication
string

The hash algorithm used to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

pfs_dh_group
string

Diffie-Hellman (DH) group used for Perfect Forward Secrecy (PFS) in Phase 2 of the VPN tunnel. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

natt_interval
integer

Keep-alive interval (in seconds). Specify a number of seconds from 1 through 65535. The default value is 20.

Example: 20

dpd
object

Dead Peer Detection settings used to detect if the remote peer is no longer responsive.

dpd_type
string

Dead Peer Detection type. This can be one of these values:

  • traffic — Default. Based on traffic activity. If no traffic is detected for a specified idle time, DPD messages are sent.
  • timer — Sent at regular intervals, regardless of traffic.

Example: traffic

idle_time
integer

Amount of time (in seconds) before the peer is considered idle. Specify a number of seconds from 10-300. Default value is 30

Example: 20

retries
integer

Number of retries to make before the peer is considered unreachable. Specify a number from 1-30. Default value is 5.

Example: 5

routes
object


Routes to establish through the tunnel.

endpoint_a
object


Route object for the device.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 1

route
string

Route to establish through the tunnel.

Example: 192.168.1.0/24

endpoint_b
object

Route object the remote device or endpoint that endpoint_a connects to.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 1

route
string

Route to establish through the tunnel.

Example: 192.168.100.0/24

vif
object
Virtual interface configuration for each VPN endpoint.

endpoint_a
object


Route object for the device.

vif_df_bit
string

Specifies the DF bit value. This can be one of these values:

  • copy — Copies the DF (Don't Fragment) bit from the original packet.
  • set — Sets the DF bit to 1 (prevent fragmentation).
  • clear — Clears the DF bit (allow fragmentation).

Example: set

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 9.9.9.9/32

vif_mtu
integer

Maximum packet size (in bytes) that can be transmitted through the virtual interface without fragmentation. Can be an integer between 68 and 9000.

Example: 1500

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 10.10.10.10/32

endpoint_b
object

Route object for the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 10.10.10.10/32

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 9.9.9.9/32

Edit a BOVPN Tunnel

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

Make a request to this endpoint to update a BOVPN IPSec tunnel configuration by name or by unique object ID.

Example Response

This response includes the update to a BOVPN tunnel by Object ID in JSON format:

                {
"id": "ipsgp_12345_ARBHLJ70Y78rGOIGBS",
"object": "ipsec_gatewaypair",
"version": 2,
"account": "WGC-1-123abc456",
"created": 1579909960,
"author": "testuser",
"name": "PBoVPN1",
"endpoint_a": "136162",
"endpoint_b_name": "CentralVPNServer",
"vpn_type": "route-based",
"address_family": 4,
"interfaces": [
	{
	"endpoint_a": {
		"network": "External"
		},
	"endpoint_b": {
		"id": {
			"type": "ip",
			"value": "192.88.99.200"
			}
		}
	}
],
"psk": "12345678",
"ipsec_tunnel_core": {
	"ike_proposals": [
		{
		"encryption": "AES-CBC-256",
		"dh_group": "DH-14",
		"lifetime": 24,
		"authentication": "SHA2-256"
		}
	],
	"ipsec_proposals": [
		{
		"encryption": "AES-CBC-256",
		"lifetime": 8,
		"lifebyte": 0,
		"authentication": "SHA2-256"
		}
	],
	"pfs_dh_group": "DH-14",
	"natt_interval": 20,
	"dpd": {
		"dpd_type": "traffic",
		"idle_time": 20,
		"retries": 5
		}
	},
"routes": {
	"endpoint_a": {
		"local_routes": [
			{
			"metric": 1,
			"route": "192.168.1.0/24"
			}
		]
	},
	"endpoint_b": {
		"local_routes": [
			{
			"metric": 6,
			"route": "192.168.100.0/24"
			}
		]
	}
},
"vif": {
	"endpoint_a": {
		"vif_df_bit": "set",
		"vif_local_ip": "9.9.9.9/32",
		"vif_mtu": 1399,
		"vif_remote_ip": "10.10.10.10/32"
		},
	"endpoint_b": {
		"vif_local_ip": "10.10.10.10/32",
		"vif_remote_ip": "9.9.9.9/32"
		}
	}
}
            

This table lists and describes the data returned in the response:

id
string

Identifier object for endpoint B.


Example: ipsgp_12345_ARBHLJ70Y78rGOIGBS

object
string

Type of object returned.

Example: ipsec_gatewaytemplate

version
integer

Version number of the BOVPN.


Example: 2

account
string

WatchGuard Cloud account ID associated with the object.


Example: WGC-1-123abc456

created
integer

Unix time stamp when the object was created.


Example: 1579909960

author
string

Author of the gateway pair. Always empty for objects added or updated with the Firebox Management API.

Example: YourName

name
string

Human-readable name of the BOVPN tunnel.


Example: PBoVPN1

endpoint_a
string

Endpoint A interface block.


Example: 136162

endpoint_b_name
string

Name of the second Firebox.


Example: CentralVPNServer

vpn_type
string

VPN IPSec tunnel type. Must be either route‑based or policy‑based. Default is route-based.

Example: route-based

address_family
integer

IP address family for all gateway endpoints. Default is 4. This can be one of these values:

  • 4 (IPv4)
  • 6 (IPv6)

Example: 4

interfaces
array

Array of interface endpoint mappings between endpoint A and endpoint B.

endpoint_a
object

Endpoint A interface block.

network
string

Network definition for the tunnel. This can be one of these values:

  • External
  • Trusted
  • Optional

Example: External

endpoint_b
object

Endpoint B interface block.

id
object

Identifier object for endpoint B.


type
string

Gateway endpoint ID type. Default is ip. This can be one of these values:

  • ip — An address.
  • fqdn — A fully qualified domain name.
  • ufqdn — A user fully qualified domain name.
  • x500_name — An X.500 distinguished name.

Example: ip

value
string

Specifies the identifier string (IP address, FQDN, user FQDN, or X.500 Distinguished Name). Depends on type.

Example: 192.88.99.200

psk
string

Pre-shared key used when authentication method is PSK.


Example: 12345678

ipsec_tunnel_core
object

Core settings for IKE (Phase 1) and IPSec (Phase 2), including DPD and NAT-T.

ike_proposals
array

Array of IKE Phase 1 proposals that define encryption and authentication settings for tunnel negotiation.

encryption
string

Encryption algorithm. This can be one of these values:

  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256 (Default)
  • AES-GCM-128
  • AES-GCM-192
  • AES-GCM-256

Example: AES-CBC-256

dh_group
string

Diffie-Hellman group. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20

Example: DH-14

lifetime
integer

Lifetime of the security association. Specifies the number of hours or minutes. The minimum value is 1, and the default value is 24.

Example: 24

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

ipsec_proposals
array

Array of IPSec Phase 2 proposals.

encryption
string

Encryption algorithm.


Example: AES-CBC-256

lifetime
integer

Lifetime of the security association. Specifies the number of hours or minutes. The minimum value is 1, and the default value is 8.

Example: 8

lifebyte
integer

Data volume before Phase 2 SA rekey (0 disables byte lifetime).


Example: 0

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

pfs_dh_group
string

DH group used for Perfect Forward Secrecy in Phase 2.


Example: DH-14

natt_interval
integer

Keep-alive interval (in seconds). Specifies a number of seconds from 1 through 65535. The default value is 20.

Example: 20

dpd
object

Dead Peer Detection settings used to detect an unresponsive peer.


Example:

dpd_type
string

DPD trigger type (traffic or timer).


Example: traffic

idle_time
integer

Idle time in seconds before peer is considered idle.


Example: 20

retries
integer

Number of retries to make before the peer is considered unreachable. Specify a number from 1-30. Default value is 5.


Example: 5

routes
object

Routing configuration for endpoint A and endpoint B.


Example:

endpoint_a
object

Endpoint A interface block.


Example:

local_routes
array

Array of local routes available through the VPN from the endpoint.


Example:

metric
integer

Route priority metric (lower value = higher priority).


Example: 1

route
string

CIDR-formatted route.


Example: 192.168.1.0/24

endpoint_b
object

Endpoint B interface block.


Example:

local_routes
array

Array of local routes available through the VPN from the endpoint.


Example:

metric
integer

Route priority metric (lower value = higher priority).


Example: 6

route
string

CIDR-formatted route.


Example: 192.168.100.0/24

vif
object

Virtual Interface settings for each endpoint in a route-based VPN.


Example:

endpoint_a
object

Endpoint A interface block.


Example:

vif_df_bit
string

Specifies the DF bit value. This can be one of these values:

  • copy — Copies the DF (Don't Fragment) bit from the original packet.
  • set — Sets the DF bit to 1 (prevent fragmentation).
  • clear — Clears the DF bit (allow fragmentation).

Example: set

vif_local_ip
string

Local VIF IP address (CIDR).


Example: 9.9.9.9/32

vif_mtu
integer

Maximum packet size (in bytes) that can be transmitted through the virtual interface without fragmentation. Can be an integer between 68 and 9000.

Example: 1500

vif_remote_ip
string

Remote VIF IP address (CIDR).


Example: 10.10.10.10/32

endpoint_b
object

Endpoint B interface block.


Example:

vif_local_ip
string

Local VIF IP address (CIDR).


Example: 10.10.10.10/32

vif_remote_ip
string

Remote VIF IP address (CIDR).


Example: 9.9.9.9/32

Modify Routes and Certificates

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

Make a request to this endpoint to update the routes list or certificate of a specific BOVPN IPSec tunnel by name or unique object ID.

Example Response

This response includes routes and certificate references for a specific BOVPN IPSec tunnel in JSON format:

                {
"id": "string",
"object": "string",
"version": 1,
"account": "WGC-1-123abc456",
"created": 1579907960,
"author": "string",
"name": "string",
"endpoint_a": "string",
"endpoint_b": "string",
"endpoint_b_name": "string",
"disabled": false,
"vpn_type": "route-based",
"address_family": 4,
"auth_method": "psk",
"interfaces": [
	{
	"endpoint_a": {
		"network": "string",
		"ip_address": "192.0.2.1",
		"id": {
			"type": "ip",
			"value": "string"
			},
		"perpetual_resolve": true
		},
	"endpoint_b": {
		"network": "string",
		"ip_address": "192.0.2.1",
		"id": {
			"type": "ip",
			"value": "string"
			},
	"perpetual_resolve": true
	},
	"df_bit": "copy",
	"pmtu_minimum": 1550,
	"pmtu_age": 2147483647
	}
],
"routes": {
	"endpoint_a": {
		"local_networks": [
		{
			"network": "string",
			"metric": 1,
			"nat_base": "192.0.2.0/24",
			"dnat_ip": "192.0.2.1"
			}
		],
		"local_routes": [
			{
			"route": "192.0.2.0/24",
			"metric": 1,
			"nat_base": "192.0.2.0/24",
			"dnat_ip": "192.0.2.1"
			}
		]
	},
	"endpoint_b": {
		"local_networks": [
			{
			"network": "string",
			"metric": 1,
			"nat_base": "192.0.2.0/24",
			"dnat_ip": "192.0.2.1"
			}
		],
		"local_routes": [
			{
			"route": "192.0.2.0/24",
			"metric": 1,
			"nat_base": "192.0.2.0/24",
			"dnat_ip": "192.0.2.1"
			}
		]
	}
},
"vif": {
	"endpoint_a": {
		"vif_dev_name": "string",
		"vif_local_ip": "192.0.2.0/24",
		"vif_remote_ip": "192.0.2.0/24",
		"vif_mtu": 9000,
		"vif_df_bit": "copy"
		},
	"endpoint_b": {
		"vif_dev_name": "string",
		"vif_local_ip": "192.0.2.0/24",
		"vif_remote_ip": "192.0.2.0/24",
		"vif_mtu": 9000,
		"vif_df_bit": "copy"
		}
	},
"certs": {
	"endpoint_a": "DeviceCertificateName",
	"endpoint_b": "RemotePeerCertName"
},
"psk": "stringst",
"psk_encrypted": true,
"shared_p1_settings": false,
"ipsec_tunnel_core": {
		"natt_interval": 20,
		"dpd": {
			"enabled": true,
			"dpd_type": "traffic",
			"idle_time": 30,
			"retries": 5,
			"interval": 30,
			"max_failures": 5
		},
	"ike_proposals": [
			{
			"encryption": "AES-CBC-256",
			"authentication": "SHA2-256",
			"dh_group": "DH-14",
			"lifetime": 24,
			"lifetime_unit": "hours"
			}
		],
	"pfs_dh_group": "DH-14",
	"ipsec_proposals": [
			{
			"protocol": "ESP",
			"encryption": "AES-CBC-256",
			"authentication": "SHA2-256",
			"lifetime": 8,
			"lifetime_unit": "hours",
			"lifebyte": 0,
			"lifebyte_unit": "GB"
			}
		]
	},
	"local_remote_pairs": [
			{
			"enabled": true,
			"local_network": "string",
			"local_address": "192.0.2.0/24",
			"remote_address": "192.0.2.0/24",
			"direction": "in",
			"dnat_ip": "192.0.2.1",
			"nat_base": "192.0.2.0/24"
			}
		]
	}
}
            

This table lists and describes the data returned in the response:

id
string

Unique ID of the IPSec gateway.

Example: ipstp_12345_ARBHLJ70Y78rGOIGBS

object
string

Type of object.

version
integer

Version number of the BOVPN.

Example: 1

account
string

WatchGuard Cloud account ID.

created
integer

Unix time stamp when the object was created.

author
string

Author of the gateway pair. Always empty for objects added or updated with the Firebox Management API.

name
string

Name of the IPSec gateway pair.

endpoint_a
string

ID of endpoint A.

endpoint_b_name
string

Name of the second Firebox.

Example: CentralVPNServer

vpn_type
string

VPN IPSec tunnel type. Must be either route‑based or policy‑based. Default is route-based.

Example: route-based

address_family
integer

IP address family for all gateway endpoints. Default is 4. This can be one of these values:

  • 4 (IPv4)
  • 6 (IPv6)

Example: 4

interfaces
array

Array of interface endpoint mappings between endpoint A and endpoint B.

endpoint_a
object


Defines the cloud-managed Firebox interface settings.

network
string

Network definition for the tunnel. This can be one of these values:

  • External
  • Trusted
  • Optional

Example: External

endpoint_b
object

Identifies the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

id
object

Unique ID for the IPSec gateway.

type
string

Gateway endpoint ID type. Default is ip. This can be one of these values:

  • ip — An address.
  • fqdn — A fully qualified domain name.
  • ufqdn — A user fully qualified domain name.
  • x500_name — An X.500 distinguished name.

Example: ip

value
string

Specifies the identifier string (IP address, FQDN, user FQDN, or X.500 Distinguished Name). Depends on type.

Example: 192.88.99.200

psk
string

Pre-shared key (PSK) used for authentication between endpoints.

Example: 24681012

ipsec_tunnel_core
object

Phase 1 (IKE) and Phase 2 (IPSec) settings, Dead Peer Detection (DPD), and NAT-T keep-alive configurations for the tunnel.

ike_proposals
array

Array of IKE Phase 1 proposals that define encryption and authentication settings for tunnel negotiation.

encryption
string

Encryption algorithm. This can be one of these values:

  • AES-CBC-128
  • AES-CBC-192
  • AES-CBC-256 (Default)
  • AES-GCM-128
  • AES-GCM-192
  • AES-GCM-256

Example: AES-CBC-256

dh_group
string

Diffie-Hellman group. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20

Example: DH-14

lifetime
integer

Lifetime of the security association. Specify the number of hours or minutes. The minimum value is 1, and the default value is 24.

Example: 24

lifetime_unit
string

Specifies the time unit for the lifetime value. This can be one of these values:

  • hours (Default)
  • minutes

Example: hours

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

ipsec_proposals
array

Array of IPSec Phase 2 proposals.

dh_group
string

Diffie-Hellman group. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

lifetime
integer

Lifetime of the security association. Specify the number of hours or minutes. The minimum value is 1, and the default value is 24.

Example: 24

lifetime_unit
string

Specifies the time unit for the lifetime value. This can be one of these values:

  • hours (Default)
  • minutes

Example: hours

authentication
string

The hash algorithm to use to verify message integrity and authenticity. This can be one of these values:

  • SHA2-256 (Default)
  • SHA2-384
  • SHA2-512

Example: SHA2-256

pfs_dh_group
string

Diffie-Hellman (DH) group used for Perfect Forward Secrecy (PFS) in Phase 2 of the VPN tunnel. This can be one of these values:

  • DH-14 (Default)
  • DH-15
  • DH-19
  • DH-20
  • DH-21

Example: DH-14

natt_interval
integer

Keep-alive interval (in seconds). Specify a number of seconds from 1 through 65535. The default value is 20.

Example: 20

dpd
object

Dead Peer Detection settings used to detect if the remote peer is no longer responsive.

dpd_type
string

Dead Peer Detection type. This can be one of these values:

  • traffic — Default. Based on traffic activity. If no traffic is detected for a specified idle time, DPD messages are sent.
  • timer — Sent at regular intervals, regardless of traffic.

Example: traffic

idle_time
integer

Amount of time (in seconds) before the peer is considered idle. Specify a number of seconds from 10-300. Default value is 30

Example: 20

retries
integer

Number of retries to make before the peer is considered unreachable. Specify a number from 1-30. Default value is 5.

Example: 5

routes
object
Routes to establish through the tunnel.

endpoint_a
object


Route object for the device.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 1

route
string

Route to establish through the tunnel.

Example: 192.168.1.0/24

endpoint_b
object

Route object for the device that endpoint_a connects to.

local_routes
array

Array of routes available through the VPN from the local endpoint.

metric
integer

Specifies route priority. Lower values have higher priority. Default is 1.

Example: 6

route
string

Route to establish through the tunnel.

Example: 192.168.100.0/24

certs
object

Object of certificate references.

endpoint_a
string

Certificate name for endpoint A.

Example: DeviceCertificateName

endpoint_b
string

Certificate name for endpoint B.

Example: RemotePeerCertName

vif
object
Virtual interface configuration for each VPN endpoint.

endpoint_a
object


Route object for the cloud-managed Firebox.

vif_df_bit
string

Specifies the DF bit value. This can be one of these values:

  • copy — Copies the DF (Don't Fragment) bit from the original packet.
  • set — Sets the DF bit to 1 (prevent fragmentation).
  • clear — Clears the DF bit (allow fragmentation).

Example: set

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 9.9.9.9/32

vif_mtu
integer

Maximum packet size (in bytes) that can be transmitted through the virtual interface without fragmentation. Can be an integer between 68 and 9000.

Example: 1500

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 10.10.10.10/32

endpoint_b
object

Route object for the remote device or endpoint that the cloud-managed Firebox (endpoint_a) connects to.

vif_local_ip
string

Local IP address for the virtual interface used in the route-based VPN.

Example: 10.10.10.10/32

vif_remote_ip
string

IP address of the virtual interface in a route-based VPN tunnel.

Example: 9.9.9.9/32

Delete a BOVPN Tunnel

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels

/{v1}/configuration/{accountid}/bovpn/ipsec/tunnels/{objectid}

Make a request to this endpoint to delete a BOVPN IPSec tunnel by name or by object ID.

Manage Shared Phase 1 Settings

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

/{v1}/configuration/{accountid}/bovpn/ipsec/p1_shared_settings

The BOVPN tunnel uses a shared Phase 1 configuration when the remote gateway endpoint is dynamic. You manage this configuration separately from individual tunnels, and the configuration applies to all BOVPN tunnels on the Firebox that connect to remote endpoints with dynamic IP addresses.