diff options
Diffstat (limited to 'src/rpc/google.api.rs')
| -rw-r--r-- | src/rpc/google.api.rs | 1439 |
1 files changed, 0 insertions, 1439 deletions
diff --git a/src/rpc/google.api.rs b/src/rpc/google.api.rs deleted file mode 100644 index 3b3ad2f7..00000000 --- a/src/rpc/google.api.rs +++ /dev/null @@ -1,1439 +0,0 @@ -// @generated -// This file is @generated by prost-build. -/// Defines the HTTP configuration for an API service. It contains a list of -/// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -/// to one or more HTTP REST API methods. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Http { - /// A list of HTTP configuration rules that apply to individual API methods. - /// - /// **NOTE:** All service configuration rules follow "last one wins" order. - #[prost(message, repeated, tag="1")] - pub rules: ::prost::alloc::vec::Vec<HttpRule>, - /// When set to true, URL path parameters will be fully URI-decoded except in - /// cases of single segment matches in reserved expansion, where "%2F" will be - /// left encoded. - /// - /// The default behavior is to not decode RFC 6570 reserved characters in multi - /// segment matches. - #[prost(bool, tag="2")] - pub fully_decode_reserved_expansion: bool, -} -/// gRPC Transcoding -/// -/// gRPC Transcoding is a feature for mapping between a gRPC method and one or -/// more HTTP REST endpoints. It allows developers to build a single API service -/// that supports both gRPC APIs and REST APIs. Many systems, including [Google -/// APIs](<https://github.com/googleapis/googleapis>), -/// [Cloud Endpoints](<https://cloud.google.com/endpoints>), [gRPC -/// Gateway](<https://github.com/grpc-ecosystem/grpc-gateway>), -/// and [Envoy](<https://github.com/envoyproxy/envoy>) proxy support this feature -/// and use it for large scale production services. -/// -/// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies -/// how different portions of the gRPC request message are mapped to the URL -/// path, URL query parameters, and HTTP request body. It also controls how the -/// gRPC response message is mapped to the HTTP response body. `HttpRule` is -/// typically specified as an `google.api.http` annotation on the gRPC method. -/// -/// Each mapping specifies a URL path template and an HTTP method. The path -/// template may refer to one or more fields in the gRPC request message, as long -/// as each field is a non-repeated field with a primitive (non-message) type. -/// The path template controls how fields of the request message are mapped to -/// the URL path. -/// -/// Example: -/// -/// service Messaging { -/// rpc GetMessage(GetMessageRequest) returns (Message) { -/// option (google.api.http) = { -/// get: "/v1/{name=messages/*}" -/// }; -/// } -/// } -/// message GetMessageRequest { -/// string name = 1; // Mapped to URL path. -/// } -/// message Message { -/// string text = 1; // The resource content. -/// } -/// -/// This enables an HTTP REST to gRPC mapping as below: -/// -/// - HTTP: `GET /v1/messages/123456` -/// - gRPC: `GetMessage(name: "messages/123456")` -/// -/// Any fields in the request message which are not bound by the path template -/// automatically become HTTP query parameters if there is no HTTP request body. -/// For example: -/// -/// service Messaging { -/// rpc GetMessage(GetMessageRequest) returns (Message) { -/// option (google.api.http) = { -/// get:"/v1/messages/{message_id}" -/// }; -/// } -/// } -/// message GetMessageRequest { -/// message SubMessage { -/// string subfield = 1; -/// } -/// string message_id = 1; // Mapped to URL path. -/// int64 revision = 2; // Mapped to URL query parameter `revision`. -/// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. -/// } -/// -/// This enables a HTTP JSON to RPC mapping as below: -/// -/// - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo` -/// - gRPC: `GetMessage(message_id: "123456" revision: 2 sub: -/// SubMessage(subfield: "foo"))` -/// -/// Note that fields which are mapped to URL query parameters must have a -/// primitive type or a repeated primitive type or a non-repeated message type. -/// In the case of a repeated type, the parameter can be repeated in the URL -/// as `...?param=A¶m=B`. In the case of a message type, each field of the -/// message is mapped to a separate parameter, such as -/// `...?foo.a=A&foo.b=B&foo.c=C`. -/// -/// For HTTP methods that allow a request body, the `body` field -/// specifies the mapping. Consider a REST update method on the -/// message resource collection: -/// -/// service Messaging { -/// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -/// option (google.api.http) = { -/// patch: "/v1/messages/{message_id}" -/// body: "message" -/// }; -/// } -/// } -/// message UpdateMessageRequest { -/// string message_id = 1; // mapped to the URL -/// Message message = 2; // mapped to the body -/// } -/// -/// The following HTTP JSON to RPC mapping is enabled, where the -/// representation of the JSON in the request body is determined by -/// protos JSON encoding: -/// -/// - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` -/// - gRPC: `UpdateMessage(message_id: "123456" message { text: "Hi!" })` -/// -/// The special name `*` can be used in the body mapping to define that -/// every field not bound by the path template should be mapped to the -/// request body. This enables the following alternative definition of -/// the update method: -/// -/// service Messaging { -/// rpc UpdateMessage(Message) returns (Message) { -/// option (google.api.http) = { -/// patch: "/v1/messages/{message_id}" -/// body: "*" -/// }; -/// } -/// } -/// message Message { -/// string message_id = 1; -/// string text = 2; -/// } -/// -/// -/// The following HTTP JSON to RPC mapping is enabled: -/// -/// - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` -/// - gRPC: `UpdateMessage(message_id: "123456" text: "Hi!")` -/// -/// Note that when using `*` in the body mapping, it is not possible to -/// have HTTP parameters, as all fields not bound by the path end in -/// the body. This makes this option more rarely used in practice when -/// defining REST APIs. The common usage of `*` is in custom methods -/// which don't use the URL at all for transferring data. -/// -/// It is possible to define multiple HTTP methods for one RPC by using -/// the `additional_bindings` option. Example: -/// -/// service Messaging { -/// rpc GetMessage(GetMessageRequest) returns (Message) { -/// option (google.api.http) = { -/// get: "/v1/messages/{message_id}" -/// additional_bindings { -/// get: "/v1/users/{user_id}/messages/{message_id}" -/// } -/// }; -/// } -/// } -/// message GetMessageRequest { -/// string message_id = 1; -/// string user_id = 2; -/// } -/// -/// This enables the following two alternative HTTP JSON to RPC mappings: -/// -/// - HTTP: `GET /v1/messages/123456` -/// - gRPC: `GetMessage(message_id: "123456")` -/// -/// - HTTP: `GET /v1/users/me/messages/123456` -/// - gRPC: `GetMessage(user_id: "me" message_id: "123456")` -/// -/// Rules for HTTP mapping -/// -/// 1. Leaf request fields (recursive expansion nested messages in the request -/// message) are classified into three categories: -/// - Fields referred by the path template. They are passed via the URL path. -/// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They -/// are passed via the HTTP -/// request body. -/// - All other fields are passed via the URL query parameters, and the -/// parameter name is the field path in the request message. A repeated -/// field can be represented as multiple query parameters under the same -/// name. -/// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL -/// query parameter, all fields -/// are passed via URL path and HTTP request body. -/// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP -/// request body, all -/// fields are passed via URL path and URL query parameters. -/// -/// Path template syntax -/// -/// Template = "/" Segments \[ Verb \] ; -/// Segments = Segment { "/" Segment } ; -/// Segment = "*" | "**" | LITERAL | Variable ; -/// Variable = "{" FieldPath \[ "=" Segments \] "}" ; -/// FieldPath = IDENT { "." IDENT } ; -/// Verb = ":" LITERAL ; -/// -/// The syntax `*` matches a single URL path segment. The syntax `**` matches -/// zero or more URL path segments, which must be the last part of the URL path -/// except the `Verb`. -/// -/// The syntax `Variable` matches part of the URL path as specified by its -/// template. A variable template must not contain other variables. If a variable -/// matches a single path segment, its template may be omitted, e.g. `{var}` -/// is equivalent to `{var=*}`. -/// -/// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` -/// contains any reserved character, such characters should be percent-encoded -/// before the matching. -/// -/// If a variable contains exactly one path segment, such as `"{var}"` or -/// `"{var=*}"`, when such a variable is expanded into a URL path on the client -/// side, all characters except `\[-_.~0-9a-zA-Z\]` are percent-encoded. The -/// server side does the reverse decoding. Such variables show up in the -/// [Discovery -/// Document](<https://developers.google.com/discovery/v1/reference/apis>) as -/// `{var}`. -/// -/// If a variable contains multiple path segments, such as `"{var=foo/*}"` -/// or `"{var=**}"`, when such a variable is expanded into a URL path on the -/// client side, all characters except `\[-_.~/0-9a-zA-Z\]` are percent-encoded. -/// The server side does the reverse decoding, except "%2F" and "%2f" are left -/// unchanged. Such variables show up in the -/// [Discovery -/// Document](<https://developers.google.com/discovery/v1/reference/apis>) as -/// `{+var}`. -/// -/// Using gRPC API Service Configuration -/// -/// gRPC API Service Configuration (service config) is a configuration language -/// for configuring a gRPC service to become a user-facing product. The -/// service config is simply the YAML representation of the `google.api.Service` -/// proto message. -/// -/// As an alternative to annotating your proto file, you can configure gRPC -/// transcoding in your service config YAML files. You do this by specifying a -/// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same -/// effect as the proto annotation. This can be particularly useful if you -/// have a proto that is reused in multiple services. Note that any transcoding -/// specified in the service config will override any matching transcoding -/// configuration in the proto. -/// -/// The following example selects a gRPC method and applies an `HttpRule` to it: -/// -/// http: -/// rules: -/// - selector: example.v1.Messaging.GetMessage -/// get: /v1/messages/{message_id}/{sub.subfield} -/// -/// Special notes -/// -/// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the -/// proto to JSON conversion must follow the [proto3 -/// specification](<https://developers.google.com/protocol-buffers/docs/proto3#json>). -/// -/// While the single segment variable follows the semantics of -/// [RFC 6570](<https://tools.ietf.org/html/rfc6570>) Section 3.2.2 Simple String -/// Expansion, the multi segment variable **does not** follow RFC 6570 Section -/// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion -/// does not expand special characters like `?` and `#`, which would lead -/// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding -/// for multi segment variables. -/// -/// The path variables **must not** refer to any repeated or mapped field, -/// because client libraries are not capable of handling such variable expansion. -/// -/// The path variables **must not** capture the leading "/" character. The reason -/// is that the most common use case "{var}" does not capture the leading "/" -/// character. For consistency, all path variables must share the same behavior. -/// -/// Repeated message fields must not be mapped to URL query parameters, because -/// no client library can support such complicated mapping. -/// -/// If an API needs to use a JSON array for request or response body, it can map -/// the request or response body to a repeated field. However, some gRPC -/// Transcoding implementations may not support this feature. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct HttpRule { - /// Selects a method to which this rule applies. - /// - /// Refer to [selector][google.api.DocumentationRule.selector] for syntax - /// details. - #[prost(string, tag="1")] - pub selector: ::prost::alloc::string::String, - /// The name of the request field whose value is mapped to the HTTP request - /// body, or `*` for mapping all request fields not captured by the path - /// pattern to the HTTP body, or omitted for not having any HTTP request body. - /// - /// NOTE: the referred field must be present at the top-level of the request - /// message type. - #[prost(string, tag="7")] - pub body: ::prost::alloc::string::String, - /// Optional. The name of the response field whose value is mapped to the HTTP - /// response body. When omitted, the entire response message will be used - /// as the HTTP response body. - /// - /// NOTE: The referred field must be present at the top-level of the response - /// message type. - #[prost(string, tag="12")] - pub response_body: ::prost::alloc::string::String, - /// Additional HTTP bindings for the selector. Nested bindings must - /// not contain an `additional_bindings` field themselves (that is, - /// the nesting may only be one level deep). - #[prost(message, repeated, tag="11")] - pub additional_bindings: ::prost::alloc::vec::Vec<HttpRule>, - /// Determines the URL pattern is matched by this rules. This pattern can be - /// used with any of the {get|put|post|delete|patch} methods. A custom method - /// can be defined using the 'custom' field. - #[prost(oneof="http_rule::Pattern", tags="2, 3, 4, 5, 6, 8")] - pub pattern: ::core::option::Option<http_rule::Pattern>, -} -/// Nested message and enum types in `HttpRule`. -pub mod http_rule { - /// Determines the URL pattern is matched by this rules. This pattern can be - /// used with any of the {get|put|post|delete|patch} methods. A custom method - /// can be defined using the 'custom' field. - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Pattern { - /// Maps to HTTP GET. Used for listing and getting information about - /// resources. - #[prost(string, tag="2")] - Get(::prost::alloc::string::String), - /// Maps to HTTP PUT. Used for replacing a resource. - #[prost(string, tag="3")] - Put(::prost::alloc::string::String), - /// Maps to HTTP POST. Used for creating a resource or performing an action. - #[prost(string, tag="4")] - Post(::prost::alloc::string::String), - /// Maps to HTTP DELETE. Used for deleting a resource. - #[prost(string, tag="5")] - Delete(::prost::alloc::string::String), - /// Maps to HTTP PATCH. Used for updating a resource. - #[prost(string, tag="6")] - Patch(::prost::alloc::string::String), - /// The custom pattern is used for specifying an HTTP method that is not - /// included in the `pattern` field, such as HEAD, or "*" to leave the - /// HTTP method unspecified for this rule. The wild-card rule is useful - /// for services that provide content to Web (HTML) clients. - #[prost(message, tag="8")] - Custom(super::CustomHttpPattern), - } -} -/// A custom pattern is used for defining custom HTTP verb. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct CustomHttpPattern { - /// The name of this custom HTTP verb. - #[prost(string, tag="1")] - pub kind: ::prost::alloc::string::String, - /// The path matched by this custom verb. - #[prost(string, tag="2")] - pub path: ::prost::alloc::string::String, -} -/// The launch stage as defined by [Google Cloud Platform -/// Launch Stages](<https://cloud.google.com/terms/launch-stages>). -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum LaunchStage { - /// Do not use this default value. - Unspecified = 0, - /// The feature is not yet implemented. Users can not use it. - Unimplemented = 6, - /// Prelaunch features are hidden from users and are only visible internally. - Prelaunch = 7, - /// Early Access features are limited to a closed group of testers. To use - /// these features, you must sign up in advance and sign a Trusted Tester - /// agreement (which includes confidentiality provisions). These features may - /// be unstable, changed in backward-incompatible ways, and are not - /// guaranteed to be released. - EarlyAccess = 1, - /// Alpha is a limited availability test for releases before they are cleared - /// for widespread use. By Alpha, all significant design issues are resolved - /// and we are in the process of verifying functionality. Alpha customers - /// need to apply for access, agree to applicable terms, and have their - /// projects allowlisted. Alpha releases don't have to be feature complete, - /// no SLAs are provided, and there are no technical support obligations, but - /// they will be far enough along that customers can actually use them in - /// test environments or for limited-use tests -- just like they would in - /// normal production cases. - Alpha = 2, - /// Beta is the point at which we are ready to open a release for any - /// customer to use. There are no SLA or technical support obligations in a - /// Beta release. Products will be complete from a feature perspective, but - /// may have some open outstanding issues. Beta releases are suitable for - /// limited production use cases. - Beta = 3, - /// GA features are open to all developers and are considered stable and - /// fully qualified for production use. - Ga = 4, - /// Deprecated features are scheduled to be shut down and removed. For more - /// information, see the "Deprecation Policy" section of our [Terms of - /// Service](<https://cloud.google.com/terms/>) - /// and the [Google Cloud Platform Subject to the Deprecation - /// Policy](<https://cloud.google.com/terms/deprecation>) documentation. - Deprecated = 5, -} -impl LaunchStage { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - LaunchStage::Unspecified => "LAUNCH_STAGE_UNSPECIFIED", - LaunchStage::Unimplemented => "UNIMPLEMENTED", - LaunchStage::Prelaunch => "PRELAUNCH", - LaunchStage::EarlyAccess => "EARLY_ACCESS", - LaunchStage::Alpha => "ALPHA", - LaunchStage::Beta => "BETA", - LaunchStage::Ga => "GA", - LaunchStage::Deprecated => "DEPRECATED", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "LAUNCH_STAGE_UNSPECIFIED" => Some(Self::Unspecified), - "UNIMPLEMENTED" => Some(Self::Unimplemented), - "PRELAUNCH" => Some(Self::Prelaunch), - "EARLY_ACCESS" => Some(Self::EarlyAccess), - "ALPHA" => Some(Self::Alpha), - "BETA" => Some(Self::Beta), - "GA" => Some(Self::Ga), - "DEPRECATED" => Some(Self::Deprecated), - _ => None, - } - } -} -/// Required information for every language. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct CommonLanguageSettings { - /// Link to automatically generated reference documentation. Example: - /// <https://cloud.google.com/nodejs/docs/reference/asset/latest> - #[deprecated] - #[prost(string, tag="1")] - pub reference_docs_uri: ::prost::alloc::string::String, - /// The destination where API teams want this client library to be published. - #[prost(enumeration="ClientLibraryDestination", repeated, tag="2")] - pub destinations: ::prost::alloc::vec::Vec<i32>, - /// Configuration for which RPCs should be generated in the GAPIC client. - #[prost(message, optional, tag="3")] - pub selective_gapic_generation: ::core::option::Option<SelectiveGapicGeneration>, -} -/// Details about how and where to publish client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct 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". - #[prost(string, tag="1")] - pub version: ::prost::alloc::string::String, - /// Launch stage of this version of the API. - #[prost(enumeration="LaunchStage", tag="2")] - pub launch_stage: i32, - /// When using transport=rest, the client request will encode enums as - /// numbers rather than strings. - #[prost(bool, tag="3")] - pub rest_numeric_enums: bool, - /// Settings for legacy Java features, supported in the Service YAML. - #[prost(message, optional, tag="21")] - pub java_settings: ::core::option::Option<JavaSettings>, - /// Settings for C++ client libraries. - #[prost(message, optional, tag="22")] - pub cpp_settings: ::core::option::Option<CppSettings>, - /// Settings for PHP client libraries. - #[prost(message, optional, tag="23")] - pub php_settings: ::core::option::Option<PhpSettings>, - /// Settings for Python client libraries. - #[prost(message, optional, tag="24")] - pub python_settings: ::core::option::Option<PythonSettings>, - /// Settings for Node client libraries. - #[prost(message, optional, tag="25")] - pub node_settings: ::core::option::Option<NodeSettings>, - /// Settings for .NET client libraries. - #[prost(message, optional, tag="26")] - pub dotnet_settings: ::core::option::Option<DotnetSettings>, - /// Settings for Ruby client libraries. - #[prost(message, optional, tag="27")] - pub ruby_settings: ::core::option::Option<RubySettings>, - /// Settings for Go client libraries. - #[prost(message, optional, tag="28")] - pub go_settings: ::core::option::Option<GoSettings>, -} -/// 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. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Publishing { - /// A list of API method settings, e.g. the behavior for methods that use the - /// long-running operation pattern. - #[prost(message, repeated, tag="2")] - pub method_settings: ::prost::alloc::vec::Vec<MethodSettings>, - /// Link to a *public* URI where users can report issues. Example: - /// <https://issuetracker.google.com/issues/new?component=190865&template=1161103> - #[prost(string, tag="101")] - pub new_issue_uri: ::prost::alloc::string::String, - /// Link to product home page. Example: - /// <https://cloud.google.com/asset-inventory/docs/overview> - #[prost(string, tag="102")] - pub documentation_uri: ::prost::alloc::string::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". - #[prost(string, tag="103")] - pub api_short_name: ::prost::alloc::string::String, - /// GitHub label to apply to issues and pull requests opened for this API. - #[prost(string, tag="104")] - pub github_label: ::prost::alloc::string::String, - /// GitHub teams to be added to CODEOWNERS in the directory in GitHub - /// containing source code for the client libraries for this API. - #[prost(string, repeated, tag="105")] - pub codeowner_github_teams: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// A prefix used in sample code when demarking regions to be included in - /// documentation. - #[prost(string, tag="106")] - pub doc_tag_prefix: ::prost::alloc::string::String, - /// For whom the client library is being published. - #[prost(enumeration="ClientLibraryOrganization", tag="107")] - pub organization: i32, - /// 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. - #[prost(message, repeated, tag="109")] - pub library_settings: ::prost::alloc::vec::Vec<ClientLibrarySettings>, - /// Optional link to proto reference documentation. Example: - /// <https://cloud.google.com/pubsub/lite/docs/reference/rpc> - #[prost(string, tag="110")] - pub proto_reference_documentation_uri: ::prost::alloc::string::String, - /// Optional link to REST reference documentation. Example: - /// <https://cloud.google.com/pubsub/lite/docs/reference/rest> - #[prost(string, tag="111")] - pub rest_reference_documentation_uri: ::prost::alloc::string::String, -} -/// Settings for Java client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct 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 - #[prost(string, tag="1")] - pub library_package: ::prost::alloc::string::String, - /// 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 - #[prost(map="string, string", tag="2")] - pub service_class_names: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, - /// Some settings. - #[prost(message, optional, tag="3")] - pub common: ::core::option::Option<CommonLanguageSettings>, -} -/// Settings for C++ client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct CppSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, -} -/// Settings for Php client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct PhpSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, -} -/// Settings for Python client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct PythonSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, - /// Experimental features to be included during client library generation. - #[prost(message, optional, tag="2")] - pub experimental_features: ::core::option::Option<python_settings::ExperimentalFeatures>, -} -/// Nested message and enum types in `PythonSettings`. -pub mod python_settings { - /// Experimental features to be included during client library generation. - /// These fields will be deprecated once the feature graduates and is enabled - /// by default. - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] - pub struct 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. - #[prost(bool, tag="1")] - pub rest_async_io_enabled: bool, - /// Enables generation of protobuf code using new types that are more - /// Pythonic which are included in `protobuf>=5.29.x`. This feature will be - /// enabled by default 1 month after launching the feature in preview - /// packages. - #[prost(bool, tag="2")] - pub protobuf_pythonic_types_enabled: bool, - /// Disables generation of an unversioned Python package for this client - /// library. This means that the module names will need to be versioned in - /// import statements. For example `import google.cloud.library_v2` instead - /// of `import google.cloud.library`. - #[prost(bool, tag="3")] - pub unversioned_package_disabled: bool, - } -} -/// Settings for Node client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct NodeSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, -} -/// Settings for Dotnet client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct DotnetSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, - /// 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. - #[prost(map="string, string", tag="2")] - pub renamed_services: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, - /// 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" - #[prost(map="string, string", tag="3")] - pub renamed_resources: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, - /// 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" - #[prost(string, repeated, tag="4")] - pub ignored_resources: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// Namespaces which must be aliased in snippets due to - /// a known (but non-generator-predictable) naming collision - #[prost(string, repeated, tag="5")] - pub forced_namespace_aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// 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. - #[prost(string, repeated, tag="6")] - pub handwritten_signatures: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -/// Settings for Ruby client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RubySettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, -} -/// Settings for Go client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GoSettings { - /// Some settings. - #[prost(message, optional, tag="1")] - pub common: ::core::option::Option<CommonLanguageSettings>, - /// Map of service names to renamed services. Keys are the package relative - /// service names and values are the name to be used for the service client - /// and call options. - /// - /// publishing: - /// go_settings: - /// renamed_services: - /// Publisher: TopicAdmin - #[prost(map="string, string", tag="2")] - pub renamed_services: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, -} -/// Describes the generator configuration for a method. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct MethodSettings { - /// 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... - #[prost(string, tag="1")] - pub selector: ::prost::alloc::string::String, - /// 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 - #[prost(message, optional, tag="2")] - pub long_running: ::core::option::Option<method_settings::LongRunning>, - /// 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 - #[prost(string, repeated, tag="3")] - pub auto_populated_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -/// Nested message and enum types in `MethodSettings`. -pub mod method_settings { - /// 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>)). - #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, Copy, PartialEq, ::prost::Message)] - pub struct LongRunning { - /// Initial delay after which the first poll request will be made. - /// Default value: 5 seconds. - #[prost(message, optional, tag="1")] - pub initial_poll_delay: ::core::option::Option<super::super::protobuf::Duration>, - /// Multiplier to gradually increase delay between subsequent polls until it - /// reaches max_poll_delay. - /// Default value: 1.5. - #[prost(float, tag="2")] - pub poll_delay_multiplier: f32, - /// Maximum time between two subsequent poll requests. - /// Default value: 45 seconds. - #[prost(message, optional, tag="3")] - pub max_poll_delay: ::core::option::Option<super::super::protobuf::Duration>, - /// Total polling timeout. - /// Default value: 5 minutes. - #[prost(message, optional, tag="4")] - pub total_poll_timeout: ::core::option::Option<super::super::protobuf::Duration>, - } -} -/// This message is used to configure the generation of a subset of the RPCs in -/// a service for client libraries. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SelectiveGapicGeneration { - /// An allowlist of the fully qualified names of RPCs that should be included - /// on public client surfaces. - #[prost(string, repeated, tag="1")] - pub methods: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// Setting this to true indicates to the client generators that methods - /// that would be excluded from the generation should instead be generated - /// in a way that indicates these methods should not be consumed by - /// end users. How this is expressed is up to individual language - /// implementations to decide. Some examples may be: added annotations, - /// obfuscated identifiers, or other language idiomatic patterns. - #[prost(bool, tag="2")] - pub generate_omitted_as_internal: bool, -} -/// The organization for which the client libraries are being published. -/// Affects the url where generated docs are published, etc. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum ClientLibraryOrganization { - /// Not useful. - Unspecified = 0, - /// Google Cloud Platform Org. - Cloud = 1, - /// Ads (Advertising) Org. - Ads = 2, - /// Photos Org. - Photos = 3, - /// Street View Org. - StreetView = 4, - /// Shopping Org. - Shopping = 5, - /// Geo Org. - Geo = 6, - /// Generative AI - <https://developers.generativeai.google> - GenerativeAi = 7, -} -impl ClientLibraryOrganization { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - ClientLibraryOrganization::Unspecified => "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED", - ClientLibraryOrganization::Cloud => "CLOUD", - ClientLibraryOrganization::Ads => "ADS", - ClientLibraryOrganization::Photos => "PHOTOS", - ClientLibraryOrganization::StreetView => "STREET_VIEW", - ClientLibraryOrganization::Shopping => "SHOPPING", - ClientLibraryOrganization::Geo => "GEO", - ClientLibraryOrganization::GenerativeAi => "GENERATIVE_AI", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" => Some(Self::Unspecified), - "CLOUD" => Some(Self::Cloud), - "ADS" => Some(Self::Ads), - "PHOTOS" => Some(Self::Photos), - "STREET_VIEW" => Some(Self::StreetView), - "SHOPPING" => Some(Self::Shopping), - "GEO" => Some(Self::Geo), - "GENERATIVE_AI" => Some(Self::GenerativeAi), - _ => None, - } - } -} -/// To where should client libraries be published? -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum ClientLibraryDestination { - /// Client libraries will neither be generated nor published to package - /// managers. - 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. - PackageManager = 20, -} -impl ClientLibraryDestination { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - ClientLibraryDestination::Unspecified => "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED", - ClientLibraryDestination::Github => "GITHUB", - ClientLibraryDestination::PackageManager => "PACKAGE_MANAGER", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED" => Some(Self::Unspecified), - "GITHUB" => Some(Self::Github), - "PACKAGE_MANAGER" => Some(Self::PackageManager), - _ => None, - } - } -} -/// An indicator of the behavior of a given field (for example, that a field -/// is required in requests, or given as output but ignored as input). -/// This **does not** change the behavior in protocol buffers itself; it only -/// denotes the behavior and may affect how API tooling handles the field. -/// -/// Note: This enum **may** receive new values in the future. -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum FieldBehavior { - /// Conventional default for enums. Do not use this. - Unspecified = 0, - /// Specifically denotes a field as optional. - /// While all fields in protocol buffers are optional, this may be specified - /// for emphasis if appropriate. - Optional = 1, - /// Denotes a field as required. - /// This indicates that the field **must** be provided as part of the request, - /// and failure to do so will cause an error (usually `INVALID_ARGUMENT`). - Required = 2, - /// Denotes a field as output only. - /// This indicates that the field is provided in responses, but including the - /// field in a request does nothing (the server *must* ignore it and - /// *must not* throw an error as a result of the field's presence). - OutputOnly = 3, - /// Denotes a field as input only. - /// This indicates that the field is provided in requests, and the - /// corresponding field is not included in output. - InputOnly = 4, - /// Denotes a field as immutable. - /// This indicates that the field may be set once in a request to create a - /// resource, but may not be changed thereafter. - Immutable = 5, - /// Denotes that a (repeated) field is an unordered list. - /// This indicates that the service may provide the elements of the list - /// in any arbitrary order, rather than the order the user originally - /// provided. Additionally, the list's order may or may not be stable. - UnorderedList = 6, - /// Denotes that this field returns a non-empty default value if not set. - /// This indicates that if the user provides the empty value in a request, - /// a non-empty value will be returned. The user will not be aware of what - /// non-empty value to expect. - NonEmptyDefault = 7, - /// Denotes that the field in a resource (a message annotated with - /// google.api.resource) is used in the resource name to uniquely identify the - /// resource. For AIP-compliant APIs, this should only be applied to the - /// `name` field on the resource. - /// - /// This behavior should not be applied to references to other resources within - /// the message. - /// - /// The identifier field of resources often have different field behavior - /// depending on the request it is embedded in (e.g. for Create methods name - /// is optional and unused, while for Update methods it is required). Instead - /// of method-specific annotations, only `IDENTIFIER` is required. - Identifier = 8, -} -impl FieldBehavior { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - FieldBehavior::Unspecified => "FIELD_BEHAVIOR_UNSPECIFIED", - FieldBehavior::Optional => "OPTIONAL", - FieldBehavior::Required => "REQUIRED", - FieldBehavior::OutputOnly => "OUTPUT_ONLY", - FieldBehavior::InputOnly => "INPUT_ONLY", - FieldBehavior::Immutable => "IMMUTABLE", - FieldBehavior::UnorderedList => "UNORDERED_LIST", - FieldBehavior::NonEmptyDefault => "NON_EMPTY_DEFAULT", - FieldBehavior::Identifier => "IDENTIFIER", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "FIELD_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified), - "OPTIONAL" => Some(Self::Optional), - "REQUIRED" => Some(Self::Required), - "OUTPUT_ONLY" => Some(Self::OutputOnly), - "INPUT_ONLY" => Some(Self::InputOnly), - "IMMUTABLE" => Some(Self::Immutable), - "UNORDERED_LIST" => Some(Self::UnorderedList), - "NON_EMPTY_DEFAULT" => Some(Self::NonEmptyDefault), - "IDENTIFIER" => Some(Self::Identifier), - _ => None, - } - } -} -/// Rich semantic information of an API field beyond basic typing. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct FieldInfo { - /// The standard format of a field value. This does not explicitly configure - /// any API consumer, just documents the API's format for the field it is - /// applied to. - #[prost(enumeration="field_info::Format", tag="1")] - pub format: i32, - /// The type(s) that the annotated, generic field may represent. - /// - /// Currently, this must only be used on fields of type `google.protobuf.Any`. - /// Supporting other generic types may be considered in the future. - #[prost(message, repeated, tag="2")] - pub referenced_types: ::prost::alloc::vec::Vec<TypeReference>, -} -/// Nested message and enum types in `FieldInfo`. -pub mod field_info { - /// The standard format of a field value. The supported formats are all backed - /// by either an RFC defined by the IETF or a Google-defined AIP. - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum Format { - /// Default, unspecified value. - Unspecified = 0, - /// Universally Unique Identifier, version 4, value as defined by - /// <https://datatracker.ietf.org/doc/html/rfc4122.> The value may be - /// normalized to entirely lowercase letters. For example, the value - /// `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to - /// `f47ac10b-58cc-0372-8567-0e02b2c3d479`. - Uuid4 = 1, - /// Internet Protocol v4 value as defined by [RFC - /// 791](<https://datatracker.ietf.org/doc/html/rfc791>). The value may be - /// condensed, with leading zeros in each octet stripped. For example, - /// `001.022.233.040` would be condensed to `1.22.233.40`. - Ipv4 = 2, - /// Internet Protocol v6 value as defined by [RFC - /// 2460](<https://datatracker.ietf.org/doc/html/rfc2460>). The value may be - /// normalized to entirely lowercase letters with zeros compressed, following - /// [RFC 5952](<https://datatracker.ietf.org/doc/html/rfc5952>). For example, - /// the value `2001:0DB8:0::0` would be normalized to `2001:db8::`. - Ipv6 = 3, - /// An IP address in either v4 or v6 format as described by the individual - /// values defined herein. See the comments on the IPV4 and IPV6 types for - /// allowed normalizations of each. - Ipv4OrIpv6 = 4, - } - impl Format { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - Format::Unspecified => "FORMAT_UNSPECIFIED", - Format::Uuid4 => "UUID4", - Format::Ipv4 => "IPV4", - Format::Ipv6 => "IPV6", - Format::Ipv4OrIpv6 => "IPV4_OR_IPV6", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "FORMAT_UNSPECIFIED" => Some(Self::Unspecified), - "UUID4" => Some(Self::Uuid4), - "IPV4" => Some(Self::Ipv4), - "IPV6" => Some(Self::Ipv6), - "IPV4_OR_IPV6" => Some(Self::Ipv4OrIpv6), - _ => None, - } - } - } -} -/// A reference to a message type, for use in [FieldInfo][google.api.FieldInfo]. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TypeReference { - /// The name of the type that the annotated, generic field may represent. - /// If the type is in the same protobuf package, the value can be the simple - /// message name e.g., `"MyMessage"`. Otherwise, the value must be the - /// fully-qualified message name e.g., `"google.library.v1.Book"`. - /// - /// If the type(s) are unknown to the service (e.g. the field accepts generic - /// user input), use the wildcard `"*"` to denote this behavior. - /// - /// See [AIP-202](<https://google.aip.dev/202#type-references>) for more details. - #[prost(string, tag="1")] - pub type_name: ::prost::alloc::string::String, -} -/// Message that represents an arbitrary HTTP body. It should only be used for -/// payload formats that can't be represented as JSON, such as raw binary or -/// an HTML page. -/// -/// -/// This message can be used both in streaming and non-streaming API methods in -/// the request as well as the response. -/// -/// It can be used as a top-level request field, which is convenient if one -/// wants to extract parameters from either the URL or HTTP template into the -/// request fields and also want access to the raw HTTP body. -/// -/// Example: -/// -/// message GetResourceRequest { -/// // A unique request id. -/// string request_id = 1; -/// -/// // The raw HTTP body is bound to this field. -/// google.api.HttpBody http_body = 2; -/// -/// } -/// -/// service ResourceService { -/// rpc GetResource(GetResourceRequest) -/// returns (google.api.HttpBody); -/// rpc UpdateResource(google.api.HttpBody) -/// returns (google.protobuf.Empty); -/// -/// } -/// -/// Example with streaming methods: -/// -/// service CaldavService { -/// rpc GetCalendar(stream google.api.HttpBody) -/// returns (stream google.api.HttpBody); -/// rpc UpdateCalendar(stream google.api.HttpBody) -/// returns (stream google.api.HttpBody); -/// -/// } -/// -/// Use of this type only changes how the request and response bodies are -/// handled, all other features will continue to work unchanged. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct HttpBody { - /// The HTTP Content-Type header value specifying the content type of the body. - #[prost(string, tag="1")] - pub content_type: ::prost::alloc::string::String, - /// The HTTP request/response body as raw binary. - #[prost(bytes="vec", tag="2")] - pub data: ::prost::alloc::vec::Vec<u8>, - /// Application specific response metadata. Must be set in the first response - /// for streaming APIs. - #[prost(message, repeated, tag="3")] - pub extensions: ::prost::alloc::vec::Vec<super::protobuf::Any>, -} -/// A simple descriptor of a resource type. -/// -/// ResourceDescriptor annotates a resource message (either by means of a -/// protobuf annotation or use in the service config), and associates the -/// resource's schema, the resource type, and the pattern of the resource name. -/// -/// Example: -/// -/// message Topic { -/// // Indicates this message defines a resource schema. -/// // Declares the resource type in the format of {service}/{kind}. -/// // For Kubernetes resources, the format is {api group}/{kind}. -/// option (google.api.resource) = { -/// type: "pubsub.googleapis.com/Topic" -/// pattern: "projects/{project}/topics/{topic}" -/// }; -/// } -/// -/// The ResourceDescriptor Yaml config will look like: -/// -/// resources: -/// - type: "pubsub.googleapis.com/Topic" -/// pattern: "projects/{project}/topics/{topic}" -/// -/// Sometimes, resources have multiple patterns, typically because they can -/// live under multiple parents. -/// -/// Example: -/// -/// message LogEntry { -/// option (google.api.resource) = { -/// type: "logging.googleapis.com/LogEntry" -/// pattern: "projects/{project}/logs/{log}" -/// pattern: "folders/{folder}/logs/{log}" -/// pattern: "organizations/{organization}/logs/{log}" -/// pattern: "billingAccounts/{billing_account}/logs/{log}" -/// }; -/// } -/// -/// The ResourceDescriptor Yaml config will look like: -/// -/// resources: -/// - type: 'logging.googleapis.com/LogEntry' -/// pattern: "projects/{project}/logs/{log}" -/// pattern: "folders/{folder}/logs/{log}" -/// pattern: "organizations/{organization}/logs/{log}" -/// pattern: "billingAccounts/{billing_account}/logs/{log}" -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ResourceDescriptor { - /// The resource type. It must be in the format of - /// {service_name}/{resource_type_kind}. The `resource_type_kind` must be - /// singular and must not include version numbers. - /// - /// Example: `storage.googleapis.com/Bucket` - /// - /// The value of the resource_type_kind must follow the regular expression - /// /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and - /// should use PascalCase (UpperCamelCase). The maximum number of - /// characters allowed for the `resource_type_kind` is 100. - #[prost(string, tag="1")] - pub r#type: ::prost::alloc::string::String, - /// Optional. The relative resource name pattern associated with this resource - /// type. The DNS prefix of the full resource name shouldn't be specified here. - /// - /// The path pattern must follow the syntax, which aligns with HTTP binding - /// syntax: - /// - /// Template = Segment { "/" Segment } ; - /// Segment = LITERAL | Variable ; - /// Variable = "{" LITERAL "}" ; - /// - /// Examples: - /// - /// - "projects/{project}/topics/{topic}" - /// - "projects/{project}/knowledgeBases/{knowledge_base}" - /// - /// The components in braces correspond to the IDs for each resource in the - /// hierarchy. It is expected that, if multiple patterns are provided, - /// the same component name (e.g. "project") refers to IDs of the same - /// type of resource. - #[prost(string, repeated, tag="2")] - pub pattern: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// Optional. The field on the resource that designates the resource name - /// field. If omitted, this is assumed to be "name". - #[prost(string, tag="3")] - pub name_field: ::prost::alloc::string::String, - /// Optional. The historical or future-looking state of the resource pattern. - /// - /// Example: - /// - /// // The InspectTemplate message originally only supported resource - /// // names with organization, and project was added later. - /// message InspectTemplate { - /// option (google.api.resource) = { - /// type: "dlp.googleapis.com/InspectTemplate" - /// pattern: - /// "organizations/{organization}/inspectTemplates/{inspect_template}" - /// pattern: "projects/{project}/inspectTemplates/{inspect_template}" - /// history: ORIGINALLY_SINGLE_PATTERN - /// }; - /// } - #[prost(enumeration="resource_descriptor::History", tag="4")] - pub history: i32, - /// The plural name used in the resource name and permission names, such as - /// 'projects' for the resource name of 'projects/{project}' and the permission - /// name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception - /// to this is for Nested Collections that have stuttering names, as defined - /// in [AIP-122](<https://google.aip.dev/122#nested-collections>), where the - /// collection ID in the resource name pattern does not necessarily directly - /// match the `plural` value. - /// - /// It is the same concept of the `plural` field in k8s CRD spec - /// <https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/> - /// - /// Note: The plural form is required even for singleton resources. See - /// <https://aip.dev/156> - #[prost(string, tag="5")] - pub plural: ::prost::alloc::string::String, - /// The same concept of the `singular` field in k8s CRD spec - /// <https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/> - /// Such as "project" for the `resourcemanager.googleapis.com/Project` type. - #[prost(string, tag="6")] - pub singular: ::prost::alloc::string::String, - /// Style flag(s) for this resource. - /// These indicate that a resource is expected to conform to a given - /// style. See the specific style flags for additional information. - #[prost(enumeration="resource_descriptor::Style", repeated, tag="10")] - pub style: ::prost::alloc::vec::Vec<i32>, -} -/// Nested message and enum types in `ResourceDescriptor`. -pub mod resource_descriptor { - /// A description of the historical or future-looking state of the - /// resource pattern. - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum History { - /// The "unset" value. - Unspecified = 0, - /// The resource originally had one pattern and launched as such, and - /// additional patterns were added later. - OriginallySinglePattern = 1, - /// The resource has one pattern, but the API owner expects to add more - /// later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents - /// that from being necessary once there are multiple patterns.) - FutureMultiPattern = 2, - } - impl History { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - History::Unspecified => "HISTORY_UNSPECIFIED", - History::OriginallySinglePattern => "ORIGINALLY_SINGLE_PATTERN", - History::FutureMultiPattern => "FUTURE_MULTI_PATTERN", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "HISTORY_UNSPECIFIED" => Some(Self::Unspecified), - "ORIGINALLY_SINGLE_PATTERN" => Some(Self::OriginallySinglePattern), - "FUTURE_MULTI_PATTERN" => Some(Self::FutureMultiPattern), - _ => None, - } - } - } - /// A flag representing a specific style that a resource claims to conform to. - #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] - #[repr(i32)] - pub enum Style { - /// The unspecified value. Do not use. - Unspecified = 0, - /// This resource is intended to be "declarative-friendly". - /// - /// Declarative-friendly resources must be more strictly consistent, and - /// setting this to true communicates to tools that this resource should - /// adhere to declarative-friendly expectations. - /// - /// Note: This is used by the API linter (linter.aip.dev) to enable - /// additional checks. - DeclarativeFriendly = 1, - } - impl Style { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - Style::Unspecified => "STYLE_UNSPECIFIED", - Style::DeclarativeFriendly => "DECLARATIVE_FRIENDLY", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { - match value { - "STYLE_UNSPECIFIED" => Some(Self::Unspecified), - "DECLARATIVE_FRIENDLY" => Some(Self::DeclarativeFriendly), - _ => None, - } - } - } -} -/// Defines a proto annotation that describes a string field that refers to -/// an API resource. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ResourceReference { - /// The resource type that the annotated field references. - /// - /// Example: - /// - /// message Subscription { - /// string topic = 2 [(google.api.resource_reference) = { - /// type: "pubsub.googleapis.com/Topic" - /// }]; - /// } - /// - /// Occasionally, a field may reference an arbitrary resource. In this case, - /// APIs use the special value * in their resource reference. - /// - /// Example: - /// - /// message GetIamPolicyRequest { - /// string resource = 2 [(google.api.resource_reference) = { - /// type: "*" - /// }]; - /// } - #[prost(string, tag="1")] - pub r#type: ::prost::alloc::string::String, - /// The resource type of a child collection that the annotated field - /// references. This is useful for annotating the `parent` field that - /// doesn't have a fixed resource type. - /// - /// Example: - /// - /// message ListLogEntriesRequest { - /// string parent = 1 [(google.api.resource_reference) = { - /// child_type: "logging.googleapis.com/LogEntry" - /// }; - /// } - #[prost(string, tag="2")] - pub child_type: ::prost::alloc::string::String, -} -/// `Visibility` restricts service consumer's access to service elements, -/// such as whether an application can call a visibility-restricted method. -/// The restriction is expressed by applying visibility labels on service -/// elements. The visibility labels are elsewhere linked to service consumers. -/// -/// A service can define multiple visibility labels, but a service consumer -/// should be granted at most one visibility label. Multiple visibility -/// labels for a single service consumer are not supported. -/// -/// If an element and all its parents have no visibility label, its visibility -/// is unconditionally granted. -/// -/// Example: -/// -/// visibility: -/// rules: -/// - selector: google.calendar.Calendar.EnhancedSearch -/// restriction: PREVIEW -/// - selector: google.calendar.Calendar.Delegate -/// restriction: INTERNAL -/// -/// Here, all methods are publicly visible except for the restricted methods -/// EnhancedSearch and Delegate. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Visibility { - /// A list of visibility rules that apply to individual API elements. - /// - /// **NOTE:** All service configuration rules follow "last one wins" order. - #[prost(message, repeated, tag="1")] - pub rules: ::prost::alloc::vec::Vec<VisibilityRule>, -} -/// A visibility rule provides visibility configuration for an individual API -/// element. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct VisibilityRule { - /// Selects methods, messages, fields, enums, etc. to which this rule applies. - /// - /// Refer to [selector][google.api.DocumentationRule.selector] for syntax - /// details. - #[prost(string, tag="1")] - pub selector: ::prost::alloc::string::String, - /// A comma-separated list of visibility labels that apply to the `selector`. - /// Any of the listed labels can be used to grant the visibility. - /// - /// If a rule has multiple labels, removing one of the labels but not all of - /// them can break clients. - /// - /// Example: - /// - /// visibility: - /// rules: - /// - selector: google.calendar.Calendar.EnhancedSearch - /// restriction: INTERNAL, PREVIEW - /// - /// Removing INTERNAL from this restriction will break clients that rely on - /// this method and only had access to it through INTERNAL. - #[prost(string, tag="2")] - pub restriction: ::prost::alloc::string::String, -} -// @@protoc_insertion_point(module) |
