Forward Networks Synthetic Devices API

Model a network’s internet connections, intranets, L2VPNs, L3VPNs, WAN circuits, and encryptors

Operations 45

GET /networks/{networkId}/encryptors Get a network's encryptors #
PUT /networks/{networkId}/encryptors Replace all of a network’s encryptors #
GET /networks/{networkId}/encryptors/{deviceName} Get an encryptor #
PUT /networks/{networkId}/encryptors/{deviceName} Add or replace an encryptor #
PATCH /networks/{networkId}/encryptors/{deviceName} Update an encryptor #
DELETE /networks/{networkId}/encryptors/{deviceName} Remove an encryptor #
GET /networks/{networkId}/internet-node Get the network’s internet node #
PUT /networks/{networkId}/internet-node Replace the network’s internet node #
PATCH /networks/{networkId}/internet-node Update the network’s internet node #
GET /networks/{networkId}/internet-node/connections Get the internet node’s connections #
POST /networks/{networkId}/internet-node/connections Add a connection to the internet node #
DELETE /networks/{networkId}/internet-node/connections Remove internet node connections #
GET /networks/{networkId}/intranet-nodes Get a network’s intranet nodes #
PUT /networks/{networkId}/intranet-nodes Replace all of a network’s intranet nodes #
GET /networks/{networkId}/intranet-nodes/{nodeName} Get an intranet node #
PUT /networks/{networkId}/intranet-nodes/{nodeName} Add or replace an intranet node #
PATCH /networks/{networkId}/intranet-nodes/{nodeName} Update an intranet node #
DELETE /networks/{networkId}/intranet-nodes/{nodeName} Remove an intranet node #
GET /networks/{networkId}/intranet-nodes/{nodeName}/connections Get an intranet node’s connections #
POST /networks/{networkId}/intranet-nodes/{nodeName}/connections Add a connection to an intranet node #
DELETE /networks/{networkId}/intranet-nodes/{nodeName}/connections Remove an intranet node’s connections #
GET /networks/{networkId}/l2-vpns Get a network’s L2VPNs #
PUT /networks/{networkId}/l2-vpns Replace all of a network’s L2VPNs #
GET /networks/{networkId}/l2-vpns/{l2VpnName} Get an L2VPN #
PUT /networks/{networkId}/l2-vpns/{l2VpnName} Add or replace an L2VPN #
PATCH /networks/{networkId}/l2-vpns/{l2VpnName} Update an L2VPN #
DELETE /networks/{networkId}/l2-vpns/{l2VpnName} Remove an L2VPN #
GET /networks/{networkId}/l2-vpns/{l2VpnName}/connections Get an L2VPN’s connections #
POST /networks/{networkId}/l2-vpns/{l2VpnName}/connections Add a connection to an L2VPN #
DELETE /networks/{networkId}/l2-vpns/{l2VpnName}/connections Remove an L2VPN’s connections #
GET /networks/{networkId}/l3-vpns Get a network’s L3VPNs #
PUT /networks/{networkId}/l3-vpns Replace all of a network’s L3VPNs #
GET /networks/{networkId}/l3-vpns/{l3VpnName} Get an L3VPN #
PUT /networks/{networkId}/l3-vpns/{l3VpnName} Add or replace an L3VPN #
PATCH /networks/{networkId}/l3-vpns/{l3VpnName} Update an L3VPN #
DELETE /networks/{networkId}/l3-vpns/{l3VpnName} Remove an L3VPN #
GET /networks/{networkId}/l3-vpns/{l3VpnName}/connections Get an L3VPN’s connections #
POST /networks/{networkId}/l3-vpns/{l3VpnName}/connections Add a connection to an L3VPN #
DELETE /networks/{networkId}/l3-vpns/{l3VpnName}/connections Remove an L3VPN’s connections #
GET /networks/{networkId}/wan-circuits Get a network’s WAN circuits #
PUT /networks/{networkId}/wan-circuits Replace all of a network’s WAN circuits #
GET /networks/{networkId}/wan-circuits/{wanCircuitName} Get a WAN circuit #
PUT /networks/{networkId}/wan-circuits/{wanCircuitName} Add or replace a WAN circuit #
PATCH /networks/{networkId}/wan-circuits/{wanCircuitName} Update a WAN circuit #
DELETE /networks/{networkId}/wan-circuits/{wanCircuitName} Remove a WAN circuit #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/forward-networks-synthetic-devices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

forward-networks-synthetic-devices-api-openapi.yml Raw ↑
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