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

  extension ReservationBlocksClient {
    /// Synthetic request message for the [get()][google.cloud.compute.v1.reservationBlocks.get] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.get]: <doc:ReservationBlocks/`get`(request:)>
    public struct GetRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Project ID for this request.
      public var project: Swift.String = Swift.String()

      /// The name of the reservation.
      /// Name should conform to RFC1035 or be a resource ID.
      public var reservation: Swift.String = Swift.String()

      /// The name of the reservation block.
      /// Name should conform to RFC1035 or be a resource ID.
      public var reservationBlock: Swift.String = Swift.String()

      /// View of the Block.
      public var view: ReservationBlocksClient.GetRequest.View? = nil

      /// Name of the zone for this request. Zone name should conform to RFC1035.
      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.project = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      /// The enumerated type for the [view][google.cloud.compute.v1.reservationBlocks.getRequest.view] field.
      ///
      /// [google.cloud.compute.v1.reservationBlocks.getRequest.view]: <doc:ReservationBlocksClient/GetRequest/View>
      public enum View: Codable, Equatable, Sendable {
        /// This view includes basic information about the reservation block
        case basic
        /// The default / unset value. The API will default to the BASIC view.
        case blockViewUnspecified
        /// Includes detailed topology view.
        case full
        /// Encodes an unknown integer value.
        ///
        /// The most common cause for an unknown values is for the service to send
        /// a value unknown to the library. We recommend you update your library to
        /// the latest version.
        case unknownIntValue(Int)
        /// Encodes an unknown string value.
        ///
        /// The most common cause for an unknown values is for the service to send
        /// a value unknown to the library. We recommend you update your library to
        /// the latest version.
        case unknownStringValue(String)

        public init() {
          self = .basic
        }

        /// Returns the integer value associated with the enumeration.
        ///
        /// If the enumeration was initialized with an unknown string value, this returns `nil`.
        public var intValue: Int? {
          switch self {
          case .basic: return 0
          case .blockViewUnspecified: return 1
          case .full: return 2
          case .unknownIntValue(let v): return v
          case .unknownStringValue: return nil
          }
        }

        /// Returns the string value (or name) associated with the enumeration.
        ///
        /// If the enumeration was initialized with an unknown integer value, this returns `nil`.
        public var stringValue: Swift.String? {
          switch self {
          case .basic: return "BASIC"
          case .blockViewUnspecified: return "BLOCK_VIEW_UNSPECIFIED"
          case .full: return "FULL"
          case .unknownIntValue: return nil
          case .unknownStringValue(let v): return v
          }
        }

        /// Initialize from a string value.
        ///
        /// If the value is unknown, this initializes to [`unknownStringValue`](doc:View/unknownStringValue(_:)).
        public init(stringValue: Swift.String) {
          switch stringValue {
          case "BASIC": self = .basic
          case "BLOCK_VIEW_UNSPECIFIED": self = .blockViewUnspecified
          case "FULL": self = .full
          default: self = .unknownStringValue(stringValue)
          }
        }

        /// Initialize from an integer value.
        ///
        /// If the value is unknown, this initializes to [`unknownIntValue`](doc:View/unknownIntValue(_:)).
        public init(intValue: Int) {
          switch intValue {
          case 0: self = .basic
          case 1: self = .blockViewUnspecified
          case 2: self = .full
          default: self = .unknownIntValue(intValue)
          }
        }

        public init(from decoder: Decoder) throws {
          let container = try decoder.singleValueContainer()
          if let v = try? container.decode(Int.self) {
            self.init(intValue: v)
            return
          }
          if let s = try? container.decode(String.self) {
            if let v = Int(s) {
              self.init(intValue: v)
            } else {
              self.init(stringValue: s)
            }
            return
          }
          throw DecodingError.dataCorruptedError(
            in: container, debugDescription: "Expected enum value, must be integer or string.")
        }

        public func encode(to encoder: Encoder) throws {
          var container = encoder.singleValueContainer()
          switch self {
          case .basic: return try container.encode(0)
          case .blockViewUnspecified: return try container.encode(1)
          case .full: return try container.encode(2)
          case .unknownIntValue(let v): return try container.encode(v)
          case .unknownStringValue(let v): return try container.encode(v)
          }
        }
      }

      public static var _anyTypeUrl: Swift.String {
        return "type.googleapis.com/google.cloud.compute.v1.reservationBlocks.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.reservationBlocks.getIamPolicy] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.getIamPolicy]: <doc:ReservationBlocks/getIamPolicy(request:)>
    public struct GetIamPolicyRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Requested IAM Policy version.
      public var optionsRequestedPolicyVersion: Swift.Int32? = nil

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

      /// 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.reservationBlocks.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 [list()][google.cloud.compute.v1.reservationBlocks.list] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.list]: <doc:ReservationBlocks/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()

      /// The name of the reservation.
      /// Name should conform to RFC1035 or be a resource ID.
      public var reservation: 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

      /// Name of the zone for this request. Zone name should conform to RFC1035.
      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.reservationBlocks.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 [performMaintenance()][google.cloud.compute.v1.reservationBlocks.performMaintenance] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.performMaintenance]: <doc:ReservationBlocks/performMaintenance(request:)>
    public struct PerformMaintenanceRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// 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 reservation.
      /// Name should conform to RFC1035 or be a resource ID.
      public var reservation: Swift.String = Swift.String()

      /// The name of the reservation block.
      /// Name should conform to RFC1035 or be a resource ID.
      public var reservationBlock: Swift.String = Swift.String()

      /// Name of the zone for this request. Zone name should conform to RFC1035.
      public var zone: Swift.String = Swift.String()

      /// Synthetic request body field for the [performMaintenance()][google.cloud.compute.v1.reservationBlocks.performMaintenance] method.
      ///
      /// [google.cloud.compute.v1.reservationBlocks.performMaintenance]: <doc:ReservationBlocks/performMaintenance(request:)>
      public var body: ReservationsBlocksPerformMaintenanceRequest? = 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.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.reservationBlocks.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.reservationBlocks.setIamPolicy] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.setIamPolicy]: <doc:ReservationBlocks/setIamPolicy(request:)>
    public struct SetIamPolicyRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name or id of parent resource of the resource for this request.
      public var parentResource: Swift.String = Swift.String()

      /// 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.reservationBlocks.setIamPolicy] method.
      ///
      /// [google.cloud.compute.v1.reservationBlocks.setIamPolicy]: <doc:ReservationBlocks/setIamPolicy(request:)>
      public var body: ZoneSetNestedPolicyRequest? = 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.parentResource = ... }
      /// ```
      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.reservationBlocks.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 [testIamPermissions()][google.cloud.compute.v1.reservationBlocks.testIamPermissions] method.
    ///
    /// [google.cloud.compute.v1.reservationBlocks.testIamPermissions]: <doc:ReservationBlocks/testIamPermissions(request:)>
    public struct TestIamPermissionsRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name or id of parent resource of the resource for this request.
      public var parentResource: Swift.String = Swift.String()

      /// 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.reservationBlocks.testIamPermissions] method.
      ///
      /// [google.cloud.compute.v1.reservationBlocks.testIamPermissions]: <doc:ReservationBlocks/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.parentResource = ... }
      /// ```
      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.reservationBlocks.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
