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

  extension NetworksClient {
    /// Synthetic request message for the [addPeering()][google.cloud.compute.v1.networks.addPeering] method.
    ///
    /// [google.cloud.compute.v1.networks.addPeering]: <doc:Networks/addPeering(request:)>
    public struct AddPeeringRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network resource to add peering to.
      public var network: 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

      /// Synthetic request body field for the [addPeering()][google.cloud.compute.v1.networks.addPeering] method.
      ///
      /// [google.cloud.compute.v1.networks.addPeering]: <doc:Networks/addPeering(request:)>
      public var body: NetworksAddPeeringRequest? = nil

      /// Initialize a new instance of `AddPeeringRequest`.
      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 = AddPeeringRequest().with { $0.network = ... }
      /// ```
      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.networks.addPeeringRequest"
      }
      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 [cancelRequestRemovePeering()][google.cloud.compute.v1.networks.cancelRequestRemovePeering] method.
    ///
    /// [google.cloud.compute.v1.networks.cancelRequestRemovePeering]: <doc:Networks/cancelRequestRemovePeering(request:)>
    public struct CancelRequestRemovePeeringRequest: Codable, Equatable, GoogleCloudWkt
        ._AnyPackable,
      Sendable
    {
      /// Name of the network resource to remove peering from.
      public var network: 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

      /// Synthetic request body field for the [cancelRequestRemovePeering()][google.cloud.compute.v1.networks.cancelRequestRemovePeering] method.
      ///
      /// [google.cloud.compute.v1.networks.cancelRequestRemovePeering]: <doc:Networks/cancelRequestRemovePeering(request:)>
      public var body: NetworksCancelRequestRemovePeeringRequest? = nil

      /// Initialize a new instance of `CancelRequestRemovePeeringRequest`.
      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 = CancelRequestRemovePeeringRequest().with { $0.network = ... }
      /// ```
      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.networks.cancelRequestRemovePeeringRequest"
      }
      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.networks.delete] method.
    ///
    /// [google.cloud.compute.v1.networks.delete]: <doc:Networks/delete(request:)>
    public struct DeleteRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network to delete.
      public var network: 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

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

      /// Project ID for this request.
      public var project: 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.network = ... }
      /// ```
      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.networks.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 [getEffectiveFirewalls()][google.cloud.compute.v1.networks.getEffectiveFirewalls] method.
    ///
    /// [google.cloud.compute.v1.networks.getEffectiveFirewalls]: <doc:Networks/getEffectiveFirewalls(request:)>
    public struct GetEffectiveFirewallsRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network for this request.
      public var network: Swift.String = Swift.String()

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

      /// Initialize a new instance of `GetEffectiveFirewallsRequest`.
      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 = GetEffectiveFirewallsRequest().with { $0.network = ... }
      /// ```
      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.networks.getEffectiveFirewallsRequest"
      }
      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.networks.insert] method.
    ///
    /// [google.cloud.compute.v1.networks.insert]: <doc:Networks/insert(request:)>
    public struct InsertRequest: 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

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

      /// 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.networks.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 [listPeeringRoutes()][google.cloud.compute.v1.networks.listPeeringRoutes] method.
    ///
    /// [google.cloud.compute.v1.networks.listPeeringRoutes]: <doc:Networks/listPeeringRoutes(request:)>
    public struct ListPeeringRoutesRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// The direction of the exchanged routes.
      public var direction: NetworksClient.ListPeeringRoutesRequest.Direction? = nil

      /// 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 network for this request.
      public var network: 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

      /// The response will show routes exchanged over the given peering connection.
      public var peeringName: Swift.String? = nil

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

      /// The region of the request. The response will include all subnet routes,
      /// static routes and dynamic routes in the region.
      public var region: Swift.String? = nil

      /// 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 `ListPeeringRoutesRequest`.
      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 = ListPeeringRoutesRequest().with { $0.direction = ... }
      /// ```
      public func with(_ config: (inout Self) throws -> Swift.Void) rethrows -> Self {
        var copy = self
        try config(&copy)
        return copy
      }

      /// The enumerated type for the [direction][google.cloud.compute.v1.networks.listPeeringRoutesRequest.direction] field.
      ///
      /// [google.cloud.compute.v1.networks.listPeeringRoutesRequest.direction]: <doc:NetworksClient/ListPeeringRoutesRequest/Direction>
      public enum Direction: Codable, Equatable, Sendable {
        /// For routes exported from peer network.
        case incoming
        /// For routes exported from local network.
        case outgoing
        /// 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 = .incoming
        }

        /// 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 .incoming: return 0
          case .outgoing: return 1
          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 .incoming: return "INCOMING"
          case .outgoing: return "OUTGOING"
          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:Direction/unknownStringValue(_:)).
        public init(stringValue: Swift.String) {
          switch stringValue {
          case "INCOMING": self = .incoming
          case "OUTGOING": self = .outgoing
          default: self = .unknownStringValue(stringValue)
          }
        }

        /// Initialize from an integer value.
        ///
        /// If the value is unknown, this initializes to [`unknownIntValue`](doc:Direction/unknownIntValue(_:)).
        public init(intValue: Int) {
          switch intValue {
          case 0: self = .incoming
          case 1: self = .outgoing
          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 .incoming: return try container.encode(0)
          case .outgoing: return try container.encode(1)
          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.networks.listPeeringRoutesRequest"
      }
      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.networks.patch] method.
    ///
    /// [google.cloud.compute.v1.networks.patch]: <doc:Networks/patch(request:)>
    public struct PatchRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network to update.
      public var network: 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

      /// Synthetic request body field for the [patch()][google.cloud.compute.v1.networks.patch] method.
      ///
      /// [google.cloud.compute.v1.networks.patch]: <doc:Networks/patch(request:)>
      public var body: Network? = 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.network = ... }
      /// ```
      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.networks.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 [removePeering()][google.cloud.compute.v1.networks.removePeering] method.
    ///
    /// [google.cloud.compute.v1.networks.removePeering]: <doc:Networks/removePeering(request:)>
    public struct RemovePeeringRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network resource to remove peering from.
      public var network: 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

      /// Synthetic request body field for the [removePeering()][google.cloud.compute.v1.networks.removePeering] method.
      ///
      /// [google.cloud.compute.v1.networks.removePeering]: <doc:Networks/removePeering(request:)>
      public var body: NetworksRemovePeeringRequest? = nil

      /// Initialize a new instance of `RemovePeeringRequest`.
      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 = RemovePeeringRequest().with { $0.network = ... }
      /// ```
      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.networks.removePeeringRequest"
      }
      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 [requestRemovePeering()][google.cloud.compute.v1.networks.requestRemovePeering] method.
    ///
    /// [google.cloud.compute.v1.networks.requestRemovePeering]: <doc:Networks/requestRemovePeering(request:)>
    public struct RequestRemovePeeringRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network resource to remove peering from.
      public var network: 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

      /// Synthetic request body field for the [requestRemovePeering()][google.cloud.compute.v1.networks.requestRemovePeering] method.
      ///
      /// [google.cloud.compute.v1.networks.requestRemovePeering]: <doc:Networks/requestRemovePeering(request:)>
      public var body: NetworksRequestRemovePeeringRequest? = nil

      /// Initialize a new instance of `RequestRemovePeeringRequest`.
      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 = RequestRemovePeeringRequest().with { $0.network = ... }
      /// ```
      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.networks.requestRemovePeeringRequest"
      }
      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 [switchToCustomMode()][google.cloud.compute.v1.networks.switchToCustomMode] method.
    ///
    /// [google.cloud.compute.v1.networks.switchToCustomMode]: <doc:Networks/switchToCustomMode(request:)>
    public struct SwitchToCustomModeRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network to be updated.
      public var network: 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

      /// Initialize a new instance of `SwitchToCustomModeRequest`.
      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 = SwitchToCustomModeRequest().with { $0.network = ... }
      /// ```
      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.networks.switchToCustomModeRequest"
      }
      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 [updatePeering()][google.cloud.compute.v1.networks.updatePeering] method.
    ///
    /// [google.cloud.compute.v1.networks.updatePeering]: <doc:Networks/updatePeering(request:)>
    public struct UpdatePeeringRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
      Sendable
    {
      /// Name of the network resource which the updated peering is belonging to.
      public var network: 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

      /// Synthetic request body field for the [updatePeering()][google.cloud.compute.v1.networks.updatePeering] method.
      ///
      /// [google.cloud.compute.v1.networks.updatePeering]: <doc:Networks/updatePeering(request:)>
      public var body: NetworksUpdatePeeringRequest? = nil

      /// Initialize a new instance of `UpdatePeeringRequest`.
      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 = UpdatePeeringRequest().with { $0.network = ... }
      /// ```
      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.networks.updatePeeringRequest"
      }
      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
