# 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/NetworkEndpointGroup
  description: The Compute NetworkEndpointGroup resource
  x-dcl-struct-name: NetworkEndpointGroup
  x-dcl-has-iam: false
paths:
  get:
    description: The function used to get information about a NetworkEndpointGroup
    parameters:
    - name: networkEndpointGroup
      required: true
      description: A full instance of a NetworkEndpointGroup
  apply:
    description: The function used to apply information about a NetworkEndpointGroup
    parameters:
    - name: networkEndpointGroup
      required: true
      description: A full instance of a NetworkEndpointGroup
  delete:
    description: The function used to delete a NetworkEndpointGroup
    parameters:
    - name: networkEndpointGroup
      required: true
      description: A full instance of a NetworkEndpointGroup
  deleteAll:
    description: The function used to delete all NetworkEndpointGroup
    parameters:
    - name: project
      required: true
      schema:
        type: string
    - name: location
      required: true
      schema:
        type: string
  list:
    description: The function used to list information about many NetworkEndpointGroup
    parameters:
    - name: project
      required: true
      schema:
        type: string
    - name: location
      required: true
      schema:
        type: string
components:
  schemas:
    NetworkEndpointGroup:
      title: NetworkEndpointGroup
      x-dcl-locations:
      - region
      - zone
      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:
        annotations:
          type: object
          additionalProperties:
            type: string
          x-dcl-go-name: Annotations
          description: Metadata defined as annotations on the network endpoint group.
          x-kubernetes-immutable: true
        appEngine:
          type: object
          x-dcl-go-name: AppEngine
          x-dcl-go-type: NetworkEndpointGroupAppEngine
          description: Only valid when `networkEndpointType` is "SERVERLESS". Only
            one of `cloudRun`, `appEngine` or `cloudFunction` may be set.
          x-kubernetes-immutable: true
          x-dcl-conflicts:
          - cloudRun
          - cloudFunction
          properties:
            service:
              type: string
              x-dcl-go-name: Service
              description: 'Optional serving (/appengine/docs/admin-api/reference/rest/v1/apps.services).
                The `service` name is case-sensitive and must be 1-63 characters long.
                Example value: "default", "my-service".'
              x-kubernetes-immutable: true
            urlMask:
              type: string
              x-dcl-go-name: UrlMask
              description: 'A template to parse `service` and `version` fields from
                a request URL. URL mask allows for routing to multiple App Engine
                services without having to create multiple Network Endpoint Groups
                and backend services. For example, the request URLs "`foo1-dot-appname.appspot.com/v1`"
                and "foo1-dot-appname.appspot.com/v2" can be backed by the same Serverless
                NEG with URL mask "`-dot-appname.appspot.com/`". The URL mask will
                parse them to: { service = "foo1", version = "v1" } and { service
                = "foo1", version = "v2" } respectively.'
              x-kubernetes-immutable: true
            version:
              type: string
              x-dcl-go-name: Version
              description: 'Optional serving (/appengine/docs/admin-api/reference/rest/v1/apps.services.versions).
                The `version` name is case-sensitive and must be 1-100 characters
                long. Example value: "v1", "v2".'
              x-kubernetes-immutable: true
              x-dcl-references:
              - resource: Appengine/Version
                field: name
        cloudFunction:
          type: object
          x-dcl-go-name: CloudFunction
          x-dcl-go-type: NetworkEndpointGroupCloudFunction
          description: Only valid when `networkEndpointType` is "SERVERLESS". Only
            one of `cloudRun`, `appEngine` or `cloudFunction` may be set.
          x-kubernetes-immutable: true
          x-dcl-conflicts:
          - cloudRun
          - appEngine
          properties:
            function:
              type: string
              x-dcl-go-name: Function
              description: 'A user-defined name of the (/functions/docs/reference/rest/v1/projects.locations.functions).
                The `function` name is case-sensitive and must be 1-63 characters
                long. Example value: "func1".'
              x-kubernetes-immutable: true
              x-dcl-references:
              - resource: Cloudfunction/Function
                field: name
            urlMask:
              type: string
              x-dcl-go-name: UrlMask
              description: 'A template to parse `function` field from a request URL.
                URL mask allows for routing to multiple Cloud Functions without having
                to create multiple Network Endpoint Groups and backend services. For
                example, request URLs "`mydomain.com/function1`" and "`mydomain.com/function2`"
                can be backed by the same Serverless NEG with URL mask "`/`". The
                URL mask will parse them to: { function = "function1" } and { function
                = "function2" } respectively.'
              x-kubernetes-immutable: true
        cloudRun:
          type: object
          x-dcl-go-name: CloudRun
          x-dcl-go-type: NetworkEndpointGroupCloudRun
          description: Only valid when `networkEndpointType` is "SERVERLESS". Only
            one of `cloudRun`, `appEngine` or `cloudFunction` may be set.
          x-kubernetes-immutable: true
          x-dcl-conflicts:
          - appEngine
          - cloudFunction
          properties:
            service:
              type: string
              x-dcl-go-name: Service
              description: '(https://www.ietf.org/rfc/rfc1035.txt). Example value:
                "run-service".'
              x-kubernetes-immutable: true
            tag:
              type: string
              x-dcl-go-name: Tag
              description: 'Optional (https://www.ietf.org/rfc/rfc1035.txt). Example
                value: "revision-0010".'
              x-kubernetes-immutable: true
            urlMask:
              type: string
              x-dcl-go-name: UrlMask
              description: 'A template to parse `service` and `tag` fields from a
                request URL. URL mask allows for routing to multiple Run services
                without having to create multiple network endpoint groups and backend
                services. For example, request URLs "foo1.domain.com/bar1" and "foo1.domain.com/bar2"
                can be backed by the same Serverless Network Endpoint Group (NEG)
                with URL mask "`.domain.com/`". The URL mask will parse them to: {
                service="bar1", tag="foo1" } and { service="bar2", tag="foo2" } respectively.'
              x-kubernetes-immutable: true
        defaultPort:
          type: integer
          format: int64
          x-dcl-go-name: DefaultPort
          description: The default port used if the port number is not specified in
            the network endpoint. This field is deprecated.
          x-kubernetes-immutable: true
        description:
          type: string
          x-dcl-go-name: Description
          description: An optional description of this resource. Provide this property
            when you create the resource.
          x-kubernetes-immutable: true
        id:
          type: integer
          format: int64
          x-dcl-go-name: Id
          readOnly: true
          description: The unique identifier for the resource. This identifier is
            defined by the server.
          x-kubernetes-immutable: true
        location:
          type: string
          x-dcl-go-name: Location
          description: The location of the resource.
          x-kubernetes-immutable: true
        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 (https://www.ietf.org/rfc/rfc1035.txt).
            Specifically, the name must be 1-63 characters long and match the regular
            expression `)?` 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
        network:
          type: string
          x-dcl-go-name: Network
          description: The URL of the network to which all network endpoints in the
            NEG belong. Uses "default" project network if unspecified. This field
            is deprecated.
          x-kubernetes-immutable: true
          x-dcl-references:
          - resource: Compute/Network
            field: selfLink
        networkEndpointType:
          type: string
          x-dcl-go-name: NetworkEndpointType
          x-dcl-go-type: NetworkEndpointGroupNetworkEndpointTypeEnum
          description: Type of network endpoints in this network endpoint group. Can
            be one of GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_FQDN_PORT,
            INTERNET_IP_PORT, or SERVERLESS.
          x-kubernetes-immutable: true
          enum:
          - GCE_VM_IP
          - NON_GCP_PRIVATE_IP_PORT
          - INTERNET_FQDN_PORT
          - INTERNET_IP_PORT
          - SERVERLESS
        project:
          type: string
          x-dcl-go-name: Project
          description: The project for the resource
          x-kubernetes-immutable: true
          x-dcl-references:
          - resource: Cloudresourcemanager/Project
            field: name
        selfLink:
          type: string
          x-dcl-go-name: SelfLink
          readOnly: true
          description: Server-defined URL for the resource.
          x-kubernetes-immutable: true
        size:
          type: integer
          format: int64
          x-dcl-go-name: Size
          description: Number of network endpoints in the network endpoint group.
          x-kubernetes-immutable: true
        subnetwork:
          type: string
          x-dcl-go-name: Subnetwork
          description: Optional URL of the subnetwork to which all network endpoints
            in the NEG belong. This field is deprecated.
          x-kubernetes-immutable: true
          x-dcl-references:
          - resource: Compute/Subnetwork
            field: selfLink
