# 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/Network
  description: The Compute Network resource
  x-dcl-struct-name: Network
  x-dcl-has-iam: false
paths:
  get:
    description: The function used to get information about a Network
    parameters:
    - name: network
      required: true
      description: A full instance of a Network
  apply:
    description: The function used to apply information about a Network
    parameters:
    - name: network
      required: true
      description: A full instance of a Network
  delete:
    description: The function used to delete a Network
    parameters:
    - name: network
      required: true
      description: A full instance of a Network
  deleteAll:
    description: The function used to delete all Network
    parameters:
    - name: project
      required: true
      schema:
        type: string
  list:
    description: The function used to list information about many Network
    parameters:
    - name: project
      required: true
      schema:
        type: string
components:
  schemas:
    Network:
      title: Network
      x-dcl-id: projects/{{project}}/global/networks/{{name}}
      x-dcl-locations:
      - global
      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:
      - name
      - project
      properties:
        autoCreateSubnetworks:
          type: boolean
          x-dcl-go-name: AutoCreateSubnetworks
          description: 'When set to `true`, the network is created in "auto subnet
            mode" and it will create a subnet for each region automatically across
            the `10.128.0.0/9` address range.  When set to `false`, the network is
            created in "custom subnet mode" so the user can explicitly connect subnetwork
            resources. '
          x-kubernetes-immutable: true
          default: true
          x-dcl-server-default: true
          x-dcl-send-empty: true
        description:
          type: string
          x-dcl-go-name: Description
          description: 'An optional description of this resource. The resource must
            be recreated to modify this field. '
          x-kubernetes-immutable: true
        gatewayIPv4:
          type: string
          x-dcl-go-name: GatewayIPv4
          readOnly: true
          description: 'The gateway address for default routing out of the network.
            This value is selected by GCP. '
          x-kubernetes-immutable: true
        mtu:
          type: integer
          format: int64
          x-dcl-go-name: Mtu
          description: Maximum Transmission Unit in bytes. The minimum value for this
            field is 1460 and the maximum value is 1500 bytes.
        name:
          type: string
          x-dcl-go-name: Name
          description: 'Name of the resource. Provided by the client when the resource
            is created. The name must be 1-63 characters long, and comply with RFC1035.
            Specifically, the name must be 1-63 characters long and match the regular
            expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character
            must be a lowercase letter, and all following characters must be a dash,
            lowercase letter, or digit, except the last character, which cannot be
            a dash. '
          x-kubernetes-immutable: true
        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
        routingConfig:
          type: object
          x-dcl-go-name: RoutingConfig
          x-dcl-go-type: NetworkRoutingConfig
          description: 'The network-level routing configuration for this network.
            Used by Cloud Router to determine what type of network-wide routing behavior
            to enforce. '
          x-dcl-server-default: true
          properties:
            routingMode:
              type: string
              x-dcl-go-name: RoutingMode
              x-dcl-go-type: NetworkRoutingConfigRoutingModeEnum
              description: 'The network-wide routing mode to use. If set to `REGIONAL`,
                this network''s cloud routers will only advertise routes with subnetworks
                of this network in the same region as the router. If set to `GLOBAL`,
                this network''s cloud routers will advertise routes with all subnetworks
                of this network, across regions. '
              x-dcl-server-default: true
              enum:
              - REGIONAL
              - GLOBAL
        selfLink:
          type: string
          x-dcl-go-name: SelfLink
          readOnly: true
          description: Server-defined URL for the resource.
          x-kubernetes-immutable: true
        selfLinkWithId:
          type: string
          x-dcl-go-name: SelfLinkWithId
          readOnly: true
          description: Server-defined URL for the resource containing the network
            ID.
          x-kubernetes-immutable: true
