// 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.

import Foundation
import GoogleCloudWkt

/// This message configures the settings for publishing [Google Cloud Client
/// libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)
/// generated from the service config.
public struct Publishing: Codable, Equatable, GoogleCloudWkt._AnyPackable,
  Sendable
{
  /// A list of API method settings, e.g. the behavior for methods that use the
  /// long-running operation pattern.
  public var methodSettings: [MethodSettings] = []

  /// Link to a *public* URI where users can report issues.  Example:
  /// https://issuetracker.google.com/issues/new?component=190865&template=1161103
  public var newIssueUri: Swift.String = Swift.String()

  /// Link to product home page.  Example:
  /// https://cloud.google.com/asset-inventory/docs/overview
  public var documentationUri: Swift.String = Swift.String()

  /// Used as a tracking tag when collecting data about the APIs developer
  /// relations artifacts like docs, packages delivered to package managers,
  /// etc.  Example: "speech".
  public var apiShortName: Swift.String = Swift.String()

  /// GitHub label to apply to issues and pull requests opened for this API.
  public var githubLabel: Swift.String = Swift.String()

  /// GitHub teams to be added to CODEOWNERS in the directory in GitHub
  /// containing source code for the client libraries for this API.
  public var codeownerGithubTeams: [Swift.String] = []

  /// A prefix used in sample code when demarking regions to be included in
  /// documentation.
  public var docTagPrefix: Swift.String = Swift.String()

  /// For whom the client library is being published.
  public var organization: ClientLibraryOrganization = ClientLibraryOrganization()

  /// Client library settings.  If the same version string appears multiple
  /// times in this list, then the last one wins.  Settings from earlier
  /// settings with the same version string are discarded.
  public var librarySettings: [ClientLibrarySettings] = []

  /// Optional link to proto reference documentation.  Example:
  /// https://cloud.google.com/pubsub/lite/docs/reference/rpc
  public var protoReferenceDocumentationUri: Swift.String = Swift.String()

  /// Optional link to REST reference documentation.  Example:
  /// https://cloud.google.com/pubsub/lite/docs/reference/rest
  public var restReferenceDocumentationUri: Swift.String = Swift.String()

  /// Initialize a new instance of `Publishing`.
  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 = Publishing().with { $0.methodSettings = ... }
  /// ```
  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.api.Publishing"
  }
  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)
  }
}
