Perimeter 81 Networks API

This API allows you to manage and configure standard networks using the old API and keep you BC.

OpenAPI Specification

perimeter-81-networks-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 2.3.0
  title: Harmony SASE Public Application Networks API
  description: 'The YAML for Harmony SASE Public API.

    '
  contact: {}
servers:
- description: SwaggerHub API Auto Mocking
  url: https://virtserver.swaggerhub.com/perimeter81/public-api-yaml/1.0.0
- description: Harmony SASE API US
  url: https://api.perimeter81.com/api/rest
- description: Harmony SASE API EU
  url: https://api.eu.sase.checkpoint.com/api/rest
- description: Harmony SASE API Australia
  url: https://api.au.sase.checkpoint.com/api/rest
- description: Harmony SASE API India
  url: https://api.in.sase.checkpoint.com/api/rest
security:
- bearer: []
tags:
- name: Networks
  description: 'This API allows you to manage and configure standard networks using the old API and keep you BC.

    '
paths:
  /v2.3/networks:
    get:
      operationId: getNetworks
      summary: Get all Networks
      description: List all networks
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Network'
                type: array
                description: Network list.
        '401':
          description: Unauthorized
        '403':
          description: Forbbiden
      tags:
      - Networks
    post:
      operationId: NetworksControllerV2_networkCreate
      summary: Create network
      description: 'Required permissions: `["network:create"]`<br><br>Create networks.'
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployNetworkPayload'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '402':
          description: Insufficient licenses
        '403':
          description: Forbidden
      tags:
      - Networks
  /v2.3/networks/{networkId}:
    delete:
      operationId: NetworksControllerV2_networkDelete
      summary: Delete network
      description: 'Required permissions: `["network:delete"]`<br><br>Delete network.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
    get:
      operationId: NetworksControllerV2_networkFind
      summary: Get network by Id
      description: 'Required permissions: `["network:read"]`<br><br>List network.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Network'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
    put:
      operationId: NetworksControllerV2_networkUpdate
      summary: Update network
      description: 'Required permissions: `["network:update"]`<br><br>Update network.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNetworkDto'
      responses:
        '200':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatedNetwork'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
  /v2.3/networks/{networkId}/health:
    get:
      operationId: NetworksControllerV2_getNetworkHealth
      summary: Get network health status
      description: 'Required permissions: `["network:read"]`<br><br>Get health status of all gateways and tunnels in the standard network.'
      parameters:
      - $ref: '#/components/parameters/networkId'
      responses:
        '200':
          description: Health status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardHealthResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
  /v2.3/networks/{networkId}/instances:
    post:
      operationId: NetworksControllerV2_addNetworkInstance
      summary: Add gateway
      description: 'Required permissions: `["network:create"]`<br><br>Add gateway.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInstancesInNetworkPayload'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '402':
          description: Insufficient licenses
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
    delete:
      operationId: NetworksControllerV2_deleteNetworkInstance
      summary: Remove Gateways from Network
      description: 'Required permissions: `["network:update"]`<br><br>Remove Gateways from Network.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveRegionInstance'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResult'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Network not found
      tags:
      - Networks
  /v2.3/networks/{networkId}/instances/{gatewayId}:
    get:
      operationId: getInstance
      summary: Get Instance of a GW by ID
      description: 'Required permissions: `["network:read"]`<br><br>Get Gateway.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      - name: gatewayId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkInstance'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Gateway not found
      tags:
      - Networks
  /v2.3/networks/status/{statusId}:
    get:
      operationId: NetworksControllerV2_status
      summary: Get status of asynchronous operations.
      description: 'Required permissions: `["network:read"]`<br><br> status of asynchronous operations.'
      parameters:
      - name: statusId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationStatus'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Status not found
      tags:
      - Networks
  /v2.3/networks/harmony-sase-regions:
    get:
      operationId: NetworksControllerV2_getRegions
      summary: List of available regions
      description: 'Required permissions: `["addon:read"]`<br><br>List of regions.'
      parameters: []
      responses:
        '200':
          description: Completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegionsList'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      tags:
      - Networks
  /v2.3/networks/{networkId}/regions:
    put:
      operationId: NetworksControllerV2_addNetworkRegion
      summary: Add regions to a network
      description: 'Required permissions: `["Network:Update"]`<br><br>Network Update.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRegionInNetworkPayload'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResult'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbbiden
        '404':
          description: Network not found
        '409':
          description: Network region exists
      tags:
      - Networks
    delete:
      operationId: NetworksControllerV2_deleteNetworkRegion
      summary: Remove regions from network
      description: 'Required permissions: `["Network:Delete"]`<br><br>Remove Region. Gateways will still be avaidble through the remaining regions, in case you removed the last region, the gateways will be removed as well.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveRegionDTO'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncOperationResult'
        '401':
          description: Unauthorized
        '403':
          description: Forbbiden
        '404':
          description: Region\Network not found
      tags:
      - Networks
  /v2.3/networks/{networkId}/regions/{regionId}:
    get:
      operationId: getRegion
      summary: Get region by ID
      description: 'Required permissions: `["network:read"]`<br><br>Get Region.'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      - name: regionId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkRegion'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Region not found
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/wireguard:
    post:
      operationId: createWireguardTunnel
      summary: Create a new Wireguard tunnel
      description: 'Required permissions: `["network:write"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWireguardTunnelPayload'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '402':
          $ref: '#/components/responses/402'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/wireguard/{tunnelId}:
    get:
      operationId: getWireguardTunnel
      summary: Get a Wireguard tunnel
      description: 'Required permissions: `["network:read"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WireguardTunnel'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    put:
      operationId: updateWireguardTunnel
      summary: Update a Wireguard tunnel
      description: 'Required permissions: `["network:write"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WireGuradDetails'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
    delete:
      operationId: deleteWireguardTunnel
      summary: Delete Wireguard tunnel
      description: 'Required permissions: `["network:delete"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/openvpn:
    post:
      operationId: createOpenVPNTunnel
      summary: Create a new OpenVPN tunnel
      description: 'Required permissions: `["network:write]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseTunnelValues'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenVPNAsyncOperationResponse'
        '401':
          $ref: '#/components/responses/401'
        '402':
          $ref: '#/components/responses/402'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/openvpn/{tunnelId}:
    get:
      operationId: getOpenVPNTunnel
      summary: Get one openVPN tunnel
      description: 'Required permissions: `["network:read"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenVPNTunnel'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    put:
      operationId: updateOpenVPNTunnel
      summary: Update openVPN Tunnel
      description: 'Required permissions: `["network:write"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '202':
          description: Request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenVPNAsyncOperationResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    delete:
      operationId: deleteOpenVPNTunnel
      summary: Delete OpenVPN tunnel
      description: 'Required permissions: `["network:delete"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/ipsec/single:
    post:
      operationId: createIPSecSingleTunnel
      summary: Create a new IPSec Single tunnel
      description: 'Required permissions: `["network:write]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIPSecSinglePayload'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '402':
          $ref: '#/components/responses/402'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/ipsec/single/{tunnelId}:
    get:
      operationId: getIPSecSingleTunnel
      summary: Get one IPSec Single tunnel
      description: 'Required permissions: `["network:read"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPSecSingleTunnel'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    put:
      operationId: updateIPSecSingleTunnel
      summary: Update IPSec Single Tunnel
      description: 'Required permissions: `["network:write"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IPSecSingleDetails'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    delete:
      operationId: deleteIPSecSingleTunnel
      summary: Delete IPSec Single tunnel
      description: 'Required permissions: `["network:delete"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/tunnelIdParam'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/ipsec/redundant:
    post:
      operationId: createIPSecRedundantTunnel
      summary: Create a new IPSec Redundant tunnel
      description: 'Required permissions: `["network:write]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIPSecRedundantPayload'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '402':
          $ref: '#/components/responses/402'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/tunnels/ipsec/redundant/{haTunnelId}:
    get:
      operationId: getIPSecRedundantTunnel
      summary: Get one IPSec Redundant tunnel
      description: 'Required permissions: `["network:read"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/haTunnelIdParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPSecRedundantTunnels'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    put:
      operationId: updateIPSecRedundantTunnel
      summary: Update a new IPSec Redundant tunnel
      description: 'Required permissions: `["network:write]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/haTunnelIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIPSecRedundantPayload'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
    delete:
      operationId: deleteIPSecRedundantTunnel
      summary: Delete IPSec Redundant tunnel
      description: 'Required permissions: `["network:delete"]`'
      parameters:
      - $ref: '#/components/parameters/networkIdParam'
      - $ref: '#/components/parameters/haTunnelIdParam'
      responses:
        '202':
          $ref: '#/components/responses/202'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
      tags:
      - Networks
  /v2.3/networks/{networkId}/route-table:
    get:
      operationId: getRouteTable
      summary: Get route table
      description: 'Required permissions: `["network:read"]`'
      parameters:
      - name: networkId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Route ID
                    subnets:
                      type: array
                      items:
                        type: string
                    interfaceName:
                      type: string
                      description: Route table name
                    propagated:
                      type: boolean
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      tags:
      - Networks
  /v2.3/status:
    get:
      operationId: getStatus
      summary: Get system status
      description: 'Required permissions: `[]`'
      responses:
        '200':
          description: Ok
          content:
            text/plain:
              schema:
                type: string
                example: Ok
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
      tags:
      - Networks
components:
  schemas:
    ASN:
      type: integer
      description: Autonomous System Number (ASN) for BGP routing. It will be automatically assigned an ASN once creating the first dynamic tunnel in this network. The network ASN can never be changed once it is set.
      oneOf:
      - minimum: 1
        maximum: 64496
        description: Public ASN range
      - minimum: 64512
        maximum: 65535
        description: Private ASN range (16-bit)
      - minimum: 131072
        maximum: 4294967295
        description: Private ASN range (32-bit)
    AsyncOperationResult:
      type: object
      properties:
        resource:
          type: string
        statusCode:
          type: integer
        reason:
          items:
            type: string
          type: array
          description: Reasons list.
    NetworkHaTunnelID:
      allOf:
      - $ref: '#/components/schemas/BaseDates'
      - type: object
        properties:
          network:
            type: string
            description: ID of the network.
          tunnels:
            type: array
            items:
              type: string
          type:
            type: string
            pattern: ipsec
          tenantId:
            type: string
            description: tenantId.
          id:
            type: string
            description: id.
        required:
        - network
        - tunnels
        - type
        - tenantId
        - id
        additionalProperties: false
    IPSecSingleTunnel:
      type: object
      properties:
        tunnelID:
          type: string
      allOf:
      - $ref: '#/components/schemas/BaseTunnelValues'
      - $ref: '#/components/schemas/IPSecSharedSettings'
      - $ref: '#/components/schemas/IPSecSingleDetails'
      - $ref: '#/components/schemas/BaseDates'
      - type: object
        properties:
          type:
            type: string
            default: ipsec
    NetworkTunnel:
      anyOf:
      - $ref: '#/components/schemas/NetworkTunnelOpenvpn'
      - $ref: '#/components/schemas/NetworkTunnelWireguard'
      - $ref: '#/components/schemas/NetworkTunnelIpsecSingle'
      - $ref: '#/components/schemas/NetworkTunnelIpsecRedundant'
    RemoveRegionInstance:
      properties:
        regions:
          items:
            $ref: '#/components/schemas/RemoveRegionPayload'
          type: array
          description: Region list.
      type: object
      required:
      - regions
    TunnelName:
      type: string
      pattern: ^[a-zA-Z0-9]*$
      description: The name of the tunnel
      minLength: 3
      maxLength: 15
    RemoveRegionDTO:
      properties:
        regionId:
          type: string
      type: object
      required:
      - regionId
      additionalProperties: false
    RemoveInstancePayload:
      properties:
        id:
          type: string
    StandardHealthCheckMeta:
      type: object
      properties:
        networkId:
          type: string
          description: ID of the network
        instanceId:
          type: string
          description: ID of the instance (gateway or tunnel)
        tunnelName:
          type: string
          description: Name of the tunnel (only for tunnel type)
      required:
      - networkId
      - instanceId
      additionalProperties: false
    NetworkInstance:
      allOf:
      - $ref: '#/components/schemas/BaseDates'
      - type: object
        properties:
          network:
            type: string
            description: ID of the network.
          region:
            type: string
            description: ID of the network region.
          instanceType:
            type: string
          imageType:
            type: string
          imageVersion:
            type: string
          dns:
            type: string
          ip:
            type: string
          tunnels:
            items:
              $ref: '#/components/schemas/NetworkTunnel'
            type: array
            description: List of network tunnels.
          id:
            type: string
            description: Unique ID.
          tenantId:
            type: string
            description: ID of the tenant.
        required:
        - network
        - region
        - instanceType
        - imageType
        - imageVersion
        - dns
        - ip
        - tunnels
        - id
        - tenantId
    CreateIPSecRedundantPayload:
      type: object
      properties:
        tunnelName:
          $ref: '#/components/schemas/TunnelName'
        regionID:
          type: string
        tunnel1:
          $ref: '#/components/schemas/IPSecRedundantTunnelPayload'
        tunnel2:
          $ref: '#/components/schemas/IPSecRedundantTunnelPayload'
        sharedSettings:
          $ref: '#/components/schemas/IPSecSharedSettingsCreate'
        advancedSettings:
          $ref: '#/components/schemas/IPSecAdvancedSettings'
      required:
      - tunnelName
      - regionID
      - tunnel1
      - tunnel2
      - sharedSettings
      - advancedSettings
      additionalProperties: false
    StandardHealthCheckType:
      type: string
      enum:
      - gateway
      - tunnel
      description: Type of health check component for standard networks
    IPSecRedundantTunnel:
      allOf:
      - $ref: '#/components/schemas/IPSecRedundantTunnelPayload'
      - type: object
        properties:
          tunnelID:
            type: string
    WireguardTunnel:
      allOf:
      - $ref: '#/components/schemas/WireGuradDetails'
      - $ref: '#/components/schemas/BaseTunnelValues'
      - $ref: '#/components/schemas/BaseDates'
      - type: object
        properties:
          tunnelID:
            type: string
          type:
            type: string
            default: wireguard
    UpdateIPSecRedundantPayload:
      type: object
      properties:
        tunnel1:
          $ref: '#/components/schemas/IPSecRedundantTunnelUpdatePayload'
        tunnel2:
          $ref: '#/components/schemas/IPSecRedundantTunnelUpdatePayload'
        sharedSettings:
          $ref: '#/components/schemas/IPSecSharedSettings'
        advancedSettings:
          $ref: '#/components/schemas/IPSecAdvancedSettings'
      required:
      - tunnels
      - sharedSettings
      - advancedSettings
      additionalProperties: false
    IPSecRedundantTunnelPayload:
      allOf:
      - $ref: '#/components/schemas/IPSecRedundantTunnelDetails'
      - type: object
        properties:
          gatewayID:
            type: string
        required:
        - gatewayID
        additionalProperties: false
    IPSecPhaseConfig:
      allOf:
      - $ref: '#/components/schemas/IPSecAlgorithms'
      - $ref: '#/components/schemas/IPSecPhaseCommon'
    IPSecRedundantTunnelUpdateP

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/perimeter-81/refs/heads/main/openapi/perimeter-81-networks-api-openapi.yml