Perimeter 81 Enhanced Tunnels API

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

OpenAPI Specification

perimeter-81-enhanced-tunnels-api-openapi.yml Raw ↑
openapi: 3.0.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:
  parameters:
    regionId:
      name: regionId
      in: path
      required: true
      schema:
        type: string
    networkId:
      name: networkId
      in: path
      required: true
      schema:
        type: string
    dynamicTunnelId:
      name: dynamicTunnelId
      in: path
      required: true
      schema:
        type: string
    tunnelId:
      name: tunnelId
      in: path
      required: true
      schema:
        type: string
  responses:
    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'
    202_Accepted:
      description: Request accepted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AsyncOperationResponse'
    403_Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    422_UnprocessableEntity:
      description: Unprocessable entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    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
    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'
    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
    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)
    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
    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
    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
    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.
    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
    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
    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
    RoutingTypeUpdate:
      type: string
      description: Routing mode for the tunnel
      enum:
      - route
      - policy
    IPSecPhaseConfigV2_3:
      allOf:
      - $ref: '#/components/schemas/IPSecAlgorithms'
      - $ref: '#/components/schemas/IPSecPhaseCommonV2_3'
    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)$
    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
    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
    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'
    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
    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
    RoutingType:
      type: string
      description: Routing mode for the tunnel
      enum:
      - route
      - policy
      default: route
    DPDTime:
      type: string
      pattern: ^([5-9]|[1-5][0-9]|60)s$
    Error:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
    NetworkFeaturesCreate:
      allOf:
      - $ref: '#/components/schemas/NetworkFeatures'
      - required:
        - cloudSecurity
        - symmetricInnerMesh
        - DNSServices
    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
    EnhancedIPSecSharedSettingsUpdate:
      allOf:
      - $ref: '#/components/schemas/IPSecSharedSettings'
      - type: object
        properties:
          features:
            $ref: '#/components/schemas/NetworkFeaturesCreate'
      additionalProperties: false
    AsyncOperationResponse:
      type: object
      properties:
        statusUrl:
          type: string
        samplingTime:
          type: integer
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http