| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 | // Copyright 2024 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////     http://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.syntax = "proto3";package google.api;import "google/api/launch_stage.proto";import "google/protobuf/descriptor.proto";import "google/protobuf/duration.proto";option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";option java_multiple_files = true;option java_outer_classname = "ClientProto";option java_package = "com.google.api";option objc_class_prefix = "GAPI";extend google.protobuf.MethodOptions {  // A definition of a client library method signature.  //  // In client libraries, each proto RPC corresponds to one or more methods  // which the end user is able to call, and calls the underlying RPC.  // Normally, this method receives a single argument (a struct or instance  // corresponding to the RPC request object). Defining this field will  // add one or more overloads providing flattened or simpler method signatures  // in some languages.  //  // The fields on the method signature are provided as a comma-separated  // string.  //  // For example, the proto RPC and annotation:  //  //   rpc CreateSubscription(CreateSubscriptionRequest)  //       returns (Subscription) {  //     option (google.api.method_signature) = "name,topic";  //   }  //  // Would add the following Java overload (in addition to the method accepting  // the request object):  //  //   public final Subscription createSubscription(String name, String topic)  //  // The following backwards-compatibility guidelines apply:  //  //   * Adding this annotation to an unannotated method is backwards  //     compatible.  //   * Adding this annotation to a method which already has existing  //     method signature annotations is backwards compatible if and only if  //     the new method signature annotation is last in the sequence.  //   * Modifying or removing an existing method signature annotation is  //     a breaking change.  //   * Re-ordering existing method signature annotations is a breaking  //     change.  repeated string method_signature = 1051;}extend google.protobuf.ServiceOptions {  // The hostname for this service.  // This should be specified with no prefix or protocol.  //  // Example:  //  //   service Foo {  //     option (google.api.default_host) = "foo.googleapi.com";  //     ...  //   }  string default_host = 1049;  // OAuth scopes needed for the client.  //  // Example:  //  //   service Foo {  //     option (google.api.oauth_scopes) = \  //       "https://www.googleapis.com/auth/cloud-platform";  //     ...  //   }  //  // If there is more than one scope, use a comma-separated string:  //  // Example:  //  //   service Foo {  //     option (google.api.oauth_scopes) = \  //       "https://www.googleapis.com/auth/cloud-platform,"  //       "https://www.googleapis.com/auth/monitoring";  //     ...  //   }  string oauth_scopes = 1050;  // The API version of this service, which should be sent by version-aware  // clients to the service. This allows services to abide by the schema and  // behavior of the service at the time this API version was deployed.  // The format of the API version must be treated as opaque by clients.  // Services may use a format with an apparent structure, but clients must  // not rely on this to determine components within an API version, or attempt  // to construct other valid API versions. Note that this is for upcoming  // functionality and may not be implemented for all services.  //  // Example:  //  //   service Foo {  //     option (google.api.api_version) = "v1_20230821_preview";  //   }  string api_version = 525000001;}// Required information for every language.message CommonLanguageSettings {  // Link to automatically generated reference documentation.  Example:  // https://cloud.google.com/nodejs/docs/reference/asset/latest  string reference_docs_uri = 1 [deprecated = true];  // The destination where API teams want this client library to be published.  repeated ClientLibraryDestination destinations = 2;}// Details about how and where to publish client libraries.message ClientLibrarySettings {  // Version of the API to apply these settings to. This is the full protobuf  // package for the API, ending in the version element.  // Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".  string version = 1;  // Launch stage of this version of the API.  LaunchStage launch_stage = 2;  // When using transport=rest, the client request will encode enums as  // numbers rather than strings.  bool rest_numeric_enums = 3;  // Settings for legacy Java features, supported in the Service YAML.  JavaSettings java_settings = 21;  // Settings for C++ client libraries.  CppSettings cpp_settings = 22;  // Settings for PHP client libraries.  PhpSettings php_settings = 23;  // Settings for Python client libraries.  PythonSettings python_settings = 24;  // Settings for Node client libraries.  NodeSettings node_settings = 25;  // Settings for .NET client libraries.  DotnetSettings dotnet_settings = 26;  // Settings for Ruby client libraries.  RubySettings ruby_settings = 27;  // Settings for Go client libraries.  GoSettings go_settings = 28;}// 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.message Publishing {  // A list of API method settings, e.g. the behavior for methods that use the  // long-running operation pattern.  repeated MethodSettings method_settings = 2;  // Link to a *public* URI where users can report issues.  Example:  // https://issuetracker.google.com/issues/new?component=190865&template=1161103  string new_issue_uri = 101;  // Link to product home page.  Example:  // https://cloud.google.com/asset-inventory/docs/overview  string documentation_uri = 102;  // Used as a tracking tag when collecting data about the APIs developer  // relations artifacts like docs, packages delivered to package managers,  // etc.  Example: "speech".  string api_short_name = 103;  // GitHub label to apply to issues and pull requests opened for this API.  string github_label = 104;  // GitHub teams to be added to CODEOWNERS in the directory in GitHub  // containing source code for the client libraries for this API.  repeated string codeowner_github_teams = 105;  // A prefix used in sample code when demarking regions to be included in  // documentation.  string doc_tag_prefix = 106;  // For whom the client library is being published.  ClientLibraryOrganization organization = 107;  // 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.  repeated ClientLibrarySettings library_settings = 109;  // Optional link to proto reference documentation.  Example:  // https://cloud.google.com/pubsub/lite/docs/reference/rpc  string proto_reference_documentation_uri = 110;  // Optional link to REST reference documentation.  Example:  // https://cloud.google.com/pubsub/lite/docs/reference/rest  string rest_reference_documentation_uri = 111;}// Settings for Java client libraries.message JavaSettings {  // The package name to use in Java. Clobbers the java_package option  // set in the protobuf. This should be used **only** by APIs  // who have already set the language_settings.java.package_name" field  // in gapic.yaml. API teams should use the protobuf java_package option  // where possible.  //  // Example of a YAML configuration::  //  //  publishing:  //    java_settings:  //      library_package: com.google.cloud.pubsub.v1  string library_package = 1;  // Configure the Java class name to use instead of the service's for its  // corresponding generated GAPIC client. Keys are fully-qualified  // service names as they appear in the protobuf (including the full  // the language_settings.java.interface_names" field in gapic.yaml. API  // teams should otherwise use the service name as it appears in the  // protobuf.  //  // Example of a YAML configuration::  //  //  publishing:  //    java_settings:  //      service_class_names:  //        - google.pubsub.v1.Publisher: TopicAdmin  //        - google.pubsub.v1.Subscriber: SubscriptionAdmin  map<string, string> service_class_names = 2;  // Some settings.  CommonLanguageSettings common = 3;}// Settings for C++ client libraries.message CppSettings {  // Some settings.  CommonLanguageSettings common = 1;}// Settings for Php client libraries.message PhpSettings {  // Some settings.  CommonLanguageSettings common = 1;}// Settings for Python client libraries.message PythonSettings {  // Experimental features to be included during client library generation.  // These fields will be deprecated once the feature graduates and is enabled  // by default.  message ExperimentalFeatures {    // Enables generation of asynchronous REST clients if `rest` transport is    // enabled. By default, asynchronous REST clients will not be generated.    // This feature will be enabled by default 1 month after launching the    // feature in preview packages.    bool rest_async_io_enabled = 1;  }  // Some settings.  CommonLanguageSettings common = 1;  // Experimental features to be included during client library generation.  ExperimentalFeatures experimental_features = 2;}// Settings for Node client libraries.message NodeSettings {  // Some settings.  CommonLanguageSettings common = 1;}// Settings for Dotnet client libraries.message DotnetSettings {  // Some settings.  CommonLanguageSettings common = 1;  // Map from original service names to renamed versions.  // This is used when the default generated types  // would cause a naming conflict. (Neither name is  // fully-qualified.)  // Example: Subscriber to SubscriberServiceApi.  map<string, string> renamed_services = 2;  // Map from full resource types to the effective short name  // for the resource. This is used when otherwise resource  // named from different services would cause naming collisions.  // Example entry:  // "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"  map<string, string> renamed_resources = 3;  // List of full resource types to ignore during generation.  // This is typically used for API-specific Location resources,  // which should be handled by the generator as if they were actually  // the common Location resources.  // Example entry: "documentai.googleapis.com/Location"  repeated string ignored_resources = 4;  // Namespaces which must be aliased in snippets due to  // a known (but non-generator-predictable) naming collision  repeated string forced_namespace_aliases = 5;  // Method signatures (in the form "service.method(signature)")  // which are provided separately, so shouldn't be generated.  // Snippets *calling* these methods are still generated, however.  repeated string handwritten_signatures = 6;}// Settings for Ruby client libraries.message RubySettings {  // Some settings.  CommonLanguageSettings common = 1;}// Settings for Go client libraries.message GoSettings {  // Some settings.  CommonLanguageSettings common = 1;}// Describes the generator configuration for a method.message MethodSettings {  // Describes settings to use when generating API methods that use the  // long-running operation pattern.  // All default values below are from those used in the client library  // generators (e.g.  // [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).  message LongRunning {    // Initial delay after which the first poll request will be made.    // Default value: 5 seconds.    google.protobuf.Duration initial_poll_delay = 1;    // Multiplier to gradually increase delay between subsequent polls until it    // reaches max_poll_delay.    // Default value: 1.5.    float poll_delay_multiplier = 2;    // Maximum time between two subsequent poll requests.    // Default value: 45 seconds.    google.protobuf.Duration max_poll_delay = 3;    // Total polling timeout.    // Default value: 5 minutes.    google.protobuf.Duration total_poll_timeout = 4;  }  // The fully qualified name of the method, for which the options below apply.  // This is used to find the method to apply the options.  //  // Example:  //  //    publishing:  //      method_settings:  //      - selector: google.storage.control.v2.StorageControl.CreateFolder  //        # method settings for CreateFolder...  string selector = 1;  // Describes settings to use for long-running operations when generating  // API methods for RPCs. Complements RPCs that use the annotations in  // google/longrunning/operations.proto.  //  // Example of a YAML configuration::  //  //    publishing:  //      method_settings:  //      - selector: google.cloud.speech.v2.Speech.BatchRecognize  //        long_running:  //          initial_poll_delay: 60s # 1 minute  //          poll_delay_multiplier: 1.5  //          max_poll_delay: 360s # 6 minutes  //          total_poll_timeout: 54000s # 90 minutes  LongRunning long_running = 2;  // List of top-level fields of the request message, that should be  // automatically populated by the client libraries based on their  // (google.api.field_info).format. Currently supported format: UUID4.  //  // Example of a YAML configuration:  //  //    publishing:  //      method_settings:  //      - selector: google.example.v1.ExampleService.CreateExample  //        auto_populated_fields:  //        - request_id  repeated string auto_populated_fields = 3;}// The organization for which the client libraries are being published.// Affects the url where generated docs are published, etc.enum ClientLibraryOrganization {  // Not useful.  CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0;  // Google Cloud Platform Org.  CLOUD = 1;  // Ads (Advertising) Org.  ADS = 2;  // Photos Org.  PHOTOS = 3;  // Street View Org.  STREET_VIEW = 4;  // Shopping Org.  SHOPPING = 5;  // Geo Org.  GEO = 6;  // Generative AI - https://developers.generativeai.google  GENERATIVE_AI = 7;}// To where should client libraries be published?enum ClientLibraryDestination {  // Client libraries will neither be generated nor published to package  // managers.  CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0;  // Generate the client library in a repo under github.com/googleapis,  // but don't publish it to package managers.  GITHUB = 10;  // Publish the library to package managers like nuget.org and npmjs.com.  PACKAGE_MANAGER = 20;}
 |