Forward Networks Synthetic Devices API

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

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:
    Encryptor:
      type: object
      required:
      - name
      - siteConnection
      - tunnels
      properties:
        name:
          type: string
          examples:
          - encryptor
        siteConnection:
          $ref: '#/components/schemas/EncryptorConnection'
          description: A connection to a high site
        underlayConnection:
          $ref: '#/components/schemas/EncryptorConnection'
          description: A connection to the underlay network (a low site)
        tunnels:
          type: array
          items:
            $ref: '#/components/schemas/EncryptorTunnel'
          description: 'Tunnels to other encryptor devices. A tunnel source address is modeled as residing on this device and the

            destination addresses on another encryptor device. A source address may be reused on an encryptor. Each

            destination address must match the source address of the tunnel on another encryptor, and vice-versa'
        subnets:
          type: array
          items:
            type: string
          description: 'Subnets to route to the high site, in addition to the source addresses of tunnels on the `siteConnection`

            gateway device'
    L3VpnPatch:
      type: object
      properties:
        name:
          type: string
        connections:
          type: array
          items:
            $ref: '#/components/schemas/L3SyntheticWanConnection'
          description: If specified, this list will **replace** all existing connections on the L3 VPN node.
    DevicePort:
      type: object
      properties:
        device:
          type: string
        port:
          type: string
    SyntheticConnection:
      type: object
      properties:
        name:
          type: string
    L2VpnConnection:
      type: object
      required:
      - device
      - port
      properties:
        device:
          type: string
          description: The customer edge device.
        port:
          type: string
          description: The physical edge port on the customer edge device.
          examples:
          - eth1/1
     

# --- 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