# Copyright 2023 Google LLC. All Rights Reserved.
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
info:
  title: Compute/RouterNat
  description: The Compute RouterNat resource
  x-dcl-struct-name: RouterNat
  x-dcl-has-iam: false
paths:
  get:
    description: The function used to get information about a RouterNat
    parameters:
    - name: routerNat
      required: true
      description: A full instance of a RouterNat
  apply:
    description: The function used to apply information about a RouterNat
    parameters:
    - name: routerNat
      required: true
      description: A full instance of a RouterNat
  delete:
    description: The function used to delete a RouterNat
    parameters:
    - name: routerNat
      required: true
      description: A full instance of a RouterNat
  deleteAll:
    description: The function used to delete all RouterNat
    parameters:
    - name: project
      required: true
      schema:
        type: string
    - name: location
      required: true
      schema:
        type: string
    - name: router
      required: true
      schema:
        type: string
  list:
    description: The function used to list information about many RouterNat
    parameters:
    - name: project
      required: true
      schema:
        type: string
    - name: location
      required: true
      schema:
        type: string
    - name: router
      required: true
      schema:
        type: string
components:
  schemas:
    RouterNat:
      title: RouterNat
      x-dcl-id: projects/{{project}}/regions/{{location}}/routers/{{router}}
      x-dcl-parent-container: project
      x-dcl-has-create: true
      x-dcl-has-iam: false
      x-dcl-read-timeout: 0
      x-dcl-apply-timeout: 0
      x-dcl-delete-timeout: 0
      type: object
      required:
      - location
      - project
      - router
      properties:
        drainNatIps:
          type: array
          x-dcl-go-name: DrainNatIps
          description: A list of URLs of the IP resources to be drained. These IPs
            must be valid static external IPs that have been assigned to the NAT.
            These IPs should be used for updating/patching a NAT only.
          x-dcl-send-empty: true
          x-dcl-list-type: list
          items:
            type: string
            x-dcl-go-type: string
        icmpIdleTimeoutSec:
          type: integer
          format: int64
          x-dcl-go-name: IcmpIdleTimeoutSec
          description: Timeout (in seconds) for ICMP connections. Defaults to 30s
            if not set.
        location:
          type: string
          x-dcl-go-name: Location
          description: The location of the resource
          x-kubernetes-immutable: true
        logConfig:
          type: object
          x-dcl-go-name: LogConfig
          x-dcl-go-type: RouterNatLogConfig
          description: Configure logging on this NAT.
          properties:
            enable:
              type: boolean
              x-dcl-go-name: Enable
              description: Indicates whether or not to export logs. This is false
                by default.
            filter:
              type: string
              x-dcl-go-name: Filter
              x-dcl-go-type: RouterNatLogConfigFilterEnum
              description: 'Specify the desired filtering of logs on this NAT. If
                unspecified, logs are exported for all connections handled by this
                NAT. Possible values: ERRORS_ONLY, TRANSLATIONS_ONLY, ALL'
              enum:
              - ERRORS_ONLY
              - TRANSLATIONS_ONLY
              - ALL
        minPortsPerVm:
          type: integer
          format: int64
          x-dcl-go-name: MinPortsPerVm
          description: Minimum number of ports allocated to a VM from this NAT config.
            If not set, a default number of ports is allocated to a VM. This is rounded
            up to the nearest power of 2. For example, if the value of this field
            is 50, at least 64 ports are allocated to a VM.
        name:
          type: string
          x-dcl-go-name: Name
          description: Unique name of this Nat service
          x-kubernetes-immutable: true
        natIPAllocateOption:
          type: string
          x-dcl-go-name: NatIPAllocateOption
          x-dcl-go-type: RouterNatNatIPAllocateOptionEnum
          description: 'The NAT IP Allocate Option Possible values: MANUAL_ONLY, AUTO_ONLY'
          enum:
          - MANUAL_ONLY
          - AUTO_ONLY
        natIps:
          type: array
          x-dcl-go-name: NatIps
          description: A list of URLs of the IP resources used for this Nat service.
            These IP addresses must be valid static external IP addresses assigned
            to the project.
          x-dcl-send-empty: true
          x-dcl-list-type: list
          items:
            type: string
            x-dcl-go-type: string
        project:
          type: string
          x-dcl-go-name: Project
          description: The project id of the resource
          x-kubernetes-immutable: true
          x-dcl-references:
          - resource: Cloudresourcemanager/Project
            field: name
            parent: true
        router:
          type: string
          x-dcl-go-name: Router
          description: The router of the resource
          x-kubernetes-immutable: true
          x-dcl-references:
          - resource: Compute/Router
            field: name
            parent: true
        sourceSubnetworkIPRangesToNat:
          type: string
          x-dcl-go-name: SourceSubnetworkIPRangesToNat
          x-dcl-go-type: RouterNatSourceSubnetworkIPRangesToNatEnum
          description: 'Specify the Nat option, which can take one of the following
            values: ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork
            are allowed to Nat. ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the
            primary IP ranges in every Subnetwork are allowed to Nat. LIST_OF_SUBNETWORKS:
            A list of Subnetworks are allowed to Nat (specified in the field subnetwork
            below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note
            that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES,
            then there should not be any other Router.Nat section in any Router for
            this network in this region.'
          enum:
          - ALL_SUBNETWORKS_ALL_IP_RANGES
          - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES
          - LIST_OF_SUBNETWORKS
        subnetworks:
          type: array
          x-dcl-go-name: Subnetworks
          description: A list of Subnetwork resources whose traffic should be translated
            by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for
            the SubnetworkIpRangeToNatOption above.
          x-dcl-send-empty: true
          x-dcl-list-type: list
          items:
            type: object
            x-dcl-go-type: RouterNatSubnetworks
            properties:
              name:
                type: string
                x-dcl-go-name: Name
                description: URL for the subnetwork resource that will use NAT.
                x-dcl-references:
                - resource: Compute/Subnetwork
                  field: name
              secondaryIPRangeNames:
                type: string
                x-dcl-go-name: SecondaryIPRangeNames
                description: A list of the secondary ranges of the Subnetwork that
                  are allowed to use NAT.
              sourceIPRangesToNat:
                type: string
                x-dcl-go-name: SourceIPRangesToNat
                description: Specify the options for NAT ranges in the Subnetwork.
        tcpEstablishedIdleTimeoutSec:
          type: integer
          format: int64
          x-dcl-go-name: TcpEstablishedIdleTimeoutSec
          description: Timeout (in seconds) for TCP established connections. Defaults
            to 1200s if not set.
        tcpTransitoryIdleTimeoutSec:
          type: integer
          format: int64
          x-dcl-go-name: TcpTransitoryIdleTimeoutSec
          description: Timeout (in seconds) for TCP transitory connections. Defaults
            to 30s if not set.
        udpIdleTimeoutSec:
          type: integer
          format: int64
          x-dcl-go-name: UdpIdleTimeoutSec
          description: Timeout (in seconds) for UDP connections. Defaults to 30s if
            not set.
