Forward Networks Synthetic Devices API
Model a network’s internet connections, intranets, L2VPNs, L3VPNs, WAN circuits, and encryptors
Model a network’s internet connections, intranets, L2VPNs, L3VPNs, WAN circuits, and encryptors
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/forward-networks-synthetic-devices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: 'Forward Networks: Complete Aliases Synthetic Devices API'
description: Model and verify networks
contact:
email: support@forwardnetworks.com
license:
name: MIT
url: https://spdx.org/licenses/MIT
version: '26.6'
servers:
- url: /api
tags:
- name: Synthetic Devices
description: Model a network’s internet connections, intranets, L2VPNs, L3VPNs, WAN circuits, and encryptors
summary: Synthetic Devices
paths:
/networks/{networkId}/encryptors:
get:
tags:
- Synthetic Devices
summary: Get a network's encryptors
operationId: getEncryptors
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EncryptorList'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace all of a network’s encryptors
operationId: putEncryptors
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EncryptorList'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/encryptors/{deviceName}:
get:
tags:
- Synthetic Devices
summary: Get an encryptor
operationId: getEncryptor
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Encryptor'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Add or replace an encryptor
operationId: putEncryptor
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Encryptor'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update an encryptor
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchEncryptor
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EncryptorPatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Encryptor'
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an encryptor
operationId: deleteEncryptor
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: deviceName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/internet-node:
get:
tags:
- Synthetic Devices
summary: Get the network’s internet node
operationId: getInternetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/InternetNode'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace the network’s internet node
operationId: putInternetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InternetNode'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update the network’s internet node
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: updateInternetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InternetNodePatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/InternetNode'
security:
- api_token: []
/networks/{networkId}/internet-node/connections:
get:
tags:
- Synthetic Devices
summary: Get the internet node’s connections
operationId: getInternetNodeConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
post:
tags:
- Synthetic Devices
summary: Add a connection to the internet node
operationId: addInternetNodeConnection
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3SyntheticWanConnection'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove internet node connections
operationId: deleteInternetNodeConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
/networks/{networkId}/intranet-nodes:
get:
tags:
- Synthetic Devices
summary: Get a network’s intranet nodes
operationId: getIntranetNodes
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNodeList'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace all of a network’s intranet nodes
operationId: putIntranetNodes
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNodeList'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/intranet-nodes/{nodeName}:
get:
tags:
- Synthetic Devices
summary: Get an intranet node
operationId: getIntranetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNode'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Add or replace an intranet node
operationId: putIntranetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNode'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update an intranet node
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchIntranetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNodePatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IntranetNode'
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an intranet node
operationId: deleteIntranetNode
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/intranet-nodes/{nodeName}/connections:
get:
tags:
- Synthetic Devices
summary: Get an intranet node’s connections
operationId: getIntranetNodeConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
post:
tags:
- Synthetic Devices
summary: Add a connection to an intranet node
operationId: addIntranetNodeConnection
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3SyntheticWanConnection'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an intranet node’s connections
operationId: deleteIntranetNodeConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: nodeName
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
/networks/{networkId}/l2-vpns:
get:
tags:
- Synthetic Devices
summary: Get a network’s L2VPNs
operationId: getL2Vpns
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L2VpnList'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace all of a network’s L2VPNs
operationId: putL2Vpns
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L2VpnList'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/l2-vpns/{l2VpnName}:
get:
tags:
- Synthetic Devices
summary: Get an L2VPN
operationId: getL2Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L2Vpn'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Add or replace an L2VPN
operationId: putL2Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L2Vpn'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update an L2VPN
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchL2Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L2VpnPatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L2Vpn'
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an L2VPN
operationId: deleteL2Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/l2-vpns/{l2VpnName}/connections:
get:
tags:
- Synthetic Devices
summary: Get an L2VPN’s connections
operationId: getL2VpnConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
- name: device
in: query
schema:
type: string
- name: port
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
post:
tags:
- Synthetic Devices
summary: Add a connection to an L2VPN
operationId: addL2VpnConnection
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L2VpnConnection'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an L2VPN’s connections
operationId: deleteL2VpnConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l2VpnName
in: path
required: true
schema:
type: string
- name: device
in: query
schema:
type: string
- name: port
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
/networks/{networkId}/l3-vpns:
get:
tags:
- Synthetic Devices
summary: Get a network’s L3VPNs
operationId: getL3Vpns
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L3VpnList'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace all of a network’s L3VPNs
operationId: putL3Vpns
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3VpnList'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/l3-vpns/{l3VpnName}:
get:
tags:
- Synthetic Devices
summary: Get an L3VPN
operationId: getL3Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L3Vpn'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Add or replace an L3VPN
operationId: putL3Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3Vpn'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update an L3VPN
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchL3Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3VpnPatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/L3Vpn'
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an L3VPN
operationId: deleteL3Vpn
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/l3-vpns/{l3VpnName}/connections:
get:
tags:
- Synthetic Devices
summary: Get an L3VPN’s connections
operationId: getL3VpnConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
post:
tags:
- Synthetic Devices
summary: Add a connection to an L3VPN
operationId: addL3VpnConnection
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/L3SyntheticWanConnection'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove an L3VPN’s connections
operationId: deleteL3VpnConnections
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: l3VpnName
in: path
required: true
schema:
type: string
- name: uplinkDevice
in: query
schema:
type: string
- name: uplinkPort
in: query
schema:
type: string
- name: gatewayDevice
in: query
schema:
type: string
- name: gatewayPort
in: query
schema:
type: string
- name: vlan
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SyntheticConnections'
security:
- api_token: []
/networks/{networkId}/wan-circuits:
get:
tags:
- Synthetic Devices
summary: Get a network’s WAN circuits
operationId: getWanCircuits
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuitList'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Replace all of a network’s WAN circuits
operationId: putWanCircuits
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuitList'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
/networks/{networkId}/wan-circuits/{wanCircuitName}:
get:
tags:
- Synthetic Devices
summary: Get a WAN circuit
operationId: getWanCircuit
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: wanCircuitName
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuit'
security:
- api_token: []
put:
tags:
- Synthetic Devices
summary: Add or replace a WAN circuit
operationId: putWanCircuit
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: wanCircuitName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuit'
required: true
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
patch:
tags:
- Synthetic Devices
summary: Update a WAN circuit
description: 'All JSON properties in the request body are optional. Include only the properties you wish to
change.'
operationId: patchWanCircuit
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: wanCircuitName
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuitPatch'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WanCircuit'
security:
- api_token: []
delete:
tags:
- Synthetic Devices
summary: Remove a WAN circuit
operationId: deleteWanCircuit
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: wanCircuitName
in: path
required: true
schema:
type: string
responses:
'204':
description: No Content
content: {}
security:
- api_token: []
components:
schemas:
WanCircuit:
type: object
required:
- name
- connection1
- connection2
properties:
name:
type: string
examples:
- wan-circuit-01
connection1:
$ref: '#/components/schemas/WanCircuitConnection'
connection2:
$ref: '#/components/schemas/WanCircuitConnection'
IntranetNodePatch:
type: object
properties:
connections:
type: array
items:
$ref: '#/components/schemas/L3SyntheticWanConnection'
description: If specified, this list will **replace** all existing connections on the intranet node.
name:
type: string
EncryptorPatch:
type: object
properties:
name:
type: string
siteConnection:
$ref: '#/components/schemas/EncryptorConnection'
underlayConnection:
$ref: '#/components/schemas/EncryptorConnection'
tunnels:
type: array
items:
$ref: '#/components/schemas/EncryptorTunnel'
description: If specified, this list will **replace** all existing tunnels on the encryptor.
subnets:
type: array
items:
type: string
description: If specified, this set will **replace** all existing subnets on the encryptor.
InternetNodePatch:
type: object
properties:
connections:
type: array
items:
$ref: '#/components/schemas/L3SyntheticWanConnection'
description: If specified, this list will **replace** all existing connections on the internet node.
name:
type: string
translations:
type: array
items:
$ref: '#/components/schemas/SyntheticNatEntry'
description: If specified, this list will **replace** all existing translations on the internet node.
subnetsToExclude:
type: array
items:
type: string
description: If specified, this list will **replace** all existing excluded
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/forward-networks/refs/heads/main/openapi/forward-networks-synthetic-devices-api-openapi.yml