// Code generated by sidekick. DO NOT EDIT.
//
// Copyright 2026 Google LLC
//
// 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
//
//     https://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.

#if NodeGroups
  import Foundation
  import GoogleCloudWkt

  extension NodeGroupsClient {
    /// Synthetic request message for the [addNodes()][google.cloud.compute.v1.nodeGroups.addNodes] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.addNodes]: <doc:NodeGroups/addNodes(request:)>
    public struct AddNodesRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [addNodes()][google.cloud.compute.v1.nodeGroups.addNodes] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.addNodes]: <doc:NodeGroups/addNodes(request:)>
      public var body: NodeGroupsAddNodesRequest? = nil

      /// Initialize a new instance of `AddNodesRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = AddNodesRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.addNodesRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [aggregatedList()][google.cloud.compute.v1.nodeGroups.aggregatedList] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.aggregatedList]: <doc:NodeGroups/aggregatedList(request:)>
    public struct AggregatedListRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// A filter expression that filters resources listed in the response. Most
      /// Compute resources support two types of filter expressions:
      /// expressions that support regular expressions and expressions that follow
      /// API improvement proposal AIP-160.
      /// These two types of filter expressions cannot be mixed in one request.
      ///
      /// If you want to use AIP-160, your expression must specify the field name, an
      /// operator, and the value that you want to use for filtering. The value
      /// must be a string, a number, or a boolean. The operator
      /// must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
      ///
      /// For example, if you are filtering Compute Engine instances, you can
      /// exclude instances named `example-instance` by specifying
      /// `name != example-instance`.
      ///
      /// The `:*` comparison can be used to test whether a key has been defined.
      /// For example, to find all objects with `owner` label use:
      /// ```
      /// labels.owner:*
      /// ```
      ///
      /// You can also filter nested fields. For example, you could specify
      /// `scheduling.automaticRestart = false` to include instances only
      /// if they are not scheduled for automatic restarts. You can use filtering
      /// on nested fields to filter based onresource labels.
      ///
      /// To filter on multiple expressions, provide each separate expression within
      /// parentheses. For example:
      /// ```
      /// (scheduling.automaticRestart = true)
      /// (cpuPlatform = "Intel Skylake")
      /// ```
      /// By default, each expression is an `AND` expression. However, you
      /// can include `AND` and `OR` expressions explicitly.
      /// For example:
      /// ```
      /// (cpuPlatform = "Intel Skylake") OR
      /// (cpuPlatform = "Intel Broadwell") AND
      /// (scheduling.automaticRestart = true)
      /// ```
      ///
      /// If you want to use a regular expression, use the `eq` (equal) or `ne`
      /// (not equal) operator against a single un-parenthesized expression with or
      /// without quotes or against multiple parenthesized expressions. Examples:
      ///
      /// `fieldname eq unquoted literal`
      /// `fieldname eq 'single quoted literal'`
      /// `fieldname eq "double quoted literal"`
      /// `(fieldname1 eq literal) (fieldname2 ne "literal")`
      ///
      /// The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
      /// The literal value must match the entire field.
      ///
      /// For example, to filter for instances that do not end with name "instance",
      /// you would use `name ne .*instance`.
      ///
      /// You cannot combine constraints on multiple fields using regular
      /// expressions.
      public var filter: Swift.String? = nil

      /// Indicates whether every visible scope for each scope type (zone, region,
      /// global) should be included in the response. For new resource types added
      /// after this field, the flag has no effect as new resource types will always
      /// include every visible scope for each scope type in response. For resource
      /// types which predate this field, if this flag is omitted or false, only
      /// scopes of the scope types where the resource type is expected to be found
      /// will be included.
      public var includeAllScopes: Swift.Bool? = nil

      /// The maximum number of results per page that should be returned.
      /// If the number of available results is larger than `maxResults`,
      /// Compute Engine returns a `nextPageToken` that can be used to get
      /// the next page of results in subsequent list requests. Acceptable values are
      /// `0` to `500`, inclusive. (Default: `500`)
      public var maxResults: Swift.UInt32? = nil

      /// Sorts list results by a certain order. By default, results
      /// are returned in alphanumerical order based on the resource name.
      ///
      /// You can also sort results in descending order based on the creation
      /// timestamp using `orderBy="creationTimestamp desc"`. This sorts
      /// results based on the `creationTimestamp` field in
      /// reverse chronological order (newest result first). Use this to sort
      /// resources like operations so that the newest operation is returned first.
      ///
      /// Currently, only sorting by `name` or
      /// `creationTimestamp desc` is supported.
      public var orderBy: Swift.String? = nil

      /// Specifies a page token to use. Set `pageToken` to the
      /// `nextPageToken` returned by a previous list request to get
      /// the next page of results.
      public var pageToken: Swift.String? = nil

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Opt-in for partial success behavior which provides partial results in case
      /// of failure. The default value is false.
      ///
      /// For example, when partial success behavior is enabled, aggregatedList for a
      /// single zone scope either returns all resources in the zone or no resources,
      /// with an error code.
      public var returnPartialSuccess: Swift.Bool? = nil

      /// The Shared VPC service project id or service project number for which
      /// aggregated list request is invoked for subnetworks list-usable api.
      public var serviceProjectNumber: Swift.Int64? = nil

      /// Initialize a new instance of `AggregatedListRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = AggregatedListRequest().with { $0.filter = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.aggregatedListRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [delete()][google.cloud.compute.v1.nodeGroups.delete] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.delete]: <doc:NodeGroups/delete(request:)>
    public struct DeleteRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource to delete.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Initialize a new instance of `DeleteRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = DeleteRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.deleteRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [deleteNodes()][google.cloud.compute.v1.nodeGroups.deleteNodes] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.deleteNodes]: <doc:NodeGroups/deleteNodes(request:)>
    public struct DeleteNodesRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource whose nodes will be deleted.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [deleteNodes()][google.cloud.compute.v1.nodeGroups.deleteNodes] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.deleteNodes]: <doc:NodeGroups/deleteNodes(request:)>
      public var body: NodeGroupsDeleteNodesRequest? = nil

      /// Initialize a new instance of `DeleteNodesRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = DeleteNodesRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.deleteNodesRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [get()][google.cloud.compute.v1.nodeGroups.get] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.get]: <doc:NodeGroups/`get`(request:)>
    public struct GetRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the node group to return.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Initialize a new instance of `GetRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = GetRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.getRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [getIamPolicy()][google.cloud.compute.v1.nodeGroups.getIamPolicy] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.getIamPolicy]: <doc:NodeGroups/getIamPolicy(request:)>
    public struct GetIamPolicyRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Requested IAM Policy version.
      public var optionsRequestedPolicyVersion: Swift.Int32? = nil

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Name or id of the resource for this request.
      public var resource: Swift.String = Swift.String()

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Initialize a new instance of `GetIamPolicyRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = GetIamPolicyRequest().with { $0.optionsRequestedPolicyVersion = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.getIamPolicyRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [insert()][google.cloud.compute.v1.nodeGroups.insert] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.insert]: <doc:NodeGroups/insert(request:)>
    public struct InsertRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Initial count of nodes in the node group.
      public var initialNodeCount: Swift.Int32 = Swift.Int32()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [insert()][google.cloud.compute.v1.nodeGroups.insert] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.insert]: <doc:NodeGroups/insert(request:)>
      public var body: NodeGroup? = nil

      /// Initialize a new instance of `InsertRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = InsertRequest().with { $0.initialNodeCount = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.insertRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [list()][google.cloud.compute.v1.nodeGroups.list] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.list]: <doc:NodeGroups/list(request:)>
    public struct ListRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// A filter expression that filters resources listed in the response. Most
      /// Compute resources support two types of filter expressions:
      /// expressions that support regular expressions and expressions that follow
      /// API improvement proposal AIP-160.
      /// These two types of filter expressions cannot be mixed in one request.
      ///
      /// If you want to use AIP-160, your expression must specify the field name, an
      /// operator, and the value that you want to use for filtering. The value
      /// must be a string, a number, or a boolean. The operator
      /// must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
      ///
      /// For example, if you are filtering Compute Engine instances, you can
      /// exclude instances named `example-instance` by specifying
      /// `name != example-instance`.
      ///
      /// The `:*` comparison can be used to test whether a key has been defined.
      /// For example, to find all objects with `owner` label use:
      /// ```
      /// labels.owner:*
      /// ```
      ///
      /// You can also filter nested fields. For example, you could specify
      /// `scheduling.automaticRestart = false` to include instances only
      /// if they are not scheduled for automatic restarts. You can use filtering
      /// on nested fields to filter based onresource labels.
      ///
      /// To filter on multiple expressions, provide each separate expression within
      /// parentheses. For example:
      /// ```
      /// (scheduling.automaticRestart = true)
      /// (cpuPlatform = "Intel Skylake")
      /// ```
      /// By default, each expression is an `AND` expression. However, you
      /// can include `AND` and `OR` expressions explicitly.
      /// For example:
      /// ```
      /// (cpuPlatform = "Intel Skylake") OR
      /// (cpuPlatform = "Intel Broadwell") AND
      /// (scheduling.automaticRestart = true)
      /// ```
      ///
      /// If you want to use a regular expression, use the `eq` (equal) or `ne`
      /// (not equal) operator against a single un-parenthesized expression with or
      /// without quotes or against multiple parenthesized expressions. Examples:
      ///
      /// `fieldname eq unquoted literal`
      /// `fieldname eq 'single quoted literal'`
      /// `fieldname eq "double quoted literal"`
      /// `(fieldname1 eq literal) (fieldname2 ne "literal")`
      ///
      /// The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
      /// The literal value must match the entire field.
      ///
      /// For example, to filter for instances that do not end with name "instance",
      /// you would use `name ne .*instance`.
      ///
      /// You cannot combine constraints on multiple fields using regular
      /// expressions.
      public var filter: Swift.String? = nil

      /// The maximum number of results per page that should be returned.
      /// If the number of available results is larger than `maxResults`,
      /// Compute Engine returns a `nextPageToken` that can be used to get
      /// the next page of results in subsequent list requests. Acceptable values are
      /// `0` to `500`, inclusive. (Default: `500`)
      public var maxResults: Swift.UInt32? = nil

      /// Sorts list results by a certain order. By default, results
      /// are returned in alphanumerical order based on the resource name.
      ///
      /// You can also sort results in descending order based on the creation
      /// timestamp using `orderBy="creationTimestamp desc"`. This sorts
      /// results based on the `creationTimestamp` field in
      /// reverse chronological order (newest result first). Use this to sort
      /// resources like operations so that the newest operation is returned first.
      ///
      /// Currently, only sorting by `name` or
      /// `creationTimestamp desc` is supported.
      public var orderBy: Swift.String? = nil

      /// Specifies a page token to use. Set `pageToken` to the
      /// `nextPageToken` returned by a previous list request to get
      /// the next page of results.
      public var pageToken: Swift.String? = nil

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Opt-in for partial success behavior which provides partial results in case
      /// of failure. The default value is false.
      ///
      /// For example, when partial success behavior is enabled, aggregatedList for a
      /// single zone scope either returns all resources in the zone or no resources,
      /// with an error code.
      public var returnPartialSuccess: Swift.Bool? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Initialize a new instance of `ListRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = ListRequest().with { $0.filter = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.listRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [listNodes()][google.cloud.compute.v1.nodeGroups.listNodes] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.listNodes]: <doc:NodeGroups/listNodes(request:)>
    public struct ListNodesRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// A filter expression that filters resources listed in the response. Most
      /// Compute resources support two types of filter expressions:
      /// expressions that support regular expressions and expressions that follow
      /// API improvement proposal AIP-160.
      /// These two types of filter expressions cannot be mixed in one request.
      ///
      /// If you want to use AIP-160, your expression must specify the field name, an
      /// operator, and the value that you want to use for filtering. The value
      /// must be a string, a number, or a boolean. The operator
      /// must be either `=`, `!=`, `>`, `<`, `<=`, `>=` or `:`.
      ///
      /// For example, if you are filtering Compute Engine instances, you can
      /// exclude instances named `example-instance` by specifying
      /// `name != example-instance`.
      ///
      /// The `:*` comparison can be used to test whether a key has been defined.
      /// For example, to find all objects with `owner` label use:
      /// ```
      /// labels.owner:*
      /// ```
      ///
      /// You can also filter nested fields. For example, you could specify
      /// `scheduling.automaticRestart = false` to include instances only
      /// if they are not scheduled for automatic restarts. You can use filtering
      /// on nested fields to filter based onresource labels.
      ///
      /// To filter on multiple expressions, provide each separate expression within
      /// parentheses. For example:
      /// ```
      /// (scheduling.automaticRestart = true)
      /// (cpuPlatform = "Intel Skylake")
      /// ```
      /// By default, each expression is an `AND` expression. However, you
      /// can include `AND` and `OR` expressions explicitly.
      /// For example:
      /// ```
      /// (cpuPlatform = "Intel Skylake") OR
      /// (cpuPlatform = "Intel Broadwell") AND
      /// (scheduling.automaticRestart = true)
      /// ```
      ///
      /// If you want to use a regular expression, use the `eq` (equal) or `ne`
      /// (not equal) operator against a single un-parenthesized expression with or
      /// without quotes or against multiple parenthesized expressions. Examples:
      ///
      /// `fieldname eq unquoted literal`
      /// `fieldname eq 'single quoted literal'`
      /// `fieldname eq "double quoted literal"`
      /// `(fieldname1 eq literal) (fieldname2 ne "literal")`
      ///
      /// The literal value is interpreted as a regular expression using GoogleRE2 library syntax.
      /// The literal value must match the entire field.
      ///
      /// For example, to filter for instances that do not end with name "instance",
      /// you would use `name ne .*instance`.
      ///
      /// You cannot combine constraints on multiple fields using regular
      /// expressions.
      public var filter: Swift.String? = nil

      /// The maximum number of results per page that should be returned.
      /// If the number of available results is larger than `maxResults`,
      /// Compute Engine returns a `nextPageToken` that can be used to get
      /// the next page of results in subsequent list requests. Acceptable values are
      /// `0` to `500`, inclusive. (Default: `500`)
      public var maxResults: Swift.UInt32? = nil

      /// Name of the NodeGroup resource whose nodes you want to list.
      public var nodeGroup: Swift.String = Swift.String()

      /// Sorts list results by a certain order. By default, results
      /// are returned in alphanumerical order based on the resource name.
      ///
      /// You can also sort results in descending order based on the creation
      /// timestamp using `orderBy="creationTimestamp desc"`. This sorts
      /// results based on the `creationTimestamp` field in
      /// reverse chronological order (newest result first). Use this to sort
      /// resources like operations so that the newest operation is returned first.
      ///
      /// Currently, only sorting by `name` or
      /// `creationTimestamp desc` is supported.
      public var orderBy: Swift.String? = nil

      /// Specifies a page token to use. Set `pageToken` to the
      /// `nextPageToken` returned by a previous list request to get
      /// the next page of results.
      public var pageToken: Swift.String? = nil

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Opt-in for partial success behavior which provides partial results in case
      /// of failure. The default value is false.
      ///
      /// For example, when partial success behavior is enabled, aggregatedList for a
      /// single zone scope either returns all resources in the zone or no resources,
      /// with an error code.
      public var returnPartialSuccess: Swift.Bool? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Initialize a new instance of `ListNodesRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = ListNodesRequest().with { $0.filter = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.listNodesRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [patch()][google.cloud.compute.v1.nodeGroups.patch] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.patch]: <doc:NodeGroups/patch(request:)>
    public struct PatchRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource to update.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [patch()][google.cloud.compute.v1.nodeGroups.patch] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.patch]: <doc:NodeGroups/patch(request:)>
      public var body: NodeGroup? = nil

      /// Initialize a new instance of `PatchRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = PatchRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.patchRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [performMaintenance()][google.cloud.compute.v1.nodeGroups.performMaintenance] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.performMaintenance]: <doc:NodeGroups/performMaintenance(request:)>
    public struct PerformMaintenanceRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the node group scoping this request.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [performMaintenance()][google.cloud.compute.v1.nodeGroups.performMaintenance] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.performMaintenance]: <doc:NodeGroups/performMaintenance(request:)>
      public var body: NodeGroupsPerformMaintenanceRequest? = nil

      /// Initialize a new instance of `PerformMaintenanceRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = PerformMaintenanceRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.performMaintenanceRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [setIamPolicy()][google.cloud.compute.v1.nodeGroups.setIamPolicy] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.setIamPolicy]: <doc:NodeGroups/setIamPolicy(request:)>
    public struct SetIamPolicyRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Name or id of the resource for this request.
      public var resource: Swift.String = Swift.String()

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [setIamPolicy()][google.cloud.compute.v1.nodeGroups.setIamPolicy] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.setIamPolicy]: <doc:NodeGroups/setIamPolicy(request:)>
      public var body: ZoneSetPolicyRequest? = nil

      /// Initialize a new instance of `SetIamPolicyRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = SetIamPolicyRequest().with { $0.project = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.setIamPolicyRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [setNodeTemplate()][google.cloud.compute.v1.nodeGroups.setNodeTemplate] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.setNodeTemplate]: <doc:NodeGroups/setNodeTemplate(request:)>
    public struct SetNodeTemplateRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource to update.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [setNodeTemplate()][google.cloud.compute.v1.nodeGroups.setNodeTemplate] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.setNodeTemplate]: <doc:NodeGroups/setNodeTemplate(request:)>
      public var body: NodeGroupsSetNodeTemplateRequest? = nil

      /// Initialize a new instance of `SetNodeTemplateRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = SetNodeTemplateRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.setNodeTemplateRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [simulateMaintenanceEvent()][google.cloud.compute.v1.nodeGroups.simulateMaintenanceEvent] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.simulateMaintenanceEvent]: <doc:NodeGroups/simulateMaintenanceEvent(request:)>
    public struct SimulateMaintenanceEventRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NodeGroup resource whose nodes will go under maintenance
      /// simulation.
      public var nodeGroup: Swift.String = Swift.String()

      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// An optional request ID to identify requests. Specify a unique request ID so
      /// that if you must retry your request, the server will know to ignore the
      /// request if it has already been completed.
      ///
      /// For example, consider a situation where you make an initial request and
      /// the request times out. If you make the request again with the same
      /// request ID, the server can check if original operation with the same
      /// request ID was received, and if so, will ignore the second request. This
      /// prevents clients from accidentally creating duplicate commitments.
      ///
      /// The request ID must be
      /// a valid UUID with the exception that zero UUID is not supported
      /// (00000000-0000-0000-0000-000000000000).
      public var requestId: Swift.String? = nil

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [simulateMaintenanceEvent()][google.cloud.compute.v1.nodeGroups.simulateMaintenanceEvent] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.simulateMaintenanceEvent]: <doc:NodeGroups/simulateMaintenanceEvent(request:)>
      public var body: NodeGroupsSimulateMaintenanceEventRequest? = nil

      /// Initialize a new instance of `SimulateMaintenanceEventRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = SimulateMaintenanceEventRequest().with { $0.nodeGroup = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return
          "type.googleapis.com/google.cloud.compute.v1.nodeGroups.simulateMaintenanceEventRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }

    /// Synthetic request message for the [testIamPermissions()][google.cloud.compute.v1.nodeGroups.testIamPermissions] method.
    ///
    /// [google.cloud.compute.v1.nodeGroups.testIamPermissions]: <doc:NodeGroups/testIamPermissions(request:)>
    public struct TestIamPermissionsRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Name or id of the resource for this request.
      public var resource: Swift.String = Swift.String()

      /// The name of the zone for this request.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [testIamPermissions()][google.cloud.compute.v1.nodeGroups.testIamPermissions] method.
      ///
      /// [google.cloud.compute.v1.nodeGroups.testIamPermissions]: <doc:NodeGroups/testIamPermissions(request:)>
      public var body: TestPermissionsRequest? = nil

      /// Initialize a new instance of `TestIamPermissionsRequest`.
      public init() {}

      /// Use `config` to return a new instance of this object, with some fields updated.
      ///
      /// Commonly used to initialize the value, for example:
      ///
      /// ```
      /// let value = TestIamPermissionsRequest().with { $0.project = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.nodeGroups.testIamPermissionsRequest"
      }
      public init(fromAny any: GoogleCloudWkt.`Any`) throws {
        self = try GoogleCloudWkt._slowAnyDeserialize(Self.self, from: any)
      }
      public func _pack() throws -> GoogleCloudWkt.Struct {
        return try GoogleCloudWkt._slowAnySerialize(message: self)
      }
    }
  }
#endif
