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

/// The BatchTranslateDocument request.
public struct BatchTranslateDocumentRequest: Codable, Equatable, GoogleCloudWkt._AnyPackable,
  Sendable
{
  /// Required. Location to make a regional call.
  ///
  /// Format: `projects/{project-number-or-id}/locations/{location-id}`.
  ///
  /// The `global` location is not supported for batch translation.
  ///
  /// Only AutoML Translation models or glossaries within the same region (have
  /// the same location-id) can be used, otherwise an INVALID_ARGUMENT (400)
  /// error is returned.
  public var parent: Swift.String = Swift.String()

  /// Required. The ISO-639 language code of the input document if known, for
  /// example, "en-US" or "sr-Latn". Supported language codes are listed in
  /// [Language Support](https://cloud.google.com/translate/docs/languages).
  public var sourceLanguageCode: Swift.String = Swift.String()

  /// Required. The ISO-639 language code to use for translation of the input
  /// document. Specify up to 10 language codes here. Supported language codes
  /// are listed in [Language
  /// Support](https://cloud.google.com/translate/docs/languages).
  public var targetLanguageCodes: [Swift.String] = []

  /// Required. Input configurations.
  /// The total number of files matched should be <= 100.
  /// The total content size to translate should be <= 100M Unicode codepoints.
  /// The files must use UTF-8 encoding.
  public var inputConfigs: [BatchDocumentInputConfig] = []

  /// Required. Output configuration.
  /// If 2 input configs match to the same file (that is, same input path),
  /// we don't generate output for duplicate inputs.
  public var outputConfig: BatchDocumentOutputConfig? = nil

  /// Optional. The models to use for translation. Map's key is target language
  /// code. Map's value is the model name. Value can be a built-in general model,
  /// or an AutoML Translation model.
  ///
  /// The value format depends on model type:
  ///
  /// - AutoML Translation models:
  ///   `projects/{project-number-or-id}/locations/{location-id}/models/{model-id}`
  ///
  /// - General (built-in) models:
  ///   `projects/{project-number-or-id}/locations/{location-id}/models/general/nmt`,
  ///
  ///
  /// If the map is empty or a specific model is
  /// not requested for a language pair, then default google model (nmt) is used.
  public var models: [Swift.String: Swift.String] = [:]

  /// Optional. Glossaries to be applied. It's keyed by target language code.
  public var glossaries: [Swift.String: TranslateTextGlossaryConfig] = [:]

  /// Optional. The file format conversion map that is applied to all input
  /// files. The map key is the original mime_type. The map value is the target
  /// mime_type of translated documents.
  ///
  /// Supported file format conversion includes:
  /// - `application/pdf` to
  ///   `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
  ///
  /// If nothing specified, output files will be in the same format as the
  /// original file.
  public var formatConversions: [Swift.String: Swift.String] = [:]

  /// Optional. This flag is to support user customized attribution.
  /// If not provided, the default is `Machine Translated by Google`.
  /// Customized attribution should follow rules in
  /// https://cloud.google.com/translate/attribution#attribution_and_logos
  public var customizedAttribution: Swift.String = Swift.String()

  /// Optional. If true, use the text removal server to remove the shadow text on
  /// background image for native pdf translation.
  /// Shadow removal feature can only be enabled when
  /// is_translate_native_pdf_only: false && pdf_native_only: false
  public var enableShadowRemovalNativePdf: Swift.Bool = Swift.Bool()

  /// Optional. If true, enable auto rotation correction in DVS.
  public var enableRotationCorrection: Swift.Bool = Swift.Bool()

  /// Initialize a new instance of `BatchTranslateDocumentRequest`.
  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 = BatchTranslateDocumentRequest().with { $0.parent = ... }
  /// ```
  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.translation.v3.BatchTranslateDocumentRequest"
  }
  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)
  }
}
