chore: 添加虚拟环境到仓库
- 添加 backend_service/venv 虚拟环境 - 包含所有Python依赖包 - 注意:虚拟环境约393MB,包含12655个文件
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
// Copyright 2025 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/http.proto";
|
||||
import "google/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AnnotationsProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.MethodOptions {
|
||||
// See `HttpRule`.
|
||||
HttpRule http = 72295728;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/annotations.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import http_pb2 as google_dot_api_dot_http__pb2
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1cgoogle/api/annotations.proto\x12\ngoogle.api\x1a\x15google/api/http.proto\x1a google/protobuf/descriptor.proto:E\n\x04http\x12\x1e.google.protobuf.MethodOptions\x18\xb0\xca\xbc" \x01(\x0b\x32\x14.google.api.HttpRuleBn\n\x0e\x63om.google.apiB\x10\x41nnotationsProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.annotations_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\020AnnotationsProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,23 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
|
||||
from google.api import http_pb2 as _http_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
HTTP_FIELD_NUMBER: _ClassVar[int]
|
||||
http: _descriptor.FieldDescriptor
|
||||
@@ -0,0 +1,237 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AuthProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Authentication` defines the authentication configuration for API methods
|
||||
// provided by an API service.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// name: calendar.googleapis.com
|
||||
// authentication:
|
||||
// providers:
|
||||
// - id: google_calendar_auth
|
||||
// jwks_uri: https://www.googleapis.com/oauth2/v1/certs
|
||||
// issuer: https://securetoken.google.com
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// requirements:
|
||||
// provider_id: google_calendar_auth
|
||||
// - selector: google.calendar.Delegate
|
||||
// oauth:
|
||||
// canonical_scopes: https://www.googleapis.com/auth/calendar.read
|
||||
message Authentication {
|
||||
// A list of authentication rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated AuthenticationRule rules = 3;
|
||||
|
||||
// Defines a set of authentication providers that a service supports.
|
||||
repeated AuthProvider providers = 4;
|
||||
}
|
||||
|
||||
// Authentication rules for the service.
|
||||
//
|
||||
// By default, if a method has any authentication requirements, every request
|
||||
// must include a valid credential matching one of the requirements.
|
||||
// It's an error to include more than one kind of credential in a single
|
||||
// request.
|
||||
//
|
||||
// If a method doesn't have any auth requirements, request credentials will be
|
||||
// ignored.
|
||||
message AuthenticationRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// The requirements for OAuth credentials.
|
||||
OAuthRequirements oauth = 2;
|
||||
|
||||
// If true, the service accepts API keys without any other credential.
|
||||
// This flag only applies to HTTP and gRPC requests.
|
||||
bool allow_without_credential = 5;
|
||||
|
||||
// Requirements for additional authentication providers.
|
||||
repeated AuthRequirement requirements = 7;
|
||||
}
|
||||
|
||||
// Specifies a location to extract JWT from an API request.
|
||||
message JwtLocation {
|
||||
oneof in {
|
||||
// Specifies HTTP header name to extract JWT token.
|
||||
string header = 1;
|
||||
|
||||
// Specifies URL query parameter name to extract JWT token.
|
||||
string query = 2;
|
||||
|
||||
// Specifies cookie name to extract JWT token.
|
||||
string cookie = 4;
|
||||
}
|
||||
|
||||
// The value prefix. The value format is "value_prefix{token}"
|
||||
// Only applies to "in" header type. Must be empty for "in" query type.
|
||||
// If not empty, the header value has to match (case sensitive) this prefix.
|
||||
// If not matched, JWT will not be extracted. If matched, JWT will be
|
||||
// extracted after the prefix is removed.
|
||||
//
|
||||
// For example, for "Authorization: Bearer {JWT}",
|
||||
// value_prefix="Bearer " with a space at the end.
|
||||
string value_prefix = 3;
|
||||
}
|
||||
|
||||
// Configuration for an authentication provider, including support for
|
||||
// [JSON Web Token
|
||||
// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
|
||||
message AuthProvider {
|
||||
// The unique identifier of the auth provider. It will be referred to by
|
||||
// `AuthRequirement.provider_id`.
|
||||
//
|
||||
// Example: "bookstore_auth".
|
||||
string id = 1;
|
||||
|
||||
// Identifies the principal that issued the JWT. See
|
||||
// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
|
||||
// Usually a URL or an email address.
|
||||
//
|
||||
// Example: https://securetoken.google.com
|
||||
// Example: 1234567-compute@developer.gserviceaccount.com
|
||||
string issuer = 2;
|
||||
|
||||
// URL of the provider's public key set to validate signature of the JWT. See
|
||||
// [OpenID
|
||||
// Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
|
||||
// Optional if the key set document:
|
||||
// - can be retrieved from
|
||||
// [OpenID
|
||||
// Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html)
|
||||
// of the issuer.
|
||||
// - can be inferred from the email domain of the issuer (e.g. a Google
|
||||
// service account).
|
||||
//
|
||||
// Example: https://www.googleapis.com/oauth2/v1/certs
|
||||
string jwks_uri = 3;
|
||||
|
||||
// The list of JWT
|
||||
// [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
|
||||
// that are allowed to access. A JWT containing any of these audiences will
|
||||
// be accepted. When this setting is absent, JWTs with audiences:
|
||||
// - "https://[service.name]/[google.protobuf.Api.name]"
|
||||
// - "https://[service.name]/"
|
||||
// will be accepted.
|
||||
// For example, if no audiences are in the setting, LibraryService API will
|
||||
// accept JWTs with the following audiences:
|
||||
// -
|
||||
// https://library-example.googleapis.com/google.example.library.v1.LibraryService
|
||||
// - https://library-example.googleapis.com/
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// audiences: bookstore_android.apps.googleusercontent.com,
|
||||
// bookstore_web.apps.googleusercontent.com
|
||||
string audiences = 4;
|
||||
|
||||
// Redirect URL if JWT token is required but not present or is expired.
|
||||
// Implement authorizationUrl of securityDefinitions in OpenAPI spec.
|
||||
string authorization_url = 5;
|
||||
|
||||
// Defines the locations to extract the JWT. For now it is only used by the
|
||||
// Cloud Endpoints to store the OpenAPI extension [x-google-jwt-locations]
|
||||
// (https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#x-google-jwt-locations)
|
||||
//
|
||||
// JWT locations can be one of HTTP headers, URL query parameters or
|
||||
// cookies. The rule is that the first match wins.
|
||||
//
|
||||
// If not specified, default to use following 3 locations:
|
||||
// 1) Authorization: Bearer
|
||||
// 2) x-goog-iap-jwt-assertion
|
||||
// 3) access_token query parameter
|
||||
//
|
||||
// Default locations can be specified as followings:
|
||||
// jwt_locations:
|
||||
// - header: Authorization
|
||||
// value_prefix: "Bearer "
|
||||
// - header: x-goog-iap-jwt-assertion
|
||||
// - query: access_token
|
||||
repeated JwtLocation jwt_locations = 6;
|
||||
}
|
||||
|
||||
// OAuth scopes are a way to define data and permissions on data. For example,
|
||||
// there are scopes defined for "Read-only access to Google Calendar" and
|
||||
// "Access to Cloud Platform". Users can consent to a scope for an application,
|
||||
// giving it permission to access that data on their behalf.
|
||||
//
|
||||
// OAuth scope specifications should be fairly coarse grained; a user will need
|
||||
// to see and understand the text description of what your scope means.
|
||||
//
|
||||
// In most cases: use one or at most two OAuth scopes for an entire family of
|
||||
// products. If your product has multiple APIs, you should probably be sharing
|
||||
// the OAuth scope across all of those APIs.
|
||||
//
|
||||
// When you need finer grained OAuth consent screens: talk with your product
|
||||
// management about how developers will use them in practice.
|
||||
//
|
||||
// Please note that even though each of the canonical scopes is enough for a
|
||||
// request to be accepted and passed to the backend, a request can still fail
|
||||
// due to the backend requiring additional scopes or permissions.
|
||||
message OAuthRequirements {
|
||||
// The list of publicly documented OAuth scopes that are allowed access. An
|
||||
// OAuth token containing any of these scopes will be accepted.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// canonical_scopes: https://www.googleapis.com/auth/calendar,
|
||||
// https://www.googleapis.com/auth/calendar.read
|
||||
string canonical_scopes = 1;
|
||||
}
|
||||
|
||||
// User-defined authentication requirements, including support for
|
||||
// [JSON Web Token
|
||||
// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
|
||||
message AuthRequirement {
|
||||
// [id][google.api.AuthProvider.id] from authentication provider.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// provider_id: bookstore_auth
|
||||
string provider_id = 1;
|
||||
|
||||
// NOTE: This will be deprecated soon, once AuthProvider.audiences is
|
||||
// implemented and accepted in all the runtime components.
|
||||
//
|
||||
// The list of JWT
|
||||
// [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
|
||||
// that are allowed to access. A JWT containing any of these audiences will
|
||||
// be accepted. When this setting is absent, only JWTs with audience
|
||||
// "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]"
|
||||
// will be accepted. For example, if no audiences are in the setting,
|
||||
// LibraryService API will only accept JWTs with the following audience
|
||||
// "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// audiences: bookstore_android.apps.googleusercontent.com,
|
||||
// bookstore_web.apps.googleusercontent.com
|
||||
string audiences = 2;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/auth.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x15google/api/auth.proto\x12\ngoogle.api"l\n\x0e\x41uthentication\x12-\n\x05rules\x18\x03 \x03(\x0b\x32\x1e.google.api.AuthenticationRule\x12+\n\tproviders\x18\x04 \x03(\x0b\x32\x18.google.api.AuthProvider"\xa9\x01\n\x12\x41uthenticationRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12,\n\x05oauth\x18\x02 \x01(\x0b\x32\x1d.google.api.OAuthRequirements\x12 \n\x18\x61llow_without_credential\x18\x05 \x01(\x08\x12\x31\n\x0crequirements\x18\x07 \x03(\x0b\x32\x1b.google.api.AuthRequirement"^\n\x0bJwtLocation\x12\x10\n\x06header\x18\x01 \x01(\tH\x00\x12\x0f\n\x05query\x18\x02 \x01(\tH\x00\x12\x10\n\x06\x63ookie\x18\x04 \x01(\tH\x00\x12\x14\n\x0cvalue_prefix\x18\x03 \x01(\tB\x04\n\x02in"\x9a\x01\n\x0c\x41uthProvider\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06issuer\x18\x02 \x01(\t\x12\x10\n\x08jwks_uri\x18\x03 \x01(\t\x12\x11\n\taudiences\x18\x04 \x01(\t\x12\x19\n\x11\x61uthorization_url\x18\x05 \x01(\t\x12.\n\rjwt_locations\x18\x06 \x03(\x0b\x32\x17.google.api.JwtLocation"-\n\x11OAuthRequirements\x12\x18\n\x10\x63\x61nonical_scopes\x18\x01 \x01(\t"9\n\x0f\x41uthRequirement\x12\x13\n\x0bprovider_id\x18\x01 \x01(\t\x12\x11\n\taudiences\x18\x02 \x01(\tBk\n\x0e\x63om.google.apiB\tAuthProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.auth_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\tAuthProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_AUTHENTICATION"]._serialized_start = 37
|
||||
_globals["_AUTHENTICATION"]._serialized_end = 145
|
||||
_globals["_AUTHENTICATIONRULE"]._serialized_start = 148
|
||||
_globals["_AUTHENTICATIONRULE"]._serialized_end = 317
|
||||
_globals["_JWTLOCATION"]._serialized_start = 319
|
||||
_globals["_JWTLOCATION"]._serialized_end = 413
|
||||
_globals["_AUTHPROVIDER"]._serialized_start = 416
|
||||
_globals["_AUTHPROVIDER"]._serialized_end = 570
|
||||
_globals["_OAUTHREQUIREMENTS"]._serialized_start = 572
|
||||
_globals["_OAUTHREQUIREMENTS"]._serialized_end = 617
|
||||
_globals["_AUTHREQUIREMENT"]._serialized_start = 619
|
||||
_globals["_AUTHREQUIREMENT"]._serialized_end = 676
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,120 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Authentication(_message.Message):
|
||||
__slots__ = ("rules", "providers")
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
PROVIDERS_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[AuthenticationRule]
|
||||
providers: _containers.RepeatedCompositeFieldContainer[AuthProvider]
|
||||
def __init__(
|
||||
self,
|
||||
rules: _Optional[_Iterable[_Union[AuthenticationRule, _Mapping]]] = ...,
|
||||
providers: _Optional[_Iterable[_Union[AuthProvider, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class AuthenticationRule(_message.Message):
|
||||
__slots__ = ("selector", "oauth", "allow_without_credential", "requirements")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
OAUTH_FIELD_NUMBER: _ClassVar[int]
|
||||
ALLOW_WITHOUT_CREDENTIAL_FIELD_NUMBER: _ClassVar[int]
|
||||
REQUIREMENTS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
oauth: OAuthRequirements
|
||||
allow_without_credential: bool
|
||||
requirements: _containers.RepeatedCompositeFieldContainer[AuthRequirement]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
oauth: _Optional[_Union[OAuthRequirements, _Mapping]] = ...,
|
||||
allow_without_credential: bool = ...,
|
||||
requirements: _Optional[_Iterable[_Union[AuthRequirement, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class JwtLocation(_message.Message):
|
||||
__slots__ = ("header", "query", "cookie", "value_prefix")
|
||||
HEADER_FIELD_NUMBER: _ClassVar[int]
|
||||
QUERY_FIELD_NUMBER: _ClassVar[int]
|
||||
COOKIE_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_PREFIX_FIELD_NUMBER: _ClassVar[int]
|
||||
header: str
|
||||
query: str
|
||||
cookie: str
|
||||
value_prefix: str
|
||||
def __init__(
|
||||
self,
|
||||
header: _Optional[str] = ...,
|
||||
query: _Optional[str] = ...,
|
||||
cookie: _Optional[str] = ...,
|
||||
value_prefix: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class AuthProvider(_message.Message):
|
||||
__slots__ = (
|
||||
"id",
|
||||
"issuer",
|
||||
"jwks_uri",
|
||||
"audiences",
|
||||
"authorization_url",
|
||||
"jwt_locations",
|
||||
)
|
||||
ID_FIELD_NUMBER: _ClassVar[int]
|
||||
ISSUER_FIELD_NUMBER: _ClassVar[int]
|
||||
JWKS_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
AUDIENCES_FIELD_NUMBER: _ClassVar[int]
|
||||
AUTHORIZATION_URL_FIELD_NUMBER: _ClassVar[int]
|
||||
JWT_LOCATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
id: str
|
||||
issuer: str
|
||||
jwks_uri: str
|
||||
audiences: str
|
||||
authorization_url: str
|
||||
jwt_locations: _containers.RepeatedCompositeFieldContainer[JwtLocation]
|
||||
def __init__(
|
||||
self,
|
||||
id: _Optional[str] = ...,
|
||||
issuer: _Optional[str] = ...,
|
||||
jwks_uri: _Optional[str] = ...,
|
||||
audiences: _Optional[str] = ...,
|
||||
authorization_url: _Optional[str] = ...,
|
||||
jwt_locations: _Optional[_Iterable[_Union[JwtLocation, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class OAuthRequirements(_message.Message):
|
||||
__slots__ = ("canonical_scopes",)
|
||||
CANONICAL_SCOPES_FIELD_NUMBER: _ClassVar[int]
|
||||
canonical_scopes: str
|
||||
def __init__(self, canonical_scopes: _Optional[str] = ...) -> None: ...
|
||||
|
||||
class AuthRequirement(_message.Message):
|
||||
__slots__ = ("provider_id", "audiences")
|
||||
PROVIDER_ID_FIELD_NUMBER: _ClassVar[int]
|
||||
AUDIENCES_FIELD_NUMBER: _ClassVar[int]
|
||||
provider_id: str
|
||||
audiences: str
|
||||
def __init__(
|
||||
self, provider_id: _Optional[str] = ..., audiences: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,185 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "BackendProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Backend` defines the backend configuration for a service.
|
||||
message Backend {
|
||||
// A list of API backend rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated BackendRule rules = 1;
|
||||
}
|
||||
|
||||
// A backend rule provides configuration for an individual API element.
|
||||
message BackendRule {
|
||||
// Path Translation specifies how to combine the backend address with the
|
||||
// request path in order to produce the appropriate forwarding URL for the
|
||||
// request.
|
||||
//
|
||||
// Path Translation is applicable only to HTTP-based backends. Backends which
|
||||
// do not accept requests over HTTP/HTTPS should leave `path_translation`
|
||||
// unspecified.
|
||||
enum PathTranslation {
|
||||
PATH_TRANSLATION_UNSPECIFIED = 0;
|
||||
|
||||
// Use the backend address as-is, with no modification to the path. If the
|
||||
// URL pattern contains variables, the variable names and values will be
|
||||
// appended to the query string. If a query string parameter and a URL
|
||||
// pattern variable have the same name, this may result in duplicate keys in
|
||||
// the query string.
|
||||
//
|
||||
// # Examples
|
||||
//
|
||||
// Given the following operation config:
|
||||
//
|
||||
// Method path: /api/company/{cid}/user/{uid}
|
||||
// Backend address: https://example.cloudfunctions.net/getUser
|
||||
//
|
||||
// Requests to the following request paths will call the backend at the
|
||||
// translated path:
|
||||
//
|
||||
// Request path: /api/company/widgetworks/user/johndoe
|
||||
// Translated:
|
||||
// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
|
||||
//
|
||||
// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
|
||||
// Translated:
|
||||
// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
|
||||
CONSTANT_ADDRESS = 1;
|
||||
|
||||
// The request path will be appended to the backend address.
|
||||
//
|
||||
// # Examples
|
||||
//
|
||||
// Given the following operation config:
|
||||
//
|
||||
// Method path: /api/company/{cid}/user/{uid}
|
||||
// Backend address: https://example.appspot.com
|
||||
//
|
||||
// Requests to the following request paths will call the backend at the
|
||||
// translated path:
|
||||
//
|
||||
// Request path: /api/company/widgetworks/user/johndoe
|
||||
// Translated:
|
||||
// https://example.appspot.com/api/company/widgetworks/user/johndoe
|
||||
//
|
||||
// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
|
||||
// Translated:
|
||||
// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
|
||||
APPEND_PATH_TO_ADDRESS = 2;
|
||||
}
|
||||
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// The address of the API backend.
|
||||
//
|
||||
// The scheme is used to determine the backend protocol and security.
|
||||
// The following schemes are accepted:
|
||||
//
|
||||
// SCHEME PROTOCOL SECURITY
|
||||
// http:// HTTP None
|
||||
// https:// HTTP TLS
|
||||
// grpc:// gRPC None
|
||||
// grpcs:// gRPC TLS
|
||||
//
|
||||
// It is recommended to explicitly include a scheme. Leaving out the scheme
|
||||
// may cause constrasting behaviors across platforms.
|
||||
//
|
||||
// If the port is unspecified, the default is:
|
||||
// - 80 for schemes without TLS
|
||||
// - 443 for schemes with TLS
|
||||
//
|
||||
// For HTTP backends, use [protocol][google.api.BackendRule.protocol]
|
||||
// to specify the protocol version.
|
||||
string address = 2;
|
||||
|
||||
// The number of seconds to wait for a response from a request. The default
|
||||
// varies based on the request protocol and deployment environment.
|
||||
double deadline = 3;
|
||||
|
||||
// Deprecated, do not use.
|
||||
double min_deadline = 4 [deprecated = true];
|
||||
|
||||
// The number of seconds to wait for the completion of a long running
|
||||
// operation. The default is no deadline.
|
||||
double operation_deadline = 5;
|
||||
|
||||
PathTranslation path_translation = 6;
|
||||
|
||||
// Authentication settings used by the backend.
|
||||
//
|
||||
// These are typically used to provide service management functionality to
|
||||
// a backend served on a publicly-routable URL. The `authentication`
|
||||
// details should match the authentication behavior used by the backend.
|
||||
//
|
||||
// For example, specifying `jwt_audience` implies that the backend expects
|
||||
// authentication via a JWT.
|
||||
//
|
||||
// When authentication is unspecified, the resulting behavior is the same
|
||||
// as `disable_auth` set to `true`.
|
||||
//
|
||||
// Refer to https://developers.google.com/identity/protocols/OpenIDConnect for
|
||||
// JWT ID token.
|
||||
oneof authentication {
|
||||
// The JWT audience is used when generating a JWT ID token for the backend.
|
||||
// This ID token will be added in the HTTP "authorization" header, and sent
|
||||
// to the backend.
|
||||
string jwt_audience = 7;
|
||||
|
||||
// When disable_auth is true, a JWT ID token won't be generated and the
|
||||
// original "Authorization" HTTP header will be preserved. If the header is
|
||||
// used to carry the original token and is expected by the backend, this
|
||||
// field must be set to true to preserve the header.
|
||||
bool disable_auth = 8;
|
||||
}
|
||||
|
||||
// The protocol used for sending a request to the backend.
|
||||
// The supported values are "http/1.1" and "h2".
|
||||
//
|
||||
// The default value is inferred from the scheme in the
|
||||
// [address][google.api.BackendRule.address] field:
|
||||
//
|
||||
// SCHEME PROTOCOL
|
||||
// http:// http/1.1
|
||||
// https:// http/1.1
|
||||
// grpc:// h2
|
||||
// grpcs:// h2
|
||||
//
|
||||
// For secure HTTP backends (https://) that support HTTP/2, set this field
|
||||
// to "h2" for improved performance.
|
||||
//
|
||||
// Configuring this field to non-default values is only supported for secure
|
||||
// HTTP backends. This field will be ignored for all other backends.
|
||||
//
|
||||
// See
|
||||
// https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
|
||||
// for more details on the supported values.
|
||||
string protocol = 9;
|
||||
|
||||
// The map between request protocol and the backend address.
|
||||
map<string, BackendRule> overrides_by_request_protocol = 10;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/backend.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/backend.proto\x12\ngoogle.api"1\n\x07\x42\x61\x63kend\x12&\n\x05rules\x18\x01 \x03(\x0b\x32\x17.google.api.BackendRule"\xb2\x04\n\x0b\x42\x61\x63kendRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x10\n\x08\x64\x65\x61\x64line\x18\x03 \x01(\x01\x12\x18\n\x0cmin_deadline\x18\x04 \x01(\x01\x42\x02\x18\x01\x12\x1a\n\x12operation_deadline\x18\x05 \x01(\x01\x12\x41\n\x10path_translation\x18\x06 \x01(\x0e\x32\'.google.api.BackendRule.PathTranslation\x12\x16\n\x0cjwt_audience\x18\x07 \x01(\tH\x00\x12\x16\n\x0c\x64isable_auth\x18\x08 \x01(\x08H\x00\x12\x10\n\x08protocol\x18\t \x01(\t\x12^\n\x1doverrides_by_request_protocol\x18\n \x03(\x0b\x32\x37.google.api.BackendRule.OverridesByRequestProtocolEntry\x1aZ\n\x1fOverridesByRequestProtocolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.api.BackendRule:\x02\x38\x01"e\n\x0fPathTranslation\x12 \n\x1cPATH_TRANSLATION_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43ONSTANT_ADDRESS\x10\x01\x12\x1a\n\x16\x41PPEND_PATH_TO_ADDRESS\x10\x02\x42\x10\n\x0e\x61uthenticationBn\n\x0e\x63om.google.apiB\x0c\x42\x61\x63kendProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.backend_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014BackendProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_BACKENDRULE_OVERRIDESBYREQUESTPROTOCOLENTRY"]._options = None
|
||||
_globals[
|
||||
"_BACKENDRULE_OVERRIDESBYREQUESTPROTOCOLENTRY"
|
||||
]._serialized_options = b"8\001"
|
||||
_globals["_BACKENDRULE"].fields_by_name["min_deadline"]._options = None
|
||||
_globals["_BACKENDRULE"].fields_by_name[
|
||||
"min_deadline"
|
||||
]._serialized_options = b"\030\001"
|
||||
_globals["_BACKEND"]._serialized_start = 40
|
||||
_globals["_BACKEND"]._serialized_end = 89
|
||||
_globals["_BACKENDRULE"]._serialized_start = 92
|
||||
_globals["_BACKENDRULE"]._serialized_end = 654
|
||||
_globals["_BACKENDRULE_OVERRIDESBYREQUESTPROTOCOLENTRY"]._serialized_start = 443
|
||||
_globals["_BACKENDRULE_OVERRIDESBYREQUESTPROTOCOLENTRY"]._serialized_end = 533
|
||||
_globals["_BACKENDRULE_PATHTRANSLATION"]._serialized_start = 535
|
||||
_globals["_BACKENDRULE_PATHTRANSLATION"]._serialized_end = 636
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,102 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Backend(_message.Message):
|
||||
__slots__ = ("rules",)
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[BackendRule]
|
||||
def __init__(
|
||||
self, rules: _Optional[_Iterable[_Union[BackendRule, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class BackendRule(_message.Message):
|
||||
__slots__ = (
|
||||
"selector",
|
||||
"address",
|
||||
"deadline",
|
||||
"min_deadline",
|
||||
"operation_deadline",
|
||||
"path_translation",
|
||||
"jwt_audience",
|
||||
"disable_auth",
|
||||
"protocol",
|
||||
"overrides_by_request_protocol",
|
||||
)
|
||||
|
||||
class PathTranslation(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
PATH_TRANSLATION_UNSPECIFIED: _ClassVar[BackendRule.PathTranslation]
|
||||
CONSTANT_ADDRESS: _ClassVar[BackendRule.PathTranslation]
|
||||
APPEND_PATH_TO_ADDRESS: _ClassVar[BackendRule.PathTranslation]
|
||||
PATH_TRANSLATION_UNSPECIFIED: BackendRule.PathTranslation
|
||||
CONSTANT_ADDRESS: BackendRule.PathTranslation
|
||||
APPEND_PATH_TO_ADDRESS: BackendRule.PathTranslation
|
||||
|
||||
class OverridesByRequestProtocolEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: BackendRule
|
||||
def __init__(
|
||||
self,
|
||||
key: _Optional[str] = ...,
|
||||
value: _Optional[_Union[BackendRule, _Mapping]] = ...,
|
||||
) -> None: ...
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
||||
DEADLINE_FIELD_NUMBER: _ClassVar[int]
|
||||
MIN_DEADLINE_FIELD_NUMBER: _ClassVar[int]
|
||||
OPERATION_DEADLINE_FIELD_NUMBER: _ClassVar[int]
|
||||
PATH_TRANSLATION_FIELD_NUMBER: _ClassVar[int]
|
||||
JWT_AUDIENCE_FIELD_NUMBER: _ClassVar[int]
|
||||
DISABLE_AUTH_FIELD_NUMBER: _ClassVar[int]
|
||||
PROTOCOL_FIELD_NUMBER: _ClassVar[int]
|
||||
OVERRIDES_BY_REQUEST_PROTOCOL_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
address: str
|
||||
deadline: float
|
||||
min_deadline: float
|
||||
operation_deadline: float
|
||||
path_translation: BackendRule.PathTranslation
|
||||
jwt_audience: str
|
||||
disable_auth: bool
|
||||
protocol: str
|
||||
overrides_by_request_protocol: _containers.MessageMap[str, BackendRule]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
address: _Optional[str] = ...,
|
||||
deadline: _Optional[float] = ...,
|
||||
min_deadline: _Optional[float] = ...,
|
||||
operation_deadline: _Optional[float] = ...,
|
||||
path_translation: _Optional[_Union[BackendRule.PathTranslation, str]] = ...,
|
||||
jwt_audience: _Optional[str] = ...,
|
||||
disable_auth: bool = ...,
|
||||
protocol: _Optional[str] = ...,
|
||||
overrides_by_request_protocol: _Optional[_Mapping[str, BackendRule]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,77 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "BillingProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Billing related configuration of the service.
|
||||
//
|
||||
// The following example shows how to configure monitored resources and metrics
|
||||
// for billing, `consumer_destinations` is the only supported destination and
|
||||
// the monitored resources need at least one label key
|
||||
// `cloud.googleapis.com/location` to indicate the location of the billing
|
||||
// usage, using different monitored resources between monitoring and billing is
|
||||
// recommended so they can be evolved independently:
|
||||
//
|
||||
//
|
||||
// monitored_resources:
|
||||
// - type: library.googleapis.com/billing_branch
|
||||
// labels:
|
||||
// - key: cloud.googleapis.com/location
|
||||
// description: |
|
||||
// Predefined label to support billing location restriction.
|
||||
// - key: city
|
||||
// description: |
|
||||
// Custom label to define the city where the library branch is located
|
||||
// in.
|
||||
// - key: name
|
||||
// description: Custom label to define the name of the library branch.
|
||||
// metrics:
|
||||
// - name: library.googleapis.com/book/borrowed_count
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
// unit: "1"
|
||||
// billing:
|
||||
// consumer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/billing_branch
|
||||
// metrics:
|
||||
// - library.googleapis.com/book/borrowed_count
|
||||
message Billing {
|
||||
// Configuration of a specific billing destination (Currently only support
|
||||
// bill against consumer project).
|
||||
message BillingDestination {
|
||||
// The monitored resource type. The type must be defined in
|
||||
// [Service.monitored_resources][google.api.Service.monitored_resources]
|
||||
// section.
|
||||
string monitored_resource = 1;
|
||||
|
||||
// Names of the metrics to report to this billing destination.
|
||||
// Each name must be defined in
|
||||
// [Service.metrics][google.api.Service.metrics] section.
|
||||
repeated string metrics = 2;
|
||||
}
|
||||
|
||||
// Billing configurations for sending metrics to the consumer project.
|
||||
// There can be multiple consumer destinations per service, each one must have
|
||||
// a different monitored resource type. A metric can be used in at most
|
||||
// one consumer destination.
|
||||
repeated BillingDestination consumer_destinations = 8;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/billing.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/billing.proto\x12\ngoogle.api"\x93\x01\n\x07\x42illing\x12\x45\n\x15\x63onsumer_destinations\x18\x08 \x03(\x0b\x32&.google.api.Billing.BillingDestination\x1a\x41\n\x12\x42illingDestination\x12\x1a\n\x12monitored_resource\x18\x01 \x01(\t\x12\x0f\n\x07metrics\x18\x02 \x03(\tBn\n\x0e\x63om.google.apiB\x0c\x42illingProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.billing_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014BillingProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_BILLING"]._serialized_start = 41
|
||||
_globals["_BILLING"]._serialized_end = 188
|
||||
_globals["_BILLING_BILLINGDESTINATION"]._serialized_start = 123
|
||||
_globals["_BILLING_BILLINGDESTINATION"]._serialized_end = 188
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,50 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Billing(_message.Message):
|
||||
__slots__ = ("consumer_destinations",)
|
||||
|
||||
class BillingDestination(_message.Message):
|
||||
__slots__ = ("monitored_resource", "metrics")
|
||||
MONITORED_RESOURCE_FIELD_NUMBER: _ClassVar[int]
|
||||
METRICS_FIELD_NUMBER: _ClassVar[int]
|
||||
monitored_resource: str
|
||||
metrics: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
monitored_resource: _Optional[str] = ...,
|
||||
metrics: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
CONSUMER_DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
consumer_destinations: _containers.RepeatedCompositeFieldContainer[
|
||||
Billing.BillingDestination
|
||||
]
|
||||
def __init__(
|
||||
self,
|
||||
consumer_destinations: _Optional[
|
||||
_Iterable[_Union[Billing.BillingDestination, _Mapping]]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,486 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
// Configuration for which RPCs should be generated in the GAPIC client.
|
||||
SelectiveGapicGeneration selective_gapic_generation = 3;
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
||||
// 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.
|
||||
bool protobuf_pythonic_types_enabled = 2;
|
||||
|
||||
// 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`.
|
||||
bool unversioned_package_disabled = 3;
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
||||
// 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
|
||||
map<string, string> renamed_services = 2;
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// This message is used to configure the generation of a subset of the RPCs in
|
||||
// a service for client libraries.
|
||||
message SelectiveGapicGeneration {
|
||||
// An allowlist of the fully qualified names of RPCs that should be included
|
||||
// on public client surfaces.
|
||||
repeated string methods = 1;
|
||||
|
||||
// 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.
|
||||
bool generate_omitted_as_internal = 2;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,404 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import launch_stage_pb2 as _launch_stage_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import duration_pb2 as _duration_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class ClientLibraryOrganization(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: _ClassVar[ClientLibraryOrganization]
|
||||
CLOUD: _ClassVar[ClientLibraryOrganization]
|
||||
ADS: _ClassVar[ClientLibraryOrganization]
|
||||
PHOTOS: _ClassVar[ClientLibraryOrganization]
|
||||
STREET_VIEW: _ClassVar[ClientLibraryOrganization]
|
||||
SHOPPING: _ClassVar[ClientLibraryOrganization]
|
||||
GEO: _ClassVar[ClientLibraryOrganization]
|
||||
GENERATIVE_AI: _ClassVar[ClientLibraryOrganization]
|
||||
|
||||
class ClientLibraryDestination(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: _ClassVar[ClientLibraryDestination]
|
||||
GITHUB: _ClassVar[ClientLibraryDestination]
|
||||
PACKAGE_MANAGER: _ClassVar[ClientLibraryDestination]
|
||||
|
||||
CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: ClientLibraryOrganization
|
||||
CLOUD: ClientLibraryOrganization
|
||||
ADS: ClientLibraryOrganization
|
||||
PHOTOS: ClientLibraryOrganization
|
||||
STREET_VIEW: ClientLibraryOrganization
|
||||
SHOPPING: ClientLibraryOrganization
|
||||
GEO: ClientLibraryOrganization
|
||||
GENERATIVE_AI: ClientLibraryOrganization
|
||||
CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: ClientLibraryDestination
|
||||
GITHUB: ClientLibraryDestination
|
||||
PACKAGE_MANAGER: ClientLibraryDestination
|
||||
METHOD_SIGNATURE_FIELD_NUMBER: _ClassVar[int]
|
||||
method_signature: _descriptor.FieldDescriptor
|
||||
DEFAULT_HOST_FIELD_NUMBER: _ClassVar[int]
|
||||
default_host: _descriptor.FieldDescriptor
|
||||
OAUTH_SCOPES_FIELD_NUMBER: _ClassVar[int]
|
||||
oauth_scopes: _descriptor.FieldDescriptor
|
||||
API_VERSION_FIELD_NUMBER: _ClassVar[int]
|
||||
api_version: _descriptor.FieldDescriptor
|
||||
|
||||
class CommonLanguageSettings(_message.Message):
|
||||
__slots__ = ("reference_docs_uri", "destinations", "selective_gapic_generation")
|
||||
REFERENCE_DOCS_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
SELECTIVE_GAPIC_GENERATION_FIELD_NUMBER: _ClassVar[int]
|
||||
reference_docs_uri: str
|
||||
destinations: _containers.RepeatedScalarFieldContainer[ClientLibraryDestination]
|
||||
selective_gapic_generation: SelectiveGapicGeneration
|
||||
def __init__(
|
||||
self,
|
||||
reference_docs_uri: _Optional[str] = ...,
|
||||
destinations: _Optional[_Iterable[_Union[ClientLibraryDestination, str]]] = ...,
|
||||
selective_gapic_generation: _Optional[
|
||||
_Union[SelectiveGapicGeneration, _Mapping]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class ClientLibrarySettings(_message.Message):
|
||||
__slots__ = (
|
||||
"version",
|
||||
"launch_stage",
|
||||
"rest_numeric_enums",
|
||||
"java_settings",
|
||||
"cpp_settings",
|
||||
"php_settings",
|
||||
"python_settings",
|
||||
"node_settings",
|
||||
"dotnet_settings",
|
||||
"ruby_settings",
|
||||
"go_settings",
|
||||
)
|
||||
VERSION_FIELD_NUMBER: _ClassVar[int]
|
||||
LAUNCH_STAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
REST_NUMERIC_ENUMS_FIELD_NUMBER: _ClassVar[int]
|
||||
JAVA_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
CPP_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
PHP_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
PYTHON_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
NODE_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
DOTNET_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
RUBY_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
GO_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
version: str
|
||||
launch_stage: _launch_stage_pb2.LaunchStage
|
||||
rest_numeric_enums: bool
|
||||
java_settings: JavaSettings
|
||||
cpp_settings: CppSettings
|
||||
php_settings: PhpSettings
|
||||
python_settings: PythonSettings
|
||||
node_settings: NodeSettings
|
||||
dotnet_settings: DotnetSettings
|
||||
ruby_settings: RubySettings
|
||||
go_settings: GoSettings
|
||||
def __init__(
|
||||
self,
|
||||
version: _Optional[str] = ...,
|
||||
launch_stage: _Optional[_Union[_launch_stage_pb2.LaunchStage, str]] = ...,
|
||||
rest_numeric_enums: bool = ...,
|
||||
java_settings: _Optional[_Union[JavaSettings, _Mapping]] = ...,
|
||||
cpp_settings: _Optional[_Union[CppSettings, _Mapping]] = ...,
|
||||
php_settings: _Optional[_Union[PhpSettings, _Mapping]] = ...,
|
||||
python_settings: _Optional[_Union[PythonSettings, _Mapping]] = ...,
|
||||
node_settings: _Optional[_Union[NodeSettings, _Mapping]] = ...,
|
||||
dotnet_settings: _Optional[_Union[DotnetSettings, _Mapping]] = ...,
|
||||
ruby_settings: _Optional[_Union[RubySettings, _Mapping]] = ...,
|
||||
go_settings: _Optional[_Union[GoSettings, _Mapping]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Publishing(_message.Message):
|
||||
__slots__ = (
|
||||
"method_settings",
|
||||
"new_issue_uri",
|
||||
"documentation_uri",
|
||||
"api_short_name",
|
||||
"github_label",
|
||||
"codeowner_github_teams",
|
||||
"doc_tag_prefix",
|
||||
"organization",
|
||||
"library_settings",
|
||||
"proto_reference_documentation_uri",
|
||||
"rest_reference_documentation_uri",
|
||||
)
|
||||
METHOD_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
NEW_ISSUE_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
DOCUMENTATION_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
API_SHORT_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
GITHUB_LABEL_FIELD_NUMBER: _ClassVar[int]
|
||||
CODEOWNER_GITHUB_TEAMS_FIELD_NUMBER: _ClassVar[int]
|
||||
DOC_TAG_PREFIX_FIELD_NUMBER: _ClassVar[int]
|
||||
ORGANIZATION_FIELD_NUMBER: _ClassVar[int]
|
||||
LIBRARY_SETTINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
PROTO_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
REST_REFERENCE_DOCUMENTATION_URI_FIELD_NUMBER: _ClassVar[int]
|
||||
method_settings: _containers.RepeatedCompositeFieldContainer[MethodSettings]
|
||||
new_issue_uri: str
|
||||
documentation_uri: str
|
||||
api_short_name: str
|
||||
github_label: str
|
||||
codeowner_github_teams: _containers.RepeatedScalarFieldContainer[str]
|
||||
doc_tag_prefix: str
|
||||
organization: ClientLibraryOrganization
|
||||
library_settings: _containers.RepeatedCompositeFieldContainer[ClientLibrarySettings]
|
||||
proto_reference_documentation_uri: str
|
||||
rest_reference_documentation_uri: str
|
||||
def __init__(
|
||||
self,
|
||||
method_settings: _Optional[_Iterable[_Union[MethodSettings, _Mapping]]] = ...,
|
||||
new_issue_uri: _Optional[str] = ...,
|
||||
documentation_uri: _Optional[str] = ...,
|
||||
api_short_name: _Optional[str] = ...,
|
||||
github_label: _Optional[str] = ...,
|
||||
codeowner_github_teams: _Optional[_Iterable[str]] = ...,
|
||||
doc_tag_prefix: _Optional[str] = ...,
|
||||
organization: _Optional[_Union[ClientLibraryOrganization, str]] = ...,
|
||||
library_settings: _Optional[
|
||||
_Iterable[_Union[ClientLibrarySettings, _Mapping]]
|
||||
] = ...,
|
||||
proto_reference_documentation_uri: _Optional[str] = ...,
|
||||
rest_reference_documentation_uri: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class JavaSettings(_message.Message):
|
||||
__slots__ = ("library_package", "service_class_names", "common")
|
||||
|
||||
class ServiceClassNamesEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
LIBRARY_PACKAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
SERVICE_CLASS_NAMES_FIELD_NUMBER: _ClassVar[int]
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
library_package: str
|
||||
service_class_names: _containers.ScalarMap[str, str]
|
||||
common: CommonLanguageSettings
|
||||
def __init__(
|
||||
self,
|
||||
library_package: _Optional[str] = ...,
|
||||
service_class_names: _Optional[_Mapping[str, str]] = ...,
|
||||
common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class CppSettings(_message.Message):
|
||||
__slots__ = ("common",)
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
def __init__(
|
||||
self, common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class PhpSettings(_message.Message):
|
||||
__slots__ = ("common",)
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
def __init__(
|
||||
self, common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class PythonSettings(_message.Message):
|
||||
__slots__ = ("common", "experimental_features")
|
||||
|
||||
class ExperimentalFeatures(_message.Message):
|
||||
__slots__ = (
|
||||
"rest_async_io_enabled",
|
||||
"protobuf_pythonic_types_enabled",
|
||||
"unversioned_package_disabled",
|
||||
)
|
||||
REST_ASYNC_IO_ENABLED_FIELD_NUMBER: _ClassVar[int]
|
||||
PROTOBUF_PYTHONIC_TYPES_ENABLED_FIELD_NUMBER: _ClassVar[int]
|
||||
UNVERSIONED_PACKAGE_DISABLED_FIELD_NUMBER: _ClassVar[int]
|
||||
rest_async_io_enabled: bool
|
||||
protobuf_pythonic_types_enabled: bool
|
||||
unversioned_package_disabled: bool
|
||||
def __init__(
|
||||
self,
|
||||
rest_async_io_enabled: bool = ...,
|
||||
protobuf_pythonic_types_enabled: bool = ...,
|
||||
unversioned_package_disabled: bool = ...,
|
||||
) -> None: ...
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
EXPERIMENTAL_FEATURES_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
experimental_features: PythonSettings.ExperimentalFeatures
|
||||
def __init__(
|
||||
self,
|
||||
common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...,
|
||||
experimental_features: _Optional[
|
||||
_Union[PythonSettings.ExperimentalFeatures, _Mapping]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class NodeSettings(_message.Message):
|
||||
__slots__ = ("common",)
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
def __init__(
|
||||
self, common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class DotnetSettings(_message.Message):
|
||||
__slots__ = (
|
||||
"common",
|
||||
"renamed_services",
|
||||
"renamed_resources",
|
||||
"ignored_resources",
|
||||
"forced_namespace_aliases",
|
||||
"handwritten_signatures",
|
||||
)
|
||||
|
||||
class RenamedServicesEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
|
||||
class RenamedResourcesEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
RENAMED_SERVICES_FIELD_NUMBER: _ClassVar[int]
|
||||
RENAMED_RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
||||
IGNORED_RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
||||
FORCED_NAMESPACE_ALIASES_FIELD_NUMBER: _ClassVar[int]
|
||||
HANDWRITTEN_SIGNATURES_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
renamed_services: _containers.ScalarMap[str, str]
|
||||
renamed_resources: _containers.ScalarMap[str, str]
|
||||
ignored_resources: _containers.RepeatedScalarFieldContainer[str]
|
||||
forced_namespace_aliases: _containers.RepeatedScalarFieldContainer[str]
|
||||
handwritten_signatures: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...,
|
||||
renamed_services: _Optional[_Mapping[str, str]] = ...,
|
||||
renamed_resources: _Optional[_Mapping[str, str]] = ...,
|
||||
ignored_resources: _Optional[_Iterable[str]] = ...,
|
||||
forced_namespace_aliases: _Optional[_Iterable[str]] = ...,
|
||||
handwritten_signatures: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class RubySettings(_message.Message):
|
||||
__slots__ = ("common",)
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
def __init__(
|
||||
self, common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class GoSettings(_message.Message):
|
||||
__slots__ = ("common", "renamed_services")
|
||||
|
||||
class RenamedServicesEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
COMMON_FIELD_NUMBER: _ClassVar[int]
|
||||
RENAMED_SERVICES_FIELD_NUMBER: _ClassVar[int]
|
||||
common: CommonLanguageSettings
|
||||
renamed_services: _containers.ScalarMap[str, str]
|
||||
def __init__(
|
||||
self,
|
||||
common: _Optional[_Union[CommonLanguageSettings, _Mapping]] = ...,
|
||||
renamed_services: _Optional[_Mapping[str, str]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class MethodSettings(_message.Message):
|
||||
__slots__ = ("selector", "long_running", "auto_populated_fields")
|
||||
|
||||
class LongRunning(_message.Message):
|
||||
__slots__ = (
|
||||
"initial_poll_delay",
|
||||
"poll_delay_multiplier",
|
||||
"max_poll_delay",
|
||||
"total_poll_timeout",
|
||||
)
|
||||
INITIAL_POLL_DELAY_FIELD_NUMBER: _ClassVar[int]
|
||||
POLL_DELAY_MULTIPLIER_FIELD_NUMBER: _ClassVar[int]
|
||||
MAX_POLL_DELAY_FIELD_NUMBER: _ClassVar[int]
|
||||
TOTAL_POLL_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
|
||||
initial_poll_delay: _duration_pb2.Duration
|
||||
poll_delay_multiplier: float
|
||||
max_poll_delay: _duration_pb2.Duration
|
||||
total_poll_timeout: _duration_pb2.Duration
|
||||
def __init__(
|
||||
self,
|
||||
initial_poll_delay: _Optional[
|
||||
_Union[_duration_pb2.Duration, _Mapping]
|
||||
] = ...,
|
||||
poll_delay_multiplier: _Optional[float] = ...,
|
||||
max_poll_delay: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...,
|
||||
total_poll_timeout: _Optional[
|
||||
_Union[_duration_pb2.Duration, _Mapping]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
LONG_RUNNING_FIELD_NUMBER: _ClassVar[int]
|
||||
AUTO_POPULATED_FIELDS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
long_running: MethodSettings.LongRunning
|
||||
auto_populated_fields: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
long_running: _Optional[_Union[MethodSettings.LongRunning, _Mapping]] = ...,
|
||||
auto_populated_fields: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class SelectiveGapicGeneration(_message.Message):
|
||||
__slots__ = ("methods", "generate_omitted_as_internal")
|
||||
METHODS_FIELD_NUMBER: _ClassVar[int]
|
||||
GENERATE_OMITTED_AS_INTERNAL_FIELD_NUMBER: _ClassVar[int]
|
||||
methods: _containers.RepeatedScalarFieldContainer[str]
|
||||
generate_omitted_as_internal: bool
|
||||
def __init__(
|
||||
self,
|
||||
methods: _Optional[_Iterable[str]] = ...,
|
||||
generate_omitted_as_internal: bool = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,84 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/configchange;configchange";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ConfigChangeProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Output generated from semantically comparing two versions of a service
|
||||
// configuration.
|
||||
//
|
||||
// Includes detailed information about a field that have changed with
|
||||
// applicable advice about potential consequences for the change, such as
|
||||
// backwards-incompatibility.
|
||||
message ConfigChange {
|
||||
// Object hierarchy path to the change, with levels separated by a '.'
|
||||
// character. For repeated fields, an applicable unique identifier field is
|
||||
// used for the index (usually selector, name, or id). For maps, the term
|
||||
// 'key' is used. If the field has no unique identifier, the numeric index
|
||||
// is used.
|
||||
// Examples:
|
||||
// - visibility.rules[selector=="google.LibraryService.ListBooks"].restriction
|
||||
// - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value
|
||||
// - logging.producer_destinations[0]
|
||||
string element = 1;
|
||||
|
||||
// Value of the changed object in the old Service configuration,
|
||||
// in JSON format. This field will not be populated if ChangeType == ADDED.
|
||||
string old_value = 2;
|
||||
|
||||
// Value of the changed object in the new Service configuration,
|
||||
// in JSON format. This field will not be populated if ChangeType == REMOVED.
|
||||
string new_value = 3;
|
||||
|
||||
// The type for this change, either ADDED, REMOVED, or MODIFIED.
|
||||
ChangeType change_type = 4;
|
||||
|
||||
// Collection of advice provided for this change, useful for determining the
|
||||
// possible impact of this change.
|
||||
repeated Advice advices = 5;
|
||||
}
|
||||
|
||||
// Generated advice about this change, used for providing more
|
||||
// information about how a change will affect the existing service.
|
||||
message Advice {
|
||||
// Useful description for why this advice was applied and what actions should
|
||||
// be taken to mitigate any implied risks.
|
||||
string description = 2;
|
||||
}
|
||||
|
||||
// Classifies set of possible modifications to an object in the service
|
||||
// configuration.
|
||||
enum ChangeType {
|
||||
// No value was provided.
|
||||
CHANGE_TYPE_UNSPECIFIED = 0;
|
||||
|
||||
// The changed object exists in the 'new' service configuration, but not
|
||||
// in the 'old' service configuration.
|
||||
ADDED = 1;
|
||||
|
||||
// The changed object exists in the 'old' service configuration, but not
|
||||
// in the 'new' service configuration.
|
||||
REMOVED = 2;
|
||||
|
||||
// The changed object exists in both service configurations, but its value
|
||||
// is different.
|
||||
MODIFIED = 3;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/config_change.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1egoogle/api/config_change.proto\x12\ngoogle.api"\x97\x01\n\x0c\x43onfigChange\x12\x0f\n\x07\x65lement\x18\x01 \x01(\t\x12\x11\n\told_value\x18\x02 \x01(\t\x12\x11\n\tnew_value\x18\x03 \x01(\t\x12+\n\x0b\x63hange_type\x18\x04 \x01(\x0e\x32\x16.google.api.ChangeType\x12#\n\x07\x61\x64vices\x18\x05 \x03(\x0b\x32\x12.google.api.Advice"\x1d\n\x06\x41\x64vice\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t*O\n\nChangeType\x12\x1b\n\x17\x43HANGE_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x01\x12\x0b\n\x07REMOVED\x10\x02\x12\x0c\n\x08MODIFIED\x10\x03\x42q\n\x0e\x63om.google.apiB\x11\x43onfigChangeProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/configchange;configchange\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.config_change_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\021ConfigChangeProtoP\001ZCgoogle.golang.org/genproto/googleapis/api/configchange;configchange\242\002\004GAPI"
|
||||
_globals["_CHANGETYPE"]._serialized_start = 231
|
||||
_globals["_CHANGETYPE"]._serialized_end = 310
|
||||
_globals["_CONFIGCHANGE"]._serialized_start = 47
|
||||
_globals["_CONFIGCHANGE"]._serialized_end = 198
|
||||
_globals["_ADVICE"]._serialized_start = 200
|
||||
_globals["_ADVICE"]._serialized_end = 229
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,65 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class ChangeType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
CHANGE_TYPE_UNSPECIFIED: _ClassVar[ChangeType]
|
||||
ADDED: _ClassVar[ChangeType]
|
||||
REMOVED: _ClassVar[ChangeType]
|
||||
MODIFIED: _ClassVar[ChangeType]
|
||||
|
||||
CHANGE_TYPE_UNSPECIFIED: ChangeType
|
||||
ADDED: ChangeType
|
||||
REMOVED: ChangeType
|
||||
MODIFIED: ChangeType
|
||||
|
||||
class ConfigChange(_message.Message):
|
||||
__slots__ = ("element", "old_value", "new_value", "change_type", "advices")
|
||||
ELEMENT_FIELD_NUMBER: _ClassVar[int]
|
||||
OLD_VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
NEW_VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
CHANGE_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
ADVICES_FIELD_NUMBER: _ClassVar[int]
|
||||
element: str
|
||||
old_value: str
|
||||
new_value: str
|
||||
change_type: ChangeType
|
||||
advices: _containers.RepeatedCompositeFieldContainer[Advice]
|
||||
def __init__(
|
||||
self,
|
||||
element: _Optional[str] = ...,
|
||||
old_value: _Optional[str] = ...,
|
||||
new_value: _Optional[str] = ...,
|
||||
change_type: _Optional[_Union[ChangeType, str]] = ...,
|
||||
advices: _Optional[_Iterable[_Union[Advice, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Advice(_message.Message):
|
||||
__slots__ = ("description",)
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
description: str
|
||||
def __init__(self, description: _Optional[str] = ...) -> None: ...
|
||||
@@ -0,0 +1,82 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ConsumerProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
// A descriptor for defining project properties for a service. One service may
|
||||
// have many consumer projects, and the service may want to behave differently
|
||||
// depending on some properties on the project. For example, a project may be
|
||||
// associated with a school, or a business, or a government agency, a business
|
||||
// type property on the project may affect how a service responds to the client.
|
||||
// This descriptor defines which properties are allowed to be set on a project.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// project_properties:
|
||||
// properties:
|
||||
// - name: NO_WATERMARK
|
||||
// type: BOOL
|
||||
// description: Allows usage of the API without watermarks.
|
||||
// - name: EXTENDED_TILE_CACHE_PERIOD
|
||||
// type: INT64
|
||||
message ProjectProperties {
|
||||
// List of per consumer project-specific properties.
|
||||
repeated Property properties = 1;
|
||||
}
|
||||
|
||||
// Defines project properties.
|
||||
//
|
||||
// API services can define properties that can be assigned to consumer projects
|
||||
// so that backends can perform response customization without having to make
|
||||
// additional calls or maintain additional storage. For example, Maps API
|
||||
// defines properties that controls map tile cache period, or whether to embed a
|
||||
// watermark in a result.
|
||||
//
|
||||
// These values can be set via API producer console. Only API providers can
|
||||
// define and set these properties.
|
||||
message Property {
|
||||
// Supported data type of the property values
|
||||
enum PropertyType {
|
||||
// The type is unspecified, and will result in an error.
|
||||
UNSPECIFIED = 0;
|
||||
|
||||
// The type is `int64`.
|
||||
INT64 = 1;
|
||||
|
||||
// The type is `bool`.
|
||||
BOOL = 2;
|
||||
|
||||
// The type is `string`.
|
||||
STRING = 3;
|
||||
|
||||
// The type is 'double'.
|
||||
DOUBLE = 4;
|
||||
}
|
||||
|
||||
// The name of the property (a.k.a key).
|
||||
string name = 1;
|
||||
|
||||
// The type of this property.
|
||||
PropertyType type = 2;
|
||||
|
||||
// The description of the property
|
||||
string description = 3;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/consumer.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x19google/api/consumer.proto\x12\ngoogle.api"=\n\x11ProjectProperties\x12(\n\nproperties\x18\x01 \x03(\x0b\x32\x14.google.api.Property"\xac\x01\n\x08Property\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\x04type\x18\x02 \x01(\x0e\x32!.google.api.Property.PropertyType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t"L\n\x0cPropertyType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05INT64\x10\x01\x12\x08\n\x04\x42OOL\x10\x02\x12\n\n\x06STRING\x10\x03\x12\n\n\x06\x44OUBLE\x10\x04\x42h\n\x0e\x63om.google.apiB\rConsumerProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfigb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.consumer_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\rConsumerProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"
|
||||
_globals["_PROJECTPROPERTIES"]._serialized_start = 41
|
||||
_globals["_PROJECTPROPERTIES"]._serialized_end = 102
|
||||
_globals["_PROPERTY"]._serialized_start = 105
|
||||
_globals["_PROPERTY"]._serialized_end = 277
|
||||
_globals["_PROPERTY_PROPERTYTYPE"]._serialized_start = 201
|
||||
_globals["_PROPERTY_PROPERTYTYPE"]._serialized_end = 277
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,62 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class ProjectProperties(_message.Message):
|
||||
__slots__ = ("properties",)
|
||||
PROPERTIES_FIELD_NUMBER: _ClassVar[int]
|
||||
properties: _containers.RepeatedCompositeFieldContainer[Property]
|
||||
def __init__(
|
||||
self, properties: _Optional[_Iterable[_Union[Property, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class Property(_message.Message):
|
||||
__slots__ = ("name", "type", "description")
|
||||
|
||||
class PropertyType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
UNSPECIFIED: _ClassVar[Property.PropertyType]
|
||||
INT64: _ClassVar[Property.PropertyType]
|
||||
BOOL: _ClassVar[Property.PropertyType]
|
||||
STRING: _ClassVar[Property.PropertyType]
|
||||
DOUBLE: _ClassVar[Property.PropertyType]
|
||||
UNSPECIFIED: Property.PropertyType
|
||||
INT64: Property.PropertyType
|
||||
BOOL: Property.PropertyType
|
||||
STRING: Property.PropertyType
|
||||
DOUBLE: Property.PropertyType
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
type: Property.PropertyType
|
||||
description: str
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
type: _Optional[_Union[Property.PropertyType, str]] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,92 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ContextProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Context` defines which contexts an API requests.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// context:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// requested:
|
||||
// - google.rpc.context.ProjectContext
|
||||
// - google.rpc.context.OriginContext
|
||||
//
|
||||
// The above specifies that all methods in the API request
|
||||
// `google.rpc.context.ProjectContext` and
|
||||
// `google.rpc.context.OriginContext`.
|
||||
//
|
||||
// Available context types are defined in package
|
||||
// `google.rpc.context`.
|
||||
//
|
||||
// This also provides mechanism to allowlist any protobuf message extension that
|
||||
// can be sent in grpc metadata using “x-goog-ext-<extension_id>-bin” and
|
||||
// “x-goog-ext-<extension_id>-jspb” format. For example, list any service
|
||||
// specific protobuf types that can appear in grpc metadata as follows in your
|
||||
// yaml file:
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// context:
|
||||
// rules:
|
||||
// - selector: "google.example.library.v1.LibraryService.CreateBook"
|
||||
// allowed_request_extensions:
|
||||
// - google.foo.v1.NewExtension
|
||||
// allowed_response_extensions:
|
||||
// - google.foo.v1.NewExtension
|
||||
//
|
||||
// You can also specify extension ID instead of fully qualified extension name
|
||||
// here.
|
||||
message Context {
|
||||
// A list of RPC context rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated ContextRule rules = 1;
|
||||
}
|
||||
|
||||
// A context rule provides information about the context for an individual API
|
||||
// element.
|
||||
message ContextRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// A list of full type names of requested contexts, only the requested context
|
||||
// will be made available to the backend.
|
||||
repeated string requested = 2;
|
||||
|
||||
// A list of full type names of provided contexts. It is used to support
|
||||
// propagating HTTP headers and ETags from the response extension.
|
||||
repeated string provided = 3;
|
||||
|
||||
// A list of full type names or extension IDs of extensions allowed in grpc
|
||||
// side channel from client to backend.
|
||||
repeated string allowed_request_extensions = 4;
|
||||
|
||||
// A list of full type names or extension IDs of extensions allowed in grpc
|
||||
// side channel from backend to client.
|
||||
repeated string allowed_response_extensions = 5;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/context.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/context.proto\x12\ngoogle.api"1\n\x07\x43ontext\x12&\n\x05rules\x18\x01 \x03(\x0b\x32\x17.google.api.ContextRule"\x8d\x01\n\x0b\x43ontextRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x11\n\trequested\x18\x02 \x03(\t\x12\x10\n\x08provided\x18\x03 \x03(\t\x12"\n\x1a\x61llowed_request_extensions\x18\x04 \x03(\t\x12#\n\x1b\x61llowed_response_extensions\x18\x05 \x03(\tBn\n\x0e\x63om.google.apiB\x0c\x43ontextProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.context_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014ContextProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_CONTEXT"]._serialized_start = 40
|
||||
_globals["_CONTEXT"]._serialized_end = 89
|
||||
_globals["_CONTEXTRULE"]._serialized_start = 92
|
||||
_globals["_CONTEXTRULE"]._serialized_end = 233
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,60 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Context(_message.Message):
|
||||
__slots__ = ("rules",)
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[ContextRule]
|
||||
def __init__(
|
||||
self, rules: _Optional[_Iterable[_Union[ContextRule, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class ContextRule(_message.Message):
|
||||
__slots__ = (
|
||||
"selector",
|
||||
"requested",
|
||||
"provided",
|
||||
"allowed_request_extensions",
|
||||
"allowed_response_extensions",
|
||||
)
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
REQUESTED_FIELD_NUMBER: _ClassVar[int]
|
||||
PROVIDED_FIELD_NUMBER: _ClassVar[int]
|
||||
ALLOWED_REQUEST_EXTENSIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
ALLOWED_RESPONSE_EXTENSIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
requested: _containers.RepeatedScalarFieldContainer[str]
|
||||
provided: _containers.RepeatedScalarFieldContainer[str]
|
||||
allowed_request_extensions: _containers.RepeatedScalarFieldContainer[str]
|
||||
allowed_response_extensions: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
requested: _Optional[_Iterable[str]] = ...,
|
||||
provided: _Optional[_Iterable[str]] = ...,
|
||||
allowed_request_extensions: _Optional[_Iterable[str]] = ...,
|
||||
allowed_response_extensions: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,41 @@
|
||||
// Copyright 2025 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/policy.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ControlProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Selects and configures the service controller used by the service.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// control:
|
||||
// environment: servicecontrol.googleapis.com
|
||||
message Control {
|
||||
// The service controller environment to use. If empty, no control plane
|
||||
// feature (like quota and billing) will be enabled. The recommended value for
|
||||
// most services is servicecontrol.googleapis.com
|
||||
string environment = 1;
|
||||
|
||||
// Defines policies applying to the API methods of the service.
|
||||
repeated MethodPolicy method_policies = 4;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/control.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import policy_pb2 as google_dot_api_dot_policy__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/control.proto\x12\ngoogle.api\x1a\x17google/api/policy.proto"Q\n\x07\x43ontrol\x12\x13\n\x0b\x65nvironment\x18\x01 \x01(\t\x12\x31\n\x0fmethod_policies\x18\x04 \x03(\x0b\x32\x18.google.api.MethodPolicyBn\n\x0e\x63om.google.apiB\x0c\x43ontrolProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.control_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014ControlProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_CONTROL"]._serialized_start = 65
|
||||
_globals["_CONTROL"]._serialized_end = 146
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,42 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import policy_pb2 as _policy_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Control(_message.Message):
|
||||
__slots__ = ("environment", "method_policies")
|
||||
ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
|
||||
METHOD_POLICIES_FIELD_NUMBER: _ClassVar[int]
|
||||
environment: str
|
||||
method_policies: _containers.RepeatedCompositeFieldContainer[
|
||||
_policy_pb2.MethodPolicy
|
||||
]
|
||||
def __init__(
|
||||
self,
|
||||
environment: _Optional[str] = ...,
|
||||
method_policies: _Optional[
|
||||
_Iterable[_Union[_policy_pb2.MethodPolicy, _Mapping]]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,213 @@
|
||||
// Copyright 2025 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/protobuf/any.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/distribution;distribution";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "DistributionProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Distribution` contains summary statistics for a population of values. It
|
||||
// optionally contains a histogram representing the distribution of those values
|
||||
// across a set of buckets.
|
||||
//
|
||||
// The summary statistics are the count, mean, sum of the squared deviation from
|
||||
// the mean, the minimum, and the maximum of the set of population of values.
|
||||
// The histogram is based on a sequence of buckets and gives a count of values
|
||||
// that fall into each bucket. The boundaries of the buckets are given either
|
||||
// explicitly or by formulas for buckets of fixed or exponentially increasing
|
||||
// widths.
|
||||
//
|
||||
// Although it is not forbidden, it is generally a bad idea to include
|
||||
// non-finite values (infinities or NaNs) in the population of values, as this
|
||||
// will render the `mean` and `sum_of_squared_deviation` fields meaningless.
|
||||
message Distribution {
|
||||
// The range of the population values.
|
||||
message Range {
|
||||
// The minimum of the population values.
|
||||
double min = 1;
|
||||
|
||||
// The maximum of the population values.
|
||||
double max = 2;
|
||||
}
|
||||
|
||||
// `BucketOptions` describes the bucket boundaries used to create a histogram
|
||||
// for the distribution. The buckets can be in a linear sequence, an
|
||||
// exponential sequence, or each bucket can be specified explicitly.
|
||||
// `BucketOptions` does not include the number of values in each bucket.
|
||||
//
|
||||
// A bucket has an inclusive lower bound and exclusive upper bound for the
|
||||
// values that are counted for that bucket. The upper bound of a bucket must
|
||||
// be strictly greater than the lower bound. The sequence of N buckets for a
|
||||
// distribution consists of an underflow bucket (number 0), zero or more
|
||||
// finite buckets (number 1 through N - 2) and an overflow bucket (number N -
|
||||
// 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the
|
||||
// same as the upper bound of bucket i - 1. The buckets span the whole range
|
||||
// of finite values: lower bound of the underflow bucket is -infinity and the
|
||||
// upper bound of the overflow bucket is +infinity. The finite buckets are
|
||||
// so-called because both bounds are finite.
|
||||
message BucketOptions {
|
||||
// Specifies a linear sequence of buckets that all have the same width
|
||||
// (except overflow and underflow). Each bucket represents a constant
|
||||
// absolute uncertainty on the specific value in the bucket.
|
||||
//
|
||||
// There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the
|
||||
// following boundaries:
|
||||
//
|
||||
// Upper bound (0 <= i < N-1): offset + (width * i).
|
||||
//
|
||||
// Lower bound (1 <= i < N): offset + (width * (i - 1)).
|
||||
message Linear {
|
||||
// Must be greater than 0.
|
||||
int32 num_finite_buckets = 1;
|
||||
|
||||
// Must be greater than 0.
|
||||
double width = 2;
|
||||
|
||||
// Lower bound of the first bucket.
|
||||
double offset = 3;
|
||||
}
|
||||
|
||||
// Specifies an exponential sequence of buckets that have a width that is
|
||||
// proportional to the value of the lower bound. Each bucket represents a
|
||||
// constant relative uncertainty on a specific value in the bucket.
|
||||
//
|
||||
// There are `num_finite_buckets + 2` (= N) buckets. Bucket `i` has the
|
||||
// following boundaries:
|
||||
//
|
||||
// Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).
|
||||
//
|
||||
// Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).
|
||||
message Exponential {
|
||||
// Must be greater than 0.
|
||||
int32 num_finite_buckets = 1;
|
||||
|
||||
// Must be greater than 1.
|
||||
double growth_factor = 2;
|
||||
|
||||
// Must be greater than 0.
|
||||
double scale = 3;
|
||||
}
|
||||
|
||||
// Specifies a set of buckets with arbitrary widths.
|
||||
//
|
||||
// There are `size(bounds) + 1` (= N) buckets. Bucket `i` has the following
|
||||
// boundaries:
|
||||
//
|
||||
// Upper bound (0 <= i < N-1): bounds[i]
|
||||
// Lower bound (1 <= i < N); bounds[i - 1]
|
||||
//
|
||||
// The `bounds` field must contain at least one element. If `bounds` has
|
||||
// only one element, then there are no finite buckets, and that single
|
||||
// element is the common boundary of the overflow and underflow buckets.
|
||||
message Explicit {
|
||||
// The values must be monotonically increasing.
|
||||
repeated double bounds = 1;
|
||||
}
|
||||
|
||||
// Exactly one of these three fields must be set.
|
||||
oneof options {
|
||||
// The linear bucket.
|
||||
Linear linear_buckets = 1;
|
||||
|
||||
// The exponential buckets.
|
||||
Exponential exponential_buckets = 2;
|
||||
|
||||
// The explicit buckets.
|
||||
Explicit explicit_buckets = 3;
|
||||
}
|
||||
}
|
||||
|
||||
// Exemplars are example points that may be used to annotate aggregated
|
||||
// distribution values. They are metadata that gives information about a
|
||||
// particular value added to a Distribution bucket, such as a trace ID that
|
||||
// was active when a value was added. They may contain further information,
|
||||
// such as a example values and timestamps, origin, etc.
|
||||
message Exemplar {
|
||||
// Value of the exemplar point. This value determines to which bucket the
|
||||
// exemplar belongs.
|
||||
double value = 1;
|
||||
|
||||
// The observation (sampling) time of the above value.
|
||||
google.protobuf.Timestamp timestamp = 2;
|
||||
|
||||
// Contextual information about the example value. Examples are:
|
||||
//
|
||||
// Trace: type.googleapis.com/google.monitoring.v3.SpanContext
|
||||
//
|
||||
// Literal string: type.googleapis.com/google.protobuf.StringValue
|
||||
//
|
||||
// Labels dropped during aggregation:
|
||||
// type.googleapis.com/google.monitoring.v3.DroppedLabels
|
||||
//
|
||||
// There may be only a single attachment of any given message type in a
|
||||
// single exemplar, and this is enforced by the system.
|
||||
repeated google.protobuf.Any attachments = 3;
|
||||
}
|
||||
|
||||
// The number of values in the population. Must be non-negative. This value
|
||||
// must equal the sum of the values in `bucket_counts` if a histogram is
|
||||
// provided.
|
||||
int64 count = 1;
|
||||
|
||||
// The arithmetic mean of the values in the population. If `count` is zero
|
||||
// then this field must be zero.
|
||||
double mean = 2;
|
||||
|
||||
// The sum of squared deviations from the mean of the values in the
|
||||
// population. For values x_i this is:
|
||||
//
|
||||
// Sum[i=1..n]((x_i - mean)^2)
|
||||
//
|
||||
// Knuth, "The Art of Computer Programming", Vol. 2, page 232, 3rd edition
|
||||
// describes Welford's method for accumulating this sum in one pass.
|
||||
//
|
||||
// If `count` is zero then this field must be zero.
|
||||
double sum_of_squared_deviation = 3;
|
||||
|
||||
// If specified, contains the range of the population values. The field
|
||||
// must not be present if the `count` is zero.
|
||||
Range range = 4;
|
||||
|
||||
// Defines the histogram bucket boundaries. If the distribution does not
|
||||
// contain a histogram, then omit this field.
|
||||
BucketOptions bucket_options = 6;
|
||||
|
||||
// The number of values in each bucket of the histogram, as described in
|
||||
// `bucket_options`. If the distribution does not have a histogram, then omit
|
||||
// this field. If there is a histogram, then the sum of the values in
|
||||
// `bucket_counts` must equal the value in the `count` field of the
|
||||
// distribution.
|
||||
//
|
||||
// If present, `bucket_counts` should contain N values, where N is the number
|
||||
// of buckets specified in `bucket_options`. If you supply fewer than N
|
||||
// values, the remaining values are assumed to be 0.
|
||||
//
|
||||
// The order of the values in `bucket_counts` follows the bucket numbering
|
||||
// schemes described for the three bucket types. The first value must be the
|
||||
// count for the underflow bucket (number 0). The next N-2 values are the
|
||||
// counts for the finite buckets (number 1 through N-2). The N'th value in
|
||||
// `bucket_counts` is the count for the overflow bucket (number N-1).
|
||||
repeated int64 bucket_counts = 7;
|
||||
|
||||
// Must be in increasing order of `value` field.
|
||||
repeated Exemplar exemplars = 10;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/distribution.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
|
||||
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1dgoogle/api/distribution.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xd9\x06\n\x0c\x44istribution\x12\r\n\x05\x63ount\x18\x01 \x01(\x03\x12\x0c\n\x04mean\x18\x02 \x01(\x01\x12 \n\x18sum_of_squared_deviation\x18\x03 \x01(\x01\x12-\n\x05range\x18\x04 \x01(\x0b\x32\x1e.google.api.Distribution.Range\x12>\n\x0e\x62ucket_options\x18\x06 \x01(\x0b\x32&.google.api.Distribution.BucketOptions\x12\x15\n\rbucket_counts\x18\x07 \x03(\x03\x12\x34\n\texemplars\x18\n \x03(\x0b\x32!.google.api.Distribution.Exemplar\x1a!\n\x05Range\x12\x0b\n\x03min\x18\x01 \x01(\x01\x12\x0b\n\x03max\x18\x02 \x01(\x01\x1a\xb5\x03\n\rBucketOptions\x12G\n\x0elinear_buckets\x18\x01 \x01(\x0b\x32-.google.api.Distribution.BucketOptions.LinearH\x00\x12Q\n\x13\x65xponential_buckets\x18\x02 \x01(\x0b\x32\x32.google.api.Distribution.BucketOptions.ExponentialH\x00\x12K\n\x10\x65xplicit_buckets\x18\x03 \x01(\x0b\x32/.google.api.Distribution.BucketOptions.ExplicitH\x00\x1a\x43\n\x06Linear\x12\x1a\n\x12num_finite_buckets\x18\x01 \x01(\x05\x12\r\n\x05width\x18\x02 \x01(\x01\x12\x0e\n\x06offset\x18\x03 \x01(\x01\x1aO\n\x0b\x45xponential\x12\x1a\n\x12num_finite_buckets\x18\x01 \x01(\x05\x12\x15\n\rgrowth_factor\x18\x02 \x01(\x01\x12\r\n\x05scale\x18\x03 \x01(\x01\x1a\x1a\n\x08\x45xplicit\x12\x0e\n\x06\x62ounds\x18\x01 \x03(\x01\x42\t\n\x07options\x1as\n\x08\x45xemplar\x12\r\n\x05value\x18\x01 \x01(\x01\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12)\n\x0b\x61ttachments\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyBq\n\x0e\x63om.google.apiB\x11\x44istributionProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/distribution;distribution\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.distribution_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\021DistributionProtoP\001ZCgoogle.golang.org/genproto/googleapis/api/distribution;distribution\242\002\004GAPI"
|
||||
_globals["_DISTRIBUTION"]._serialized_start = 106
|
||||
_globals["_DISTRIBUTION"]._serialized_end = 963
|
||||
_globals["_DISTRIBUTION_RANGE"]._serialized_start = 373
|
||||
_globals["_DISTRIBUTION_RANGE"]._serialized_end = 406
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS"]._serialized_start = 409
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS"]._serialized_end = 846
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_LINEAR"]._serialized_start = 659
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_LINEAR"]._serialized_end = 726
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL"]._serialized_start = 728
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_EXPONENTIAL"]._serialized_end = 807
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_EXPLICIT"]._serialized_start = 809
|
||||
_globals["_DISTRIBUTION_BUCKETOPTIONS_EXPLICIT"]._serialized_end = 835
|
||||
_globals["_DISTRIBUTION_EXEMPLAR"]._serialized_start = 848
|
||||
_globals["_DISTRIBUTION_EXEMPLAR"]._serialized_end = 963
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,144 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import any_pb2 as _any_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Distribution(_message.Message):
|
||||
__slots__ = (
|
||||
"count",
|
||||
"mean",
|
||||
"sum_of_squared_deviation",
|
||||
"range",
|
||||
"bucket_options",
|
||||
"bucket_counts",
|
||||
"exemplars",
|
||||
)
|
||||
|
||||
class Range(_message.Message):
|
||||
__slots__ = ("min", "max")
|
||||
MIN_FIELD_NUMBER: _ClassVar[int]
|
||||
MAX_FIELD_NUMBER: _ClassVar[int]
|
||||
min: float
|
||||
max: float
|
||||
def __init__(
|
||||
self, min: _Optional[float] = ..., max: _Optional[float] = ...
|
||||
) -> None: ...
|
||||
|
||||
class BucketOptions(_message.Message):
|
||||
__slots__ = ("linear_buckets", "exponential_buckets", "explicit_buckets")
|
||||
|
||||
class Linear(_message.Message):
|
||||
__slots__ = ("num_finite_buckets", "width", "offset")
|
||||
NUM_FINITE_BUCKETS_FIELD_NUMBER: _ClassVar[int]
|
||||
WIDTH_FIELD_NUMBER: _ClassVar[int]
|
||||
OFFSET_FIELD_NUMBER: _ClassVar[int]
|
||||
num_finite_buckets: int
|
||||
width: float
|
||||
offset: float
|
||||
def __init__(
|
||||
self,
|
||||
num_finite_buckets: _Optional[int] = ...,
|
||||
width: _Optional[float] = ...,
|
||||
offset: _Optional[float] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Exponential(_message.Message):
|
||||
__slots__ = ("num_finite_buckets", "growth_factor", "scale")
|
||||
NUM_FINITE_BUCKETS_FIELD_NUMBER: _ClassVar[int]
|
||||
GROWTH_FACTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
SCALE_FIELD_NUMBER: _ClassVar[int]
|
||||
num_finite_buckets: int
|
||||
growth_factor: float
|
||||
scale: float
|
||||
def __init__(
|
||||
self,
|
||||
num_finite_buckets: _Optional[int] = ...,
|
||||
growth_factor: _Optional[float] = ...,
|
||||
scale: _Optional[float] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Explicit(_message.Message):
|
||||
__slots__ = ("bounds",)
|
||||
BOUNDS_FIELD_NUMBER: _ClassVar[int]
|
||||
bounds: _containers.RepeatedScalarFieldContainer[float]
|
||||
def __init__(self, bounds: _Optional[_Iterable[float]] = ...) -> None: ...
|
||||
LINEAR_BUCKETS_FIELD_NUMBER: _ClassVar[int]
|
||||
EXPONENTIAL_BUCKETS_FIELD_NUMBER: _ClassVar[int]
|
||||
EXPLICIT_BUCKETS_FIELD_NUMBER: _ClassVar[int]
|
||||
linear_buckets: Distribution.BucketOptions.Linear
|
||||
exponential_buckets: Distribution.BucketOptions.Exponential
|
||||
explicit_buckets: Distribution.BucketOptions.Explicit
|
||||
def __init__(
|
||||
self,
|
||||
linear_buckets: _Optional[
|
||||
_Union[Distribution.BucketOptions.Linear, _Mapping]
|
||||
] = ...,
|
||||
exponential_buckets: _Optional[
|
||||
_Union[Distribution.BucketOptions.Exponential, _Mapping]
|
||||
] = ...,
|
||||
explicit_buckets: _Optional[
|
||||
_Union[Distribution.BucketOptions.Explicit, _Mapping]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Exemplar(_message.Message):
|
||||
__slots__ = ("value", "timestamp", "attachments")
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
|
||||
ATTACHMENTS_FIELD_NUMBER: _ClassVar[int]
|
||||
value: float
|
||||
timestamp: _timestamp_pb2.Timestamp
|
||||
attachments: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
|
||||
def __init__(
|
||||
self,
|
||||
value: _Optional[float] = ...,
|
||||
timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...,
|
||||
attachments: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
COUNT_FIELD_NUMBER: _ClassVar[int]
|
||||
MEAN_FIELD_NUMBER: _ClassVar[int]
|
||||
SUM_OF_SQUARED_DEVIATION_FIELD_NUMBER: _ClassVar[int]
|
||||
RANGE_FIELD_NUMBER: _ClassVar[int]
|
||||
BUCKET_OPTIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
BUCKET_COUNTS_FIELD_NUMBER: _ClassVar[int]
|
||||
EXEMPLARS_FIELD_NUMBER: _ClassVar[int]
|
||||
count: int
|
||||
mean: float
|
||||
sum_of_squared_deviation: float
|
||||
range: Distribution.Range
|
||||
bucket_options: Distribution.BucketOptions
|
||||
bucket_counts: _containers.RepeatedScalarFieldContainer[int]
|
||||
exemplars: _containers.RepeatedCompositeFieldContainer[Distribution.Exemplar]
|
||||
def __init__(
|
||||
self,
|
||||
count: _Optional[int] = ...,
|
||||
mean: _Optional[float] = ...,
|
||||
sum_of_squared_deviation: _Optional[float] = ...,
|
||||
range: _Optional[_Union[Distribution.Range, _Mapping]] = ...,
|
||||
bucket_options: _Optional[_Union[Distribution.BucketOptions, _Mapping]] = ...,
|
||||
bucket_counts: _Optional[_Iterable[int]] = ...,
|
||||
exemplars: _Optional[_Iterable[_Union[Distribution.Exemplar, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,168 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "DocumentationProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Documentation` provides the information for describing a service.
|
||||
//
|
||||
// Example:
|
||||
// <pre><code>documentation:
|
||||
// summary: >
|
||||
// The Google Calendar API gives access
|
||||
// to most calendar features.
|
||||
// pages:
|
||||
// - name: Overview
|
||||
// content: (== include google/foo/overview.md ==)
|
||||
// - name: Tutorial
|
||||
// content: (== include google/foo/tutorial.md ==)
|
||||
// subpages:
|
||||
// - name: Java
|
||||
// content: (== include google/foo/tutorial_java.md ==)
|
||||
// rules:
|
||||
// - selector: google.calendar.Calendar.Get
|
||||
// description: >
|
||||
// ...
|
||||
// - selector: google.calendar.Calendar.Put
|
||||
// description: >
|
||||
// ...
|
||||
// </code></pre>
|
||||
// Documentation is provided in markdown syntax. In addition to
|
||||
// standard markdown features, definition lists, tables and fenced
|
||||
// code blocks are supported. Section headers can be provided and are
|
||||
// interpreted relative to the section nesting of the context where
|
||||
// a documentation fragment is embedded.
|
||||
//
|
||||
// Documentation from the IDL is merged with documentation defined
|
||||
// via the config at normalization time, where documentation provided
|
||||
// by config rules overrides IDL provided.
|
||||
//
|
||||
// A number of constructs specific to the API platform are supported
|
||||
// in documentation text.
|
||||
//
|
||||
// In order to reference a proto element, the following
|
||||
// notation can be used:
|
||||
// <pre><code>[fully.qualified.proto.name][]</code></pre>
|
||||
// To override the display text used for the link, this can be used:
|
||||
// <pre><code>[display text][fully.qualified.proto.name]</code></pre>
|
||||
// Text can be excluded from doc using the following notation:
|
||||
// <pre><code>(-- internal comment --)</code></pre>
|
||||
//
|
||||
// A few directives are available in documentation. Note that
|
||||
// directives must appear on a single line to be properly
|
||||
// identified. The `include` directive includes a markdown file from
|
||||
// an external source:
|
||||
// <pre><code>(== include path/to/file ==)</code></pre>
|
||||
// The `resource_for` directive marks a message to be the resource of
|
||||
// a collection in REST view. If it is not specified, tools attempt
|
||||
// to infer the resource from the operations in a collection:
|
||||
// <pre><code>(== resource_for v1.shelves.books ==)</code></pre>
|
||||
// The directive `suppress_warning` does not directly affect documentation
|
||||
// and is documented together with service config validation.
|
||||
message Documentation {
|
||||
// A short description of what the service does. The summary must be plain
|
||||
// text. It becomes the overview of the service displayed in Google Cloud
|
||||
// Console.
|
||||
// NOTE: This field is equivalent to the standard field `description`.
|
||||
string summary = 1;
|
||||
|
||||
// The top level pages for the documentation set.
|
||||
repeated Page pages = 5;
|
||||
|
||||
// A list of documentation rules that apply to individual API elements.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated DocumentationRule rules = 3;
|
||||
|
||||
// The URL to the root of documentation.
|
||||
string documentation_root_url = 4;
|
||||
|
||||
// Specifies the service root url if the default one (the service name
|
||||
// from the yaml file) is not suitable. This can be seen in any fully
|
||||
// specified service urls as well as sections that show a base that other
|
||||
// urls are relative to.
|
||||
string service_root_url = 6;
|
||||
|
||||
// Declares a single overview page. For example:
|
||||
// <pre><code>documentation:
|
||||
// summary: ...
|
||||
// overview: (== include overview.md ==)
|
||||
// </code></pre>
|
||||
// This is a shortcut for the following declaration (using pages style):
|
||||
// <pre><code>documentation:
|
||||
// summary: ...
|
||||
// pages:
|
||||
// - name: Overview
|
||||
// content: (== include overview.md ==)
|
||||
// </code></pre>
|
||||
// Note: you cannot specify both `overview` field and `pages` field.
|
||||
string overview = 2;
|
||||
}
|
||||
|
||||
// A documentation rule provides information about individual API elements.
|
||||
message DocumentationRule {
|
||||
// The selector is a comma-separated list of patterns for any element such as
|
||||
// a method, a field, an enum value. Each pattern is a qualified name of the
|
||||
// element which may end in "*", indicating a wildcard. Wildcards are only
|
||||
// allowed at the end and for a whole component of the qualified name,
|
||||
// i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A wildcard will match
|
||||
// one or more components. To specify a default for all applicable elements,
|
||||
// the whole pattern "*" is used.
|
||||
string selector = 1;
|
||||
|
||||
// Description of the selected proto element (e.g. a message, a method, a
|
||||
// 'service' definition, or a field). Defaults to leading & trailing comments
|
||||
// taken from the proto source definition of the proto element.
|
||||
string description = 2;
|
||||
|
||||
// Deprecation description of the selected element(s). It can be provided if
|
||||
// an element is marked as `deprecated`.
|
||||
string deprecation_description = 3;
|
||||
}
|
||||
|
||||
// Represents a documentation page. A page can contain subpages to represent
|
||||
// nested documentation set structure.
|
||||
message Page {
|
||||
// The name of the page. It will be used as an identity of the page to
|
||||
// generate URI of the page, text of the link to this page in navigation,
|
||||
// etc. The full page name (start from the root page name to this page
|
||||
// concatenated with `.`) can be used as reference to the page in your
|
||||
// documentation. For example:
|
||||
// <pre><code>pages:
|
||||
// - name: Tutorial
|
||||
// content: (== include tutorial.md ==)
|
||||
// subpages:
|
||||
// - name: Java
|
||||
// content: (== include tutorial_java.md ==)
|
||||
// </code></pre>
|
||||
// You can reference `Java` page using Markdown reference link syntax:
|
||||
// `[Java][Tutorial.Java]`.
|
||||
string name = 1;
|
||||
|
||||
// The Markdown content of the page. You can use ```(== include {path}
|
||||
// ==)``` to include content from a Markdown file. The content can be used
|
||||
// to produce the documentation page such as HTML format page.
|
||||
string content = 2;
|
||||
|
||||
// Subpages of this page. The order of subpages specified here will be
|
||||
// honored in the generated docset.
|
||||
repeated Page subpages = 3;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/documentation.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1egoogle/api/documentation.proto\x12\ngoogle.api"\xbb\x01\n\rDocumentation\x12\x0f\n\x07summary\x18\x01 \x01(\t\x12\x1f\n\x05pages\x18\x05 \x03(\x0b\x32\x10.google.api.Page\x12,\n\x05rules\x18\x03 \x03(\x0b\x32\x1d.google.api.DocumentationRule\x12\x1e\n\x16\x64ocumentation_root_url\x18\x04 \x01(\t\x12\x18\n\x10service_root_url\x18\x06 \x01(\t\x12\x10\n\x08overview\x18\x02 \x01(\t"[\n\x11\x44ocumentationRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1f\n\x17\x64\x65precation_description\x18\x03 \x01(\t"I\n\x04Page\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\t\x12"\n\x08subpages\x18\x03 \x03(\x0b\x32\x10.google.api.PageBt\n\x0e\x63om.google.apiB\x12\x44ocumentationProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.documentation_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\022DocumentationProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_DOCUMENTATION"]._serialized_start = 47
|
||||
_globals["_DOCUMENTATION"]._serialized_end = 234
|
||||
_globals["_DOCUMENTATIONRULE"]._serialized_start = 236
|
||||
_globals["_DOCUMENTATIONRULE"]._serialized_end = 327
|
||||
_globals["_PAGE"]._serialized_start = 329
|
||||
_globals["_PAGE"]._serialized_end = 402
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,86 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Documentation(_message.Message):
|
||||
__slots__ = (
|
||||
"summary",
|
||||
"pages",
|
||||
"rules",
|
||||
"documentation_root_url",
|
||||
"service_root_url",
|
||||
"overview",
|
||||
)
|
||||
SUMMARY_FIELD_NUMBER: _ClassVar[int]
|
||||
PAGES_FIELD_NUMBER: _ClassVar[int]
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
DOCUMENTATION_ROOT_URL_FIELD_NUMBER: _ClassVar[int]
|
||||
SERVICE_ROOT_URL_FIELD_NUMBER: _ClassVar[int]
|
||||
OVERVIEW_FIELD_NUMBER: _ClassVar[int]
|
||||
summary: str
|
||||
pages: _containers.RepeatedCompositeFieldContainer[Page]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[DocumentationRule]
|
||||
documentation_root_url: str
|
||||
service_root_url: str
|
||||
overview: str
|
||||
def __init__(
|
||||
self,
|
||||
summary: _Optional[str] = ...,
|
||||
pages: _Optional[_Iterable[_Union[Page, _Mapping]]] = ...,
|
||||
rules: _Optional[_Iterable[_Union[DocumentationRule, _Mapping]]] = ...,
|
||||
documentation_root_url: _Optional[str] = ...,
|
||||
service_root_url: _Optional[str] = ...,
|
||||
overview: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class DocumentationRule(_message.Message):
|
||||
__slots__ = ("selector", "description", "deprecation_description")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
DEPRECATION_DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
description: str
|
||||
deprecation_description: str
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
deprecation_description: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Page(_message.Message):
|
||||
__slots__ = ("name", "content", "subpages")
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
CONTENT_FIELD_NUMBER: _ClassVar[int]
|
||||
SUBPAGES_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
content: str
|
||||
subpages: _containers.RepeatedCompositeFieldContainer[Page]
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
content: _Optional[str] = ...,
|
||||
subpages: _Optional[_Iterable[_Union[Page, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,69 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "EndpointProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Endpoint` describes a network address of a service that serves a set of
|
||||
// APIs. It is commonly known as a service endpoint. A service may expose
|
||||
// any number of service endpoints, and all service endpoints share the same
|
||||
// service definition, such as quota limits and monitoring metrics.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// type: google.api.Service
|
||||
// name: library-example.googleapis.com
|
||||
// endpoints:
|
||||
// # Declares network address `https://library-example.googleapis.com`
|
||||
// # for service `library-example.googleapis.com`. The `https` scheme
|
||||
// # is implicit for all service endpoints. Other schemes may be
|
||||
// # supported in the future.
|
||||
// - name: library-example.googleapis.com
|
||||
// allow_cors: false
|
||||
// - name: content-staging-library-example.googleapis.com
|
||||
// # Allows HTTP OPTIONS calls to be passed to the API frontend, for it
|
||||
// # to decide whether the subsequent cross-origin request is allowed
|
||||
// # to proceed.
|
||||
// allow_cors: true
|
||||
message Endpoint {
|
||||
// The canonical name of this endpoint.
|
||||
string name = 1;
|
||||
|
||||
// Aliases for this endpoint, these will be served by the same UrlMap as the
|
||||
// parent endpoint, and will be provisioned in the GCP stack for the Regional
|
||||
// Endpoints.
|
||||
repeated string aliases = 2;
|
||||
|
||||
// The specification of an Internet routable address of API frontend that will
|
||||
// handle requests to this [API
|
||||
// Endpoint](https://cloud.google.com/apis/design/glossary). It should be
|
||||
// either a valid IPv4 address or a fully-qualified domain name. For example,
|
||||
// "8.8.8.8" or "myservice.appspot.com".
|
||||
string target = 101;
|
||||
|
||||
// Allowing
|
||||
// [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
|
||||
// cross-domain traffic, would allow the backends served from this endpoint to
|
||||
// receive and respond to HTTP OPTIONS requests. The response will be used by
|
||||
// the browser to determine whether the subsequent cross-origin request is
|
||||
// allowed to proceed.
|
||||
bool allow_cors = 5;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/endpoint.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x19google/api/endpoint.proto\x12\ngoogle.api"M\n\x08\x45ndpoint\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x61liases\x18\x02 \x03(\t\x12\x0e\n\x06target\x18\x65 \x01(\t\x12\x12\n\nallow_cors\x18\x05 \x01(\x08\x42o\n\x0e\x63om.google.apiB\rEndpointProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.endpoint_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\rEndpointProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_ENDPOINT"]._serialized_start = 41
|
||||
_globals["_ENDPOINT"]._serialized_end = 118
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,41 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Optional as _Optional
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Endpoint(_message.Message):
|
||||
__slots__ = ("name", "aliases", "target", "allow_cors")
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
ALIASES_FIELD_NUMBER: _ClassVar[int]
|
||||
TARGET_FIELD_NUMBER: _ClassVar[int]
|
||||
ALLOW_CORS_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
aliases: _containers.RepeatedScalarFieldContainer[str]
|
||||
target: str
|
||||
allow_cors: bool
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
aliases: _Optional[_Iterable[str]] = ...,
|
||||
target: _Optional[str] = ...,
|
||||
allow_cors: bool = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,622 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/error_reason;error_reason";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ErrorReasonProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Defines the supported values for `google.rpc.ErrorInfo.reason` for the
|
||||
// `googleapis.com` error domain. This error domain is reserved for [Service
|
||||
// Infrastructure](https://cloud.google.com/service-infrastructure/docs/overview).
|
||||
// For each error info of this domain, the metadata key "service" refers to the
|
||||
// logical identifier of an API service, such as "pubsub.googleapis.com". The
|
||||
// "consumer" refers to the entity that consumes an API Service. It typically is
|
||||
// a Google project that owns the client application or the server resource,
|
||||
// such as "projects/123". Other metadata keys are specific to each error
|
||||
// reason. For more information, see the definition of the specific error
|
||||
// reason.
|
||||
enum ErrorReason {
|
||||
// Do not use this default value.
|
||||
ERROR_REASON_UNSPECIFIED = 0;
|
||||
|
||||
// The request is calling a disabled service for a consumer.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" contacting
|
||||
// "pubsub.googleapis.com" service which is disabled:
|
||||
//
|
||||
// { "reason": "SERVICE_DISABLED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates the "pubsub.googleapis.com" has been disabled in
|
||||
// "projects/123".
|
||||
SERVICE_DISABLED = 1;
|
||||
|
||||
// The request whose associated billing account is disabled.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to contact
|
||||
// "pubsub.googleapis.com" service because the associated billing account is
|
||||
// disabled:
|
||||
//
|
||||
// { "reason": "BILLING_DISABLED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates the billing account associated has been disabled.
|
||||
BILLING_DISABLED = 2;
|
||||
|
||||
// The request is denied because the provided [API
|
||||
// key](https://cloud.google.com/docs/authentication/api-keys) is invalid. It
|
||||
// may be in a bad format, cannot be found, or has been expired).
|
||||
//
|
||||
// Example of an ErrorInfo when the request is contacting
|
||||
// "storage.googleapis.com" service with an invalid API key:
|
||||
//
|
||||
// { "reason": "API_KEY_INVALID",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// }
|
||||
// }
|
||||
API_KEY_INVALID = 3;
|
||||
|
||||
// The request is denied because it violates [API key API
|
||||
// restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_api_restrictions).
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call the
|
||||
// "storage.googleapis.com" service because this service is restricted in the
|
||||
// API key:
|
||||
//
|
||||
// { "reason": "API_KEY_SERVICE_BLOCKED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
API_KEY_SERVICE_BLOCKED = 4;
|
||||
|
||||
// The request is denied because it violates [API key HTTP
|
||||
// restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions).
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call
|
||||
// "storage.googleapis.com" service because the http referrer of the request
|
||||
// violates API key HTTP restrictions:
|
||||
//
|
||||
// { "reason": "API_KEY_HTTP_REFERRER_BLOCKED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com",
|
||||
// }
|
||||
// }
|
||||
API_KEY_HTTP_REFERRER_BLOCKED = 7;
|
||||
|
||||
// The request is denied because it violates [API key IP address
|
||||
// restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call
|
||||
// "storage.googleapis.com" service because the caller IP of the request
|
||||
// violates API key IP address restrictions:
|
||||
//
|
||||
// { "reason": "API_KEY_IP_ADDRESS_BLOCKED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com",
|
||||
// }
|
||||
// }
|
||||
API_KEY_IP_ADDRESS_BLOCKED = 8;
|
||||
|
||||
// The request is denied because it violates [API key Android application
|
||||
// restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call
|
||||
// "storage.googleapis.com" service because the request from the Android apps
|
||||
// violates the API key Android application restrictions:
|
||||
//
|
||||
// { "reason": "API_KEY_ANDROID_APP_BLOCKED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
API_KEY_ANDROID_APP_BLOCKED = 9;
|
||||
|
||||
// The request is denied because it violates [API key iOS application
|
||||
// restrictions](https://cloud.google.com/docs/authentication/api-keys#adding_application_restrictions).
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call
|
||||
// "storage.googleapis.com" service because the request from the iOS apps
|
||||
// violates the API key iOS application restrictions:
|
||||
//
|
||||
// { "reason": "API_KEY_IOS_APP_BLOCKED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
API_KEY_IOS_APP_BLOCKED = 13;
|
||||
|
||||
// The request is denied because there is not enough rate quota for the
|
||||
// consumer.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to contact
|
||||
// "pubsub.googleapis.com" service because consumer's rate quota usage has
|
||||
// reached the maximum value set for the quota limit
|
||||
// "ReadsPerMinutePerProject" on the quota metric
|
||||
// "pubsub.googleapis.com/read_requests":
|
||||
//
|
||||
// { "reason": "RATE_LIMIT_EXCEEDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "pubsub.googleapis.com",
|
||||
// "quota_metric": "pubsub.googleapis.com/read_requests",
|
||||
// "quota_limit": "ReadsPerMinutePerProject"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" checks quota on
|
||||
// the service "dataflow.googleapis.com" and hits the organization quota
|
||||
// limit "DefaultRequestsPerMinutePerOrganization" on the metric
|
||||
// "dataflow.googleapis.com/default_requests".
|
||||
//
|
||||
// { "reason": "RATE_LIMIT_EXCEEDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "dataflow.googleapis.com",
|
||||
// "quota_metric": "dataflow.googleapis.com/default_requests",
|
||||
// "quota_limit": "DefaultRequestsPerMinutePerOrganization"
|
||||
// }
|
||||
// }
|
||||
RATE_LIMIT_EXCEEDED = 5;
|
||||
|
||||
// The request is denied because there is not enough resource quota for the
|
||||
// consumer.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to contact
|
||||
// "compute.googleapis.com" service because consumer's resource quota usage
|
||||
// has reached the maximum value set for the quota limit "VMsPerProject"
|
||||
// on the quota metric "compute.googleapis.com/vms":
|
||||
//
|
||||
// { "reason": "RESOURCE_QUOTA_EXCEEDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "compute.googleapis.com",
|
||||
// "quota_metric": "compute.googleapis.com/vms",
|
||||
// "quota_limit": "VMsPerProject"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" checks resource
|
||||
// quota on the service "dataflow.googleapis.com" and hits the organization
|
||||
// quota limit "jobs-per-organization" on the metric
|
||||
// "dataflow.googleapis.com/job_count".
|
||||
//
|
||||
// { "reason": "RESOURCE_QUOTA_EXCEEDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "dataflow.googleapis.com",
|
||||
// "quota_metric": "dataflow.googleapis.com/job_count",
|
||||
// "quota_limit": "jobs-per-organization"
|
||||
// }
|
||||
// }
|
||||
RESOURCE_QUOTA_EXCEEDED = 6;
|
||||
|
||||
// The request whose associated billing account address is in a tax restricted
|
||||
// location, violates the local tax restrictions when creating resources in
|
||||
// the restricted region.
|
||||
//
|
||||
// Example of an ErrorInfo when creating the Cloud Storage Bucket in the
|
||||
// container "projects/123" under a tax restricted region
|
||||
// "locations/asia-northeast3":
|
||||
//
|
||||
// { "reason": "LOCATION_TAX_POLICY_VIOLATED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com",
|
||||
// "location": "locations/asia-northeast3"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates creating the Cloud Storage Bucket in
|
||||
// "locations/asia-northeast3" violates the location tax restriction.
|
||||
LOCATION_TAX_POLICY_VIOLATED = 10;
|
||||
|
||||
// The request is denied because the caller does not have required permission
|
||||
// on the user project "projects/123" or the user project is invalid. For more
|
||||
// information, check the [userProject System
|
||||
// Parameters](https://cloud.google.com/apis/docs/system-parameters).
|
||||
//
|
||||
// Example of an ErrorInfo when the caller is calling Cloud Storage service
|
||||
// with insufficient permissions on the user project:
|
||||
//
|
||||
// { "reason": "USER_PROJECT_DENIED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
USER_PROJECT_DENIED = 11;
|
||||
|
||||
// The request is denied because the consumer "projects/123" is suspended due
|
||||
// to Terms of Service(Tos) violations. Check [Project suspension
|
||||
// guidelines](https://cloud.google.com/resource-manager/docs/project-suspension-guidelines)
|
||||
// for more information.
|
||||
//
|
||||
// Example of an ErrorInfo when calling Cloud Storage service with the
|
||||
// suspended consumer "projects/123":
|
||||
//
|
||||
// { "reason": "CONSUMER_SUSPENDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
CONSUMER_SUSPENDED = 12;
|
||||
|
||||
// The request is denied because the associated consumer is invalid. It may be
|
||||
// in a bad format, cannot be found, or have been deleted.
|
||||
//
|
||||
// Example of an ErrorInfo when calling Cloud Storage service with the
|
||||
// invalid consumer "projects/123":
|
||||
//
|
||||
// { "reason": "CONSUMER_INVALID",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
CONSUMER_INVALID = 14;
|
||||
|
||||
// The request is denied because it violates [VPC Service
|
||||
// Controls](https://cloud.google.com/vpc-service-controls/docs/overview).
|
||||
// The 'uid' field is a random generated identifier that customer can use it
|
||||
// to search the audit log for a request rejected by VPC Service Controls. For
|
||||
// more information, please refer [VPC Service Controls
|
||||
// Troubleshooting](https://cloud.google.com/vpc-service-controls/docs/troubleshooting#unique-id)
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to call
|
||||
// Cloud Storage service because the request is prohibited by the VPC Service
|
||||
// Controls.
|
||||
//
|
||||
// { "reason": "SECURITY_POLICY_VIOLATED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "uid": "123456789abcde",
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
SECURITY_POLICY_VIOLATED = 15;
|
||||
|
||||
// The request is denied because the provided access token has expired.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is calling Cloud Storage service
|
||||
// with an expired access token:
|
||||
//
|
||||
// { "reason": "ACCESS_TOKEN_EXPIRED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject"
|
||||
// }
|
||||
// }
|
||||
ACCESS_TOKEN_EXPIRED = 16;
|
||||
|
||||
// The request is denied because the provided access token doesn't have at
|
||||
// least one of the acceptable scopes required for the API. Please check
|
||||
// [OAuth 2.0 Scopes for Google
|
||||
// APIs](https://developers.google.com/identity/protocols/oauth2/scopes) for
|
||||
// the list of the OAuth 2.0 scopes that you might need to request to access
|
||||
// the API.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is calling Cloud Storage service
|
||||
// with an access token that is missing required scopes:
|
||||
//
|
||||
// { "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject"
|
||||
// }
|
||||
// }
|
||||
ACCESS_TOKEN_SCOPE_INSUFFICIENT = 17;
|
||||
|
||||
// The request is denied because the account associated with the provided
|
||||
// access token is in an invalid state, such as disabled or deleted.
|
||||
// For more information, see https://cloud.google.com/docs/authentication.
|
||||
//
|
||||
// Warning: For privacy reasons, the server may not be able to disclose the
|
||||
// email address for some accounts. The client MUST NOT depend on the
|
||||
// availability of the `email` attribute.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is to the Cloud Storage API with
|
||||
// an access token that is associated with a disabled or deleted [service
|
||||
// account](http://cloud/iam/docs/service-accounts):
|
||||
//
|
||||
// { "reason": "ACCOUNT_STATE_INVALID",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject",
|
||||
// "email": "user@123.iam.gserviceaccount.com"
|
||||
// }
|
||||
// }
|
||||
ACCOUNT_STATE_INVALID = 18;
|
||||
|
||||
// The request is denied because the type of the provided access token is not
|
||||
// supported by the API being called.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is to the Cloud Storage API with
|
||||
// an unsupported token type.
|
||||
//
|
||||
// { "reason": "ACCESS_TOKEN_TYPE_UNSUPPORTED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject"
|
||||
// }
|
||||
// }
|
||||
ACCESS_TOKEN_TYPE_UNSUPPORTED = 19;
|
||||
|
||||
// The request is denied because the request doesn't have any authentication
|
||||
// credentials. For more information regarding the supported authentication
|
||||
// strategies for Google Cloud APIs, see
|
||||
// https://cloud.google.com/docs/authentication.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is to the Cloud Storage API
|
||||
// without any authentication credentials.
|
||||
//
|
||||
// { "reason": "CREDENTIALS_MISSING",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject"
|
||||
// }
|
||||
// }
|
||||
CREDENTIALS_MISSING = 20;
|
||||
|
||||
// The request is denied because the provided project owning the resource
|
||||
// which acts as the [API
|
||||
// consumer](https://cloud.google.com/apis/design/glossary#api_consumer) is
|
||||
// invalid. It may be in a bad format or empty.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is to the Cloud Functions API,
|
||||
// but the offered resource project in the request in a bad format which can't
|
||||
// perform the ListFunctions method.
|
||||
//
|
||||
// { "reason": "RESOURCE_PROJECT_INVALID",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "cloudfunctions.googleapis.com",
|
||||
// "method":
|
||||
// "google.cloud.functions.v1.CloudFunctionsService.ListFunctions"
|
||||
// }
|
||||
// }
|
||||
RESOURCE_PROJECT_INVALID = 21;
|
||||
|
||||
// The request is denied because the provided session cookie is missing,
|
||||
// invalid or failed to decode.
|
||||
//
|
||||
// Example of an ErrorInfo when the request is calling Cloud Storage service
|
||||
// with a SID cookie which can't be decoded.
|
||||
//
|
||||
// { "reason": "SESSION_COOKIE_INVALID",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject",
|
||||
// "cookie": "SID"
|
||||
// }
|
||||
// }
|
||||
SESSION_COOKIE_INVALID = 23;
|
||||
|
||||
// The request is denied because the user is from a Google Workspace customer
|
||||
// that blocks their users from accessing a particular service.
|
||||
//
|
||||
// Example scenario: https://support.google.com/a/answer/9197205?hl=en
|
||||
//
|
||||
// Example of an ErrorInfo when access to Google Cloud Storage service is
|
||||
// blocked by the Google Workspace administrator:
|
||||
//
|
||||
// { "reason": "USER_BLOCKED_BY_ADMIN",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "storage.googleapis.com",
|
||||
// "method": "google.storage.v1.Storage.GetObject",
|
||||
// }
|
||||
// }
|
||||
USER_BLOCKED_BY_ADMIN = 24;
|
||||
|
||||
// The request is denied because the resource service usage is restricted
|
||||
// by administrators according to the organization policy constraint.
|
||||
// For more information see
|
||||
// https://cloud.google.com/resource-manager/docs/organization-policy/restricting-services.
|
||||
//
|
||||
// Example of an ErrorInfo when access to Google Cloud Storage service is
|
||||
// restricted by Resource Usage Restriction policy:
|
||||
//
|
||||
// { "reason": "RESOURCE_USAGE_RESTRICTION_VIOLATED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/project-123",
|
||||
// "service": "storage.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
RESOURCE_USAGE_RESTRICTION_VIOLATED = 25;
|
||||
|
||||
// Unimplemented. Do not use.
|
||||
//
|
||||
// The request is denied because it contains unsupported system parameters in
|
||||
// URL query parameters or HTTP headers. For more information,
|
||||
// see https://cloud.google.com/apis/docs/system-parameters
|
||||
//
|
||||
// Example of an ErrorInfo when access "pubsub.googleapis.com" service with
|
||||
// a request header of "x-goog-user-ip":
|
||||
//
|
||||
// { "reason": "SYSTEM_PARAMETER_UNSUPPORTED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// "parameter": "x-goog-user-ip"
|
||||
// }
|
||||
// }
|
||||
SYSTEM_PARAMETER_UNSUPPORTED = 26;
|
||||
|
||||
// The request is denied because it violates Org Restriction: the requested
|
||||
// resource does not belong to allowed organizations specified in
|
||||
// "X-Goog-Allowed-Resources" header.
|
||||
//
|
||||
// Example of an ErrorInfo when accessing a GCP resource that is restricted by
|
||||
// Org Restriction for "pubsub.googleapis.com" service.
|
||||
//
|
||||
// {
|
||||
// reason: "ORG_RESTRICTION_VIOLATION"
|
||||
// domain: "googleapis.com"
|
||||
// metadata {
|
||||
// "consumer":"projects/123456"
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
ORG_RESTRICTION_VIOLATION = 27;
|
||||
|
||||
// The request is denied because "X-Goog-Allowed-Resources" header is in a bad
|
||||
// format.
|
||||
//
|
||||
// Example of an ErrorInfo when
|
||||
// accessing "pubsub.googleapis.com" service with an invalid
|
||||
// "X-Goog-Allowed-Resources" request header.
|
||||
//
|
||||
// {
|
||||
// reason: "ORG_RESTRICTION_HEADER_INVALID"
|
||||
// domain: "googleapis.com"
|
||||
// metadata {
|
||||
// "consumer":"projects/123456"
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
ORG_RESTRICTION_HEADER_INVALID = 28;
|
||||
|
||||
// Unimplemented. Do not use.
|
||||
//
|
||||
// The request is calling a service that is not visible to the consumer.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" contacting
|
||||
// "pubsub.googleapis.com" service which is not visible to the consumer.
|
||||
//
|
||||
// { "reason": "SERVICE_NOT_VISIBLE",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates the "pubsub.googleapis.com" is not visible to
|
||||
// "projects/123" (or it may not exist).
|
||||
SERVICE_NOT_VISIBLE = 29;
|
||||
|
||||
// The request is related to a project for which GCP access is suspended.
|
||||
//
|
||||
// Example of an ErrorInfo when the consumer "projects/123" fails to contact
|
||||
// "pubsub.googleapis.com" service because GCP access is suspended:
|
||||
//
|
||||
// { "reason": "GCP_SUSPENDED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates the associated GCP account has been suspended.
|
||||
GCP_SUSPENDED = 30;
|
||||
|
||||
// The request violates the location policies when creating resources in
|
||||
// the restricted region.
|
||||
//
|
||||
// Example of an ErrorInfo when creating the Cloud Storage Bucket by
|
||||
// "projects/123" for service storage.googleapis.com:
|
||||
//
|
||||
// { "reason": "LOCATION_POLICY_VIOLATED",
|
||||
// "domain": "googleapis.com",
|
||||
// "metadata": {
|
||||
// "consumer": "projects/123",
|
||||
// "service": "storage.googleapis.com",
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// This response indicates creating the Cloud Storage Bucket in
|
||||
// "locations/asia-northeast3" violates at least one location policy.
|
||||
// The troubleshooting guidance is provided in the Help links.
|
||||
LOCATION_POLICY_VIOLATED = 31;
|
||||
|
||||
// The request is denied because origin request header is missing.
|
||||
//
|
||||
// Example of an ErrorInfo when
|
||||
// accessing "pubsub.googleapis.com" service with an empty "Origin" request
|
||||
// header.
|
||||
//
|
||||
// {
|
||||
// reason: "MISSING_ORIGIN"
|
||||
// domain: "googleapis.com"
|
||||
// metadata {
|
||||
// "consumer":"projects/123456"
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
MISSING_ORIGIN = 33;
|
||||
|
||||
// The request is denied because the request contains more than one credential
|
||||
// type that are individually acceptable, but not together. The customer
|
||||
// should retry their request with only one set of credentials.
|
||||
//
|
||||
// Example of an ErrorInfo when
|
||||
// accessing "pubsub.googleapis.com" service with overloaded credentials.
|
||||
//
|
||||
// {
|
||||
// reason: "OVERLOADED_CREDENTIALS"
|
||||
// domain: "googleapis.com"
|
||||
// metadata {
|
||||
// "consumer":"projects/123456"
|
||||
// "service": "pubsub.googleapis.com"
|
||||
// }
|
||||
// }
|
||||
OVERLOADED_CREDENTIALS = 34;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/error_reason.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1dgoogle/api/error_reason.proto\x12\ngoogle.api*\xba\x07\n\x0b\x45rrorReason\x12\x1c\n\x18\x45RROR_REASON_UNSPECIFIED\x10\x00\x12\x14\n\x10SERVICE_DISABLED\x10\x01\x12\x14\n\x10\x42ILLING_DISABLED\x10\x02\x12\x13\n\x0f\x41PI_KEY_INVALID\x10\x03\x12\x1b\n\x17\x41PI_KEY_SERVICE_BLOCKED\x10\x04\x12!\n\x1d\x41PI_KEY_HTTP_REFERRER_BLOCKED\x10\x07\x12\x1e\n\x1a\x41PI_KEY_IP_ADDRESS_BLOCKED\x10\x08\x12\x1f\n\x1b\x41PI_KEY_ANDROID_APP_BLOCKED\x10\t\x12\x1b\n\x17\x41PI_KEY_IOS_APP_BLOCKED\x10\r\x12\x17\n\x13RATE_LIMIT_EXCEEDED\x10\x05\x12\x1b\n\x17RESOURCE_QUOTA_EXCEEDED\x10\x06\x12 \n\x1cLOCATION_TAX_POLICY_VIOLATED\x10\n\x12\x17\n\x13USER_PROJECT_DENIED\x10\x0b\x12\x16\n\x12\x43ONSUMER_SUSPENDED\x10\x0c\x12\x14\n\x10\x43ONSUMER_INVALID\x10\x0e\x12\x1c\n\x18SECURITY_POLICY_VIOLATED\x10\x0f\x12\x18\n\x14\x41\x43\x43\x45SS_TOKEN_EXPIRED\x10\x10\x12#\n\x1f\x41\x43\x43\x45SS_TOKEN_SCOPE_INSUFFICIENT\x10\x11\x12\x19\n\x15\x41\x43\x43OUNT_STATE_INVALID\x10\x12\x12!\n\x1d\x41\x43\x43\x45SS_TOKEN_TYPE_UNSUPPORTED\x10\x13\x12\x17\n\x13\x43REDENTIALS_MISSING\x10\x14\x12\x1c\n\x18RESOURCE_PROJECT_INVALID\x10\x15\x12\x1a\n\x16SESSION_COOKIE_INVALID\x10\x17\x12\x19\n\x15USER_BLOCKED_BY_ADMIN\x10\x18\x12\'\n#RESOURCE_USAGE_RESTRICTION_VIOLATED\x10\x19\x12 \n\x1cSYSTEM_PARAMETER_UNSUPPORTED\x10\x1a\x12\x1d\n\x19ORG_RESTRICTION_VIOLATION\x10\x1b\x12"\n\x1eORG_RESTRICTION_HEADER_INVALID\x10\x1c\x12\x17\n\x13SERVICE_NOT_VISIBLE\x10\x1d\x12\x11\n\rGCP_SUSPENDED\x10\x1e\x12\x1c\n\x18LOCATION_POLICY_VIOLATED\x10\x1f\x12\x12\n\x0eMISSING_ORIGIN\x10!\x12\x1a\n\x16OVERLOADED_CREDENTIALS\x10"Bp\n\x0e\x63om.google.apiB\x10\x45rrorReasonProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/error_reason;error_reason\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.error_reason_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\020ErrorReasonProtoP\001ZCgoogle.golang.org/genproto/googleapis/api/error_reason;error_reason\242\002\004GAPI"
|
||||
_globals["_ERRORREASON"]._serialized_start = 46
|
||||
_globals["_ERRORREASON"]._serialized_end = 1000
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,90 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class ErrorReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
ERROR_REASON_UNSPECIFIED: _ClassVar[ErrorReason]
|
||||
SERVICE_DISABLED: _ClassVar[ErrorReason]
|
||||
BILLING_DISABLED: _ClassVar[ErrorReason]
|
||||
API_KEY_INVALID: _ClassVar[ErrorReason]
|
||||
API_KEY_SERVICE_BLOCKED: _ClassVar[ErrorReason]
|
||||
API_KEY_HTTP_REFERRER_BLOCKED: _ClassVar[ErrorReason]
|
||||
API_KEY_IP_ADDRESS_BLOCKED: _ClassVar[ErrorReason]
|
||||
API_KEY_ANDROID_APP_BLOCKED: _ClassVar[ErrorReason]
|
||||
API_KEY_IOS_APP_BLOCKED: _ClassVar[ErrorReason]
|
||||
RATE_LIMIT_EXCEEDED: _ClassVar[ErrorReason]
|
||||
RESOURCE_QUOTA_EXCEEDED: _ClassVar[ErrorReason]
|
||||
LOCATION_TAX_POLICY_VIOLATED: _ClassVar[ErrorReason]
|
||||
USER_PROJECT_DENIED: _ClassVar[ErrorReason]
|
||||
CONSUMER_SUSPENDED: _ClassVar[ErrorReason]
|
||||
CONSUMER_INVALID: _ClassVar[ErrorReason]
|
||||
SECURITY_POLICY_VIOLATED: _ClassVar[ErrorReason]
|
||||
ACCESS_TOKEN_EXPIRED: _ClassVar[ErrorReason]
|
||||
ACCESS_TOKEN_SCOPE_INSUFFICIENT: _ClassVar[ErrorReason]
|
||||
ACCOUNT_STATE_INVALID: _ClassVar[ErrorReason]
|
||||
ACCESS_TOKEN_TYPE_UNSUPPORTED: _ClassVar[ErrorReason]
|
||||
CREDENTIALS_MISSING: _ClassVar[ErrorReason]
|
||||
RESOURCE_PROJECT_INVALID: _ClassVar[ErrorReason]
|
||||
SESSION_COOKIE_INVALID: _ClassVar[ErrorReason]
|
||||
USER_BLOCKED_BY_ADMIN: _ClassVar[ErrorReason]
|
||||
RESOURCE_USAGE_RESTRICTION_VIOLATED: _ClassVar[ErrorReason]
|
||||
SYSTEM_PARAMETER_UNSUPPORTED: _ClassVar[ErrorReason]
|
||||
ORG_RESTRICTION_VIOLATION: _ClassVar[ErrorReason]
|
||||
ORG_RESTRICTION_HEADER_INVALID: _ClassVar[ErrorReason]
|
||||
SERVICE_NOT_VISIBLE: _ClassVar[ErrorReason]
|
||||
GCP_SUSPENDED: _ClassVar[ErrorReason]
|
||||
LOCATION_POLICY_VIOLATED: _ClassVar[ErrorReason]
|
||||
MISSING_ORIGIN: _ClassVar[ErrorReason]
|
||||
OVERLOADED_CREDENTIALS: _ClassVar[ErrorReason]
|
||||
|
||||
ERROR_REASON_UNSPECIFIED: ErrorReason
|
||||
SERVICE_DISABLED: ErrorReason
|
||||
BILLING_DISABLED: ErrorReason
|
||||
API_KEY_INVALID: ErrorReason
|
||||
API_KEY_SERVICE_BLOCKED: ErrorReason
|
||||
API_KEY_HTTP_REFERRER_BLOCKED: ErrorReason
|
||||
API_KEY_IP_ADDRESS_BLOCKED: ErrorReason
|
||||
API_KEY_ANDROID_APP_BLOCKED: ErrorReason
|
||||
API_KEY_IOS_APP_BLOCKED: ErrorReason
|
||||
RATE_LIMIT_EXCEEDED: ErrorReason
|
||||
RESOURCE_QUOTA_EXCEEDED: ErrorReason
|
||||
LOCATION_TAX_POLICY_VIOLATED: ErrorReason
|
||||
USER_PROJECT_DENIED: ErrorReason
|
||||
CONSUMER_SUSPENDED: ErrorReason
|
||||
CONSUMER_INVALID: ErrorReason
|
||||
SECURITY_POLICY_VIOLATED: ErrorReason
|
||||
ACCESS_TOKEN_EXPIRED: ErrorReason
|
||||
ACCESS_TOKEN_SCOPE_INSUFFICIENT: ErrorReason
|
||||
ACCOUNT_STATE_INVALID: ErrorReason
|
||||
ACCESS_TOKEN_TYPE_UNSUPPORTED: ErrorReason
|
||||
CREDENTIALS_MISSING: ErrorReason
|
||||
RESOURCE_PROJECT_INVALID: ErrorReason
|
||||
SESSION_COOKIE_INVALID: ErrorReason
|
||||
USER_BLOCKED_BY_ADMIN: ErrorReason
|
||||
RESOURCE_USAGE_RESTRICTION_VIOLATED: ErrorReason
|
||||
SYSTEM_PARAMETER_UNSUPPORTED: ErrorReason
|
||||
ORG_RESTRICTION_VIOLATION: ErrorReason
|
||||
ORG_RESTRICTION_HEADER_INVALID: ErrorReason
|
||||
SERVICE_NOT_VISIBLE: ErrorReason
|
||||
GCP_SUSPENDED: ErrorReason
|
||||
LOCATION_POLICY_VIOLATED: ErrorReason
|
||||
MISSING_ORIGIN: ErrorReason
|
||||
OVERLOADED_CREDENTIALS: ErrorReason
|
||||
@@ -0,0 +1,104 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "FieldBehaviorProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
// A designation of a specific field behavior (required, output only, etc.)
|
||||
// in protobuf messages.
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// string name = 1 [(google.api.field_behavior) = REQUIRED];
|
||||
// State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
|
||||
// google.protobuf.Duration ttl = 1
|
||||
// [(google.api.field_behavior) = INPUT_ONLY];
|
||||
// google.protobuf.Timestamp expire_time = 1
|
||||
// [(google.api.field_behavior) = OUTPUT_ONLY,
|
||||
// (google.api.field_behavior) = IMMUTABLE];
|
||||
repeated google.api.FieldBehavior field_behavior = 1052 [packed = false];
|
||||
}
|
||||
|
||||
// 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.
|
||||
enum FieldBehavior {
|
||||
// Conventional default for enums. Do not use this.
|
||||
FIELD_BEHAVIOR_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).
|
||||
OUTPUT_ONLY = 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.
|
||||
INPUT_ONLY = 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.
|
||||
UNORDERED_LIST = 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.
|
||||
NON_EMPTY_DEFAULT = 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;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/field_behavior.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b"\n\x1fgoogle/api/field_behavior.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto*\xb6\x01\n\rFieldBehavior\x12\x1e\n\x1a\x46IELD_BEHAVIOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08OPTIONAL\x10\x01\x12\x0c\n\x08REQUIRED\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03\x12\x0e\n\nINPUT_ONLY\x10\x04\x12\r\n\tIMMUTABLE\x10\x05\x12\x12\n\x0eUNORDERED_LIST\x10\x06\x12\x15\n\x11NON_EMPTY_DEFAULT\x10\x07\x12\x0e\n\nIDENTIFIER\x10\x08:U\n\x0e\x66ield_behavior\x12\x1d.google.protobuf.FieldOptions\x18\x9c\x08 \x03(\x0e\x32\x19.google.api.FieldBehaviorB\x02\x10\x00\x42p\n\x0e\x63om.google.apiB\x12\x46ieldBehaviorProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3"
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.field_behavior_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\022FieldBehaviorProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
_globals["field_behavior"]._options = None
|
||||
_globals["field_behavior"]._serialized_options = b"\020\000"
|
||||
_globals["_FIELDBEHAVIOR"]._serialized_start = 82
|
||||
_globals["_FIELDBEHAVIOR"]._serialized_end = 264
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,45 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class FieldBehavior(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
FIELD_BEHAVIOR_UNSPECIFIED: _ClassVar[FieldBehavior]
|
||||
OPTIONAL: _ClassVar[FieldBehavior]
|
||||
REQUIRED: _ClassVar[FieldBehavior]
|
||||
OUTPUT_ONLY: _ClassVar[FieldBehavior]
|
||||
INPUT_ONLY: _ClassVar[FieldBehavior]
|
||||
IMMUTABLE: _ClassVar[FieldBehavior]
|
||||
UNORDERED_LIST: _ClassVar[FieldBehavior]
|
||||
NON_EMPTY_DEFAULT: _ClassVar[FieldBehavior]
|
||||
IDENTIFIER: _ClassVar[FieldBehavior]
|
||||
|
||||
FIELD_BEHAVIOR_UNSPECIFIED: FieldBehavior
|
||||
OPTIONAL: FieldBehavior
|
||||
REQUIRED: FieldBehavior
|
||||
OUTPUT_ONLY: FieldBehavior
|
||||
INPUT_ONLY: FieldBehavior
|
||||
IMMUTABLE: FieldBehavior
|
||||
UNORDERED_LIST: FieldBehavior
|
||||
NON_EMPTY_DEFAULT: FieldBehavior
|
||||
IDENTIFIER: FieldBehavior
|
||||
FIELD_BEHAVIOR_FIELD_NUMBER: _ClassVar[int]
|
||||
field_behavior: _descriptor.FieldDescriptor
|
||||
@@ -0,0 +1,106 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "FieldInfoProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
// Rich semantic descriptor of an API field beyond the basic typing.
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// string request_id = 1 [(google.api.field_info).format = UUID4];
|
||||
// string old_ip_address = 2 [(google.api.field_info).format = IPV4];
|
||||
// string new_ip_address = 3 [(google.api.field_info).format = IPV6];
|
||||
// string actual_ip_address = 4 [
|
||||
// (google.api.field_info).format = IPV4_OR_IPV6
|
||||
// ];
|
||||
// google.protobuf.Any generic_field = 5 [
|
||||
// (google.api.field_info).referenced_types = {type_name: "ActualType"},
|
||||
// (google.api.field_info).referenced_types = {type_name: "OtherType"},
|
||||
// ];
|
||||
// google.protobuf.Any generic_user_input = 5 [
|
||||
// (google.api.field_info).referenced_types = {type_name: "*"},
|
||||
// ];
|
||||
google.api.FieldInfo field_info = 291403980;
|
||||
}
|
||||
|
||||
// Rich semantic information of an API field beyond basic typing.
|
||||
message FieldInfo {
|
||||
// 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.
|
||||
enum Format {
|
||||
// Default, unspecified value.
|
||||
FORMAT_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.
|
||||
IPV4_OR_IPV6 = 4;
|
||||
}
|
||||
|
||||
// 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.
|
||||
Format format = 1;
|
||||
|
||||
// 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.
|
||||
repeated TypeReference referenced_types = 2;
|
||||
}
|
||||
|
||||
// A reference to a message type, for use in [FieldInfo][google.api.FieldInfo].
|
||||
message 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.
|
||||
string type_name = 1;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/field_info.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1bgoogle/api/field_info.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xc1\x01\n\tFieldInfo\x12,\n\x06\x66ormat\x18\x01 \x01(\x0e\x32\x1c.google.api.FieldInfo.Format\x12\x33\n\x10referenced_types\x18\x02 \x03(\x0b\x32\x19.google.api.TypeReference"Q\n\x06\x46ormat\x12\x16\n\x12\x46ORMAT_UNSPECIFIED\x10\x00\x12\t\n\x05UUID4\x10\x01\x12\x08\n\x04IPV4\x10\x02\x12\x08\n\x04IPV6\x10\x03\x12\x10\n\x0cIPV4_OR_IPV6\x10\x04""\n\rTypeReference\x12\x11\n\ttype_name\x18\x01 \x01(\t:L\n\nfield_info\x12\x1d.google.protobuf.FieldOptions\x18\xcc\xf1\xf9\x8a\x01 \x01(\x0b\x32\x15.google.api.FieldInfoBl\n\x0e\x63om.google.apiB\x0e\x46ieldInfoProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.field_info_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\016FieldInfoProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
_globals["_FIELDINFO"]._serialized_start = 78
|
||||
_globals["_FIELDINFO"]._serialized_end = 271
|
||||
_globals["_FIELDINFO_FORMAT"]._serialized_start = 190
|
||||
_globals["_FIELDINFO_FORMAT"]._serialized_end = 271
|
||||
_globals["_TYPEREFERENCE"]._serialized_start = 273
|
||||
_globals["_TYPEREFERENCE"]._serialized_end = 307
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,60 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
FIELD_INFO_FIELD_NUMBER: _ClassVar[int]
|
||||
field_info: _descriptor.FieldDescriptor
|
||||
|
||||
class FieldInfo(_message.Message):
|
||||
__slots__ = ("format", "referenced_types")
|
||||
|
||||
class Format(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
FORMAT_UNSPECIFIED: _ClassVar[FieldInfo.Format]
|
||||
UUID4: _ClassVar[FieldInfo.Format]
|
||||
IPV4: _ClassVar[FieldInfo.Format]
|
||||
IPV6: _ClassVar[FieldInfo.Format]
|
||||
IPV4_OR_IPV6: _ClassVar[FieldInfo.Format]
|
||||
FORMAT_UNSPECIFIED: FieldInfo.Format
|
||||
UUID4: FieldInfo.Format
|
||||
IPV4: FieldInfo.Format
|
||||
IPV6: FieldInfo.Format
|
||||
IPV4_OR_IPV6: FieldInfo.Format
|
||||
FORMAT_FIELD_NUMBER: _ClassVar[int]
|
||||
REFERENCED_TYPES_FIELD_NUMBER: _ClassVar[int]
|
||||
format: FieldInfo.Format
|
||||
referenced_types: _containers.RepeatedCompositeFieldContainer[TypeReference]
|
||||
def __init__(
|
||||
self,
|
||||
format: _Optional[_Union[FieldInfo.Format, str]] = ...,
|
||||
referenced_types: _Optional[_Iterable[_Union[TypeReference, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class TypeReference(_message.Message):
|
||||
__slots__ = ("type_name",)
|
||||
TYPE_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
type_name: str
|
||||
def __init__(self, type_name: _Optional[str] = ...) -> None: ...
|
||||
@@ -0,0 +1,370 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "HttpProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// 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.
|
||||
message Http {
|
||||
// A list of HTTP configuration rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated HttpRule rules = 1;
|
||||
|
||||
// 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.
|
||||
bool fully_decode_reserved_expansion = 2;
|
||||
}
|
||||
|
||||
// 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.
|
||||
message HttpRule {
|
||||
// Selects a method to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// 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.
|
||||
oneof pattern {
|
||||
// Maps to HTTP GET. Used for listing and getting information about
|
||||
// resources.
|
||||
string get = 2;
|
||||
|
||||
// Maps to HTTP PUT. Used for replacing a resource.
|
||||
string put = 3;
|
||||
|
||||
// Maps to HTTP POST. Used for creating a resource or performing an action.
|
||||
string post = 4;
|
||||
|
||||
// Maps to HTTP DELETE. Used for deleting a resource.
|
||||
string delete = 5;
|
||||
|
||||
// Maps to HTTP PATCH. Used for updating a resource.
|
||||
string patch = 6;
|
||||
|
||||
// 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.
|
||||
CustomHttpPattern custom = 8;
|
||||
}
|
||||
|
||||
// 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.
|
||||
string body = 7;
|
||||
|
||||
// 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.
|
||||
string response_body = 12;
|
||||
|
||||
// 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).
|
||||
repeated HttpRule additional_bindings = 11;
|
||||
}
|
||||
|
||||
// A custom pattern is used for defining custom HTTP verb.
|
||||
message CustomHttpPattern {
|
||||
// The name of this custom HTTP verb.
|
||||
string kind = 1;
|
||||
|
||||
// The path matched by this custom verb.
|
||||
string path = 2;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/http.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x15google/api/http.proto\x12\ngoogle.api"T\n\x04Http\x12#\n\x05rules\x18\x01 \x03(\x0b\x32\x14.google.api.HttpRule\x12\'\n\x1f\x66ully_decode_reserved_expansion\x18\x02 \x01(\x08"\x81\x02\n\x08HttpRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\r\n\x03get\x18\x02 \x01(\tH\x00\x12\r\n\x03put\x18\x03 \x01(\tH\x00\x12\x0e\n\x04post\x18\x04 \x01(\tH\x00\x12\x10\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00\x12\x0f\n\x05patch\x18\x06 \x01(\tH\x00\x12/\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00\x12\x0c\n\x04\x62ody\x18\x07 \x01(\t\x12\x15\n\rresponse_body\x18\x0c \x01(\t\x12\x31\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleB\t\n\x07pattern"/\n\x11\x43ustomHttpPattern\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\tBg\n\x0e\x63om.google.apiB\tHttpProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.http_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\tHttpProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
_globals["_HTTP"]._serialized_start = 37
|
||||
_globals["_HTTP"]._serialized_end = 121
|
||||
_globals["_HTTPRULE"]._serialized_start = 124
|
||||
_globals["_HTTPRULE"]._serialized_end = 381
|
||||
_globals["_CUSTOMHTTPPATTERN"]._serialized_start = 383
|
||||
_globals["_CUSTOMHTTPPATTERN"]._serialized_end = 430
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,94 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Http(_message.Message):
|
||||
__slots__ = ("rules", "fully_decode_reserved_expansion")
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
FULLY_DECODE_RESERVED_EXPANSION_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[HttpRule]
|
||||
fully_decode_reserved_expansion: bool
|
||||
def __init__(
|
||||
self,
|
||||
rules: _Optional[_Iterable[_Union[HttpRule, _Mapping]]] = ...,
|
||||
fully_decode_reserved_expansion: bool = ...,
|
||||
) -> None: ...
|
||||
|
||||
class HttpRule(_message.Message):
|
||||
__slots__ = (
|
||||
"selector",
|
||||
"get",
|
||||
"put",
|
||||
"post",
|
||||
"delete",
|
||||
"patch",
|
||||
"custom",
|
||||
"body",
|
||||
"response_body",
|
||||
"additional_bindings",
|
||||
)
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
GET_FIELD_NUMBER: _ClassVar[int]
|
||||
PUT_FIELD_NUMBER: _ClassVar[int]
|
||||
POST_FIELD_NUMBER: _ClassVar[int]
|
||||
DELETE_FIELD_NUMBER: _ClassVar[int]
|
||||
PATCH_FIELD_NUMBER: _ClassVar[int]
|
||||
CUSTOM_FIELD_NUMBER: _ClassVar[int]
|
||||
BODY_FIELD_NUMBER: _ClassVar[int]
|
||||
RESPONSE_BODY_FIELD_NUMBER: _ClassVar[int]
|
||||
ADDITIONAL_BINDINGS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
get: str
|
||||
put: str
|
||||
post: str
|
||||
delete: str
|
||||
patch: str
|
||||
custom: CustomHttpPattern
|
||||
body: str
|
||||
response_body: str
|
||||
additional_bindings: _containers.RepeatedCompositeFieldContainer[HttpRule]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
get: _Optional[str] = ...,
|
||||
put: _Optional[str] = ...,
|
||||
post: _Optional[str] = ...,
|
||||
delete: _Optional[str] = ...,
|
||||
patch: _Optional[str] = ...,
|
||||
custom: _Optional[_Union[CustomHttpPattern, _Mapping]] = ...,
|
||||
body: _Optional[str] = ...,
|
||||
response_body: _Optional[str] = ...,
|
||||
additional_bindings: _Optional[_Iterable[_Union[HttpRule, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class CustomHttpPattern(_message.Message):
|
||||
__slots__ = ("kind", "path")
|
||||
KIND_FIELD_NUMBER: _ClassVar[int]
|
||||
PATH_FIELD_NUMBER: _ClassVar[int]
|
||||
kind: str
|
||||
path: str
|
||||
def __init__(
|
||||
self, kind: _Optional[str] = ..., path: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,80 @@
|
||||
// Copyright 2025 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/protobuf/any.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "HttpBodyProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// 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.
|
||||
message HttpBody {
|
||||
// The HTTP Content-Type header value specifying the content type of the body.
|
||||
string content_type = 1;
|
||||
|
||||
// The HTTP request/response body as raw binary.
|
||||
bytes data = 2;
|
||||
|
||||
// Application specific response metadata. Must be set in the first response
|
||||
// for streaming APIs.
|
||||
repeated google.protobuf.Any extensions = 3;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/httpbody.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x19google/api/httpbody.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto"X\n\x08HttpBody\x12\x14\n\x0c\x63ontent_type\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12(\n\nextensions\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyBe\n\x0e\x63om.google.apiB\rHttpBodyProtoP\x01Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.httpbody_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\rHttpBodyProtoP\001Z;google.golang.org/genproto/googleapis/api/httpbody;httpbody\242\002\004GAPI"
|
||||
_globals["_HTTPBODY"]._serialized_start = 68
|
||||
_globals["_HTTPBODY"]._serialized_end = 156
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,41 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import any_pb2 as _any_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class HttpBody(_message.Message):
|
||||
__slots__ = ("content_type", "data", "extensions")
|
||||
CONTENT_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
DATA_FIELD_NUMBER: _ClassVar[int]
|
||||
EXTENSIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
content_type: str
|
||||
data: bytes
|
||||
extensions: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
|
||||
def __init__(
|
||||
self,
|
||||
content_type: _Optional[str] = ...,
|
||||
data: _Optional[bytes] = ...,
|
||||
extensions: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,47 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/label;label";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LabelProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// A description of a label.
|
||||
message LabelDescriptor {
|
||||
// Value types that can be used as label values.
|
||||
enum ValueType {
|
||||
// A variable-length string. This is the default.
|
||||
STRING = 0;
|
||||
|
||||
// Boolean; true or false.
|
||||
BOOL = 1;
|
||||
|
||||
// A 64-bit signed integer.
|
||||
INT64 = 2;
|
||||
}
|
||||
|
||||
// The label key.
|
||||
string key = 1;
|
||||
|
||||
// The type of data that can be assigned to the label.
|
||||
ValueType value_type = 2;
|
||||
|
||||
// A human-readable description for the label.
|
||||
string description = 3;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/label.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x16google/api/label.proto\x12\ngoogle.api"\x9c\x01\n\x0fLabelDescriptor\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x39\n\nvalue_type\x18\x02 \x01(\x0e\x32%.google.api.LabelDescriptor.ValueType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t",\n\tValueType\x12\n\n\x06STRING\x10\x00\x12\x08\n\x04\x42OOL\x10\x01\x12\t\n\x05INT64\x10\x02\x42\\\n\x0e\x63om.google.apiB\nLabelProtoP\x01Z5google.golang.org/genproto/googleapis/api/label;label\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.label_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\nLabelProtoP\001Z5google.golang.org/genproto/googleapis/api/label;label\242\002\004GAPI"
|
||||
_globals["_LABELDESCRIPTOR"]._serialized_start = 39
|
||||
_globals["_LABELDESCRIPTOR"]._serialized_end = 195
|
||||
_globals["_LABELDESCRIPTOR_VALUETYPE"]._serialized_start = 151
|
||||
_globals["_LABELDESCRIPTOR_VALUETYPE"]._serialized_end = 195
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,47 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class LabelDescriptor(_message.Message):
|
||||
__slots__ = ("key", "value_type", "description")
|
||||
|
||||
class ValueType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
STRING: _ClassVar[LabelDescriptor.ValueType]
|
||||
BOOL: _ClassVar[LabelDescriptor.ValueType]
|
||||
INT64: _ClassVar[LabelDescriptor.ValueType]
|
||||
STRING: LabelDescriptor.ValueType
|
||||
BOOL: LabelDescriptor.ValueType
|
||||
INT64: LabelDescriptor.ValueType
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value_type: LabelDescriptor.ValueType
|
||||
description: str
|
||||
def __init__(
|
||||
self,
|
||||
key: _Optional[str] = ...,
|
||||
value_type: _Optional[_Union[LabelDescriptor.ValueType, str]] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,72 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api;api";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LaunchStageProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// The launch stage as defined by [Google Cloud Platform
|
||||
// Launch Stages](https://cloud.google.com/terms/launch-stages).
|
||||
enum LaunchStage {
|
||||
// Do not use this default value.
|
||||
LAUNCH_STAGE_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.
|
||||
EARLY_ACCESS = 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;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/launch_stage.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b"\n\x1dgoogle/api/launch_stage.proto\x12\ngoogle.api*\x8c\x01\n\x0bLaunchStage\x12\x1c\n\x18LAUNCH_STAGE_UNSPECIFIED\x10\x00\x12\x11\n\rUNIMPLEMENTED\x10\x06\x12\r\n\tPRELAUNCH\x10\x07\x12\x10\n\x0c\x45\x41RLY_ACCESS\x10\x01\x12\t\n\x05\x41LPHA\x10\x02\x12\x08\n\x04\x42\x45TA\x10\x03\x12\x06\n\x02GA\x10\x04\x12\x0e\n\nDEPRECATED\x10\x05\x42Z\n\x0e\x63om.google.apiB\x10LaunchStageProtoP\x01Z-google.golang.org/genproto/googleapis/api;api\xa2\x02\x04GAPIb\x06proto3"
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.launch_stage_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\020LaunchStageProtoP\001Z-google.golang.org/genproto/googleapis/api;api\242\002\004GAPI"
|
||||
_globals["_LAUNCHSTAGE"]._serialized_start = 46
|
||||
_globals["_LAUNCHSTAGE"]._serialized_end = 186
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,40 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class LaunchStage(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
LAUNCH_STAGE_UNSPECIFIED: _ClassVar[LaunchStage]
|
||||
UNIMPLEMENTED: _ClassVar[LaunchStage]
|
||||
PRELAUNCH: _ClassVar[LaunchStage]
|
||||
EARLY_ACCESS: _ClassVar[LaunchStage]
|
||||
ALPHA: _ClassVar[LaunchStage]
|
||||
BETA: _ClassVar[LaunchStage]
|
||||
GA: _ClassVar[LaunchStage]
|
||||
DEPRECATED: _ClassVar[LaunchStage]
|
||||
|
||||
LAUNCH_STAGE_UNSPECIFIED: LaunchStage
|
||||
UNIMPLEMENTED: LaunchStage
|
||||
PRELAUNCH: LaunchStage
|
||||
EARLY_ACCESS: LaunchStage
|
||||
ALPHA: LaunchStage
|
||||
BETA: LaunchStage
|
||||
GA: LaunchStage
|
||||
DEPRECATED: LaunchStage
|
||||
@@ -0,0 +1,54 @@
|
||||
// Copyright 2025 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/label.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LogProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// A description of a log type. Example in YAML format:
|
||||
//
|
||||
// - name: library.googleapis.com/activity_history
|
||||
// description: The history of borrowing and returning library items.
|
||||
// display_name: Activity
|
||||
// labels:
|
||||
// - key: /customer_id
|
||||
// description: Identifier of a library customer
|
||||
message LogDescriptor {
|
||||
// The name of the log. It must be less than 512 characters long and can
|
||||
// include the following characters: upper- and lower-case alphanumeric
|
||||
// characters [A-Za-z0-9], and punctuation characters including
|
||||
// slash, underscore, hyphen, period [/_-.].
|
||||
string name = 1;
|
||||
|
||||
// The set of labels that are available to describe a specific log entry.
|
||||
// Runtime requests that contain labels not specified here are
|
||||
// considered invalid.
|
||||
repeated LabelDescriptor labels = 2;
|
||||
|
||||
// A human-readable description of this log. This information appears in
|
||||
// the documentation and can contain details.
|
||||
string description = 3;
|
||||
|
||||
// The human-readable name for this log. This information appears on
|
||||
// the user interface and should be concise.
|
||||
string display_name = 4;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/log.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import label_pb2 as google_dot_api_dot_label__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x14google/api/log.proto\x12\ngoogle.api\x1a\x16google/api/label.proto"u\n\rLogDescriptor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12+\n\x06labels\x18\x02 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x04 \x01(\tBj\n\x0e\x63om.google.apiB\x08LogProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.log_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\010LogProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_LOGDESCRIPTOR"]._serialized_start = 60
|
||||
_globals["_LOGDESCRIPTOR"]._serialized_end = 177
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,46 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import label_pb2 as _label_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class LogDescriptor(_message.Message):
|
||||
__slots__ = ("name", "labels", "description", "display_name")
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
labels: _containers.RepeatedCompositeFieldContainer[_label_pb2.LabelDescriptor]
|
||||
description: str
|
||||
display_name: str
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
labels: _Optional[
|
||||
_Iterable[_Union[_label_pb2.LabelDescriptor, _Mapping]]
|
||||
] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
display_name: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,81 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LoggingProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Logging configuration of the service.
|
||||
//
|
||||
// The following example shows how to configure logs to be sent to the
|
||||
// producer and consumer projects. In the example, the `activity_history`
|
||||
// log is sent to both the producer and consumer projects, whereas the
|
||||
// `purchase_history` log is only sent to the producer project.
|
||||
//
|
||||
// monitored_resources:
|
||||
// - type: library.googleapis.com/branch
|
||||
// labels:
|
||||
// - key: /city
|
||||
// description: The city where the library branch is located in.
|
||||
// - key: /name
|
||||
// description: The name of the branch.
|
||||
// logs:
|
||||
// - name: activity_history
|
||||
// labels:
|
||||
// - key: /customer_id
|
||||
// - name: purchase_history
|
||||
// logging:
|
||||
// producer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/branch
|
||||
// logs:
|
||||
// - activity_history
|
||||
// - purchase_history
|
||||
// consumer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/branch
|
||||
// logs:
|
||||
// - activity_history
|
||||
message Logging {
|
||||
// Configuration of a specific logging destination (the producer project
|
||||
// or the consumer project).
|
||||
message LoggingDestination {
|
||||
// The monitored resource type. The type must be defined in the
|
||||
// [Service.monitored_resources][google.api.Service.monitored_resources]
|
||||
// section.
|
||||
string monitored_resource = 3;
|
||||
|
||||
// Names of the logs to be sent to this destination. Each name must
|
||||
// be defined in the [Service.logs][google.api.Service.logs] section. If the
|
||||
// log name is not a domain scoped name, it will be automatically prefixed
|
||||
// with the service name followed by "/".
|
||||
repeated string logs = 1;
|
||||
}
|
||||
|
||||
// Logging configurations for sending logs to the producer project.
|
||||
// There can be multiple producer destinations, each one must have a
|
||||
// different monitored resource type. A log can be used in at most
|
||||
// one producer destination.
|
||||
repeated LoggingDestination producer_destinations = 1;
|
||||
|
||||
// Logging configurations for sending logs to the consumer project.
|
||||
// There can be multiple consumer destinations, each one must have a
|
||||
// different monitored resource type. A log can be used in at most
|
||||
// one consumer destination.
|
||||
repeated LoggingDestination consumer_destinations = 2;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/logging.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/logging.proto\x12\ngoogle.api"\xd7\x01\n\x07Logging\x12\x45\n\x15producer_destinations\x18\x01 \x03(\x0b\x32&.google.api.Logging.LoggingDestination\x12\x45\n\x15\x63onsumer_destinations\x18\x02 \x03(\x0b\x32&.google.api.Logging.LoggingDestination\x1a>\n\x12LoggingDestination\x12\x1a\n\x12monitored_resource\x18\x03 \x01(\t\x12\x0c\n\x04logs\x18\x01 \x03(\tBn\n\x0e\x63om.google.apiB\x0cLoggingProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.logging_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014LoggingProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_LOGGING"]._serialized_start = 41
|
||||
_globals["_LOGGING"]._serialized_end = 256
|
||||
_globals["_LOGGING_LOGGINGDESTINATION"]._serialized_start = 194
|
||||
_globals["_LOGGING_LOGGINGDESTINATION"]._serialized_end = 256
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,57 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Logging(_message.Message):
|
||||
__slots__ = ("producer_destinations", "consumer_destinations")
|
||||
|
||||
class LoggingDestination(_message.Message):
|
||||
__slots__ = ("monitored_resource", "logs")
|
||||
MONITORED_RESOURCE_FIELD_NUMBER: _ClassVar[int]
|
||||
LOGS_FIELD_NUMBER: _ClassVar[int]
|
||||
monitored_resource: str
|
||||
logs: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
monitored_resource: _Optional[str] = ...,
|
||||
logs: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
PRODUCER_DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
CONSUMER_DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
producer_destinations: _containers.RepeatedCompositeFieldContainer[
|
||||
Logging.LoggingDestination
|
||||
]
|
||||
consumer_destinations: _containers.RepeatedCompositeFieldContainer[
|
||||
Logging.LoggingDestination
|
||||
]
|
||||
def __init__(
|
||||
self,
|
||||
producer_destinations: _Optional[
|
||||
_Iterable[_Union[Logging.LoggingDestination, _Mapping]]
|
||||
] = ...,
|
||||
consumer_destinations: _Optional[
|
||||
_Iterable[_Union[Logging.LoggingDestination, _Mapping]]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,287 @@
|
||||
// Copyright 2025 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/label.proto";
|
||||
import "google/api/launch_stage.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/metric;metric";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MetricProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Defines a metric type and its schema. Once a metric descriptor is created,
|
||||
// deleting or altering it stops data collection and makes the metric type's
|
||||
// existing data unusable.
|
||||
//
|
||||
message MetricDescriptor {
|
||||
// The kind of measurement. It describes how the data is reported.
|
||||
// For information on setting the start time and end time based on
|
||||
// the MetricKind, see [TimeInterval][google.monitoring.v3.TimeInterval].
|
||||
enum MetricKind {
|
||||
// Do not use this default value.
|
||||
METRIC_KIND_UNSPECIFIED = 0;
|
||||
|
||||
// An instantaneous measurement of a value.
|
||||
GAUGE = 1;
|
||||
|
||||
// The change in a value during a time interval.
|
||||
DELTA = 2;
|
||||
|
||||
// A value accumulated over a time interval. Cumulative
|
||||
// measurements in a time series should have the same start time
|
||||
// and increasing end times, until an event resets the cumulative
|
||||
// value to zero and sets a new start time for the following
|
||||
// points.
|
||||
CUMULATIVE = 3;
|
||||
}
|
||||
|
||||
// The value type of a metric.
|
||||
enum ValueType {
|
||||
// Do not use this default value.
|
||||
VALUE_TYPE_UNSPECIFIED = 0;
|
||||
|
||||
// The value is a boolean.
|
||||
// This value type can be used only if the metric kind is `GAUGE`.
|
||||
BOOL = 1;
|
||||
|
||||
// The value is a signed 64-bit integer.
|
||||
INT64 = 2;
|
||||
|
||||
// The value is a double precision floating point number.
|
||||
DOUBLE = 3;
|
||||
|
||||
// The value is a text string.
|
||||
// This value type can be used only if the metric kind is `GAUGE`.
|
||||
STRING = 4;
|
||||
|
||||
// The value is a [`Distribution`][google.api.Distribution].
|
||||
DISTRIBUTION = 5;
|
||||
|
||||
// The value is money.
|
||||
MONEY = 6;
|
||||
}
|
||||
|
||||
// Additional annotations that can be used to guide the usage of a metric.
|
||||
message MetricDescriptorMetadata {
|
||||
// The resource hierarchy level of the timeseries data of a metric.
|
||||
enum TimeSeriesResourceHierarchyLevel {
|
||||
// Do not use this default value.
|
||||
TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED = 0;
|
||||
|
||||
// Scopes a metric to a project.
|
||||
PROJECT = 1;
|
||||
|
||||
// Scopes a metric to an organization.
|
||||
ORGANIZATION = 2;
|
||||
|
||||
// Scopes a metric to a folder.
|
||||
FOLDER = 3;
|
||||
}
|
||||
|
||||
// Deprecated. Must use the
|
||||
// [MetricDescriptor.launch_stage][google.api.MetricDescriptor.launch_stage]
|
||||
// instead.
|
||||
LaunchStage launch_stage = 1 [deprecated = true];
|
||||
|
||||
// The sampling period of metric data points. For metrics which are written
|
||||
// periodically, consecutive data points are stored at this time interval,
|
||||
// excluding data loss due to errors. Metrics with a higher granularity have
|
||||
// a smaller sampling period.
|
||||
google.protobuf.Duration sample_period = 2;
|
||||
|
||||
// The delay of data points caused by ingestion. Data points older than this
|
||||
// age are guaranteed to be ingested and available to be read, excluding
|
||||
// data loss due to errors.
|
||||
google.protobuf.Duration ingest_delay = 3;
|
||||
|
||||
// The scope of the timeseries data of the metric.
|
||||
repeated TimeSeriesResourceHierarchyLevel
|
||||
time_series_resource_hierarchy_level = 4;
|
||||
}
|
||||
|
||||
// The resource name of the metric descriptor.
|
||||
string name = 1;
|
||||
|
||||
// The metric type, including its DNS name prefix. The type is not
|
||||
// URL-encoded. All user-defined metric types have the DNS name
|
||||
// `custom.googleapis.com` or `external.googleapis.com`. Metric types should
|
||||
// use a natural hierarchical grouping. For example:
|
||||
//
|
||||
// "custom.googleapis.com/invoice/paid/amount"
|
||||
// "external.googleapis.com/prometheus/up"
|
||||
// "appengine.googleapis.com/http/server/response_latencies"
|
||||
string type = 8;
|
||||
|
||||
// The set of labels that can be used to describe a specific
|
||||
// instance of this metric type. For example, the
|
||||
// `appengine.googleapis.com/http/server/response_latencies` metric
|
||||
// type has a label for the HTTP response code, `response_code`, so
|
||||
// you can look at latencies for successful responses or just
|
||||
// for responses that failed.
|
||||
repeated LabelDescriptor labels = 2;
|
||||
|
||||
// Whether the metric records instantaneous values, changes to a value, etc.
|
||||
// Some combinations of `metric_kind` and `value_type` might not be supported.
|
||||
MetricKind metric_kind = 3;
|
||||
|
||||
// Whether the measurement is an integer, a floating-point number, etc.
|
||||
// Some combinations of `metric_kind` and `value_type` might not be supported.
|
||||
ValueType value_type = 4;
|
||||
|
||||
// The units in which the metric value is reported. It is only applicable
|
||||
// if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
|
||||
// defines the representation of the stored metric values.
|
||||
//
|
||||
// Different systems might scale the values to be more easily displayed (so a
|
||||
// value of `0.02kBy` _might_ be displayed as `20By`, and a value of
|
||||
// `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
|
||||
// `kBy`, then the value of the metric is always in thousands of bytes, no
|
||||
// matter how it might be displayed.
|
||||
//
|
||||
// If you want a custom metric to record the exact number of CPU-seconds used
|
||||
// by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
|
||||
// `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
|
||||
// CPU-seconds, then the value is written as `12005`.
|
||||
//
|
||||
// Alternatively, if you want a custom metric to record data in a more
|
||||
// granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
|
||||
// `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
|
||||
// or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
|
||||
//
|
||||
// The supported units are a subset of [The Unified Code for Units of
|
||||
// Measure](https://unitsofmeasure.org/ucum.html) standard:
|
||||
//
|
||||
// **Basic units (UNIT)**
|
||||
//
|
||||
// * `bit` bit
|
||||
// * `By` byte
|
||||
// * `s` second
|
||||
// * `min` minute
|
||||
// * `h` hour
|
||||
// * `d` day
|
||||
// * `1` dimensionless
|
||||
//
|
||||
// **Prefixes (PREFIX)**
|
||||
//
|
||||
// * `k` kilo (10^3)
|
||||
// * `M` mega (10^6)
|
||||
// * `G` giga (10^9)
|
||||
// * `T` tera (10^12)
|
||||
// * `P` peta (10^15)
|
||||
// * `E` exa (10^18)
|
||||
// * `Z` zetta (10^21)
|
||||
// * `Y` yotta (10^24)
|
||||
//
|
||||
// * `m` milli (10^-3)
|
||||
// * `u` micro (10^-6)
|
||||
// * `n` nano (10^-9)
|
||||
// * `p` pico (10^-12)
|
||||
// * `f` femto (10^-15)
|
||||
// * `a` atto (10^-18)
|
||||
// * `z` zepto (10^-21)
|
||||
// * `y` yocto (10^-24)
|
||||
//
|
||||
// * `Ki` kibi (2^10)
|
||||
// * `Mi` mebi (2^20)
|
||||
// * `Gi` gibi (2^30)
|
||||
// * `Ti` tebi (2^40)
|
||||
// * `Pi` pebi (2^50)
|
||||
//
|
||||
// **Grammar**
|
||||
//
|
||||
// The grammar also includes these connectors:
|
||||
//
|
||||
// * `/` division or ratio (as an infix operator). For examples,
|
||||
// `kBy/{email}` or `MiBy/10ms` (although you should almost never
|
||||
// have `/s` in a metric `unit`; rates should always be computed at
|
||||
// query time from the underlying cumulative or delta value).
|
||||
// * `.` multiplication or composition (as an infix operator). For
|
||||
// examples, `GBy.d` or `k{watt}.h`.
|
||||
//
|
||||
// The grammar for a unit is as follows:
|
||||
//
|
||||
// Expression = Component { "." Component } { "/" Component } ;
|
||||
//
|
||||
// Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
|
||||
// | Annotation
|
||||
// | "1"
|
||||
// ;
|
||||
//
|
||||
// Annotation = "{" NAME "}" ;
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
// * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
|
||||
// is used alone, then the unit is equivalent to `1`. For examples,
|
||||
// `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
|
||||
// * `NAME` is a sequence of non-blank printable ASCII characters not
|
||||
// containing `{` or `}`.
|
||||
// * `1` represents a unitary [dimensionless
|
||||
// unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
|
||||
// as in `1/s`. It is typically used when none of the basic units are
|
||||
// appropriate. For example, "new users per day" can be represented as
|
||||
// `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
|
||||
// users). Alternatively, "thousands of page views per day" would be
|
||||
// represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
|
||||
// value of `5.3` would mean "5300 page views per day").
|
||||
// * `%` represents dimensionless value of 1/100, and annotates values giving
|
||||
// a percentage (so the metric values are typically in the range of 0..100,
|
||||
// and a metric value `3` means "3 percent").
|
||||
// * `10^2.%` indicates a metric contains a ratio, typically in the range
|
||||
// 0..1, that will be multiplied by 100 and displayed as a percentage
|
||||
// (so a metric value `0.03` means "3 percent").
|
||||
string unit = 5;
|
||||
|
||||
// A detailed description of the metric, which can be used in documentation.
|
||||
string description = 6;
|
||||
|
||||
// A concise name for the metric, which can be displayed in user interfaces.
|
||||
// Use sentence case without an ending period, for example "Request count".
|
||||
// This field is optional but it is recommended to be set for any metrics
|
||||
// associated with user-visible concepts, such as Quota.
|
||||
string display_name = 7;
|
||||
|
||||
// Optional. Metadata which can be used to guide usage of the metric.
|
||||
MetricDescriptorMetadata metadata = 10;
|
||||
|
||||
// Optional. The launch stage of the metric definition.
|
||||
LaunchStage launch_stage = 12;
|
||||
|
||||
// Read-only. If present, then a [time
|
||||
// series][google.monitoring.v3.TimeSeries], which is identified partially by
|
||||
// a metric type and a
|
||||
// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor], that
|
||||
// is associated with this metric type can only be associated with one of the
|
||||
// monitored resource types listed here.
|
||||
repeated string monitored_resource_types = 13;
|
||||
}
|
||||
|
||||
// A specific metric, identified by specifying values for all of the
|
||||
// labels of a [`MetricDescriptor`][google.api.MetricDescriptor].
|
||||
message Metric {
|
||||
// An existing metric type, see
|
||||
// [google.api.MetricDescriptor][google.api.MetricDescriptor]. For example,
|
||||
// `custom.googleapis.com/invoice/paid/amount`.
|
||||
string type = 3;
|
||||
|
||||
// The set of label values that uniquely identify this metric. All
|
||||
// labels listed in the `MetricDescriptor` must be assigned values.
|
||||
map<string, string> labels = 2;
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/metric.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import label_pb2 as google_dot_api_dot_label__pb2
|
||||
from google.api import launch_stage_pb2 as google_dot_api_dot_launch__stage__pb2
|
||||
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x17google/api/metric.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\x1a\x1dgoogle/api/launch_stage.proto\x1a\x1egoogle/protobuf/duration.proto"\xac\x08\n\x10MetricDescriptor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x08 \x01(\t\x12+\n\x06labels\x18\x02 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12<\n\x0bmetric_kind\x18\x03 \x01(\x0e\x32\'.google.api.MetricDescriptor.MetricKind\x12:\n\nvalue_type\x18\x04 \x01(\x0e\x32&.google.api.MetricDescriptor.ValueType\x12\x0c\n\x04unit\x18\x05 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x07 \x01(\t\x12G\n\x08metadata\x18\n \x01(\x0b\x32\x35.google.api.MetricDescriptor.MetricDescriptorMetadata\x12-\n\x0claunch_stage\x18\x0c \x01(\x0e\x32\x17.google.api.LaunchStage\x12 \n\x18monitored_resource_types\x18\r \x03(\t\x1a\xbd\x03\n\x18MetricDescriptorMetadata\x12\x31\n\x0claunch_stage\x18\x01 \x01(\x0e\x32\x17.google.api.LaunchStageB\x02\x18\x01\x12\x30\n\rsample_period\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12/\n\x0cingest_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x84\x01\n$time_series_resource_hierarchy_level\x18\x04 \x03(\x0e\x32V.google.api.MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel"\x83\x01\n TimeSeriesResourceHierarchyLevel\x12\x34\n0TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED\x10\x00\x12\x0b\n\x07PROJECT\x10\x01\x12\x10\n\x0cORGANIZATION\x10\x02\x12\n\n\x06\x46OLDER\x10\x03"O\n\nMetricKind\x12\x1b\n\x17METRIC_KIND_UNSPECIFIED\x10\x00\x12\t\n\x05GAUGE\x10\x01\x12\t\n\x05\x44\x45LTA\x10\x02\x12\x0e\n\nCUMULATIVE\x10\x03"q\n\tValueType\x12\x1a\n\x16VALUE_TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04\x42OOL\x10\x01\x12\t\n\x05INT64\x10\x02\x12\n\n\x06\x44OUBLE\x10\x03\x12\n\n\x06STRING\x10\x04\x12\x10\n\x0c\x44ISTRIBUTION\x10\x05\x12\t\n\x05MONEY\x10\x06"u\n\x06Metric\x12\x0c\n\x04type\x18\x03 \x01(\t\x12.\n\x06labels\x18\x02 \x03(\x0b\x32\x1e.google.api.Metric.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42_\n\x0e\x63om.google.apiB\x0bMetricProtoP\x01Z7google.golang.org/genproto/googleapis/api/metric;metric\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.metric_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\013MetricProtoP\001Z7google.golang.org/genproto/googleapis/api/metric;metric\242\002\004GAPI"
|
||||
_globals["_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA"].fields_by_name[
|
||||
"launch_stage"
|
||||
]._options = None
|
||||
_globals["_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA"].fields_by_name[
|
||||
"launch_stage"
|
||||
]._serialized_options = b"\030\001"
|
||||
_globals["_METRIC_LABELSENTRY"]._options = None
|
||||
_globals["_METRIC_LABELSENTRY"]._serialized_options = b"8\001"
|
||||
_globals["_METRICDESCRIPTOR"]._serialized_start = 127
|
||||
_globals["_METRICDESCRIPTOR"]._serialized_end = 1195
|
||||
_globals["_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA"]._serialized_start = 554
|
||||
_globals["_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA"]._serialized_end = 999
|
||||
_globals[
|
||||
"_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA_TIMESERIESRESOURCEHIERARCHYLEVEL"
|
||||
]._serialized_start = 868
|
||||
_globals[
|
||||
"_METRICDESCRIPTOR_METRICDESCRIPTORMETADATA_TIMESERIESRESOURCEHIERARCHYLEVEL"
|
||||
]._serialized_end = 999
|
||||
_globals["_METRICDESCRIPTOR_METRICKIND"]._serialized_start = 1001
|
||||
_globals["_METRICDESCRIPTOR_METRICKIND"]._serialized_end = 1080
|
||||
_globals["_METRICDESCRIPTOR_VALUETYPE"]._serialized_start = 1082
|
||||
_globals["_METRICDESCRIPTOR_VALUETYPE"]._serialized_end = 1195
|
||||
_globals["_METRIC"]._serialized_start = 1197
|
||||
_globals["_METRIC"]._serialized_end = 1314
|
||||
_globals["_METRIC_LABELSENTRY"]._serialized_start = 1269
|
||||
_globals["_METRIC_LABELSENTRY"]._serialized_end = 1314
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,185 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import label_pb2 as _label_pb2
|
||||
from google.api import launch_stage_pb2 as _launch_stage_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import duration_pb2 as _duration_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class MetricDescriptor(_message.Message):
|
||||
__slots__ = (
|
||||
"name",
|
||||
"type",
|
||||
"labels",
|
||||
"metric_kind",
|
||||
"value_type",
|
||||
"unit",
|
||||
"description",
|
||||
"display_name",
|
||||
"metadata",
|
||||
"launch_stage",
|
||||
"monitored_resource_types",
|
||||
)
|
||||
|
||||
class MetricKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
METRIC_KIND_UNSPECIFIED: _ClassVar[MetricDescriptor.MetricKind]
|
||||
GAUGE: _ClassVar[MetricDescriptor.MetricKind]
|
||||
DELTA: _ClassVar[MetricDescriptor.MetricKind]
|
||||
CUMULATIVE: _ClassVar[MetricDescriptor.MetricKind]
|
||||
METRIC_KIND_UNSPECIFIED: MetricDescriptor.MetricKind
|
||||
GAUGE: MetricDescriptor.MetricKind
|
||||
DELTA: MetricDescriptor.MetricKind
|
||||
CUMULATIVE: MetricDescriptor.MetricKind
|
||||
|
||||
class ValueType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
VALUE_TYPE_UNSPECIFIED: _ClassVar[MetricDescriptor.ValueType]
|
||||
BOOL: _ClassVar[MetricDescriptor.ValueType]
|
||||
INT64: _ClassVar[MetricDescriptor.ValueType]
|
||||
DOUBLE: _ClassVar[MetricDescriptor.ValueType]
|
||||
STRING: _ClassVar[MetricDescriptor.ValueType]
|
||||
DISTRIBUTION: _ClassVar[MetricDescriptor.ValueType]
|
||||
MONEY: _ClassVar[MetricDescriptor.ValueType]
|
||||
VALUE_TYPE_UNSPECIFIED: MetricDescriptor.ValueType
|
||||
BOOL: MetricDescriptor.ValueType
|
||||
INT64: MetricDescriptor.ValueType
|
||||
DOUBLE: MetricDescriptor.ValueType
|
||||
STRING: MetricDescriptor.ValueType
|
||||
DISTRIBUTION: MetricDescriptor.ValueType
|
||||
MONEY: MetricDescriptor.ValueType
|
||||
|
||||
class MetricDescriptorMetadata(_message.Message):
|
||||
__slots__ = (
|
||||
"launch_stage",
|
||||
"sample_period",
|
||||
"ingest_delay",
|
||||
"time_series_resource_hierarchy_level",
|
||||
)
|
||||
|
||||
class TimeSeriesResourceHierarchyLevel(
|
||||
int, metaclass=_enum_type_wrapper.EnumTypeWrapper
|
||||
):
|
||||
__slots__ = ()
|
||||
TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED: _ClassVar[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
]
|
||||
PROJECT: _ClassVar[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
]
|
||||
ORGANIZATION: _ClassVar[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
]
|
||||
FOLDER: _ClassVar[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
]
|
||||
TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED: MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
PROJECT: MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
ORGANIZATION: MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
FOLDER: MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
LAUNCH_STAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
SAMPLE_PERIOD_FIELD_NUMBER: _ClassVar[int]
|
||||
INGEST_DELAY_FIELD_NUMBER: _ClassVar[int]
|
||||
TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_FIELD_NUMBER: _ClassVar[int]
|
||||
launch_stage: _launch_stage_pb2.LaunchStage
|
||||
sample_period: _duration_pb2.Duration
|
||||
ingest_delay: _duration_pb2.Duration
|
||||
time_series_resource_hierarchy_level: _containers.RepeatedScalarFieldContainer[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel
|
||||
]
|
||||
def __init__(
|
||||
self,
|
||||
launch_stage: _Optional[_Union[_launch_stage_pb2.LaunchStage, str]] = ...,
|
||||
sample_period: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...,
|
||||
ingest_delay: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...,
|
||||
time_series_resource_hierarchy_level: _Optional[
|
||||
_Iterable[
|
||||
_Union[
|
||||
MetricDescriptor.MetricDescriptorMetadata.TimeSeriesResourceHierarchyLevel,
|
||||
str,
|
||||
]
|
||||
]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
METRIC_KIND_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
UNIT_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
METADATA_FIELD_NUMBER: _ClassVar[int]
|
||||
LAUNCH_STAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
MONITORED_RESOURCE_TYPES_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
type: str
|
||||
labels: _containers.RepeatedCompositeFieldContainer[_label_pb2.LabelDescriptor]
|
||||
metric_kind: MetricDescriptor.MetricKind
|
||||
value_type: MetricDescriptor.ValueType
|
||||
unit: str
|
||||
description: str
|
||||
display_name: str
|
||||
metadata: MetricDescriptor.MetricDescriptorMetadata
|
||||
launch_stage: _launch_stage_pb2.LaunchStage
|
||||
monitored_resource_types: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
type: _Optional[str] = ...,
|
||||
labels: _Optional[
|
||||
_Iterable[_Union[_label_pb2.LabelDescriptor, _Mapping]]
|
||||
] = ...,
|
||||
metric_kind: _Optional[_Union[MetricDescriptor.MetricKind, str]] = ...,
|
||||
value_type: _Optional[_Union[MetricDescriptor.ValueType, str]] = ...,
|
||||
unit: _Optional[str] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
display_name: _Optional[str] = ...,
|
||||
metadata: _Optional[
|
||||
_Union[MetricDescriptor.MetricDescriptorMetadata, _Mapping]
|
||||
] = ...,
|
||||
launch_stage: _Optional[_Union[_launch_stage_pb2.LaunchStage, str]] = ...,
|
||||
monitored_resource_types: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Metric(_message.Message):
|
||||
__slots__ = ("type", "labels")
|
||||
|
||||
class LabelsEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
type: str
|
||||
labels: _containers.ScalarMap[str, str]
|
||||
def __init__(
|
||||
self, type: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,129 @@
|
||||
// Copyright 2025 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/label.proto";
|
||||
import "google/api/launch_stage.proto";
|
||||
import "google/protobuf/struct.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/monitoredres;monitoredres";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MonitoredResourceProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// An object that describes the schema of a
|
||||
// [MonitoredResource][google.api.MonitoredResource] object using a type name
|
||||
// and a set of labels. For example, the monitored resource descriptor for
|
||||
// Google Compute Engine VM instances has a type of
|
||||
// `"gce_instance"` and specifies the use of the labels `"instance_id"` and
|
||||
// `"zone"` to identify particular VM instances.
|
||||
//
|
||||
// Different APIs can support different monitored resource types. APIs generally
|
||||
// provide a `list` method that returns the monitored resource descriptors used
|
||||
// by the API.
|
||||
//
|
||||
message MonitoredResourceDescriptor {
|
||||
// Optional. The resource name of the monitored resource descriptor:
|
||||
// `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
|
||||
// {type} is the value of the `type` field in this object and
|
||||
// {project_id} is a project ID that provides API-specific context for
|
||||
// accessing the type. APIs that do not use project information can use the
|
||||
// resource name format `"monitoredResourceDescriptors/{type}"`.
|
||||
string name = 5;
|
||||
|
||||
// Required. The monitored resource type. For example, the type
|
||||
// `"cloudsql_database"` represents databases in Google Cloud SQL.
|
||||
// For a list of types, see [Monitored resource
|
||||
// types](https://cloud.google.com/monitoring/api/resources)
|
||||
// and [Logging resource
|
||||
// types](https://cloud.google.com/logging/docs/api/v2/resource-list).
|
||||
string type = 1;
|
||||
|
||||
// Optional. A concise name for the monitored resource type that might be
|
||||
// displayed in user interfaces. It should be a Title Cased Noun Phrase,
|
||||
// without any article or other determiners. For example,
|
||||
// `"Google Cloud SQL Database"`.
|
||||
string display_name = 2;
|
||||
|
||||
// Optional. A detailed description of the monitored resource type that might
|
||||
// be used in documentation.
|
||||
string description = 3;
|
||||
|
||||
// Required. A set of labels used to describe instances of this monitored
|
||||
// resource type. For example, an individual Google Cloud SQL database is
|
||||
// identified by values for the labels `"database_id"` and `"zone"`.
|
||||
repeated LabelDescriptor labels = 4;
|
||||
|
||||
// Optional. The launch stage of the monitored resource definition.
|
||||
LaunchStage launch_stage = 7;
|
||||
}
|
||||
|
||||
// An object representing a resource that can be used for monitoring, logging,
|
||||
// billing, or other purposes. Examples include virtual machine instances,
|
||||
// databases, and storage devices such as disks. The `type` field identifies a
|
||||
// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object
|
||||
// that describes the resource's schema. Information in the `labels` field
|
||||
// identifies the actual resource and its attributes according to the schema.
|
||||
// For example, a particular Compute Engine VM instance could be represented by
|
||||
// the following object, because the
|
||||
// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] for
|
||||
// `"gce_instance"` has labels
|
||||
// `"project_id"`, `"instance_id"` and `"zone"`:
|
||||
//
|
||||
// { "type": "gce_instance",
|
||||
// "labels": { "project_id": "my-project",
|
||||
// "instance_id": "12345678901234",
|
||||
// "zone": "us-central1-a" }}
|
||||
message MonitoredResource {
|
||||
// Required. The monitored resource type. This field must match
|
||||
// the `type` field of a
|
||||
// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor]
|
||||
// object. For example, the type of a Compute Engine VM instance is
|
||||
// `gce_instance`. Some descriptors include the service name in the type; for
|
||||
// example, the type of a Datastream stream is
|
||||
// `datastream.googleapis.com/Stream`.
|
||||
string type = 1;
|
||||
|
||||
// Required. Values for all of the labels listed in the associated monitored
|
||||
// resource descriptor. For example, Compute Engine VM instances use the
|
||||
// labels `"project_id"`, `"instance_id"`, and `"zone"`.
|
||||
map<string, string> labels = 2;
|
||||
}
|
||||
|
||||
// Auxiliary metadata for a [MonitoredResource][google.api.MonitoredResource]
|
||||
// object. [MonitoredResource][google.api.MonitoredResource] objects contain the
|
||||
// minimum set of information to uniquely identify a monitored resource
|
||||
// instance. There is some other useful auxiliary metadata. Monitoring and
|
||||
// Logging use an ingestion pipeline to extract metadata for cloud resources of
|
||||
// all types, and store the metadata in this message.
|
||||
message MonitoredResourceMetadata {
|
||||
// Output only. Values for predefined system metadata labels.
|
||||
// System labels are a kind of metadata extracted by Google, including
|
||||
// "machine_image", "vpc", "subnet_id",
|
||||
// "security_group", "name", etc.
|
||||
// System label values can be only strings, Boolean values, or a list of
|
||||
// strings. For example:
|
||||
//
|
||||
// { "name": "my-test-instance",
|
||||
// "security_group": ["a", "b", "c"],
|
||||
// "spot_instance": false }
|
||||
google.protobuf.Struct system_labels = 1;
|
||||
|
||||
// Output only. A map of user-defined metadata labels.
|
||||
map<string, string> user_labels = 2;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/monitored_resource.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import label_pb2 as google_dot_api_dot_label__pb2
|
||||
from google.api import launch_stage_pb2 as google_dot_api_dot_launch__stage__pb2
|
||||
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n#google/api/monitored_resource.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\x1a\x1dgoogle/api/launch_stage.proto\x1a\x1cgoogle/protobuf/struct.proto"\xc0\x01\n\x1bMonitoredResourceDescriptor\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12+\n\x06labels\x18\x04 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12-\n\x0claunch_stage\x18\x07 \x01(\x0e\x32\x17.google.api.LaunchStage"\x8b\x01\n\x11MonitoredResource\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x39\n\x06labels\x18\x02 \x03(\x0b\x32).google.api.MonitoredResource.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\xca\x01\n\x19MonitoredResourceMetadata\x12.\n\rsystem_labels\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12J\n\x0buser_labels\x18\x02 \x03(\x0b\x32\x35.google.api.MonitoredResourceMetadata.UserLabelsEntry\x1a\x31\n\x0fUserLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42v\n\x0e\x63om.google.apiB\x16MonitoredResourceProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/monitoredres;monitoredres\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.monitored_resource_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\026MonitoredResourceProtoP\001ZCgoogle.golang.org/genproto/googleapis/api/monitoredres;monitoredres\242\002\004GAPI"
|
||||
_globals["_MONITOREDRESOURCE_LABELSENTRY"]._options = None
|
||||
_globals["_MONITOREDRESOURCE_LABELSENTRY"]._serialized_options = b"8\001"
|
||||
_globals["_MONITOREDRESOURCEMETADATA_USERLABELSENTRY"]._options = None
|
||||
_globals[
|
||||
"_MONITOREDRESOURCEMETADATA_USERLABELSENTRY"
|
||||
]._serialized_options = b"8\001"
|
||||
_globals["_MONITOREDRESOURCEDESCRIPTOR"]._serialized_start = 137
|
||||
_globals["_MONITOREDRESOURCEDESCRIPTOR"]._serialized_end = 329
|
||||
_globals["_MONITOREDRESOURCE"]._serialized_start = 332
|
||||
_globals["_MONITOREDRESOURCE"]._serialized_end = 471
|
||||
_globals["_MONITOREDRESOURCE_LABELSENTRY"]._serialized_start = 426
|
||||
_globals["_MONITOREDRESOURCE_LABELSENTRY"]._serialized_end = 471
|
||||
_globals["_MONITOREDRESOURCEMETADATA"]._serialized_start = 474
|
||||
_globals["_MONITOREDRESOURCEMETADATA"]._serialized_end = 676
|
||||
_globals["_MONITOREDRESOURCEMETADATA_USERLABELSENTRY"]._serialized_start = 627
|
||||
_globals["_MONITOREDRESOURCEMETADATA_USERLABELSENTRY"]._serialized_end = 676
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,103 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import label_pb2 as _label_pb2
|
||||
from google.api import launch_stage_pb2 as _launch_stage_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import struct_pb2 as _struct_pb2
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class MonitoredResourceDescriptor(_message.Message):
|
||||
__slots__ = (
|
||||
"name",
|
||||
"type",
|
||||
"display_name",
|
||||
"description",
|
||||
"labels",
|
||||
"launch_stage",
|
||||
)
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
LAUNCH_STAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
type: str
|
||||
display_name: str
|
||||
description: str
|
||||
labels: _containers.RepeatedCompositeFieldContainer[_label_pb2.LabelDescriptor]
|
||||
launch_stage: _launch_stage_pb2.LaunchStage
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
type: _Optional[str] = ...,
|
||||
display_name: _Optional[str] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
labels: _Optional[
|
||||
_Iterable[_Union[_label_pb2.LabelDescriptor, _Mapping]]
|
||||
] = ...,
|
||||
launch_stage: _Optional[_Union[_launch_stage_pb2.LaunchStage, str]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class MonitoredResource(_message.Message):
|
||||
__slots__ = ("type", "labels")
|
||||
|
||||
class LabelsEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
type: str
|
||||
labels: _containers.ScalarMap[str, str]
|
||||
def __init__(
|
||||
self, type: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class MonitoredResourceMetadata(_message.Message):
|
||||
__slots__ = ("system_labels", "user_labels")
|
||||
|
||||
class UserLabelsEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: str
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
SYSTEM_LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
USER_LABELS_FIELD_NUMBER: _ClassVar[int]
|
||||
system_labels: _struct_pb2.Struct
|
||||
user_labels: _containers.ScalarMap[str, str]
|
||||
def __init__(
|
||||
self,
|
||||
system_labels: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...,
|
||||
user_labels: _Optional[_Mapping[str, str]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,107 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MonitoringProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Monitoring configuration of the service.
|
||||
//
|
||||
// The example below shows how to configure monitored resources and metrics
|
||||
// for monitoring. In the example, a monitored resource and two metrics are
|
||||
// defined. The `library.googleapis.com/book/returned_count` metric is sent
|
||||
// to both producer and consumer projects, whereas the
|
||||
// `library.googleapis.com/book/num_overdue` metric is only sent to the
|
||||
// consumer project.
|
||||
//
|
||||
// monitored_resources:
|
||||
// - type: library.googleapis.com/Branch
|
||||
// display_name: "Library Branch"
|
||||
// description: "A branch of a library."
|
||||
// launch_stage: GA
|
||||
// labels:
|
||||
// - key: resource_container
|
||||
// description: "The Cloud container (ie. project id) for the Branch."
|
||||
// - key: location
|
||||
// description: "The location of the library branch."
|
||||
// - key: branch_id
|
||||
// description: "The id of the branch."
|
||||
// metrics:
|
||||
// - name: library.googleapis.com/book/returned_count
|
||||
// display_name: "Books Returned"
|
||||
// description: "The count of books that have been returned."
|
||||
// launch_stage: GA
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
// unit: "1"
|
||||
// labels:
|
||||
// - key: customer_id
|
||||
// description: "The id of the customer."
|
||||
// - name: library.googleapis.com/book/num_overdue
|
||||
// display_name: "Books Overdue"
|
||||
// description: "The current number of overdue books."
|
||||
// launch_stage: GA
|
||||
// metric_kind: GAUGE
|
||||
// value_type: INT64
|
||||
// unit: "1"
|
||||
// labels:
|
||||
// - key: customer_id
|
||||
// description: "The id of the customer."
|
||||
// monitoring:
|
||||
// producer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/Branch
|
||||
// metrics:
|
||||
// - library.googleapis.com/book/returned_count
|
||||
// consumer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/Branch
|
||||
// metrics:
|
||||
// - library.googleapis.com/book/returned_count
|
||||
// - library.googleapis.com/book/num_overdue
|
||||
message Monitoring {
|
||||
// Configuration of a specific monitoring destination (the producer project
|
||||
// or the consumer project).
|
||||
message MonitoringDestination {
|
||||
// The monitored resource type. The type must be defined in
|
||||
// [Service.monitored_resources][google.api.Service.monitored_resources]
|
||||
// section.
|
||||
string monitored_resource = 1;
|
||||
|
||||
// Types of the metrics to report to this monitoring destination.
|
||||
// Each type must be defined in
|
||||
// [Service.metrics][google.api.Service.metrics] section.
|
||||
repeated string metrics = 2;
|
||||
}
|
||||
|
||||
// Monitoring configurations for sending metrics to the producer project.
|
||||
// There can be multiple producer destinations. A monitored resource type may
|
||||
// appear in multiple monitoring destinations if different aggregations are
|
||||
// needed for different sets of metrics associated with that monitored
|
||||
// resource type. A monitored resource and metric pair may only be used once
|
||||
// in the Monitoring configuration.
|
||||
repeated MonitoringDestination producer_destinations = 1;
|
||||
|
||||
// Monitoring configurations for sending metrics to the consumer project.
|
||||
// There can be multiple consumer destinations. A monitored resource type may
|
||||
// appear in multiple monitoring destinations if different aggregations are
|
||||
// needed for different sets of metrics associated with that monitored
|
||||
// resource type. A monitored resource and metric pair may only be used once
|
||||
// in the Monitoring configuration.
|
||||
repeated MonitoringDestination consumer_destinations = 2;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/monitoring.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1bgoogle/api/monitoring.proto\x12\ngoogle.api"\xec\x01\n\nMonitoring\x12K\n\x15producer_destinations\x18\x01 \x03(\x0b\x32,.google.api.Monitoring.MonitoringDestination\x12K\n\x15\x63onsumer_destinations\x18\x02 \x03(\x0b\x32,.google.api.Monitoring.MonitoringDestination\x1a\x44\n\x15MonitoringDestination\x12\x1a\n\x12monitored_resource\x18\x01 \x01(\t\x12\x0f\n\x07metrics\x18\x02 \x03(\tBq\n\x0e\x63om.google.apiB\x0fMonitoringProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.monitoring_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\017MonitoringProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_MONITORING"]._serialized_start = 44
|
||||
_globals["_MONITORING"]._serialized_end = 280
|
||||
_globals["_MONITORING_MONITORINGDESTINATION"]._serialized_start = 212
|
||||
_globals["_MONITORING_MONITORINGDESTINATION"]._serialized_end = 280
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,57 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Monitoring(_message.Message):
|
||||
__slots__ = ("producer_destinations", "consumer_destinations")
|
||||
|
||||
class MonitoringDestination(_message.Message):
|
||||
__slots__ = ("monitored_resource", "metrics")
|
||||
MONITORED_RESOURCE_FIELD_NUMBER: _ClassVar[int]
|
||||
METRICS_FIELD_NUMBER: _ClassVar[int]
|
||||
monitored_resource: str
|
||||
metrics: _containers.RepeatedScalarFieldContainer[str]
|
||||
def __init__(
|
||||
self,
|
||||
monitored_resource: _Optional[str] = ...,
|
||||
metrics: _Optional[_Iterable[str]] = ...,
|
||||
) -> None: ...
|
||||
PRODUCER_DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
CONSUMER_DESTINATIONS_FIELD_NUMBER: _ClassVar[int]
|
||||
producer_destinations: _containers.RepeatedCompositeFieldContainer[
|
||||
Monitoring.MonitoringDestination
|
||||
]
|
||||
consumer_destinations: _containers.RepeatedCompositeFieldContainer[
|
||||
Monitoring.MonitoringDestination
|
||||
]
|
||||
def __init__(
|
||||
self,
|
||||
producer_destinations: _Optional[
|
||||
_Iterable[_Union[Monitoring.MonitoringDestination, _Mapping]]
|
||||
] = ...,
|
||||
consumer_destinations: _Optional[
|
||||
_Iterable[_Union[Monitoring.MonitoringDestination, _Mapping]]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,82 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "PolicyProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
// See [FieldPolicy][].
|
||||
google.api.FieldPolicy field_policy = 158361448;
|
||||
}
|
||||
|
||||
extend google.protobuf.MethodOptions {
|
||||
// See [MethodPolicy][].
|
||||
google.api.MethodPolicy method_policy = 161893301;
|
||||
}
|
||||
|
||||
// Google API Policy Annotation
|
||||
//
|
||||
// This message defines a simple API policy annotation that can be used to
|
||||
// annotate API request and response message fields with applicable policies.
|
||||
// One field may have multiple applicable policies that must all be satisfied
|
||||
// before a request can be processed. This policy annotation is used to
|
||||
// generate the overall policy that will be used for automatic runtime
|
||||
// policy enforcement and documentation generation.
|
||||
message FieldPolicy {
|
||||
// Selects one or more request or response message fields to apply this
|
||||
// `FieldPolicy`.
|
||||
//
|
||||
// When a `FieldPolicy` is used in proto annotation, the selector must
|
||||
// be left as empty. The service config generator will automatically fill
|
||||
// the correct value.
|
||||
//
|
||||
// When a `FieldPolicy` is used in service config, the selector must be a
|
||||
// comma-separated string with valid request or response field paths,
|
||||
// such as "foo.bar" or "foo.bar,foo.baz".
|
||||
string selector = 1;
|
||||
|
||||
// Specifies the required permission(s) for the resource referred to by the
|
||||
// field. It requires the field contains a valid resource reference, and
|
||||
// the request must pass the permission checks to proceed. For example,
|
||||
// "resourcemanager.projects.get".
|
||||
string resource_permission = 2;
|
||||
|
||||
// Specifies the resource type for the resource referred to by the field.
|
||||
string resource_type = 3;
|
||||
}
|
||||
|
||||
// Defines policies applying to an RPC method.
|
||||
message MethodPolicy {
|
||||
// Selects a method to which these policies should be enforced, for example,
|
||||
// "google.pubsub.v1.Subscriber.CreateSubscription".
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
//
|
||||
// NOTE: This field must not be set in the proto annotation. It will be
|
||||
// automatically filled by the service config compiler .
|
||||
string selector = 9;
|
||||
|
||||
// Policies that are applicable to the request message.
|
||||
repeated FieldPolicy request_policies = 2;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/policy.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x17google/api/policy.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"S\n\x0b\x46ieldPolicy\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x1b\n\x13resource_permission\x18\x02 \x01(\t\x12\x15\n\rresource_type\x18\x03 \x01(\t"S\n\x0cMethodPolicy\x12\x10\n\x08selector\x18\t \x01(\t\x12\x31\n\x10request_policies\x18\x02 \x03(\x0b\x32\x17.google.api.FieldPolicy:O\n\x0c\x66ield_policy\x12\x1d.google.protobuf.FieldOptions\x18\xe8\xce\xc1K \x01(\x0b\x32\x17.google.api.FieldPolicy:R\n\rmethod_policy\x12\x1e.google.protobuf.MethodOptions\x18\xb5\x97\x99M \x01(\x0b\x32\x18.google.api.MethodPolicyBm\n\x0e\x63om.google.apiB\x0bPolicyProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.policy_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\013PolicyProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_FIELDPOLICY"]._serialized_start = 73
|
||||
_globals["_FIELDPOLICY"]._serialized_end = 156
|
||||
_globals["_METHODPOLICY"]._serialized_start = 158
|
||||
_globals["_METHODPOLICY"]._serialized_end = 241
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,57 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
FIELD_POLICY_FIELD_NUMBER: _ClassVar[int]
|
||||
field_policy: _descriptor.FieldDescriptor
|
||||
METHOD_POLICY_FIELD_NUMBER: _ClassVar[int]
|
||||
method_policy: _descriptor.FieldDescriptor
|
||||
|
||||
class FieldPolicy(_message.Message):
|
||||
__slots__ = ("selector", "resource_permission", "resource_type")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
RESOURCE_PERMISSION_FIELD_NUMBER: _ClassVar[int]
|
||||
RESOURCE_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
resource_permission: str
|
||||
resource_type: str
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
resource_permission: _Optional[str] = ...,
|
||||
resource_type: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class MethodPolicy(_message.Message):
|
||||
__slots__ = ("selector", "request_policies")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
REQUEST_POLICIES_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
request_policies: _containers.RepeatedCompositeFieldContainer[FieldPolicy]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
request_policies: _Optional[_Iterable[_Union[FieldPolicy, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,184 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "QuotaProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Quota configuration helps to achieve fairness and budgeting in service
|
||||
// usage.
|
||||
//
|
||||
// The metric based quota configuration works this way:
|
||||
// - The service configuration defines a set of metrics.
|
||||
// - For API calls, the quota.metric_rules maps methods to metrics with
|
||||
// corresponding costs.
|
||||
// - The quota.limits defines limits on the metrics, which will be used for
|
||||
// quota checks at runtime.
|
||||
//
|
||||
// An example quota configuration in yaml format:
|
||||
//
|
||||
// quota:
|
||||
// limits:
|
||||
//
|
||||
// - name: apiWriteQpsPerProject
|
||||
// metric: library.googleapis.com/write_calls
|
||||
// unit: "1/min/{project}" # rate limit for consumer projects
|
||||
// values:
|
||||
// STANDARD: 10000
|
||||
//
|
||||
//
|
||||
// (The metric rules bind all methods to the read_calls metric,
|
||||
// except for the UpdateBook and DeleteBook methods. These two methods
|
||||
// are mapped to the write_calls metric, with the UpdateBook method
|
||||
// consuming at twice rate as the DeleteBook method.)
|
||||
// metric_rules:
|
||||
// - selector: "*"
|
||||
// metric_costs:
|
||||
// library.googleapis.com/read_calls: 1
|
||||
// - selector: google.example.library.v1.LibraryService.UpdateBook
|
||||
// metric_costs:
|
||||
// library.googleapis.com/write_calls: 2
|
||||
// - selector: google.example.library.v1.LibraryService.DeleteBook
|
||||
// metric_costs:
|
||||
// library.googleapis.com/write_calls: 1
|
||||
//
|
||||
// Corresponding Metric definition:
|
||||
//
|
||||
// metrics:
|
||||
// - name: library.googleapis.com/read_calls
|
||||
// display_name: Read requests
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
//
|
||||
// - name: library.googleapis.com/write_calls
|
||||
// display_name: Write requests
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
//
|
||||
//
|
||||
message Quota {
|
||||
// List of QuotaLimit definitions for the service.
|
||||
repeated QuotaLimit limits = 3;
|
||||
|
||||
// List of MetricRule definitions, each one mapping a selected method to one
|
||||
// or more metrics.
|
||||
repeated MetricRule metric_rules = 4;
|
||||
}
|
||||
|
||||
// Bind API methods to metrics. Binding a method to a metric causes that
|
||||
// metric's configured quota behaviors to apply to the method call.
|
||||
message MetricRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// Metrics to update when the selected methods are called, and the associated
|
||||
// cost applied to each metric.
|
||||
//
|
||||
// The key of the map is the metric name, and the values are the amount
|
||||
// increased for the metric against which the quota limits are defined.
|
||||
// The value must not be negative.
|
||||
map<string, int64> metric_costs = 2;
|
||||
}
|
||||
|
||||
// `QuotaLimit` defines a specific limit that applies over a specified duration
|
||||
// for a limit type. There can be at most one limit for a duration and limit
|
||||
// type combination defined within a `QuotaGroup`.
|
||||
message QuotaLimit {
|
||||
// Name of the quota limit.
|
||||
//
|
||||
// The name must be provided, and it must be unique within the service. The
|
||||
// name can only include alphanumeric characters as well as '-'.
|
||||
//
|
||||
// The maximum length of the limit name is 64 characters.
|
||||
string name = 6;
|
||||
|
||||
// Optional. User-visible, extended description for this quota limit.
|
||||
// Should be used only when more context is needed to understand this limit
|
||||
// than provided by the limit's display name (see: `display_name`).
|
||||
string description = 2;
|
||||
|
||||
// Default number of tokens that can be consumed during the specified
|
||||
// duration. This is the number of tokens assigned when a client
|
||||
// application developer activates the service for his/her project.
|
||||
//
|
||||
// Specifying a value of 0 will block all requests. This can be used if you
|
||||
// are provisioning quota to selected consumers and blocking others.
|
||||
// Similarly, a value of -1 will indicate an unlimited quota. No other
|
||||
// negative values are allowed.
|
||||
//
|
||||
// Used by group-based quotas only.
|
||||
int64 default_limit = 3;
|
||||
|
||||
// Maximum number of tokens that can be consumed during the specified
|
||||
// duration. Client application developers can override the default limit up
|
||||
// to this maximum. If specified, this value cannot be set to a value less
|
||||
// than the default limit. If not specified, it is set to the default limit.
|
||||
//
|
||||
// To allow clients to apply overrides with no upper bound, set this to -1,
|
||||
// indicating unlimited maximum quota.
|
||||
//
|
||||
// Used by group-based quotas only.
|
||||
int64 max_limit = 4;
|
||||
|
||||
// Free tier value displayed in the Developers Console for this limit.
|
||||
// The free tier is the number of tokens that will be subtracted from the
|
||||
// billed amount when billing is enabled.
|
||||
// This field can only be set on a limit with duration "1d", in a billable
|
||||
// group; it is invalid on any other limit. If this field is not set, it
|
||||
// defaults to 0, indicating that there is no free tier for this service.
|
||||
//
|
||||
// Used by group-based quotas only.
|
||||
int64 free_tier = 7;
|
||||
|
||||
// Duration of this limit in textual notation. Must be "100s" or "1d".
|
||||
//
|
||||
// Used by group-based quotas only.
|
||||
string duration = 5;
|
||||
|
||||
// The name of the metric this quota limit applies to. The quota limits with
|
||||
// the same metric will be checked together during runtime. The metric must be
|
||||
// defined within the service config.
|
||||
string metric = 8;
|
||||
|
||||
// Specify the unit of the quota limit. It uses the same syntax as
|
||||
// [MetricDescriptor.unit][google.api.MetricDescriptor.unit]. The supported
|
||||
// unit kinds are determined by the quota backend system.
|
||||
//
|
||||
// Here are some examples:
|
||||
// * "1/min/{project}" for quota per minute per project.
|
||||
//
|
||||
// Note: the order of unit components is insignificant.
|
||||
// The "1" at the beginning is required to follow the metric unit syntax.
|
||||
string unit = 9;
|
||||
|
||||
// Tiered limit values. You must specify this as a key:value pair, with an
|
||||
// integer value that is the maximum number of requests allowed for the
|
||||
// specified unit. Currently only STANDARD is supported.
|
||||
map<string, int64> values = 10;
|
||||
|
||||
// User-visible display name for this limit.
|
||||
// Optional. If not set, the UI will provide a default display name based on
|
||||
// the quota configuration. This field can be used to override the default
|
||||
// display name generated from the configuration.
|
||||
string display_name = 12;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/quota.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x16google/api/quota.proto\x12\ngoogle.api"]\n\x05Quota\x12&\n\x06limits\x18\x03 \x03(\x0b\x32\x16.google.api.QuotaLimit\x12,\n\x0cmetric_rules\x18\x04 \x03(\x0b\x32\x16.google.api.MetricRule"\x91\x01\n\nMetricRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12=\n\x0cmetric_costs\x18\x02 \x03(\x0b\x32\'.google.api.MetricRule.MetricCostsEntry\x1a\x32\n\x10MetricCostsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01"\x95\x02\n\nQuotaLimit\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x15\n\rdefault_limit\x18\x03 \x01(\x03\x12\x11\n\tmax_limit\x18\x04 \x01(\x03\x12\x11\n\tfree_tier\x18\x07 \x01(\x03\x12\x10\n\x08\x64uration\x18\x05 \x01(\t\x12\x0e\n\x06metric\x18\x08 \x01(\t\x12\x0c\n\x04unit\x18\t \x01(\t\x12\x32\n\x06values\x18\n \x03(\x0b\x32".google.api.QuotaLimit.ValuesEntry\x12\x14\n\x0c\x64isplay_name\x18\x0c \x01(\t\x1a-\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x42l\n\x0e\x63om.google.apiB\nQuotaProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.quota_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\nQuotaProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_METRICRULE_METRICCOSTSENTRY"]._options = None
|
||||
_globals["_METRICRULE_METRICCOSTSENTRY"]._serialized_options = b"8\001"
|
||||
_globals["_QUOTALIMIT_VALUESENTRY"]._options = None
|
||||
_globals["_QUOTALIMIT_VALUESENTRY"]._serialized_options = b"8\001"
|
||||
_globals["_QUOTA"]._serialized_start = 38
|
||||
_globals["_QUOTA"]._serialized_end = 131
|
||||
_globals["_METRICRULE"]._serialized_start = 134
|
||||
_globals["_METRICRULE"]._serialized_end = 279
|
||||
_globals["_METRICRULE_METRICCOSTSENTRY"]._serialized_start = 229
|
||||
_globals["_METRICRULE_METRICCOSTSENTRY"]._serialized_end = 279
|
||||
_globals["_QUOTALIMIT"]._serialized_start = 282
|
||||
_globals["_QUOTALIMIT"]._serialized_end = 559
|
||||
_globals["_QUOTALIMIT_VALUESENTRY"]._serialized_start = 514
|
||||
_globals["_QUOTALIMIT_VALUESENTRY"]._serialized_end = 559
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,116 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Quota(_message.Message):
|
||||
__slots__ = ("limits", "metric_rules")
|
||||
LIMITS_FIELD_NUMBER: _ClassVar[int]
|
||||
METRIC_RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
limits: _containers.RepeatedCompositeFieldContainer[QuotaLimit]
|
||||
metric_rules: _containers.RepeatedCompositeFieldContainer[MetricRule]
|
||||
def __init__(
|
||||
self,
|
||||
limits: _Optional[_Iterable[_Union[QuotaLimit, _Mapping]]] = ...,
|
||||
metric_rules: _Optional[_Iterable[_Union[MetricRule, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class MetricRule(_message.Message):
|
||||
__slots__ = ("selector", "metric_costs")
|
||||
|
||||
class MetricCostsEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: int
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[int] = ...
|
||||
) -> None: ...
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
METRIC_COSTS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
metric_costs: _containers.ScalarMap[str, int]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
metric_costs: _Optional[_Mapping[str, int]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class QuotaLimit(_message.Message):
|
||||
__slots__ = (
|
||||
"name",
|
||||
"description",
|
||||
"default_limit",
|
||||
"max_limit",
|
||||
"free_tier",
|
||||
"duration",
|
||||
"metric",
|
||||
"unit",
|
||||
"values",
|
||||
"display_name",
|
||||
)
|
||||
|
||||
class ValuesEntry(_message.Message):
|
||||
__slots__ = ("key", "value")
|
||||
KEY_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUE_FIELD_NUMBER: _ClassVar[int]
|
||||
key: str
|
||||
value: int
|
||||
def __init__(
|
||||
self, key: _Optional[str] = ..., value: _Optional[int] = ...
|
||||
) -> None: ...
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
|
||||
DEFAULT_LIMIT_FIELD_NUMBER: _ClassVar[int]
|
||||
MAX_LIMIT_FIELD_NUMBER: _ClassVar[int]
|
||||
FREE_TIER_FIELD_NUMBER: _ClassVar[int]
|
||||
DURATION_FIELD_NUMBER: _ClassVar[int]
|
||||
METRIC_FIELD_NUMBER: _ClassVar[int]
|
||||
UNIT_FIELD_NUMBER: _ClassVar[int]
|
||||
VALUES_FIELD_NUMBER: _ClassVar[int]
|
||||
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
description: str
|
||||
default_limit: int
|
||||
max_limit: int
|
||||
free_tier: int
|
||||
duration: str
|
||||
metric: str
|
||||
unit: str
|
||||
values: _containers.ScalarMap[str, int]
|
||||
display_name: str
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
description: _Optional[str] = ...,
|
||||
default_limit: _Optional[int] = ...,
|
||||
max_limit: _Optional[int] = ...,
|
||||
free_tier: _Optional[int] = ...,
|
||||
duration: _Optional[str] = ...,
|
||||
metric: _Optional[str] = ...,
|
||||
unit: _Optional[str] = ...,
|
||||
values: _Optional[_Mapping[str, int]] = ...,
|
||||
display_name: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,242 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ResourceProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
// An annotation that describes a resource reference, see
|
||||
// [ResourceReference][].
|
||||
google.api.ResourceReference resource_reference = 1055;
|
||||
}
|
||||
|
||||
extend google.protobuf.FileOptions {
|
||||
// An annotation that describes a resource definition without a corresponding
|
||||
// message; see [ResourceDescriptor][].
|
||||
repeated google.api.ResourceDescriptor resource_definition = 1053;
|
||||
}
|
||||
|
||||
extend google.protobuf.MessageOptions {
|
||||
// An annotation that describes a resource definition, see
|
||||
// [ResourceDescriptor][].
|
||||
google.api.ResourceDescriptor resource = 1053;
|
||||
}
|
||||
|
||||
// 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}"
|
||||
message ResourceDescriptor {
|
||||
// A description of the historical or future-looking state of the
|
||||
// resource pattern.
|
||||
enum History {
|
||||
// The "unset" value.
|
||||
HISTORY_UNSPECIFIED = 0;
|
||||
|
||||
// The resource originally had one pattern and launched as such, and
|
||||
// additional patterns were added later.
|
||||
ORIGINALLY_SINGLE_PATTERN = 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.)
|
||||
FUTURE_MULTI_PATTERN = 2;
|
||||
}
|
||||
|
||||
// A flag representing a specific style that a resource claims to conform to.
|
||||
enum Style {
|
||||
// The unspecified value. Do not use.
|
||||
STYLE_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.
|
||||
DECLARATIVE_FRIENDLY = 1;
|
||||
}
|
||||
|
||||
// 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.
|
||||
string type = 1;
|
||||
|
||||
// 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.
|
||||
repeated string pattern = 2;
|
||||
|
||||
// Optional. The field on the resource that designates the resource name
|
||||
// field. If omitted, this is assumed to be "name".
|
||||
string name_field = 3;
|
||||
|
||||
// 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
|
||||
// };
|
||||
// }
|
||||
History history = 4;
|
||||
|
||||
// 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
|
||||
string plural = 5;
|
||||
|
||||
// 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.
|
||||
string singular = 6;
|
||||
|
||||
// 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.
|
||||
repeated Style style = 10;
|
||||
}
|
||||
|
||||
// Defines a proto annotation that describes a string field that refers to
|
||||
// an API resource.
|
||||
message 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: "*"
|
||||
// }];
|
||||
// }
|
||||
string type = 1;
|
||||
|
||||
// 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"
|
||||
// };
|
||||
// }
|
||||
string child_type = 2;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/resource.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"\xee\x02\n\x12ResourceDescriptor\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0f\n\x07pattern\x18\x02 \x03(\t\x12\x12\n\nname_field\x18\x03 \x01(\t\x12\x37\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.History\x12\x0e\n\x06plural\x18\x05 \x01(\t\x12\x10\n\x08singular\x18\x06 \x01(\t\x12\x33\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.Style"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01"5\n\x11ResourceReference\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x12\n\nchild_type\x18\x02 \x01(\t:Y\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReference:Z\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptor:R\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorBk\n\x0e\x63om.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.resource_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\rResourceProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
_globals["_RESOURCEDESCRIPTOR"]._serialized_start = 76
|
||||
_globals["_RESOURCEDESCRIPTOR"]._serialized_end = 442
|
||||
_globals["_RESOURCEDESCRIPTOR_HISTORY"]._serialized_start = 293
|
||||
_globals["_RESOURCEDESCRIPTOR_HISTORY"]._serialized_end = 384
|
||||
_globals["_RESOURCEDESCRIPTOR_STYLE"]._serialized_start = 386
|
||||
_globals["_RESOURCEDESCRIPTOR_STYLE"]._serialized_end = 442
|
||||
_globals["_RESOURCEREFERENCE"]._serialized_start = 444
|
||||
_globals["_RESOURCEREFERENCE"]._serialized_end = 497
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,93 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
RESOURCE_REFERENCE_FIELD_NUMBER: _ClassVar[int]
|
||||
resource_reference: _descriptor.FieldDescriptor
|
||||
RESOURCE_DEFINITION_FIELD_NUMBER: _ClassVar[int]
|
||||
resource_definition: _descriptor.FieldDescriptor
|
||||
RESOURCE_FIELD_NUMBER: _ClassVar[int]
|
||||
resource: _descriptor.FieldDescriptor
|
||||
|
||||
class ResourceDescriptor(_message.Message):
|
||||
__slots__ = (
|
||||
"type",
|
||||
"pattern",
|
||||
"name_field",
|
||||
"history",
|
||||
"plural",
|
||||
"singular",
|
||||
"style",
|
||||
)
|
||||
|
||||
class History(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
HISTORY_UNSPECIFIED: _ClassVar[ResourceDescriptor.History]
|
||||
ORIGINALLY_SINGLE_PATTERN: _ClassVar[ResourceDescriptor.History]
|
||||
FUTURE_MULTI_PATTERN: _ClassVar[ResourceDescriptor.History]
|
||||
HISTORY_UNSPECIFIED: ResourceDescriptor.History
|
||||
ORIGINALLY_SINGLE_PATTERN: ResourceDescriptor.History
|
||||
FUTURE_MULTI_PATTERN: ResourceDescriptor.History
|
||||
|
||||
class Style(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
||||
__slots__ = ()
|
||||
STYLE_UNSPECIFIED: _ClassVar[ResourceDescriptor.Style]
|
||||
DECLARATIVE_FRIENDLY: _ClassVar[ResourceDescriptor.Style]
|
||||
STYLE_UNSPECIFIED: ResourceDescriptor.Style
|
||||
DECLARATIVE_FRIENDLY: ResourceDescriptor.Style
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
PATTERN_FIELD_NUMBER: _ClassVar[int]
|
||||
NAME_FIELD_FIELD_NUMBER: _ClassVar[int]
|
||||
HISTORY_FIELD_NUMBER: _ClassVar[int]
|
||||
PLURAL_FIELD_NUMBER: _ClassVar[int]
|
||||
SINGULAR_FIELD_NUMBER: _ClassVar[int]
|
||||
STYLE_FIELD_NUMBER: _ClassVar[int]
|
||||
type: str
|
||||
pattern: _containers.RepeatedScalarFieldContainer[str]
|
||||
name_field: str
|
||||
history: ResourceDescriptor.History
|
||||
plural: str
|
||||
singular: str
|
||||
style: _containers.RepeatedScalarFieldContainer[ResourceDescriptor.Style]
|
||||
def __init__(
|
||||
self,
|
||||
type: _Optional[str] = ...,
|
||||
pattern: _Optional[_Iterable[str]] = ...,
|
||||
name_field: _Optional[str] = ...,
|
||||
history: _Optional[_Union[ResourceDescriptor.History, str]] = ...,
|
||||
plural: _Optional[str] = ...,
|
||||
singular: _Optional[str] = ...,
|
||||
style: _Optional[_Iterable[_Union[ResourceDescriptor.Style, str]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class ResourceReference(_message.Message):
|
||||
__slots__ = ("type", "child_type")
|
||||
TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
CHILD_TYPE_FIELD_NUMBER: _ClassVar[int]
|
||||
type: str
|
||||
child_type: str
|
||||
def __init__(
|
||||
self, type: _Optional[str] = ..., child_type: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,461 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "RoutingProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.MethodOptions {
|
||||
// See RoutingRule.
|
||||
google.api.RoutingRule routing = 72295729;
|
||||
}
|
||||
|
||||
// Specifies the routing information that should be sent along with the request
|
||||
// in the form of routing header.
|
||||
// **NOTE:** All service configuration rules follow the "last one wins" order.
|
||||
//
|
||||
// The examples below will apply to an RPC which has the following request type:
|
||||
//
|
||||
// Message Definition:
|
||||
//
|
||||
// message Request {
|
||||
// // The name of the Table
|
||||
// // Values can be of the following formats:
|
||||
// // - `projects/<project>/tables/<table>`
|
||||
// // - `projects/<project>/instances/<instance>/tables/<table>`
|
||||
// // - `region/<region>/zones/<zone>/tables/<table>`
|
||||
// string table_name = 1;
|
||||
//
|
||||
// // This value specifies routing for replication.
|
||||
// // It can be in the following formats:
|
||||
// // - `profiles/<profile_id>`
|
||||
// // - a legacy `profile_id` that can be any string
|
||||
// string app_profile_id = 2;
|
||||
// }
|
||||
//
|
||||
// Example message:
|
||||
//
|
||||
// {
|
||||
// table_name: projects/proj_foo/instances/instance_bar/table/table_baz,
|
||||
// app_profile_id: profiles/prof_qux
|
||||
// }
|
||||
//
|
||||
// The routing header consists of one or multiple key-value pairs. Every key
|
||||
// and value must be percent-encoded, and joined together in the format of
|
||||
// `key1=value1&key2=value2`.
|
||||
// The examples below skip the percent-encoding for readability.
|
||||
//
|
||||
// Example 1
|
||||
//
|
||||
// Extracting a field from the request to put into the routing header
|
||||
// unchanged, with the key equal to the field name.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take the `app_profile_id`.
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params: app_profile_id=profiles/prof_qux
|
||||
//
|
||||
// Example 2
|
||||
//
|
||||
// Extracting a field from the request to put into the routing header
|
||||
// unchanged, with the key different from the field name.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take the `app_profile_id`, but name it `routing_id` in the header.
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// path_template: "{routing_id=**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params: routing_id=profiles/prof_qux
|
||||
//
|
||||
// Example 3
|
||||
//
|
||||
// Extracting a field from the request to put into the routing
|
||||
// header, while matching a path template syntax on the field's value.
|
||||
//
|
||||
// NB: it is more useful to send nothing than to send garbage for the purpose
|
||||
// of dynamic routing, since garbage pollutes cache. Thus the matching.
|
||||
//
|
||||
// Sub-example 3a
|
||||
//
|
||||
// The field matches the template.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take the `table_name`, if it's well-formed (with project-based
|
||||
// // syntax).
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_name=projects/*/instances/*/**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// table_name=projects/proj_foo/instances/instance_bar/table/table_baz
|
||||
//
|
||||
// Sub-example 3b
|
||||
//
|
||||
// The field does not match the template.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take the `table_name`, if it's well-formed (with region-based
|
||||
// // syntax).
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_name=regions/*/zones/*/**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// <no routing header will be sent>
|
||||
//
|
||||
// Sub-example 3c
|
||||
//
|
||||
// Multiple alternative conflictingly named path templates are
|
||||
// specified. The one that matches is used to construct the header.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take the `table_name`, if it's well-formed, whether
|
||||
// // using the region- or projects-based syntax.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_name=regions/*/zones/*/**}"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_name=projects/*/instances/*/**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// table_name=projects/proj_foo/instances/instance_bar/table/table_baz
|
||||
//
|
||||
// Example 4
|
||||
//
|
||||
// Extracting a single routing header key-value pair by matching a
|
||||
// template syntax on (a part of) a single request field.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // Take just the project id from the `table_name` field.
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=projects/*}/**"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params: routing_id=projects/proj_foo
|
||||
//
|
||||
// Example 5
|
||||
//
|
||||
// Extracting a single routing header key-value pair by matching
|
||||
// several conflictingly named path templates on (parts of) a single request
|
||||
// field. The last template to match "wins" the conflict.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // If the `table_name` does not have instances information,
|
||||
// // take just the project id for routing.
|
||||
// // Otherwise take project + instance.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=projects/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=projects/*/instances/*}/**"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// routing_id=projects/proj_foo/instances/instance_bar
|
||||
//
|
||||
// Example 6
|
||||
//
|
||||
// Extracting multiple routing header key-value pairs by matching
|
||||
// several non-conflicting path templates on (parts of) a single request field.
|
||||
//
|
||||
// Sub-example 6a
|
||||
//
|
||||
// Make the templates strict, so that if the `table_name` does not
|
||||
// have an instance information, nothing is sent.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // The routing code needs two keys instead of one composite
|
||||
// // but works only for the tables with the "project-instance" name
|
||||
// // syntax.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{project_id=projects/*}/instances/*/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "projects/*/{instance_id=instances/*}/**"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// project_id=projects/proj_foo&instance_id=instances/instance_bar
|
||||
//
|
||||
// Sub-example 6b
|
||||
//
|
||||
// Make the templates loose, so that if the `table_name` does not
|
||||
// have an instance information, just the project id part is sent.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // The routing code wants two keys instead of one composite
|
||||
// // but will work with just the `project_id` for tables without
|
||||
// // an instance in the `table_name`.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{project_id=projects/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "projects/*/{instance_id=instances/*}/**"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result (is the same as 6a for our example message because it has the instance
|
||||
// information):
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// project_id=projects/proj_foo&instance_id=instances/instance_bar
|
||||
//
|
||||
// Example 7
|
||||
//
|
||||
// Extracting multiple routing header key-value pairs by matching
|
||||
// several path templates on multiple request fields.
|
||||
//
|
||||
// NB: note that here there is no way to specify sending nothing if one of the
|
||||
// fields does not match its template. E.g. if the `table_name` is in the wrong
|
||||
// format, the `project_id` will not be sent, but the `routing_id` will be.
|
||||
// The backend routing code has to be aware of that and be prepared to not
|
||||
// receive a full complement of keys if it expects multiple.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // The routing needs both `project_id` and `routing_id`
|
||||
// // (from the `app_profile_id` field) for routing.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{project_id=projects/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// path_template: "{routing_id=**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// project_id=projects/proj_foo&routing_id=profiles/prof_qux
|
||||
//
|
||||
// Example 8
|
||||
//
|
||||
// Extracting a single routing header key-value pair by matching
|
||||
// several conflictingly named path templates on several request fields. The
|
||||
// last template to match "wins" the conflict.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // The `routing_id` can be a project id or a region id depending on
|
||||
// // the table name format, but only if the `app_profile_id` is not set.
|
||||
// // If `app_profile_id` is set it should be used instead.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=projects/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=regions/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// path_template: "{routing_id=**}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params: routing_id=profiles/prof_qux
|
||||
//
|
||||
// Example 9
|
||||
//
|
||||
// Bringing it all together.
|
||||
//
|
||||
// annotation:
|
||||
//
|
||||
// option (google.api.routing) = {
|
||||
// // For routing both `table_location` and a `routing_id` are needed.
|
||||
// //
|
||||
// // table_location can be either an instance id or a region+zone id.
|
||||
// //
|
||||
// // For `routing_id`, take the value of `app_profile_id`
|
||||
// // - If it's in the format `profiles/<profile_id>`, send
|
||||
// // just the `<profile_id>` part.
|
||||
// // - If it's any other literal, send it as is.
|
||||
// // If the `app_profile_id` is empty, and the `table_name` starts with
|
||||
// // the project_id, send that instead.
|
||||
//
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "projects/*/{table_location=instances/*}/tables/*"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_location=regions/*/zones/*}/tables/*"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "table_name"
|
||||
// path_template: "{routing_id=projects/*}/**"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// path_template: "{routing_id=**}"
|
||||
// }
|
||||
// routing_parameters {
|
||||
// field: "app_profile_id"
|
||||
// path_template: "profiles/{routing_id=*}"
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// result:
|
||||
//
|
||||
// x-goog-request-params:
|
||||
// table_location=instances/instance_bar&routing_id=prof_qux
|
||||
message RoutingRule {
|
||||
// A collection of Routing Parameter specifications.
|
||||
// **NOTE:** If multiple Routing Parameters describe the same key
|
||||
// (via the `path_template` field or via the `field` field when
|
||||
// `path_template` is not provided), "last one wins" rule
|
||||
// determines which Parameter gets used.
|
||||
// See the examples for more details.
|
||||
repeated RoutingParameter routing_parameters = 2;
|
||||
}
|
||||
|
||||
// A projection from an input message to the GRPC or REST header.
|
||||
message RoutingParameter {
|
||||
// A request field to extract the header key-value pair from.
|
||||
string field = 1;
|
||||
|
||||
// A pattern matching the key-value field. Optional.
|
||||
// If not specified, the whole field specified in the `field` field will be
|
||||
// taken as value, and its name used as key. If specified, it MUST contain
|
||||
// exactly one named segment (along with any number of unnamed segments) The
|
||||
// pattern will be matched over the field specified in the `field` field, then
|
||||
// if the match is successful:
|
||||
// - the name of the single named segment will be used as a header name,
|
||||
// - the match value of the segment will be used as a header value;
|
||||
// if the match is NOT successful, nothing will be sent.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// -- This is a field in the request message
|
||||
// | that the header value will be extracted from.
|
||||
// |
|
||||
// | -- This is the key name in the
|
||||
// | | routing header.
|
||||
// V |
|
||||
// field: "table_name" v
|
||||
// path_template: "projects/*/{table_location=instances/*}/tables/*"
|
||||
// ^ ^
|
||||
// | |
|
||||
// In the {} brackets is the pattern that -- |
|
||||
// specifies what to extract from the |
|
||||
// field as a value to be sent. |
|
||||
// |
|
||||
// The string in the field must match the whole pattern --
|
||||
// before brackets, inside brackets, after brackets.
|
||||
//
|
||||
// When looking at this specific example, we can see that:
|
||||
// - A key-value pair with the key `table_location`
|
||||
// and the value matching `instances/*` should be added
|
||||
// to the x-goog-request-params routing header.
|
||||
// - The value is extracted from the request message's `table_name` field
|
||||
// if it matches the full pattern specified:
|
||||
// `projects/*/instances/*/tables/*`.
|
||||
//
|
||||
// **NB:** If the `path_template` field is not provided, the key name is
|
||||
// equal to the field name, and the whole field should be sent as a value.
|
||||
// This makes the pattern for the field and the value functionally equivalent
|
||||
// to `**`, and the configuration
|
||||
//
|
||||
// {
|
||||
// field: "table_name"
|
||||
// }
|
||||
//
|
||||
// is a functionally equivalent shorthand to:
|
||||
//
|
||||
// {
|
||||
// field: "table_name"
|
||||
// path_template: "{table_name=**}"
|
||||
// }
|
||||
//
|
||||
// See Example 1 for more details.
|
||||
string path_template = 2;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/routing.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x18google/api/routing.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"G\n\x0bRoutingRule\x12\x38\n\x12routing_parameters\x18\x02 \x03(\x0b\x32\x1c.google.api.RoutingParameter"8\n\x10RoutingParameter\x12\r\n\x05\x66ield\x18\x01 \x01(\t\x12\x15\n\rpath_template\x18\x02 \x01(\t:K\n\x07routing\x12\x1e.google.protobuf.MethodOptions\x18\xb1\xca\xbc" \x01(\x0b\x32\x17.google.api.RoutingRuleBj\n\x0e\x63om.google.apiB\x0cRoutingProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.routing_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014RoutingProtoP\001ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\242\002\004GAPI"
|
||||
_globals["_ROUTINGRULE"]._serialized_start = 74
|
||||
_globals["_ROUTINGRULE"]._serialized_end = 145
|
||||
_globals["_ROUTINGPARAMETER"]._serialized_start = 147
|
||||
_globals["_ROUTINGPARAMETER"]._serialized_end = 203
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,49 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
ROUTING_FIELD_NUMBER: _ClassVar[int]
|
||||
routing: _descriptor.FieldDescriptor
|
||||
|
||||
class RoutingRule(_message.Message):
|
||||
__slots__ = ("routing_parameters",)
|
||||
ROUTING_PARAMETERS_FIELD_NUMBER: _ClassVar[int]
|
||||
routing_parameters: _containers.RepeatedCompositeFieldContainer[RoutingParameter]
|
||||
def __init__(
|
||||
self,
|
||||
routing_parameters: _Optional[
|
||||
_Iterable[_Union[RoutingParameter, _Mapping]]
|
||||
] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class RoutingParameter(_message.Message):
|
||||
__slots__ = ("field", "path_template")
|
||||
FIELD_FIELD_NUMBER: _ClassVar[int]
|
||||
PATH_TEMPLATE_FIELD_NUMBER: _ClassVar[int]
|
||||
field: str
|
||||
path_template: str
|
||||
def __init__(
|
||||
self, field: _Optional[str] = ..., path_template: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,191 @@
|
||||
// Copyright 2025 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/auth.proto";
|
||||
import "google/api/backend.proto";
|
||||
import "google/api/billing.proto";
|
||||
import "google/api/client.proto";
|
||||
import "google/api/context.proto";
|
||||
import "google/api/control.proto";
|
||||
import "google/api/documentation.proto";
|
||||
import "google/api/endpoint.proto";
|
||||
import "google/api/http.proto";
|
||||
import "google/api/log.proto";
|
||||
import "google/api/logging.proto";
|
||||
import "google/api/metric.proto";
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/api/monitoring.proto";
|
||||
import "google/api/quota.proto";
|
||||
import "google/api/source_info.proto";
|
||||
import "google/api/system_parameter.proto";
|
||||
import "google/api/usage.proto";
|
||||
import "google/protobuf/api.proto";
|
||||
import "google/protobuf/type.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ServiceProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// `Service` is the root object of Google API service configuration (service
|
||||
// config). It describes the basic information about a logical service,
|
||||
// such as the service name and the user-facing title, and delegates other
|
||||
// aspects to sub-sections. Each sub-section is either a proto message or a
|
||||
// repeated proto message that configures a specific aspect, such as auth.
|
||||
// For more information, see each proto message definition.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// type: google.api.Service
|
||||
// name: calendar.googleapis.com
|
||||
// title: Google Calendar API
|
||||
// apis:
|
||||
// - name: google.calendar.v3.Calendar
|
||||
//
|
||||
// visibility:
|
||||
// rules:
|
||||
// - selector: "google.calendar.v3.*"
|
||||
// restriction: PREVIEW
|
||||
// backend:
|
||||
// rules:
|
||||
// - selector: "google.calendar.v3.*"
|
||||
// address: calendar.example.com
|
||||
//
|
||||
// authentication:
|
||||
// providers:
|
||||
// - id: google_calendar_auth
|
||||
// jwks_uri: https://www.googleapis.com/oauth2/v1/certs
|
||||
// issuer: https://securetoken.google.com
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// requirements:
|
||||
// provider_id: google_calendar_auth
|
||||
message Service {
|
||||
// The service name, which is a DNS-like logical identifier for the
|
||||
// service, such as `calendar.googleapis.com`. The service name
|
||||
// typically goes through DNS verification to make sure the owner
|
||||
// of the service also owns the DNS name.
|
||||
string name = 1;
|
||||
|
||||
// The product title for this service, it is the name displayed in Google
|
||||
// Cloud Console.
|
||||
string title = 2;
|
||||
|
||||
// The Google project that owns this service.
|
||||
string producer_project_id = 22;
|
||||
|
||||
// A unique ID for a specific instance of this message, typically assigned
|
||||
// by the client for tracking purpose. Must be no longer than 63 characters
|
||||
// and only lower case letters, digits, '.', '_' and '-' are allowed. If
|
||||
// empty, the server may choose to generate one instead.
|
||||
string id = 33;
|
||||
|
||||
// A list of API interfaces exported by this service. Only the `name` field
|
||||
// of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by
|
||||
// the configuration author, as the remaining fields will be derived from the
|
||||
// IDL during the normalization process. It is an error to specify an API
|
||||
// interface here which cannot be resolved against the associated IDL files.
|
||||
repeated google.protobuf.Api apis = 3;
|
||||
|
||||
// A list of all proto message types included in this API service.
|
||||
// Types referenced directly or indirectly by the `apis` are automatically
|
||||
// included. Messages which are not referenced but shall be included, such as
|
||||
// types used by the `google.protobuf.Any` type, should be listed here by
|
||||
// name by the configuration author. Example:
|
||||
//
|
||||
// types:
|
||||
// - name: google.protobuf.Int32
|
||||
repeated google.protobuf.Type types = 4;
|
||||
|
||||
// A list of all enum types included in this API service. Enums referenced
|
||||
// directly or indirectly by the `apis` are automatically included. Enums
|
||||
// which are not referenced but shall be included should be listed here by
|
||||
// name by the configuration author. Example:
|
||||
//
|
||||
// enums:
|
||||
// - name: google.someapi.v1.SomeEnum
|
||||
repeated google.protobuf.Enum enums = 5;
|
||||
|
||||
// Additional API documentation.
|
||||
Documentation documentation = 6;
|
||||
|
||||
// API backend configuration.
|
||||
Backend backend = 8;
|
||||
|
||||
// HTTP configuration.
|
||||
Http http = 9;
|
||||
|
||||
// Quota configuration.
|
||||
Quota quota = 10;
|
||||
|
||||
// Auth configuration.
|
||||
Authentication authentication = 11;
|
||||
|
||||
// Context configuration.
|
||||
Context context = 12;
|
||||
|
||||
// Configuration controlling usage of this service.
|
||||
Usage usage = 15;
|
||||
|
||||
// Configuration for network endpoints. If this is empty, then an endpoint
|
||||
// with the same name as the service is automatically generated to service all
|
||||
// defined APIs.
|
||||
repeated Endpoint endpoints = 18;
|
||||
|
||||
// Configuration for the service control plane.
|
||||
Control control = 21;
|
||||
|
||||
// Defines the logs used by this service.
|
||||
repeated LogDescriptor logs = 23;
|
||||
|
||||
// Defines the metrics used by this service.
|
||||
repeated MetricDescriptor metrics = 24;
|
||||
|
||||
// Defines the monitored resources used by this service. This is required
|
||||
// by the [Service.monitoring][google.api.Service.monitoring] and
|
||||
// [Service.logging][google.api.Service.logging] configurations.
|
||||
repeated MonitoredResourceDescriptor monitored_resources = 25;
|
||||
|
||||
// Billing configuration.
|
||||
Billing billing = 26;
|
||||
|
||||
// Logging configuration.
|
||||
Logging logging = 27;
|
||||
|
||||
// Monitoring configuration.
|
||||
Monitoring monitoring = 28;
|
||||
|
||||
// System parameter configuration.
|
||||
SystemParameters system_parameters = 29;
|
||||
|
||||
// Output only. The source information for this configuration if available.
|
||||
SourceInfo source_info = 37;
|
||||
|
||||
// Settings for [Google Cloud Client
|
||||
// libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)
|
||||
// generated from APIs defined as protocol buffers.
|
||||
Publishing publishing = 45;
|
||||
|
||||
// Obsolete. Do not use.
|
||||
//
|
||||
// This field has no semantic meaning. The service config compiler always
|
||||
// sets this field to `3`.
|
||||
google.protobuf.UInt32Value config_version = 20;
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/service.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.api import auth_pb2 as google_dot_api_dot_auth__pb2
|
||||
from google.api import backend_pb2 as google_dot_api_dot_backend__pb2
|
||||
from google.api import billing_pb2 as google_dot_api_dot_billing__pb2
|
||||
from google.api import client_pb2 as google_dot_api_dot_client__pb2
|
||||
from google.api import context_pb2 as google_dot_api_dot_context__pb2
|
||||
from google.api import control_pb2 as google_dot_api_dot_control__pb2
|
||||
from google.api import documentation_pb2 as google_dot_api_dot_documentation__pb2
|
||||
from google.api import endpoint_pb2 as google_dot_api_dot_endpoint__pb2
|
||||
from google.api import http_pb2 as google_dot_api_dot_http__pb2
|
||||
from google.api import log_pb2 as google_dot_api_dot_log__pb2
|
||||
from google.api import logging_pb2 as google_dot_api_dot_logging__pb2
|
||||
from google.api import metric_pb2 as google_dot_api_dot_metric__pb2
|
||||
from google.api import (
|
||||
monitored_resource_pb2 as google_dot_api_dot_monitored__resource__pb2,
|
||||
)
|
||||
from google.api import monitoring_pb2 as google_dot_api_dot_monitoring__pb2
|
||||
from google.api import quota_pb2 as google_dot_api_dot_quota__pb2
|
||||
from google.api import source_info_pb2 as google_dot_api_dot_source__info__pb2
|
||||
from google.api import system_parameter_pb2 as google_dot_api_dot_system__parameter__pb2
|
||||
from google.api import usage_pb2 as google_dot_api_dot_usage__pb2
|
||||
from google.protobuf import api_pb2 as google_dot_protobuf_dot_api__pb2
|
||||
from google.protobuf import type_pb2 as google_dot_protobuf_dot_type__pb2
|
||||
from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b"\n\x18google/api/service.proto\x12\ngoogle.api\x1a\x15google/api/auth.proto\x1a\x18google/api/backend.proto\x1a\x18google/api/billing.proto\x1a\x17google/api/client.proto\x1a\x18google/api/context.proto\x1a\x18google/api/control.proto\x1a\x1egoogle/api/documentation.proto\x1a\x19google/api/endpoint.proto\x1a\x15google/api/http.proto\x1a\x14google/api/log.proto\x1a\x18google/api/logging.proto\x1a\x17google/api/metric.proto\x1a#google/api/monitored_resource.proto\x1a\x1bgoogle/api/monitoring.proto\x1a\x16google/api/quota.proto\x1a\x1cgoogle/api/source_info.proto\x1a!google/api/system_parameter.proto\x1a\x16google/api/usage.proto\x1a\x19google/protobuf/api.proto\x1a\x1agoogle/protobuf/type.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x82\x08\n\x07Service\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05title\x18\x02 \x01(\t\x12\x1b\n\x13producer_project_id\x18\x16 \x01(\t\x12\n\n\x02id\x18! \x01(\t\x12\"\n\x04\x61pis\x18\x03 \x03(\x0b\x32\x14.google.protobuf.Api\x12$\n\x05types\x18\x04 \x03(\x0b\x32\x15.google.protobuf.Type\x12$\n\x05\x65nums\x18\x05 \x03(\x0b\x32\x15.google.protobuf.Enum\x12\x30\n\rdocumentation\x18\x06 \x01(\x0b\x32\x19.google.api.Documentation\x12$\n\x07\x62\x61\x63kend\x18\x08 \x01(\x0b\x32\x13.google.api.Backend\x12\x1e\n\x04http\x18\t \x01(\x0b\x32\x10.google.api.Http\x12 \n\x05quota\x18\n \x01(\x0b\x32\x11.google.api.Quota\x12\x32\n\x0e\x61uthentication\x18\x0b \x01(\x0b\x32\x1a.google.api.Authentication\x12$\n\x07\x63ontext\x18\x0c \x01(\x0b\x32\x13.google.api.Context\x12 \n\x05usage\x18\x0f \x01(\x0b\x32\x11.google.api.Usage\x12'\n\tendpoints\x18\x12 \x03(\x0b\x32\x14.google.api.Endpoint\x12$\n\x07\x63ontrol\x18\x15 \x01(\x0b\x32\x13.google.api.Control\x12'\n\x04logs\x18\x17 \x03(\x0b\x32\x19.google.api.LogDescriptor\x12-\n\x07metrics\x18\x18 \x03(\x0b\x32\x1c.google.api.MetricDescriptor\x12\x44\n\x13monitored_resources\x18\x19 \x03(\x0b\x32'.google.api.MonitoredResourceDescriptor\x12$\n\x07\x62illing\x18\x1a \x01(\x0b\x32\x13.google.api.Billing\x12$\n\x07logging\x18\x1b \x01(\x0b\x32\x13.google.api.Logging\x12*\n\nmonitoring\x18\x1c \x01(\x0b\x32\x16.google.api.Monitoring\x12\x37\n\x11system_parameters\x18\x1d \x01(\x0b\x32\x1c.google.api.SystemParameters\x12+\n\x0bsource_info\x18% \x01(\x0b\x32\x16.google.api.SourceInfo\x12*\n\npublishing\x18- \x01(\x0b\x32\x16.google.api.Publishing\x12\x34\n\x0e\x63onfig_version\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueBn\n\x0e\x63om.google.apiB\x0cServiceProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3"
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.service_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\014ServiceProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_SERVICE"]._serialized_start = 614
|
||||
_globals["_SERVICE"]._serialized_end = 1640
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,169 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.api import auth_pb2 as _auth_pb2
|
||||
from google.api import backend_pb2 as _backend_pb2
|
||||
from google.api import billing_pb2 as _billing_pb2
|
||||
from google.api import client_pb2 as _client_pb2
|
||||
from google.api import context_pb2 as _context_pb2
|
||||
from google.api import control_pb2 as _control_pb2
|
||||
from google.api import documentation_pb2 as _documentation_pb2
|
||||
from google.api import endpoint_pb2 as _endpoint_pb2
|
||||
from google.api import http_pb2 as _http_pb2
|
||||
from google.api import log_pb2 as _log_pb2
|
||||
from google.api import logging_pb2 as _logging_pb2
|
||||
from google.api import metric_pb2 as _metric_pb2
|
||||
from google.api import monitored_resource_pb2 as _monitored_resource_pb2
|
||||
from google.api import monitoring_pb2 as _monitoring_pb2
|
||||
from google.api import quota_pb2 as _quota_pb2
|
||||
from google.api import source_info_pb2 as _source_info_pb2
|
||||
from google.api import system_parameter_pb2 as _system_parameter_pb2
|
||||
from google.api import usage_pb2 as _usage_pb2
|
||||
from google.protobuf import api_pb2 as _api_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import type_pb2 as _type_pb2
|
||||
from google.protobuf import wrappers_pb2 as _wrappers_pb2
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Service(_message.Message):
|
||||
__slots__ = (
|
||||
"name",
|
||||
"title",
|
||||
"producer_project_id",
|
||||
"id",
|
||||
"apis",
|
||||
"types",
|
||||
"enums",
|
||||
"documentation",
|
||||
"backend",
|
||||
"http",
|
||||
"quota",
|
||||
"authentication",
|
||||
"context",
|
||||
"usage",
|
||||
"endpoints",
|
||||
"control",
|
||||
"logs",
|
||||
"metrics",
|
||||
"monitored_resources",
|
||||
"billing",
|
||||
"logging",
|
||||
"monitoring",
|
||||
"system_parameters",
|
||||
"source_info",
|
||||
"publishing",
|
||||
"config_version",
|
||||
)
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
TITLE_FIELD_NUMBER: _ClassVar[int]
|
||||
PRODUCER_PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
|
||||
ID_FIELD_NUMBER: _ClassVar[int]
|
||||
APIS_FIELD_NUMBER: _ClassVar[int]
|
||||
TYPES_FIELD_NUMBER: _ClassVar[int]
|
||||
ENUMS_FIELD_NUMBER: _ClassVar[int]
|
||||
DOCUMENTATION_FIELD_NUMBER: _ClassVar[int]
|
||||
BACKEND_FIELD_NUMBER: _ClassVar[int]
|
||||
HTTP_FIELD_NUMBER: _ClassVar[int]
|
||||
QUOTA_FIELD_NUMBER: _ClassVar[int]
|
||||
AUTHENTICATION_FIELD_NUMBER: _ClassVar[int]
|
||||
CONTEXT_FIELD_NUMBER: _ClassVar[int]
|
||||
USAGE_FIELD_NUMBER: _ClassVar[int]
|
||||
ENDPOINTS_FIELD_NUMBER: _ClassVar[int]
|
||||
CONTROL_FIELD_NUMBER: _ClassVar[int]
|
||||
LOGS_FIELD_NUMBER: _ClassVar[int]
|
||||
METRICS_FIELD_NUMBER: _ClassVar[int]
|
||||
MONITORED_RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
||||
BILLING_FIELD_NUMBER: _ClassVar[int]
|
||||
LOGGING_FIELD_NUMBER: _ClassVar[int]
|
||||
MONITORING_FIELD_NUMBER: _ClassVar[int]
|
||||
SYSTEM_PARAMETERS_FIELD_NUMBER: _ClassVar[int]
|
||||
SOURCE_INFO_FIELD_NUMBER: _ClassVar[int]
|
||||
PUBLISHING_FIELD_NUMBER: _ClassVar[int]
|
||||
CONFIG_VERSION_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
title: str
|
||||
producer_project_id: str
|
||||
id: str
|
||||
apis: _containers.RepeatedCompositeFieldContainer[_api_pb2.Api]
|
||||
types: _containers.RepeatedCompositeFieldContainer[_type_pb2.Type]
|
||||
enums: _containers.RepeatedCompositeFieldContainer[_type_pb2.Enum]
|
||||
documentation: _documentation_pb2.Documentation
|
||||
backend: _backend_pb2.Backend
|
||||
http: _http_pb2.Http
|
||||
quota: _quota_pb2.Quota
|
||||
authentication: _auth_pb2.Authentication
|
||||
context: _context_pb2.Context
|
||||
usage: _usage_pb2.Usage
|
||||
endpoints: _containers.RepeatedCompositeFieldContainer[_endpoint_pb2.Endpoint]
|
||||
control: _control_pb2.Control
|
||||
logs: _containers.RepeatedCompositeFieldContainer[_log_pb2.LogDescriptor]
|
||||
metrics: _containers.RepeatedCompositeFieldContainer[_metric_pb2.MetricDescriptor]
|
||||
monitored_resources: _containers.RepeatedCompositeFieldContainer[
|
||||
_monitored_resource_pb2.MonitoredResourceDescriptor
|
||||
]
|
||||
billing: _billing_pb2.Billing
|
||||
logging: _logging_pb2.Logging
|
||||
monitoring: _monitoring_pb2.Monitoring
|
||||
system_parameters: _system_parameter_pb2.SystemParameters
|
||||
source_info: _source_info_pb2.SourceInfo
|
||||
publishing: _client_pb2.Publishing
|
||||
config_version: _wrappers_pb2.UInt32Value
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
title: _Optional[str] = ...,
|
||||
producer_project_id: _Optional[str] = ...,
|
||||
id: _Optional[str] = ...,
|
||||
apis: _Optional[_Iterable[_Union[_api_pb2.Api, _Mapping]]] = ...,
|
||||
types: _Optional[_Iterable[_Union[_type_pb2.Type, _Mapping]]] = ...,
|
||||
enums: _Optional[_Iterable[_Union[_type_pb2.Enum, _Mapping]]] = ...,
|
||||
documentation: _Optional[
|
||||
_Union[_documentation_pb2.Documentation, _Mapping]
|
||||
] = ...,
|
||||
backend: _Optional[_Union[_backend_pb2.Backend, _Mapping]] = ...,
|
||||
http: _Optional[_Union[_http_pb2.Http, _Mapping]] = ...,
|
||||
quota: _Optional[_Union[_quota_pb2.Quota, _Mapping]] = ...,
|
||||
authentication: _Optional[_Union[_auth_pb2.Authentication, _Mapping]] = ...,
|
||||
context: _Optional[_Union[_context_pb2.Context, _Mapping]] = ...,
|
||||
usage: _Optional[_Union[_usage_pb2.Usage, _Mapping]] = ...,
|
||||
endpoints: _Optional[_Iterable[_Union[_endpoint_pb2.Endpoint, _Mapping]]] = ...,
|
||||
control: _Optional[_Union[_control_pb2.Control, _Mapping]] = ...,
|
||||
logs: _Optional[_Iterable[_Union[_log_pb2.LogDescriptor, _Mapping]]] = ...,
|
||||
metrics: _Optional[
|
||||
_Iterable[_Union[_metric_pb2.MetricDescriptor, _Mapping]]
|
||||
] = ...,
|
||||
monitored_resources: _Optional[
|
||||
_Iterable[
|
||||
_Union[_monitored_resource_pb2.MonitoredResourceDescriptor, _Mapping]
|
||||
]
|
||||
] = ...,
|
||||
billing: _Optional[_Union[_billing_pb2.Billing, _Mapping]] = ...,
|
||||
logging: _Optional[_Union[_logging_pb2.Logging, _Mapping]] = ...,
|
||||
monitoring: _Optional[_Union[_monitoring_pb2.Monitoring, _Mapping]] = ...,
|
||||
system_parameters: _Optional[
|
||||
_Union[_system_parameter_pb2.SystemParameters, _Mapping]
|
||||
] = ...,
|
||||
source_info: _Optional[_Union[_source_info_pb2.SourceInfo, _Mapping]] = ...,
|
||||
publishing: _Optional[_Union[_client_pb2.Publishing, _Mapping]] = ...,
|
||||
config_version: _Optional[_Union[_wrappers_pb2.UInt32Value, _Mapping]] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright 2025 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/protobuf/any.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "SourceInfoProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Source information used to create a Service Config
|
||||
message SourceInfo {
|
||||
// All files used during config generation.
|
||||
repeated google.protobuf.Any source_files = 1;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/source_info.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1cgoogle/api/source_info.proto\x12\ngoogle.api\x1a\x19google/protobuf/any.proto"8\n\nSourceInfo\x12*\n\x0csource_files\x18\x01 \x03(\x0b\x32\x14.google.protobuf.AnyBq\n\x0e\x63om.google.apiB\x0fSourceInfoProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.source_info_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\017SourceInfoProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_SOURCEINFO"]._serialized_start = 71
|
||||
_globals["_SOURCEINFO"]._serialized_end = 127
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,34 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import any_pb2 as _any_pb2
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class SourceInfo(_message.Message):
|
||||
__slots__ = ("source_files",)
|
||||
SOURCE_FILES_FIELD_NUMBER: _ClassVar[int]
|
||||
source_files: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
|
||||
def __init__(
|
||||
self, source_files: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,96 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "SystemParameterProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// ### System parameter configuration
|
||||
//
|
||||
// A system parameter is a special kind of parameter defined by the API
|
||||
// system, not by an individual API. It is typically mapped to an HTTP header
|
||||
// and/or a URL query parameter. This configuration specifies which methods
|
||||
// change the names of the system parameters.
|
||||
message SystemParameters {
|
||||
// Define system parameters.
|
||||
//
|
||||
// The parameters defined here will override the default parameters
|
||||
// implemented by the system. If this field is missing from the service
|
||||
// config, default system parameters will be used. Default system parameters
|
||||
// and names is implementation-dependent.
|
||||
//
|
||||
// Example: define api key for all methods
|
||||
//
|
||||
// system_parameters
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// parameters:
|
||||
// - name: api_key
|
||||
// url_query_parameter: api_key
|
||||
//
|
||||
//
|
||||
// Example: define 2 api key names for a specific method.
|
||||
//
|
||||
// system_parameters
|
||||
// rules:
|
||||
// - selector: "/ListShelves"
|
||||
// parameters:
|
||||
// - name: api_key
|
||||
// http_header: Api-Key1
|
||||
// - name: api_key
|
||||
// http_header: Api-Key2
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated SystemParameterRule rules = 1;
|
||||
}
|
||||
|
||||
// Define a system parameter rule mapping system parameter definitions to
|
||||
// methods.
|
||||
message SystemParameterRule {
|
||||
// Selects the methods to which this rule applies. Use '*' to indicate all
|
||||
// methods in all APIs.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// Define parameters. Multiple names may be defined for a parameter.
|
||||
// For a given method call, only one of them should be used. If multiple
|
||||
// names are used the behavior is implementation-dependent.
|
||||
// If none of the specified names are present the behavior is
|
||||
// parameter-dependent.
|
||||
repeated SystemParameter parameters = 2;
|
||||
}
|
||||
|
||||
// Define a parameter's name and location. The parameter may be passed as either
|
||||
// an HTTP header or a URL query parameter, and if both are passed the behavior
|
||||
// is implementation-dependent.
|
||||
message SystemParameter {
|
||||
// Define the name of the parameter, such as "api_key" . It is case sensitive.
|
||||
string name = 1;
|
||||
|
||||
// Define the HTTP header name to use for the parameter. It is case
|
||||
// insensitive.
|
||||
string http_header = 2;
|
||||
|
||||
// Define the URL query parameter name to use for the parameter. It is case
|
||||
// sensitive.
|
||||
string url_query_parameter = 3;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/system_parameter.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n!google/api/system_parameter.proto\x12\ngoogle.api"B\n\x10SystemParameters\x12.\n\x05rules\x18\x01 \x03(\x0b\x32\x1f.google.api.SystemParameterRule"X\n\x13SystemParameterRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12/\n\nparameters\x18\x02 \x03(\x0b\x32\x1b.google.api.SystemParameter"Q\n\x0fSystemParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bhttp_header\x18\x02 \x01(\t\x12\x1b\n\x13url_query_parameter\x18\x03 \x01(\tBv\n\x0e\x63om.google.apiB\x14SystemParameterProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.system_parameter_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\024SystemParameterProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_SYSTEMPARAMETERS"]._serialized_start = 49
|
||||
_globals["_SYSTEMPARAMETERS"]._serialized_end = 115
|
||||
_globals["_SYSTEMPARAMETERRULE"]._serialized_start = 117
|
||||
_globals["_SYSTEMPARAMETERRULE"]._serialized_end = 205
|
||||
_globals["_SYSTEMPARAMETER"]._serialized_start = 207
|
||||
_globals["_SYSTEMPARAMETER"]._serialized_end = 288
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,60 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class SystemParameters(_message.Message):
|
||||
__slots__ = ("rules",)
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[SystemParameterRule]
|
||||
def __init__(
|
||||
self, rules: _Optional[_Iterable[_Union[SystemParameterRule, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class SystemParameterRule(_message.Message):
|
||||
__slots__ = ("selector", "parameters")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
PARAMETERS_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
parameters: _containers.RepeatedCompositeFieldContainer[SystemParameter]
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
parameters: _Optional[_Iterable[_Union[SystemParameter, _Mapping]]] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class SystemParameter(_message.Message):
|
||||
__slots__ = ("name", "http_header", "url_query_parameter")
|
||||
NAME_FIELD_NUMBER: _ClassVar[int]
|
||||
HTTP_HEADER_FIELD_NUMBER: _ClassVar[int]
|
||||
URL_QUERY_PARAMETER_FIELD_NUMBER: _ClassVar[int]
|
||||
name: str
|
||||
http_header: str
|
||||
url_query_parameter: str
|
||||
def __init__(
|
||||
self,
|
||||
name: _Optional[str] = ...,
|
||||
http_header: _Optional[str] = ...,
|
||||
url_query_parameter: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,96 @@
|
||||
// Copyright 2025 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;
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "UsageProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Configuration controlling usage of a service.
|
||||
message Usage {
|
||||
// Requirements that must be satisfied before a consumer project can use the
|
||||
// service. Each requirement is of the form <service.name>/<requirement-id>;
|
||||
// for example 'serviceusage.googleapis.com/billing-enabled'.
|
||||
//
|
||||
// For Google APIs, a Terms of Service requirement must be included here.
|
||||
// Google Cloud APIs must include "serviceusage.googleapis.com/tos/cloud".
|
||||
// Other Google APIs should include
|
||||
// "serviceusage.googleapis.com/tos/universal". Additional ToS can be
|
||||
// included based on the business needs.
|
||||
repeated string requirements = 1;
|
||||
|
||||
// A list of usage rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated UsageRule rules = 6;
|
||||
|
||||
// The full resource name of a channel used for sending notifications to the
|
||||
// service producer.
|
||||
//
|
||||
// Google Service Management currently only supports
|
||||
// [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
|
||||
// channel. To use Google Cloud Pub/Sub as the channel, this must be the name
|
||||
// of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
|
||||
// documented in https://cloud.google.com/pubsub/docs/overview.
|
||||
string producer_notification_channel = 7;
|
||||
}
|
||||
|
||||
// Usage configuration rules for the service.
|
||||
//
|
||||
// NOTE: Under development.
|
||||
//
|
||||
//
|
||||
// Use this rule to configure unregistered calls for the service. Unregistered
|
||||
// calls are calls that do not contain consumer project identity.
|
||||
// (Example: calls that do not contain an API key).
|
||||
// By default, API methods do not allow unregistered calls, and each method call
|
||||
// must be identified by a consumer project identity. Use this rule to
|
||||
// allow/disallow unregistered calls.
|
||||
//
|
||||
// Example of an API that wants to allow unregistered calls for entire service.
|
||||
//
|
||||
// usage:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// allow_unregistered_calls: true
|
||||
//
|
||||
// Example of a method that wants to allow unregistered calls.
|
||||
//
|
||||
// usage:
|
||||
// rules:
|
||||
// - selector: "google.example.library.v1.LibraryService.CreateBook"
|
||||
// allow_unregistered_calls: true
|
||||
message UsageRule {
|
||||
// Selects the methods to which this rule applies. Use '*' to indicate all
|
||||
// methods in all APIs.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// If true, the selected method allows unregistered calls, e.g. calls
|
||||
// that don't identify any user or application.
|
||||
bool allow_unregistered_calls = 2;
|
||||
|
||||
// If true, the selected method should skip service control and the control
|
||||
// plane features, such as quota and billing, will not be available.
|
||||
// This flag is used by Google Cloud Endpoints to bypass checks for internal
|
||||
// methods, such as service health check methods.
|
||||
bool skip_service_control = 3;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/usage.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x16google/api/usage.proto\x12\ngoogle.api"j\n\x05Usage\x12\x14\n\x0crequirements\x18\x01 \x03(\t\x12$\n\x05rules\x18\x06 \x03(\x0b\x32\x15.google.api.UsageRule\x12%\n\x1dproducer_notification_channel\x18\x07 \x01(\t"]\n\tUsageRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12 \n\x18\x61llow_unregistered_calls\x18\x02 \x01(\x08\x12\x1c\n\x14skip_service_control\x18\x03 \x01(\x08\x42l\n\x0e\x63om.google.apiB\nUsageProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "google.api.usage_pb2", _globals)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\nUsageProtoP\001ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\242\002\004GAPI"
|
||||
_globals["_USAGE"]._serialized_start = 38
|
||||
_globals["_USAGE"]._serialized_end = 144
|
||||
_globals["_USAGERULE"]._serialized_start = 146
|
||||
_globals["_USAGERULE"]._serialized_end = 239
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,55 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
|
||||
class Usage(_message.Message):
|
||||
__slots__ = ("requirements", "rules", "producer_notification_channel")
|
||||
REQUIREMENTS_FIELD_NUMBER: _ClassVar[int]
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
PRODUCER_NOTIFICATION_CHANNEL_FIELD_NUMBER: _ClassVar[int]
|
||||
requirements: _containers.RepeatedScalarFieldContainer[str]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[UsageRule]
|
||||
producer_notification_channel: str
|
||||
def __init__(
|
||||
self,
|
||||
requirements: _Optional[_Iterable[str]] = ...,
|
||||
rules: _Optional[_Iterable[_Union[UsageRule, _Mapping]]] = ...,
|
||||
producer_notification_channel: _Optional[str] = ...,
|
||||
) -> None: ...
|
||||
|
||||
class UsageRule(_message.Message):
|
||||
__slots__ = ("selector", "allow_unregistered_calls", "skip_service_control")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
ALLOW_UNREGISTERED_CALLS_FIELD_NUMBER: _ClassVar[int]
|
||||
SKIP_SERVICE_CONTROL_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
allow_unregistered_calls: bool
|
||||
skip_service_control: bool
|
||||
def __init__(
|
||||
self,
|
||||
selector: _Optional[str] = ...,
|
||||
allow_unregistered_calls: bool = ...,
|
||||
skip_service_control: bool = ...,
|
||||
) -> None: ...
|
||||
@@ -0,0 +1,112 @@
|
||||
// Copyright 2025 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/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/visibility;visibility";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "VisibilityProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.EnumOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule enum_visibility = 72295727;
|
||||
}
|
||||
|
||||
extend google.protobuf.EnumValueOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule value_visibility = 72295727;
|
||||
}
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule field_visibility = 72295727;
|
||||
}
|
||||
|
||||
extend google.protobuf.MessageOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule message_visibility = 72295727;
|
||||
}
|
||||
|
||||
extend google.protobuf.MethodOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule method_visibility = 72295727;
|
||||
}
|
||||
|
||||
extend google.protobuf.ServiceOptions {
|
||||
// See `VisibilityRule`.
|
||||
google.api.VisibilityRule api_visibility = 72295727;
|
||||
}
|
||||
|
||||
// `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.
|
||||
message Visibility {
|
||||
// A list of visibility rules that apply to individual API elements.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated VisibilityRule rules = 1;
|
||||
}
|
||||
|
||||
// A visibility rule provides visibility configuration for an individual API
|
||||
// element.
|
||||
message VisibilityRule {
|
||||
// Selects methods, messages, fields, enums, etc. to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||||
// details.
|
||||
string selector = 1;
|
||||
|
||||
// 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.
|
||||
string restriction = 2;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# source: google/api/visibility.proto
|
||||
# Protobuf Python Version: 4.25.3
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
||||
b'\n\x1bgoogle/api/visibility.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto"7\n\nVisibility\x12)\n\x05rules\x18\x01 \x03(\x0b\x32\x1a.google.api.VisibilityRule"7\n\x0eVisibilityRule\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x13\n\x0brestriction\x18\x02 \x01(\t:T\n\x0f\x65num_visibility\x12\x1c.google.protobuf.EnumOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRule:Z\n\x10value_visibility\x12!.google.protobuf.EnumValueOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRule:V\n\x10\x66ield_visibility\x12\x1d.google.protobuf.FieldOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRule:Z\n\x12message_visibility\x12\x1f.google.protobuf.MessageOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRule:X\n\x11method_visibility\x12\x1e.google.protobuf.MethodOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRule:V\n\x0e\x61pi_visibility\x12\x1f.google.protobuf.ServiceOptions\x18\xaf\xca\xbc" \x01(\x0b\x32\x1a.google.api.VisibilityRuleBk\n\x0e\x63om.google.apiB\x0fVisibilityProtoP\x01Z?google.golang.org/genproto/googleapis/api/visibility;visibility\xa2\x02\x04GAPIb\x06proto3'
|
||||
)
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(
|
||||
DESCRIPTOR, "google.api.visibility_pb2", _globals
|
||||
)
|
||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||
_globals["DESCRIPTOR"]._options = None
|
||||
_globals[
|
||||
"DESCRIPTOR"
|
||||
]._serialized_options = b"\n\016com.google.apiB\017VisibilityProtoP\001Z?google.golang.org/genproto/googleapis/api/visibility;visibility\242\002\004GAPI"
|
||||
_globals["_VISIBILITY"]._serialized_start = 77
|
||||
_globals["_VISIBILITY"]._serialized_end = 132
|
||||
_globals["_VISIBILITYRULE"]._serialized_start = 134
|
||||
_globals["_VISIBILITYRULE"]._serialized_end = 189
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@@ -0,0 +1,56 @@
|
||||
# Copyright 2025 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.
|
||||
|
||||
from typing import ClassVar as _ClassVar
|
||||
from typing import Iterable as _Iterable
|
||||
from typing import Mapping as _Mapping
|
||||
from typing import Optional as _Optional
|
||||
from typing import Union as _Union
|
||||
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf.internal import containers as _containers
|
||||
|
||||
DESCRIPTOR: _descriptor.FileDescriptor
|
||||
ENUM_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
enum_visibility: _descriptor.FieldDescriptor
|
||||
VALUE_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
value_visibility: _descriptor.FieldDescriptor
|
||||
FIELD_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
field_visibility: _descriptor.FieldDescriptor
|
||||
MESSAGE_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
message_visibility: _descriptor.FieldDescriptor
|
||||
METHOD_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
method_visibility: _descriptor.FieldDescriptor
|
||||
API_VISIBILITY_FIELD_NUMBER: _ClassVar[int]
|
||||
api_visibility: _descriptor.FieldDescriptor
|
||||
|
||||
class Visibility(_message.Message):
|
||||
__slots__ = ("rules",)
|
||||
RULES_FIELD_NUMBER: _ClassVar[int]
|
||||
rules: _containers.RepeatedCompositeFieldContainer[VisibilityRule]
|
||||
def __init__(
|
||||
self, rules: _Optional[_Iterable[_Union[VisibilityRule, _Mapping]]] = ...
|
||||
) -> None: ...
|
||||
|
||||
class VisibilityRule(_message.Message):
|
||||
__slots__ = ("selector", "restriction")
|
||||
SELECTOR_FIELD_NUMBER: _ClassVar[int]
|
||||
RESTRICTION_FIELD_NUMBER: _ClassVar[int]
|
||||
selector: str
|
||||
restriction: str
|
||||
def __init__(
|
||||
self, selector: _Optional[str] = ..., restriction: _Optional[str] = ...
|
||||
) -> None: ...
|
||||
Reference in New Issue
Block a user