Perimeter 81 Regions API

The Regions API from Perimeter 81 — 3 operation(s) for regions.

OpenAPI Specification

perimeter-81-regions-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 2.3.0
  title: Harmony SASE Public Application Regions 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: Regions
paths:
  /v2.3/networks/standard/harmony-sase-regions:
    get:
      operationId: Standard_NetworksControllerV2_getRegions
      summary: List of available Harmony SASE regions that supports standard networks
      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:
      - Regions
  /v2.3/networks/standard/{networkId}/regions:
    put:
      operationId: Standard_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:
      - Regions
    delete:
      operationId: Standard_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:
      - Regions
  /v2.3/networks/standard/{networkId}/regions/{regionId}:
    get:
      operationId: Standard_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:
      - Regions
components:
  schemas:
    NetworkTunnelIpsecSingle:
      allOf:
      - $ref: '#/components/schemas/NetworkTunnelBase'
      - $ref: '#/components/schemas/NetworkIpsecBase'
    IPSecAdvancedSettings:
      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/IPSecPhaseConfig'
        phase2:
          $ref: '#/components/schemas/IPSecPhaseConfig'
      required:
      - keyExchange
      - ikeLifeTime
      - lifetime
      - dpdDelay
      - dpdTimeout
      - phase1
      - phase2
      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
    IP:
      type: string
      format: ipv4
    NetworkTunnelOpenvpn:
      allOf:
      - $ref: '#/components/schemas/NetworkTunnelBase'
      - type: object
        properties:
          passphrase:
            $ref: '#/components/schemas/Passphrase'
          username:
            type: string
            description: Openvpn username.
        required:
        - passphrase
        - username
        additionalProperties: false
    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
    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
    IPSecPhaseConfig:
      allOf:
      - $ref: '#/components/schemas/IPSecAlgorithms'
      - $ref: '#/components/schemas/IPSecPhaseCommon'
    NetworkTunnel:
      anyOf:
      - $ref: '#/components/schemas/NetworkTunnelOpenvpn'
      - $ref: '#/components/schemas/NetworkTunnelWireguard'
      - $ref: '#/components/schemas/NetworkTunnelIpsecSingle'
      - $ref: '#/components/schemas/NetworkTunnelIpsecRedundant'
    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)$
    NetworkIpsecBase:
      allOf:
      - $ref: '#/components/schemas/IPSecAdvancedSettings'
      - type: object
        properties:
          right:
            $ref: '#/components/schemas/IP'
          rightID:
            oneOf:
            - $ref: '#/components/schemas/IP'
            - type: string
              pattern: ^[a-zA-Z0-9]{3,25}$
          passphrase:
            $ref: '#/components/schemas/Passphrase'
          dpdAction:
            type: string
            description: dpdAction.
          leftSubnets:
            minLength: 1
            uniqueItems: true
            type: array
            items:
              type: string
          rightSubnets:
            minLength: 1
            uniqueItems: true
            type: array
            items:
              type: string
        required:
        - right
        - rightID
        - passphrase
        - dpdAction
        - leftSubnets
        - rightSubnets
        additionalProperties: false
    RegionsList:
      type: array
      items:
        $ref: '#/components/schemas/Region'
      description: description of regions dto object.
    IPSecPhaseCommon:
      type: object
      properties:
        dh:
          description: Diffie Helman encryption
          minLength: 0
          uniqueItems: true
          type: array
          items:
            type: integer
            enum:
            - 2
            - 5
            - 14
            - 19
            - 20
            - 21
            - 31
      required:
      - auth
      - encryption
      - dh
      additionalProperties: false
    Passphrase:
      type: string
      pattern: ^[$a-zA-Z1-9_\/\.][$a-zA-Z0-9_\/\.]{7,101}$
    BaseDates:
      type: object
      properties:
        createdAt:
          format: date-time
          type: string
          description: The date when this record was created.
        updatedAt:
          format: date-time
          type: string
          description: The date of last update of the record.
      required:
      - createdAt
      additionalProperties: false
    NetworkRegion:
      allOf:
      - $ref: '#/components/schemas/BaseDates'
      - type: object
        properties:
          network:
            type: string
            description: ID of the network.
          dns:
            type: string
            description: DNS of the region.
          name:
            type: string
            description: Name of the network region.
          instances:
            items:
              $ref: '#/components/schemas/NetworkInstance'
            type: array
            description: Network instances.
          id:
            type: string
            description: Unique ID.
          tenantId:
            type: string
            description: ID of the tenant.
        required:
        - network
        - dns
        - name
        - instances
        - id
        - tenantId
    RemoveRegionDTO:
      properties:
        regionId:
          type: string
      type: object
      required:
      - regionId
      additionalProperties: false
    Region:
      properties:
        countryCode:
          type: string
        continentCode:
          type: string
        displayName:
          type: string
        name:
          type: string
        className:
          type: string
        objectName:
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
        id:
          type: string
    DPDTime:
      type: string
      pattern: ^([5-9]|[1-5][0-9]|60)s$
    NetworkTunnelWireguard:
      allOf:
      - $ref: '#/components/schemas/NetworkTunnelBase'
      - type: object
        properties:
          leftAllowedIP:
            minLength: 1
            uniqueItems: true
            type: array
            items:
              type: string
          leftEndpoint:
            $ref: '#/components/schemas/IP'
          vault:
            type: string
            description: vault.
          requestConfigToken:
            type: string
            description: requestConfigToken.
        required:
        - leftAllowedIP
        - leftEndpoint
        - vault
        - requestConfigToken
        additionalProperties: false
    NetworkTunnelIpsecRedundant:
      allOf:
      - $ref: '#/components/schemas/NetworkTunnelBase'
      - $ref: '#/components/schemas/NetworkIpsecBase'
      - type: object
        properties:
          haTunnelID:
            $ref: '#/components/schemas/NetworkHaTunnelID'
          rightASN:
            $ref: '#/components/schemas/ASN'
          rightPrivateIP:
            $ref: '#/components/schemas/IP'
          leftPrivateIP:
            $ref: '#/components/schemas/IP'
        required:
        - haTunnelID
        - rightASN
        - rightPrivateIP
        - leftPrivateIP
        additionalProperties: false
    NetworkTunnelBase:
      allOf:
      - type: object
        properties:
          id:
            type: string
            description: Unique ID.
          network:
            type: string
            description: ID of the network.
          region:
            type: string
            description: ID of the network region.
          instance:
            type: string
            description: ID of the network instance.
          interfaceName:
            type: string
          type:
            enum:
            - connector
            - ipsec
            - openvpn
            type: string
          isHA:
            type: boolean
            description: Indicates if it's a redundant tunnel.
          tenantId:
            type: string
            description: ID of the tenant.
        required:
        - id
        - network
        - region
        - instance
        - interfaceName
        - type
        - isHA
        - tenantId
        additionalProperties: false
      - $ref: '#/components/schemas/BaseDates'
    ScaleUnitsCount:
      type: integer
      description: 'Number of scale units for the region. Scale units determine the capacity and performance level of the enhanced region.

        Higher values provide greater throughput and connection capacity.

        '
      minimum: 1
      maximum: 10
    CreateRegionInNetworkPayload:
      properties:
        harmonySaseRegionId:
          type: string
          description: Harmony SASE region ID, Take id from GET Harmony sases regions endpoint (/networks/enhanced/harmony-sase-regions).
        idle:
          type: boolean
          description: Create the gateway as disabled if true.
          default: true
        scaleUnits:
          allOf:
          - $ref: '#/components/schemas/ScaleUnitsCount'
          - default: 1
      type: object
      required:
      - harmonySaseRegionId
      - idle
      additionalProperties: false
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http