Perimeter 81 Enhanced Tunnels API

The Enhanced Tunnel API allows you to manage and configure enhanced tunnels.

Operations 10

GET /v2.3/networks/enhanced/{networkId}/tunnels Get tunnels for a network #
GET /v2.3/networks/enhanced/{networkId}/regions/{regionId}/tunnels Get tunnels for a region #
POST /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic Create dynamic IPSec tunnel #
GET /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic/{dynamicTunnelId} Get dynamic IPSec tunnel #
PUT /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic/{dynamicTunnelId} Update dynamic IPSec tunnel #
DELETE /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic/{dynamicTunnelId} Delete dynamic IPSec tunnel #
POST /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static Create static IPSec tunnel #
GET /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static/{tunnelId} Get static IPSec tunnel #
PUT /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static/{tunnelId} Update static IPSec tunnel #
DELETE /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static/{tunnelId} Delete static IPSec tunnel #

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/perimeter-81-enhanced-tunnels-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

perimeter-81-enhanced-tunnels-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.3.0
  title: Harmony SASE Public Application Enhanced Tunnels 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: Enhanced Tunnels
  description: 'The Enhanced Tunnel API allows you to manage and configure enhanced tunnels.

    '
paths:
  /v2.3/networks/enhanced/{networkId}/tunnels:
    get:
      tags:
      - Enhanced Tunnels
      summary: Get tunnels for a network
      description: List all tunnels in a specific enhanced network
      operationId: getEnhancedRegionTunnelsPerNetwork
      parameters:
      - $ref: '#/components/parameters/networkId'
      - name: page
        in: query
        required: false
        description: Specifies the current page of the paginated result set
        schema:
          type: integer
      - name: limit
        in: query
        required: false
        description: Defines the number of results per page
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EnhancedTunnel'
                  itemsTotal:
                    type: number
                  page:
                    type: number
                  totalPage:
                    type: number
                required:
                - data
                - itemsTotal
                - page
                - totalPage
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
  /v2.3/networks/enhanced/{networkId}/regions/{regionId}/tunnels:
    get:
      tags:
      - Enhanced Tunnels
      summary: Get tunnels for a region
      description: List all tunnels in a specific region of an enhanced network
      operationId: getEnhancedRegionTunnelsPerRegion
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/regionId'
      - name: page
        in: query
        required: false
        description: Specifies the current page of the paginated result set
        schema:
          type: integer
      - name: limit
        in: query
        required: false
        description: Defines the number of results per page
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/EnhancedTunnel'
                  itemsTotal:
                    type: number
                  page:
                    type: number
                  totalPage:
                    type: number
                required:
                - data
                - itemsTotal
                - page
                - totalPage
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
  /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic:
    post:
      tags:
      - Enhanced Tunnels
      summary: Create dynamic IPSec tunnel
      description: Create a new dynamic IPSec tunnel in an enhanced network
      operationId: createDynamicTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicTunnelCreate'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
        '422':
          $ref: '#/components/responses/422_UnprocessableEntity'
  /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/dynamic/{dynamicTunnelId}:
    get:
      tags:
      - Enhanced Tunnels
      summary: Get dynamic IPSec tunnel
      description: Get details of a dynamic IPSec tunnel
      operationId: getDynamicTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/dynamicTunnelId'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnhancedTunnel'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
    put:
      tags:
      - Enhanced Tunnels
      summary: Update dynamic IPSec tunnel
      description: Update a dynamic IPSec tunnel configuration
      operationId: updateDynamicTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/dynamicTunnelId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicTunnelUpdate'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
    delete:
      tags:
      - Enhanced Tunnels
      summary: Delete dynamic IPSec tunnel
      description: Delete a dynamic IPSec tunnel
      operationId: deleteDynamicTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/dynamicTunnelId'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
        '422':
          $ref: '#/components/responses/422_UnprocessableEntity'
  /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static:
    post:
      tags:
      - Enhanced Tunnels
      summary: Create static IPSec tunnel
      description: Create a new static IPSec tunnel in an enhanced network
      operationId: createStaticTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaticTunnelCreate'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '400':
          $ref: '#/components/responses/400_BadRequest'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
        '422':
          $ref: '#/components/responses/422_UnprocessableEntity'
  /v2.3/networks/enhanced/{networkId}/tunnels/ipsec/static/{tunnelId}:
    get:
      tags:
      - Enhanced Tunnels
      summary: Get static IPSec tunnel
      description: Get details of a static IPSec tunnel
      operationId: getStaticTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/tunnelId'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnhancedTunnel'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
    put:
      tags:
      - Enhanced Tunnels
      summary: Update static IPSec tunnel
      description: Update a static IPSec tunnel configuration
      operationId: updateStaticTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/tunnelId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StaticTunnelUpdate'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
    delete:
      tags:
      - Enhanced Tunnels
      summary: Delete static IPSec tunnel
      description: Delete a static IPSec tunnel
      operationId: deleteStaticTunnel
      parameters:
      - $ref: '#/components/parameters/networkId'
      - $ref: '#/components/parameters/tunnelId'
      responses:
        '202':
          $ref: '#/components/responses/202_Accepted'
        '401':
          $ref: '#/components/responses/401_Unauthorized'
        '403':
          $ref: '#/components/responses/403_Forbidden'
        '404':
          $ref: '#/components/responses/404_NotFound'
        '422':
          $ref: '#/components/responses/422_UnprocessableEntity'
components:
  schemas:
    DynamicTunnelDetails:
      type: object
      properties:
        regionID:
          type: string
          description: Dynamic tunnel enhanced region ID
      allOf:
      - $ref: '#/components/schemas/TunnelAuthConfig'
      - type: object
        properties:
          p81GWInternalIP:
            type: string
            format: ipv4
            description: Harmony Sase gateway internal IP address
          remoteGWInternalIP:
            type: string
            format: ipv4
            description: Remote gateway internal IP address
          remotePublicIP:
            type: string
            format: ipv4
            description: Remote gateway public IP address
          remoteASN:
            $ref: '#/components/schemas/ASN'
          remoteID:
            type: string
            description: Remote gateway ID
          routingType:
            $ref: '#/components/schemas/RoutingType'
      required:
      - regionID
      - authType
      - p81GWInternalIP
      - remoteGWInternalIP
      - remotePublicIP
      - remoteASN
      - remoteID
      - routingType
    EnhancedTunnel:
      allOf:
      - $ref: '#/components/schemas/EnhancedTunnelBase'
      - type: object
        properties:
          id:
            type: string
            description: Enhanced tunnel ID
          haTunnelID:
            type: string
            description: Enhanced dynamic tunnel group ID (or tunnel ID for static tunnel)
          dpdAction:
            type: string
            description: Enhanced tunnel DPDTime actions.
        required:
        - id
        - haTunnelID
        - dpdAction
    DynamicTunnelUpdate:
      type: object
      properties:
        tunnelName:
          type: string
          description: Name of the tunnel
        description:
          type: string
          description: Optional description for the tunnel
        addTunnels:
          type: array
          minItems: 0
          maxItems: 8
          items:
            $ref: '#/components/schemas/DynamicTunnelDetails'
        updateTunnels:
          type: array
          minItems: 0
          maxItems: 8
          items:
            allOf:
            - type: object
              properties:
                id:
                  type: string
              required:
              - id
            - $ref: '#/components/schemas/DynamicTunnelDetailsUpdate'
        removeTunnels:
          type: array
          minItems: 0
          maxItems: 8
          items:
            type: object
            properties:
              id:
                type: string
            required:
            - id
        sharedSettings:
          $ref: '#/components/schemas/EnhancedIPSecSharedSettingsUpdate'
        advancedSettings:
          $ref: '#/components/schemas/IPSecAdvancedSettingsUpdateV2_3'
        routingType:
          $ref: '#/components/schemas/RoutingType'
      required:
      - tunnelName
    Lifetime:
      type: string
      pattern: ^((1[0-9]|[2-9][0-9]|[1-9][0-9]{2,3}|[1-7][0-9]{4}|8[0-5][0-9]{3}|86[0-3][0-9]{2}|86400)s)|(([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|1[0-3][0-9][0-9]|14[0-3][0-9]|1440)m)|(([1-9]|1[0-9]|2[0-4])h)$
    StaticTunnelCreate:
      type: object
      properties:
        regionID:
          type: string
          description: Target region ID
        tunnelName:
          type: string
          description: Name of the static tunnel
        p81GatewaySubnets:
          type: array
          items:
            type: string
          minItems: 1
          description: Harmony Sase gateway subnets
        remoteGatewaySubnets:
          type: array
          items:
            type: string
          minItems: 1
          description: Remote gateway subnets
        peakBandwidth:
          $ref: '#/components/schemas/PeakBandwidth'
        keyExchange:
          type: string
          description: IKE version for key exchange
          enum:
          - ikev1
          - ikev2
          default: ikev2
        ikeLifeTime:
          $ref: '#/components/schemas/Lifetime'
        lifetime:
          $ref: '#/components/schemas/Lifetime'
        dpdDelay:
          $ref: '#/components/schemas/DPDTime'
        dpdTimeout:
          $ref: '#/components/schemas/DPDTime'
        phase1:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
        phase2:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
      allOf:
      - $ref: '#/components/schemas/TunnelAuthConfig'
      - type: object
        properties:
          remotePublicIP:
            type: string
            format: ipv4
            description: Remote gateway public IP address
          remoteID:
            type: string
            description: Remote gateway ID
          description:
            type: string
            description: Optional tunnel description
          features:
            $ref: '#/components/schemas/NetworkFeaturesCreate'
          routingType:
            $ref: '#/components/schemas/RoutingType'
      required:
      - regionID
      - tunnelName
      - p81GatewaySubnets
      - remoteGatewaySubnets
      - keyExchange
      - phase1
      - phase2
      - authType
      - remotePublicIP
      - remoteID
      - ikeLifeTime
      - lifetime
      - dpdDelay
      - dpdTimeout
      - features
      - routingType
    AsyncOperationResponse:
      type: object
      properties:
        statusUrl:
          type: string
        samplingTime:
          type: integer
    EnhancedTunnelBase:
      allOf:
      - $ref: '#/components/schemas/TunnelAuthConfig'
      - type: object
        properties:
          regionID:
            type: string
            description: Target region ID
          tunnelName:
            type: string
            description: Name of the static tunnel
          p81GatewaySubnets:
            type: array
            items:
              type: string
            minItems: 1
            description: Harmony Sase gateway subnets
          remoteGatewaySubnets:
            type: array
            items:
              type: string
            minItems: 1
            description: Remote gateway subnets
          keyExchange:
            type: string
            description: IKE version for key exchange
            enum:
            - ikev1
            - ikev2
            default: ikev2
          ikeLifeTime:
            $ref: '#/components/schemas/Lifetime'
          lifetime:
            $ref: '#/components/schemas/Lifetime'
          dpdDelay:
            $ref: '#/components/schemas/DPDTime'
          dpdTimeout:
            $ref: '#/components/schemas/DPDTime'
          phase1:
            $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
          phase2:
            $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
          remotePublicIP:
            type: string
            format: ipv4
            description: Remote gateway public IP address
          remoteID:
            type: string
            description: Remote gateway ID
          description:
            type: string
            description: Optional tunnel description
          features:
            $ref: '#/components/schemas/NetworkFeatures'
          routingType:
            $ref: '#/components/schemas/RoutingType'
          peakBandwidth:
            $ref: '#/components/schemas/PeakBandwidth'
        required:
        - regionID
        - tunnelName
        - p81GatewaySubnets
        - remoteGatewaySubnets
        - keyExchange
        - phase1
        - phase2
        - authType
        - remotePublicIP
        - remoteID
        - features
        - ikeLifeTime
        - lifetime
        - dpdDelay
        - dpdTimeout
    IPSecAdvancedSettingsUpdateV2_3:
      type: object
      properties:
        keyExchange:
          type: string
          enum:
          - ikev1
          - ikev2
        ikeLifeTime:
          $ref: '#/components/schemas/Lifetime'
        lifetime:
          $ref: '#/components/schemas/Lifetime'
        dpdDelay:
          $ref: '#/components/schemas/DPDTime'
        dpdTimeout:
          $ref: '#/components/schemas/DPDTime'
        phase1:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
        phase2:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
      additionalProperties: false
    DynamicTunnelCreate:
      type: object
      properties:
        tunnelName:
          type: string
          description: Name of the tunnel
        description:
          type: string
          description: Optional description for the tunnel
        tunnels:
          type: array
          description: List of tunnels
          items:
            $ref: '#/components/schemas/DynamicTunnelDetails'
          minItems: 1
          maxItems: 8
        sharedSettings:
          $ref: '#/components/schemas/EnhancedIPSecSharedSettingsCreate'
        advancedSettings:
          $ref: '#/components/schemas/IPSecAdvancedSettingsV2_3'
      required:
      - tunnelName
      - tunnels
      - sharedSettings
      - advancedSettings
    DPDTime:
      type: string
      pattern: ^([5-9]|[1-5][0-9]|60)s$
    PeakBandwidth:
      type: integer
      description: Expected peak throughput of the tunnel communication in Mbps. Typical connection will be of 1000Mbps.
      minimum: 10
      maximum: 8000
      default: 1000
    RemoteASN:
      type: integer
      oneOf:
      - type: integer
        minimum: 1
        maximum: 23455
      - type: integer
        minimum: 23457
        maximum: 64495
      - type: integer
        minimum: 64512
        maximum: 65534
      - type: integer
        minimum: 131072
        maximum: 4294967294
    NetworkFeatures:
      type: object
      properties:
        cloudSecurity:
          type: object
          properties:
            enabled:
              type: boolean
              default: false
          required:
          - enabled
        symmetricInnerMesh:
          type: object
          properties:
            enabled:
              type: boolean
              default: false
          required:
          - enabled
        DNSServices:
          type: object
          properties:
            redirectToResolver:
              type: object
              properties:
                enabled:
                  type: boolean
                  default: true
              required:
              - enabled
          required:
          - redirectToResolver
    IPSecSharedSettings:
      type: object
      properties:
        p81GatewaySubnets:
          minLength: 1
          uniqueItems: true
          type: array
          items:
            type: string
        remoteGatewaySubnets:
          minLength: 1
          uniqueItems: true
          type: array
          items:
            type: string
        peakBandwidth:
          $ref: '#/components/schemas/PeakBandwidth'
        p81ASN:
          $ref: '#/components/schemas/RemoteASN'
        features:
          type: object
          properties:
            symmetricInnerMesh:
              type: object
              properties:
                enabled:
                  type: boolean
                  default: false
              additionalProperties: false
      required:
      - p81GatewaySubnets
      - remoteGatewaySubnets
      additionalProperties: false
    TunnelAuthConfig:
      type: object
      properties:
        authType:
          type: string
          enum:
          - psk
          - cert
          description: Authentication type for tunnel (psk for pre-shared key, cert for certificate)
        passphrase:
          type: string
          minLength: 8
          maxLength: 64
          description: Pre-shared key for tunnel authentication (8-64 characters). Required when authType is psk.
        customerRootCA:
          type: string
          description: Customer root certificate authority. Required when authType is cert.
    IPSecAlgorithms:
      type: object
      properties:
        auth:
          minLength: 1
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
            - md5
            - sha1
            - sha384
            - sha256
            - sha512
            - aesxcbc
            - aescmac
            - prfmd5
            - prfsha1
            - prfaesxcbc
            - prfaescmac
            - prfsha256
            - prfsha384
            - prfsha512
        encryption:
          minLength: 1
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
            - 3des
            - blowfish128
            - blowfish192
            - blowfish256
            - aes128
            - aes192
            - aes256
            - aes128ctr
            - aes192ctr
            - aes256ctr
            - camellia128
            - camellia192
            - camellia256
            - camellia128ctr
            - camellia192ctr
            - camellia256ctr
            - aes128ccm8
            - aes192ccm8
            - aes256ccm8
            - aes128ccm16
            - aes192ccm16
            - aes256ccm16
            - aes128gcm8
            - aes192gcm8
            - aes256gcm8
            - aes128gcm16
            - aes192gcm16
            - aes256gcm16
            - camellia128ccm16
            - camellia192ccm16
            - camellia256ccm16
            - chacha20poly1305
    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)
    IPSecPhaseCommonV2_3:
      type: object
      properties:
        keyExchangeMethod:
          description: Key exchange method encryption
          minLength: 0
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
            - modp1024
            - modp1536
            - modp2048
            - ecp256
            - ecp384
            - ecp521
            - curve25519
      required:
      - auth
      - encryption
      - keyExchangeMethod
      additionalProperties: false
    Error:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
    EnhancedIPSecSharedSettingsCreate:
      allOf:
      - $ref: '#/components/schemas/IPSecSharedSettings'
      - type: object
        properties:
          features:
            $ref: '#/components/schemas/NetworkFeaturesCreate'
      - type: object
        properties:
          leftASN:
            $ref: '#/components/schemas/RemoteASN'
      required:
      - features
      - leftASN
      additionalProperties: false
    NetworkFeaturesCreate:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatures'
      - required:
        - cloudSecurity
        - symmetricInnerMesh
        - DNSServices
    IPSecPhaseConfigV2_3:
      allOf:
      - $ref: '#/components/schemas/IPSecAlgorithms'
      - $ref: '#/components/schemas/IPSecPhaseCommonV2_3'
    RoutingType:
      type: string
      description: Routing mode for the tunnel
      enum:
      - route
      - policy
      default: route
    RoutingTypeUpdate:
      type: string
      description: Routing mode for the tunnel
      enum:
      - route
      - policy
    IPSecAdvancedSettingsV2_3:
      type: object
      properties:
        keyExchange:
          type: string
          enum:
          - ikev1
          - ikev2
        ikeLifeTime:
          $ref: '#/components/schemas/Lifetime'
        lifetime:
          $ref: '#/components/schemas/Lifetime'
        dpdDelay:
          $ref: '#/components/schemas/DPDTime'
        dpdTimeout:
          $ref: '#/components/schemas/DPDTime'
        phase1:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
        phase2:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
      required:
      - keyExchange
      - ikeLifeTime
      - lifetime
      - dpdDelay
      - dpdTimeout
      - phase1
      - phase2
      additionalProperties: false
    StaticTunnelUpdate:
      type: object
      properties:
        tunnelName:
          type: string
          description: Name of the static tunnel
        p81GatewaySubnets:
          type: array
          items:
            type: string
          minItems: 1
          description: Harmony Sase gateway subnets
        remoteGatewaySubnets:
          type: array
          items:
            type: string
          minItems: 1
          description: Remote gateway subnets
        keyExchange:
          type: string
          description: IKE version for key exchange
          enum:
          - ikev1
          - ikev2
        ikeLifeTime:
          $ref: '#/components/schemas/Lifetime'
        lifetime:
          $ref: '#/components/schemas/Lifetime'
        dpdDelay:
          $ref: '#/components/schemas/DPDTime'
        dpdTimeout:
          $ref: '#/components/schemas/DPDTime'
        phase1:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
        phase2:
          $ref: '#/components/schemas/IPSecPhaseConfigV2_3'
      allOf:
      - $ref: '#/components/schemas/TunnelAuthConfig'
      - type: object
        properties:
          remotePublicIP:
            type: string
            format: ipv4
            description: Remote gateway public IP address
          remoteID:
            type: string
            description: Remote gateway ID
          description:
            type: string
            description: Optional tunnel description
          features:
            $ref: '#/components/schemas/NetworkFeaturesCreate'
          routingType:
            $ref: '#/components/schemas/RoutingType'
          peakBandwidth:
            $ref: '#/components/schemas/PeakBandwidth'
    DynamicTunnelDetailsUpdate:
      allOf:
      - $ref: '#/components/schemas/TunnelAuthConfig'
      - type: object
        properties:
          remotePublicIP:
            type: string
            format: ipv4
            description: Remote gateway public IP address
          remoteASN:
            $ref: '#/components/schemas/ASN'
          remoteID:
            type: string
            description: Remote gateway ID
          routingType:
            $ref: '#/components/schemas/RoutingTypeUpdate'
    EnhancedIPSecSharedSettingsUpdate:
      allOf:
      - $ref: '#/components/schemas/IPSecSharedSettings'
      - type: object
        properties:
          features:
            $ref: '#/components/schemas/NetworkFeaturesCreate'
      additionalProperties: false
  responses:
    422_UnprocessableEntity:
      description: Unprocessable entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    403_Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    202_Accepted:
      description: Request accepted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AsyncOperationResponse'
    401_Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    404_NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    400_BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    dynamicTunnelId:
      name: dynamicTunnelId
      in: path
      required: true
      schema:
        type: string
    networkId:
      name: networkId
      in: path
      required: true
      schema:
        type: string
    regionId:
      name: regionId
      in: path
      required: true
      schema:
        type: string
    tunnelId:
      name: tunnelId
      in: path
      required: true
      schema:
        type: string
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http