// 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 RegionNotificationEndpoints
  import Foundation
  import GoogleCloudWkt

  extension RegionNotificationEndpointsClient {
    /// Synthetic request message for the [aggregatedList()][google.cloud.compute.v1.regionNotificationEndpoints.aggregatedList] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.aggregatedList]: <doc:RegionNotificationEndpoints/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

      /// Name of the project scoping 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.regionNotificationEndpoints.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.regionNotificationEndpoints.delete] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.delete]: <doc:RegionNotificationEndpoints/delete(request:)>
    public struct DeleteRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NotificationEndpoint resource to delete.
      public var notificationEndpoint: Swift.String = Swift.String()

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

      /// Name of the region scoping this request.
      public var region: 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

      /// 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.notificationEndpoint = ... }
      /// ```
      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.regionNotificationEndpoints.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 [get()][google.cloud.compute.v1.regionNotificationEndpoints.get] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.get]: <doc:RegionNotificationEndpoints/`get`(request:)>
    public struct GetRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the NotificationEndpoint resource to return.
      public var notificationEndpoint: Swift.String = Swift.String()

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

      /// Name of the region scoping this request.
      public var region: 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.notificationEndpoint = ... }
      /// ```
      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.regionNotificationEndpoints.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 [insert()][google.cloud.compute.v1.regionNotificationEndpoints.insert] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.insert]: <doc:RegionNotificationEndpoints/insert(request:)>
    public struct InsertRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// Name of the region scoping this request.
      public var region: 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

      /// Synthetic request body field for the [insert()][google.cloud.compute.v1.regionNotificationEndpoints.insert] method.
      ///
      /// [google.cloud.compute.v1.regionNotificationEndpoints.insert]: <doc:RegionNotificationEndpoints/insert(request:)>
      public var body: NotificationEndpoint? = 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.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.regionNotificationEndpoints.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.regionNotificationEndpoints.list] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.list]: <doc:RegionNotificationEndpoints/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()

      /// Name of the region scoping this request.
      public var region: 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

      /// 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.regionNotificationEndpoints.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 [testIamPermissions()][google.cloud.compute.v1.regionNotificationEndpoints.testIamPermissions] method.
    ///
    /// [google.cloud.compute.v1.regionNotificationEndpoints.testIamPermissions]: <doc:RegionNotificationEndpoints/testIamPermissions(request:)>
    public struct TestIamPermissionsRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

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

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

      /// Synthetic request body field for the [testIamPermissions()][google.cloud.compute.v1.regionNotificationEndpoints.testIamPermissions] method.
      ///
      /// [google.cloud.compute.v1.regionNotificationEndpoints.testIamPermissions]: <doc:RegionNotificationEndpoints/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.regionNotificationEndpoints.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
