| <html><body> | |
| <style> | |
| body, h1, h2, h3, div, span, p, pre, a { | |
| margin: 0; | |
| padding: 0; | |
| border: 0; | |
| font-weight: inherit; | |
| font-style: inherit; | |
| font-size: 100%; | |
| font-family: inherit; | |
| vertical-align: baseline; | |
| } | |
| body { | |
| font-size: 13px; | |
| padding: 1em; | |
| } | |
| h1 { | |
| font-size: 26px; | |
| margin-bottom: 1em; | |
| } | |
| h2 { | |
| font-size: 24px; | |
| margin-bottom: 1em; | |
| } | |
| h3 { | |
| font-size: 20px; | |
| margin-bottom: 1em; | |
| margin-top: 1em; | |
| } | |
| pre, code { | |
| line-height: 1.5; | |
| font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; | |
| } | |
| pre { | |
| margin-top: 0.5em; | |
| } | |
| h1, h2, h3, p { | |
| font-family: Arial, sans serif; | |
| } | |
| h1, h2, h3 { | |
| border-bottom: solid #CCC 1px; | |
| } | |
| .toc_element { | |
| margin-top: 0.5em; | |
| } | |
| .firstline { | |
| margin-left: 2 em; | |
| } | |
| .method { | |
| margin-top: 1em; | |
| border: solid 1px #CCC; | |
| padding: 1em; | |
| background: #EEE; | |
| } | |
| .details { | |
| font-weight: bold; | |
| font-size: 14px; | |
| } | |
| </style> | |
| <h1><a href="servicemanagement_v1.html">Service Management API</a> . <a href="servicemanagement_v1.services.html">services</a> . <a href="servicemanagement_v1.services.configs.html">configs</a></h1> | |
| <h2>Instance Methods</h2> | |
| <p class="toc_element"> | |
| <code><a href="#create">create(serviceName, body, x__xgafv=None)</a></code></p> | |
| <p class="firstline">Creates a new service configuration (version) for a managed service.</p> | |
| <p class="toc_element"> | |
| <code><a href="#get">get(serviceName, configId, x__xgafv=None, view=None)</a></code></p> | |
| <p class="firstline">Gets a service configuration (version) for a managed service.</p> | |
| <p class="toc_element"> | |
| <code><a href="#list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p> | |
| <p class="firstline">Lists the history of the service configuration for a managed service,</p> | |
| <p class="toc_element"> | |
| <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p> | |
| <p class="firstline">Retrieves the next page of results.</p> | |
| <p class="toc_element"> | |
| <code><a href="#submit">submit(serviceName, body, x__xgafv=None)</a></code></p> | |
| <p class="firstline">Creates a new service configuration (version) for a managed service based</p> | |
| <h3>Method Details</h3> | |
| <div class="method"> | |
| <code class="details" id="create">create(serviceName, body, x__xgafv=None)</code> | |
| <pre>Creates a new service configuration (version) for a managed service. | |
| This method only stores the service configuration. To roll out the service | |
| configuration to backend systems please call | |
| CreateServiceRollout. | |
| Only the 100 most recent service configurations and ones referenced by | |
| existing rollouts are kept for each service. The rest will be deleted | |
| eventually. | |
| Args: | |
| serviceName: string, The name of the service. See the [overview](/service-management/overview) | |
| for naming requirements. For example: `example.googleapis.com`. (required) | |
| body: object, The request body. (required) | |
| The object takes the form of: | |
| { # `Service` is the root object of Google service configuration schema. It | |
| # describes basic information about a service, such as the name and the | |
| # 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. See each proto message definition for details. | |
| # | |
| # Example: | |
| # | |
| # type: google.api.Service | |
| # config_version: 3 | |
| # name: calendar.googleapis.com | |
| # title: Google Calendar API | |
| # apis: | |
| # - name: google.calendar.v3.Calendar | |
| # 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 | |
| "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane. | |
| # service controller handles features like abuse, quota, billing, logging, | |
| # monitoring, etc. | |
| "environment": "A String", # The service control environment to use. If empty, no control plane | |
| # feature (like quota and billing) will be enabled. | |
| }, | |
| "monitoredResources": [ # Defines the monitored resources used by this service. This is required | |
| # by the Service.monitoring and Service.logging configurations. | |
| { # An object that describes the schema of a 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. | |
| # | |
| # Next ID: 10 | |
| "displayName": "A String", # 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"`. | |
| "name": "A String", # 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}"`. | |
| "labels": [ # 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"`. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the monitored resource definition. | |
| "type": "A String", # Required. The monitored resource type. For example, the type | |
| # `"cloudsql_database"` represents databases in Google Cloud SQL. | |
| # The maximum length of this value is 256 characters. | |
| "description": "A String", # Optional. A detailed description of the monitored resource type that might | |
| # be used in documentation. | |
| }, | |
| ], | |
| "logs": [ # Defines the logs used by this service. | |
| { # 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 | |
| "labels": [ # The set of labels that are available to describe a specific log entry. | |
| # Runtime requests that contain labels not specified here are | |
| # considered invalid. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "displayName": "A String", # The human-readable name for this log. This information appears on | |
| # the user interface and should be concise. | |
| "name": "A String", # 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 [/_-.]. | |
| "description": "A String", # A human-readable description of this log. This information appears in | |
| # the documentation and can contain details. | |
| }, | |
| ], | |
| "systemParameters": { # ### System parameter configuration # 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. | |
| "rules": [ # 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. | |
| { # Define a system parameter rule mapping system parameter definitions to | |
| # methods. | |
| "parameters": [ # 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. | |
| { # 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. | |
| "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case | |
| # sensitive. | |
| "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case | |
| # insensitive. | |
| "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive. | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| }, | |
| "id": "A String", # A unique ID for a specific instance of this message, typically assigned | |
| # by the client for tracking purpose. If empty, the server may choose to | |
| # generate one instead. Must be no longer than 60 characters. | |
| "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration. | |
| "rules": [ # A list of API backend rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A backend rule provides configuration for an individual API element. | |
| "jwtAudience": "A String", # The JWT audience is used when generating a JWT id token for the backend. | |
| "pathTranslation": "A String", | |
| "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline | |
| # value lower than this will be rejected. | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running | |
| # operation. The default is no deadline. | |
| "deadline": 3.14, # The number of seconds to wait for a response from a request. The default | |
| # deadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds. | |
| "address": "A String", # The address of the API backend. | |
| }, | |
| ], | |
| }, | |
| "monitoring": { # Monitoring configuration of the service. # Monitoring configuration. | |
| # | |
| # 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/overdue_count` metric is only sent to the | |
| # consumer 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/returned_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # - name: library.googleapis.com/book/overdue_count | |
| # metric_kind: GAUGE | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # 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/overdue_count | |
| "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project. | |
| # There can be multiple producer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project. | |
| # There can be multiple consumer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "billing": { # Billing related configuration of the service. # Billing configuration. | |
| # | |
| # The following example shows how to configure monitored resources and metrics | |
| # for billing: | |
| # | |
| # 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/borrowed_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # billing: | |
| # consumer_destinations: | |
| # - monitored_resource: library.googleapis.com/branch | |
| # metrics: | |
| # - library.googleapis.com/book/borrowed_count | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific billing destination (Currently only support | |
| # bill against consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Names of the metrics to report to this billing destination. | |
| # Each name must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "title": "A String", # The product title for this service. | |
| "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. | |
| # | |
| # Example for an API targeted for external use: | |
| # | |
| # 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 | |
| "rules": [ # A list of authentication rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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. | |
| "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials. | |
| # 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. | |
| "canonicalScopes": "A String", # 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 | |
| }, | |
| "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential. | |
| "requirements": [ # Requirements for additional authentication providers. | |
| { # User-defined authentication requirements, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "providerId": "A String", # id from authentication provider. | |
| # | |
| # Example: | |
| # | |
| # provider_id: bookstore_auth | |
| "audiences": "A String", # 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/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 | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "providers": [ # Defines a set of authentication providers that a service supports. | |
| { # Configuration for an authentication provider, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "jwksUri": "A String", # 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 | |
| "audiences": "A String", # 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/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 | |
| "id": "A String", # The unique identifier of the auth provider. It will be referred to by | |
| # `AuthRequirement.provider_id`. | |
| # | |
| # Example: "bookstore_auth". | |
| "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired. | |
| # Implement authorizationUrl of securityDefinitions in OpenAPI spec. | |
| "issuer": "A String", # 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 | |
| }, | |
| ], | |
| }, | |
| "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service. | |
| "rules": [ # A list of usage rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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 | |
| "skipServiceControl": True or False, # 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. | |
| "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls | |
| # that don't identify any user or application. | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "producerNotificationChannel": "A String", # 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. | |
| "requirements": [ # 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'. | |
| "A String", | |
| ], | |
| }, | |
| "configVersion": 42, # The semantic version of the service configuration. The config version | |
| # affects the interpretation of the service configuration. For example, | |
| # certain features are enabled by default for certain config versions. | |
| # The latest config version is `3`. | |
| "producerProjectId": "A String", # The Google project that owns this service. | |
| "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration. | |
| # HttpRule, each specifying the mapping of an RPC method | |
| # to one or more HTTP REST API methods. | |
| "rules": [ # A list of HTTP configuration rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # # 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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | | |
| # `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` | |
| # `GET /v1/users/me/messages/123456` | `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. 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 is "*", there is no URL query parameter, all fields | |
| # are passed via URL path and HTTP request body. | |
| # 3. If 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. | |
| # | |
| # Example: | |
| # | |
| # http: | |
| # rules: | |
| # # Selects a gRPC method and applies HttpRule to it. | |
| # - 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. | |
| "body": "A String", # The name of the request field whose value is mapped to the HTTP request | |
| # body, or `*` for mapping all request fields not captured by the path | |
| # pattern to the HTTP body, or omitted for not having any HTTP request body. | |
| # | |
| # NOTE: the referred field must be present at the top-level of the request | |
| # message type. | |
| "additionalBindings": [ # 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). | |
| # Object with schema name: HttpRule | |
| ], | |
| "get": "A String", # Maps to HTTP GET. Used for listing and getting information about | |
| # resources. | |
| "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource. | |
| "custom": { # A custom pattern is used for defining custom HTTP verb. # 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. | |
| "path": "A String", # The path matched by this custom verb. | |
| "kind": "A String", # The name of this custom HTTP verb. | |
| }, | |
| "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP | |
| # response body. When omitted, the entire response message will be used | |
| # as the HTTP response body. | |
| # | |
| # NOTE: The referred field must be present at the top-level of the response | |
| # message type. | |
| "put": "A String", # Maps to HTTP PUT. Used for replacing a resource. | |
| "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action. | |
| "selector": "A String", # Selects a method to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource. | |
| }, | |
| ], | |
| "fullyDecodeReservedExpansion": True or False, # 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. | |
| }, | |
| "apis": [ # A list of API interfaces exported by this service. Only the `name` field | |
| # of the 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. | |
| { # Api is a light-weight descriptor for an API Interface. | |
| # | |
| # Interfaces are also described as "protocol buffer services" in some contexts, | |
| # such as by the "service" keyword in a .proto file, but they are different | |
| # from API Services, which represent a concrete implementation of an interface | |
| # as opposed to simply a description of methods and bindings. They are also | |
| # sometimes simply referred to as "APIs" in other contexts, such as the name of | |
| # this message itself. See https://cloud.google.com/apis/design/glossary for | |
| # detailed terminology. | |
| "methods": [ # The methods of this interface, in unspecified order. | |
| { # Method represents a method of an API interface. | |
| "name": "A String", # The simple name of this method. | |
| "requestStreaming": True or False, # If true, the request is streamed. | |
| "responseTypeUrl": "A String", # The URL of the output message type. | |
| "requestTypeUrl": "A String", # A URL of the input message type. | |
| "responseStreaming": True or False, # If true, the response is streamed. | |
| "syntax": "A String", # The source syntax of this method. | |
| "options": [ # Any metadata attached to the method. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this | |
| # message. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "mixins": [ # Included interfaces. See Mixin. | |
| { # Declares an API Interface to be included in this interface. The including | |
| # interface must redeclare all the methods from the included interface, but | |
| # documentation and options are inherited as follows: | |
| # | |
| # - If after comment and whitespace stripping, the documentation | |
| # string of the redeclared method is empty, it will be inherited | |
| # from the original method. | |
| # | |
| # - Each annotation belonging to the service config (http, | |
| # visibility) which is not set in the redeclared method will be | |
| # inherited. | |
| # | |
| # - If an http annotation is inherited, the path pattern will be | |
| # modified as follows. Any version prefix will be replaced by the | |
| # version of the including interface plus the root path if | |
| # specified. | |
| # | |
| # Example of a simple mixin: | |
| # | |
| # package google.acl.v1; | |
| # service AccessControl { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v1/{resource=**}:getAcl"; | |
| # } | |
| # } | |
| # | |
| # package google.storage.v2; | |
| # service Storage { | |
| # // rpc GetAcl(GetAclRequest) returns (Acl); | |
| # | |
| # // Get a data record. | |
| # rpc GetData(GetDataRequest) returns (Data) { | |
| # option (google.api.http).get = "/v2/{resource=**}"; | |
| # } | |
| # } | |
| # | |
| # Example of a mixin configuration: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # | |
| # The mixin construct implies that all methods in `AccessControl` are | |
| # also declared with same name and request/response types in | |
| # `Storage`. A documentation generator or annotation processor will | |
| # see the effective `Storage.GetAcl` method after inherting | |
| # documentation and annotations as follows: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| # | |
| # Note how the version in the path pattern changed from `v1` to `v2`. | |
| # | |
| # If the `root` field in the mixin is specified, it should be a | |
| # relative path under which inherited HTTP paths are placed. Example: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # root: acls | |
| # | |
| # This implies the following inherited HTTP annotation: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| "root": "A String", # If non-empty specifies a path under which inherited HTTP paths | |
| # are rooted. | |
| "name": "A String", # The fully qualified name of the interface which is included. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax of the service. | |
| "version": "A String", # A version string for this interface. If specified, must have the form | |
| # `major-version.minor-version`, as in `1.10`. If the minor version is | |
| # omitted, it defaults to zero. If the entire version field is empty, the | |
| # major version is derived from the package name, as outlined below. If the | |
| # field is not empty, the version in the package name will be verified to be | |
| # consistent with what is provided here. | |
| # | |
| # The versioning schema uses [semantic | |
| # versioning](http://semver.org) where the major version number | |
| # indicates a breaking change and the minor version an additive, | |
| # non-breaking change. Both version numbers are signals to users | |
| # what to expect from different versions, and should be carefully | |
| # chosen based on the product plan. | |
| # | |
| # The major version is also reflected in the package name of the | |
| # interface, which must end in `v<major-version>`, as in | |
| # `google.feature.v1`. For major versions 0 and 1, the suffix can | |
| # be omitted. Zero major versions must only be used for | |
| # experimental, non-GA interfaces. | |
| "options": [ # Any metadata attached to the interface. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # The fully qualified name of this interface, including package name | |
| # followed by the interface's simple name. | |
| }, | |
| ], | |
| "customError": { # Customize service error responses. For example, list any service # Custom error configuration. | |
| # specific protobuf types that can appear in error detail lists of | |
| # error responses. | |
| # | |
| # Example: | |
| # | |
| # custom_error: | |
| # types: | |
| # - google.foo.v1.CustomError | |
| # - google.foo.v1.AnotherError | |
| "rules": [ # The list of custom error rules that apply to individual API messages. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A custom error rule. | |
| "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise, | |
| # objects of this type will be filtered when they appear in error payload. | |
| "selector": "A String", # Selects messages to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'. | |
| "A String", | |
| ], | |
| }, | |
| "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration. | |
| # 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 | |
| # | |
| "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one | |
| # or more metrics. | |
| { # Bind API methods to metrics. Binding a method to a metric causes that | |
| # metric's configured quota behaviors to apply to the method call. | |
| "metricCosts": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "limits": [ # List of `QuotaLimit` definitions for the service. | |
| { # `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`. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # 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. | |
| "defaultLimit": "A String", # 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. | |
| "metric": "A String", # 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. | |
| "values": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "maxLimit": "A String", # 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. | |
| "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d". | |
| # For duration longer than a day, only multiple of days is supported. We | |
| # support only "100s" and "1d" for now. Additional support will be added in | |
| # the future. "0" indicates indefinite duration. | |
| # | |
| # Used by group-based quotas only. | |
| "freeTier": "A String", # 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. | |
| "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as | |
| # Metric.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. | |
| "description": "A String", # 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`). | |
| }, | |
| ], | |
| }, | |
| "metrics": [ # Defines the metrics used by this service. | |
| { # 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. | |
| "description": "A String", # A detailed description of the metric, which can be used in documentation. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # The resource name of the metric descriptor. | |
| "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "labels": [ # 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. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the metric definition. | |
| "type": "A String", # 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" | |
| "unit": "A String", # The unit in which the metric value is reported. It is only applicable | |
| # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The | |
| # supported units are a subset of [The Unified Code for Units of | |
| # Measure](http://unitsofmeasure.org/ucum.html) standard: | |
| # | |
| # **Basic units (UNIT)** | |
| # | |
| # * `bit` bit | |
| # * `By` byte | |
| # * `s` second | |
| # * `min` minute | |
| # * `h` hour | |
| # * `d` day | |
| # | |
| # **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) | |
| # | |
| # **Grammar** | |
| # | |
| # The grammar also includes these connectors: | |
| # | |
| # * `/` division (as an infix operator, e.g. `1/s`). | |
| # * `.` multiplication (as an infix operator, e.g. `GBy.d`) | |
| # | |
| # 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` and is | |
| # equivalent to `1` if it is used alone. For examples, | |
| # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. | |
| # * `NAME` is a sequence of non-blank printable ASCII characters not | |
| # containing '{' or '}'. | |
| # * `1` represents dimensionless value 1, such as in `1/s`. | |
| # * `%` represents dimensionless value 1/100, and annotates values giving | |
| # a percentage. | |
| "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric. | |
| "launchStage": "A String", # Deprecated. Please use the MetricDescriptor.launch_stage instead. | |
| # The launch stage of the metric definition. | |
| "ingestDelay": "A String", # 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. | |
| "samplePeriod": "A String", # 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. | |
| }, | |
| }, | |
| ], | |
| "enums": [ # 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. Example: | |
| # | |
| # enums: | |
| # - name: google.someapi.v1.SomeEnum | |
| { # Enum type definition. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "enumvalue": [ # Enum value definitions. | |
| { # Enum value definition. | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum value name. | |
| "number": 42, # Enum value number. | |
| }, | |
| ], | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum type name. | |
| "syntax": "A String", # The source syntax. | |
| }, | |
| ], | |
| "types": [ # 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. Example: | |
| # | |
| # types: | |
| # - name: google.protobuf.Int32 | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "logging": { # Logging configuration of the service. # Logging configuration. | |
| # | |
| # 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 | |
| "producerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "name": "A String", # 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. | |
| "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. | |
| # | |
| # 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. | |
| "rules": [ # A list of documentation rules that apply to individual API elements. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A documentation rule provides information about individual API elements. | |
| "description": "A String", # Description of the selected API(s). | |
| "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if | |
| # an element is marked as `deprecated`. | |
| "selector": "A String", # The selector is a comma-separated list of patterns. 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. | |
| }, | |
| ], | |
| "documentationRootUrl": "A String", # The URL to the root of documentation. | |
| "overview": "A String", # 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. | |
| "pages": [ # The top level pages for the documentation set. | |
| { # Represents a documentation page. A page can contain subpages to represent | |
| # nested documentation set structure. | |
| "content": "A String", # The Markdown content of the page. You can use <code>(== include {path} | |
| # ==)</code> to include content from a Markdown file. | |
| "subpages": [ # Subpages of this page. The order of subpages specified here will be | |
| # honored in the generated docset. | |
| # Object with schema name: Page | |
| ], | |
| "name": "A String", # 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`. | |
| }, | |
| ], | |
| "summary": "A String", # A short summary of what the service does. Can only be provided by | |
| # plain text. | |
| }, | |
| "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available. | |
| "sourceFiles": [ # All files used during config generation. | |
| { | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| ], | |
| }, | |
| "systemTypes": [ # A list of all proto message types included in this API service. | |
| # It serves similar purpose as [google.api.Service.types], except that | |
| # these types are not needed by user-defined APIs. Therefore, they will not | |
| # show up in the generated discovery doc. This field should only be used | |
| # to define system APIs in ESF. | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "context": { # `Context` defines which contexts an API requests. # Context configuration. | |
| # | |
| # 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 whitelist 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. | |
| "rules": [ # A list of RPC context rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A context rule provides information about the context for an individual API | |
| # element. | |
| "provided": [ # A list of full type names of provided contexts. | |
| "A String", | |
| ], | |
| "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from backend to client. | |
| "A String", | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from client to backend. | |
| "A String", | |
| ], | |
| "requested": [ # A list of full type names of requested contexts. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "endpoints": [ # 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. | |
| { # `Endpoint` describes a network endpoint that serves a set of APIs. | |
| # A service may expose any number of endpoints, and all endpoints share the | |
| # same service configuration, such as quota configuration and monitoring | |
| # configuration. | |
| # | |
| # Example service configuration: | |
| # | |
| # name: library-example.googleapis.com | |
| # endpoints: | |
| # # Below entry makes 'google.example.library.v1.Library' | |
| # # API be served from endpoint address library-example.googleapis.com. | |
| # # It also allows HTTP OPTIONS calls to be passed to the backend, for | |
| # # it to decide whether the subsequent cross-origin request is | |
| # # allowed to proceed. | |
| # - name: library-example.googleapis.com | |
| # allow_cors: true | |
| "allowCors": True or False, # 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. | |
| "target": "A String", # 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". | |
| "features": [ # The list of features enabled on this endpoint. | |
| "A String", | |
| ], | |
| "name": "A String", # The canonical name of this endpoint. | |
| "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases, | |
| # please specify multiple google.api.Endpoint for each of the intended | |
| # aliases. | |
| # | |
| # Additional names that this endpoint will be hosted on. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| } | |
| x__xgafv: string, V1 error format. | |
| Allowed values | |
| 1 - v1 error format | |
| 2 - v2 error format | |
| Returns: | |
| An object of the form: | |
| { # `Service` is the root object of Google service configuration schema. It | |
| # describes basic information about a service, such as the name and the | |
| # 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. See each proto message definition for details. | |
| # | |
| # Example: | |
| # | |
| # type: google.api.Service | |
| # config_version: 3 | |
| # name: calendar.googleapis.com | |
| # title: Google Calendar API | |
| # apis: | |
| # - name: google.calendar.v3.Calendar | |
| # 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 | |
| "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane. | |
| # service controller handles features like abuse, quota, billing, logging, | |
| # monitoring, etc. | |
| "environment": "A String", # The service control environment to use. If empty, no control plane | |
| # feature (like quota and billing) will be enabled. | |
| }, | |
| "monitoredResources": [ # Defines the monitored resources used by this service. This is required | |
| # by the Service.monitoring and Service.logging configurations. | |
| { # An object that describes the schema of a 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. | |
| # | |
| # Next ID: 10 | |
| "displayName": "A String", # 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"`. | |
| "name": "A String", # 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}"`. | |
| "labels": [ # 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"`. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the monitored resource definition. | |
| "type": "A String", # Required. The monitored resource type. For example, the type | |
| # `"cloudsql_database"` represents databases in Google Cloud SQL. | |
| # The maximum length of this value is 256 characters. | |
| "description": "A String", # Optional. A detailed description of the monitored resource type that might | |
| # be used in documentation. | |
| }, | |
| ], | |
| "logs": [ # Defines the logs used by this service. | |
| { # 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 | |
| "labels": [ # The set of labels that are available to describe a specific log entry. | |
| # Runtime requests that contain labels not specified here are | |
| # considered invalid. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "displayName": "A String", # The human-readable name for this log. This information appears on | |
| # the user interface and should be concise. | |
| "name": "A String", # 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 [/_-.]. | |
| "description": "A String", # A human-readable description of this log. This information appears in | |
| # the documentation and can contain details. | |
| }, | |
| ], | |
| "systemParameters": { # ### System parameter configuration # 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. | |
| "rules": [ # 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. | |
| { # Define a system parameter rule mapping system parameter definitions to | |
| # methods. | |
| "parameters": [ # 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. | |
| { # 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. | |
| "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case | |
| # sensitive. | |
| "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case | |
| # insensitive. | |
| "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive. | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| }, | |
| "id": "A String", # A unique ID for a specific instance of this message, typically assigned | |
| # by the client for tracking purpose. If empty, the server may choose to | |
| # generate one instead. Must be no longer than 60 characters. | |
| "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration. | |
| "rules": [ # A list of API backend rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A backend rule provides configuration for an individual API element. | |
| "jwtAudience": "A String", # The JWT audience is used when generating a JWT id token for the backend. | |
| "pathTranslation": "A String", | |
| "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline | |
| # value lower than this will be rejected. | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running | |
| # operation. The default is no deadline. | |
| "deadline": 3.14, # The number of seconds to wait for a response from a request. The default | |
| # deadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds. | |
| "address": "A String", # The address of the API backend. | |
| }, | |
| ], | |
| }, | |
| "monitoring": { # Monitoring configuration of the service. # Monitoring configuration. | |
| # | |
| # 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/overdue_count` metric is only sent to the | |
| # consumer 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/returned_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # - name: library.googleapis.com/book/overdue_count | |
| # metric_kind: GAUGE | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # 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/overdue_count | |
| "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project. | |
| # There can be multiple producer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project. | |
| # There can be multiple consumer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "billing": { # Billing related configuration of the service. # Billing configuration. | |
| # | |
| # The following example shows how to configure monitored resources and metrics | |
| # for billing: | |
| # | |
| # 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/borrowed_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # billing: | |
| # consumer_destinations: | |
| # - monitored_resource: library.googleapis.com/branch | |
| # metrics: | |
| # - library.googleapis.com/book/borrowed_count | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific billing destination (Currently only support | |
| # bill against consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Names of the metrics to report to this billing destination. | |
| # Each name must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "title": "A String", # The product title for this service. | |
| "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. | |
| # | |
| # Example for an API targeted for external use: | |
| # | |
| # 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 | |
| "rules": [ # A list of authentication rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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. | |
| "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials. | |
| # 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. | |
| "canonicalScopes": "A String", # 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 | |
| }, | |
| "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential. | |
| "requirements": [ # Requirements for additional authentication providers. | |
| { # User-defined authentication requirements, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "providerId": "A String", # id from authentication provider. | |
| # | |
| # Example: | |
| # | |
| # provider_id: bookstore_auth | |
| "audiences": "A String", # 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/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 | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "providers": [ # Defines a set of authentication providers that a service supports. | |
| { # Configuration for an authentication provider, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "jwksUri": "A String", # 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 | |
| "audiences": "A String", # 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/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 | |
| "id": "A String", # The unique identifier of the auth provider. It will be referred to by | |
| # `AuthRequirement.provider_id`. | |
| # | |
| # Example: "bookstore_auth". | |
| "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired. | |
| # Implement authorizationUrl of securityDefinitions in OpenAPI spec. | |
| "issuer": "A String", # 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 | |
| }, | |
| ], | |
| }, | |
| "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service. | |
| "rules": [ # A list of usage rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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 | |
| "skipServiceControl": True or False, # 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. | |
| "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls | |
| # that don't identify any user or application. | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "producerNotificationChannel": "A String", # 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. | |
| "requirements": [ # 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'. | |
| "A String", | |
| ], | |
| }, | |
| "configVersion": 42, # The semantic version of the service configuration. The config version | |
| # affects the interpretation of the service configuration. For example, | |
| # certain features are enabled by default for certain config versions. | |
| # The latest config version is `3`. | |
| "producerProjectId": "A String", # The Google project that owns this service. | |
| "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration. | |
| # HttpRule, each specifying the mapping of an RPC method | |
| # to one or more HTTP REST API methods. | |
| "rules": [ # A list of HTTP configuration rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # # 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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | | |
| # `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` | |
| # `GET /v1/users/me/messages/123456` | `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. 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 is "*", there is no URL query parameter, all fields | |
| # are passed via URL path and HTTP request body. | |
| # 3. If 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. | |
| # | |
| # Example: | |
| # | |
| # http: | |
| # rules: | |
| # # Selects a gRPC method and applies HttpRule to it. | |
| # - 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. | |
| "body": "A String", # The name of the request field whose value is mapped to the HTTP request | |
| # body, or `*` for mapping all request fields not captured by the path | |
| # pattern to the HTTP body, or omitted for not having any HTTP request body. | |
| # | |
| # NOTE: the referred field must be present at the top-level of the request | |
| # message type. | |
| "additionalBindings": [ # 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). | |
| # Object with schema name: HttpRule | |
| ], | |
| "get": "A String", # Maps to HTTP GET. Used for listing and getting information about | |
| # resources. | |
| "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource. | |
| "custom": { # A custom pattern is used for defining custom HTTP verb. # 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. | |
| "path": "A String", # The path matched by this custom verb. | |
| "kind": "A String", # The name of this custom HTTP verb. | |
| }, | |
| "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP | |
| # response body. When omitted, the entire response message will be used | |
| # as the HTTP response body. | |
| # | |
| # NOTE: The referred field must be present at the top-level of the response | |
| # message type. | |
| "put": "A String", # Maps to HTTP PUT. Used for replacing a resource. | |
| "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action. | |
| "selector": "A String", # Selects a method to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource. | |
| }, | |
| ], | |
| "fullyDecodeReservedExpansion": True or False, # 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. | |
| }, | |
| "apis": [ # A list of API interfaces exported by this service. Only the `name` field | |
| # of the 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. | |
| { # Api is a light-weight descriptor for an API Interface. | |
| # | |
| # Interfaces are also described as "protocol buffer services" in some contexts, | |
| # such as by the "service" keyword in a .proto file, but they are different | |
| # from API Services, which represent a concrete implementation of an interface | |
| # as opposed to simply a description of methods and bindings. They are also | |
| # sometimes simply referred to as "APIs" in other contexts, such as the name of | |
| # this message itself. See https://cloud.google.com/apis/design/glossary for | |
| # detailed terminology. | |
| "methods": [ # The methods of this interface, in unspecified order. | |
| { # Method represents a method of an API interface. | |
| "name": "A String", # The simple name of this method. | |
| "requestStreaming": True or False, # If true, the request is streamed. | |
| "responseTypeUrl": "A String", # The URL of the output message type. | |
| "requestTypeUrl": "A String", # A URL of the input message type. | |
| "responseStreaming": True or False, # If true, the response is streamed. | |
| "syntax": "A String", # The source syntax of this method. | |
| "options": [ # Any metadata attached to the method. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this | |
| # message. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "mixins": [ # Included interfaces. See Mixin. | |
| { # Declares an API Interface to be included in this interface. The including | |
| # interface must redeclare all the methods from the included interface, but | |
| # documentation and options are inherited as follows: | |
| # | |
| # - If after comment and whitespace stripping, the documentation | |
| # string of the redeclared method is empty, it will be inherited | |
| # from the original method. | |
| # | |
| # - Each annotation belonging to the service config (http, | |
| # visibility) which is not set in the redeclared method will be | |
| # inherited. | |
| # | |
| # - If an http annotation is inherited, the path pattern will be | |
| # modified as follows. Any version prefix will be replaced by the | |
| # version of the including interface plus the root path if | |
| # specified. | |
| # | |
| # Example of a simple mixin: | |
| # | |
| # package google.acl.v1; | |
| # service AccessControl { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v1/{resource=**}:getAcl"; | |
| # } | |
| # } | |
| # | |
| # package google.storage.v2; | |
| # service Storage { | |
| # // rpc GetAcl(GetAclRequest) returns (Acl); | |
| # | |
| # // Get a data record. | |
| # rpc GetData(GetDataRequest) returns (Data) { | |
| # option (google.api.http).get = "/v2/{resource=**}"; | |
| # } | |
| # } | |
| # | |
| # Example of a mixin configuration: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # | |
| # The mixin construct implies that all methods in `AccessControl` are | |
| # also declared with same name and request/response types in | |
| # `Storage`. A documentation generator or annotation processor will | |
| # see the effective `Storage.GetAcl` method after inherting | |
| # documentation and annotations as follows: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| # | |
| # Note how the version in the path pattern changed from `v1` to `v2`. | |
| # | |
| # If the `root` field in the mixin is specified, it should be a | |
| # relative path under which inherited HTTP paths are placed. Example: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # root: acls | |
| # | |
| # This implies the following inherited HTTP annotation: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| "root": "A String", # If non-empty specifies a path under which inherited HTTP paths | |
| # are rooted. | |
| "name": "A String", # The fully qualified name of the interface which is included. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax of the service. | |
| "version": "A String", # A version string for this interface. If specified, must have the form | |
| # `major-version.minor-version`, as in `1.10`. If the minor version is | |
| # omitted, it defaults to zero. If the entire version field is empty, the | |
| # major version is derived from the package name, as outlined below. If the | |
| # field is not empty, the version in the package name will be verified to be | |
| # consistent with what is provided here. | |
| # | |
| # The versioning schema uses [semantic | |
| # versioning](http://semver.org) where the major version number | |
| # indicates a breaking change and the minor version an additive, | |
| # non-breaking change. Both version numbers are signals to users | |
| # what to expect from different versions, and should be carefully | |
| # chosen based on the product plan. | |
| # | |
| # The major version is also reflected in the package name of the | |
| # interface, which must end in `v<major-version>`, as in | |
| # `google.feature.v1`. For major versions 0 and 1, the suffix can | |
| # be omitted. Zero major versions must only be used for | |
| # experimental, non-GA interfaces. | |
| "options": [ # Any metadata attached to the interface. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # The fully qualified name of this interface, including package name | |
| # followed by the interface's simple name. | |
| }, | |
| ], | |
| "customError": { # Customize service error responses. For example, list any service # Custom error configuration. | |
| # specific protobuf types that can appear in error detail lists of | |
| # error responses. | |
| # | |
| # Example: | |
| # | |
| # custom_error: | |
| # types: | |
| # - google.foo.v1.CustomError | |
| # - google.foo.v1.AnotherError | |
| "rules": [ # The list of custom error rules that apply to individual API messages. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A custom error rule. | |
| "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise, | |
| # objects of this type will be filtered when they appear in error payload. | |
| "selector": "A String", # Selects messages to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'. | |
| "A String", | |
| ], | |
| }, | |
| "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration. | |
| # 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 | |
| # | |
| "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one | |
| # or more metrics. | |
| { # Bind API methods to metrics. Binding a method to a metric causes that | |
| # metric's configured quota behaviors to apply to the method call. | |
| "metricCosts": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "limits": [ # List of `QuotaLimit` definitions for the service. | |
| { # `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`. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # 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. | |
| "defaultLimit": "A String", # 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. | |
| "metric": "A String", # 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. | |
| "values": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "maxLimit": "A String", # 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. | |
| "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d". | |
| # For duration longer than a day, only multiple of days is supported. We | |
| # support only "100s" and "1d" for now. Additional support will be added in | |
| # the future. "0" indicates indefinite duration. | |
| # | |
| # Used by group-based quotas only. | |
| "freeTier": "A String", # 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. | |
| "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as | |
| # Metric.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. | |
| "description": "A String", # 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`). | |
| }, | |
| ], | |
| }, | |
| "metrics": [ # Defines the metrics used by this service. | |
| { # 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. | |
| "description": "A String", # A detailed description of the metric, which can be used in documentation. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # The resource name of the metric descriptor. | |
| "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "labels": [ # 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. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the metric definition. | |
| "type": "A String", # 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" | |
| "unit": "A String", # The unit in which the metric value is reported. It is only applicable | |
| # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The | |
| # supported units are a subset of [The Unified Code for Units of | |
| # Measure](http://unitsofmeasure.org/ucum.html) standard: | |
| # | |
| # **Basic units (UNIT)** | |
| # | |
| # * `bit` bit | |
| # * `By` byte | |
| # * `s` second | |
| # * `min` minute | |
| # * `h` hour | |
| # * `d` day | |
| # | |
| # **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) | |
| # | |
| # **Grammar** | |
| # | |
| # The grammar also includes these connectors: | |
| # | |
| # * `/` division (as an infix operator, e.g. `1/s`). | |
| # * `.` multiplication (as an infix operator, e.g. `GBy.d`) | |
| # | |
| # 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` and is | |
| # equivalent to `1` if it is used alone. For examples, | |
| # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. | |
| # * `NAME` is a sequence of non-blank printable ASCII characters not | |
| # containing '{' or '}'. | |
| # * `1` represents dimensionless value 1, such as in `1/s`. | |
| # * `%` represents dimensionless value 1/100, and annotates values giving | |
| # a percentage. | |
| "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric. | |
| "launchStage": "A String", # Deprecated. Please use the MetricDescriptor.launch_stage instead. | |
| # The launch stage of the metric definition. | |
| "ingestDelay": "A String", # 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. | |
| "samplePeriod": "A String", # 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. | |
| }, | |
| }, | |
| ], | |
| "enums": [ # 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. Example: | |
| # | |
| # enums: | |
| # - name: google.someapi.v1.SomeEnum | |
| { # Enum type definition. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "enumvalue": [ # Enum value definitions. | |
| { # Enum value definition. | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum value name. | |
| "number": 42, # Enum value number. | |
| }, | |
| ], | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum type name. | |
| "syntax": "A String", # The source syntax. | |
| }, | |
| ], | |
| "types": [ # 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. Example: | |
| # | |
| # types: | |
| # - name: google.protobuf.Int32 | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "logging": { # Logging configuration of the service. # Logging configuration. | |
| # | |
| # 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 | |
| "producerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "name": "A String", # 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. | |
| "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. | |
| # | |
| # 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. | |
| "rules": [ # A list of documentation rules that apply to individual API elements. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A documentation rule provides information about individual API elements. | |
| "description": "A String", # Description of the selected API(s). | |
| "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if | |
| # an element is marked as `deprecated`. | |
| "selector": "A String", # The selector is a comma-separated list of patterns. 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. | |
| }, | |
| ], | |
| "documentationRootUrl": "A String", # The URL to the root of documentation. | |
| "overview": "A String", # 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. | |
| "pages": [ # The top level pages for the documentation set. | |
| { # Represents a documentation page. A page can contain subpages to represent | |
| # nested documentation set structure. | |
| "content": "A String", # The Markdown content of the page. You can use <code>(== include {path} | |
| # ==)</code> to include content from a Markdown file. | |
| "subpages": [ # Subpages of this page. The order of subpages specified here will be | |
| # honored in the generated docset. | |
| # Object with schema name: Page | |
| ], | |
| "name": "A String", # 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`. | |
| }, | |
| ], | |
| "summary": "A String", # A short summary of what the service does. Can only be provided by | |
| # plain text. | |
| }, | |
| "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available. | |
| "sourceFiles": [ # All files used during config generation. | |
| { | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| ], | |
| }, | |
| "systemTypes": [ # A list of all proto message types included in this API service. | |
| # It serves similar purpose as [google.api.Service.types], except that | |
| # these types are not needed by user-defined APIs. Therefore, they will not | |
| # show up in the generated discovery doc. This field should only be used | |
| # to define system APIs in ESF. | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "context": { # `Context` defines which contexts an API requests. # Context configuration. | |
| # | |
| # 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 whitelist 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. | |
| "rules": [ # A list of RPC context rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A context rule provides information about the context for an individual API | |
| # element. | |
| "provided": [ # A list of full type names of provided contexts. | |
| "A String", | |
| ], | |
| "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from backend to client. | |
| "A String", | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from client to backend. | |
| "A String", | |
| ], | |
| "requested": [ # A list of full type names of requested contexts. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "endpoints": [ # 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. | |
| { # `Endpoint` describes a network endpoint that serves a set of APIs. | |
| # A service may expose any number of endpoints, and all endpoints share the | |
| # same service configuration, such as quota configuration and monitoring | |
| # configuration. | |
| # | |
| # Example service configuration: | |
| # | |
| # name: library-example.googleapis.com | |
| # endpoints: | |
| # # Below entry makes 'google.example.library.v1.Library' | |
| # # API be served from endpoint address library-example.googleapis.com. | |
| # # It also allows HTTP OPTIONS calls to be passed to the backend, for | |
| # # it to decide whether the subsequent cross-origin request is | |
| # # allowed to proceed. | |
| # - name: library-example.googleapis.com | |
| # allow_cors: true | |
| "allowCors": True or False, # 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. | |
| "target": "A String", # 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". | |
| "features": [ # The list of features enabled on this endpoint. | |
| "A String", | |
| ], | |
| "name": "A String", # The canonical name of this endpoint. | |
| "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases, | |
| # please specify multiple google.api.Endpoint for each of the intended | |
| # aliases. | |
| # | |
| # Additional names that this endpoint will be hosted on. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }</pre> | |
| </div> | |
| <div class="method"> | |
| <code class="details" id="get">get(serviceName, configId, x__xgafv=None, view=None)</code> | |
| <pre>Gets a service configuration (version) for a managed service. | |
| Args: | |
| serviceName: string, The name of the service. See the [overview](/service-management/overview) | |
| for naming requirements. For example: `example.googleapis.com`. (required) | |
| configId: string, The id of the service configuration resource. | |
| This field must be specified for the server to return all fields, including | |
| `SourceInfo`. (required) | |
| x__xgafv: string, V1 error format. | |
| Allowed values | |
| 1 - v1 error format | |
| 2 - v2 error format | |
| view: string, Specifies which parts of the Service Config should be returned in the | |
| response. | |
| Returns: | |
| An object of the form: | |
| { # `Service` is the root object of Google service configuration schema. It | |
| # describes basic information about a service, such as the name and the | |
| # 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. See each proto message definition for details. | |
| # | |
| # Example: | |
| # | |
| # type: google.api.Service | |
| # config_version: 3 | |
| # name: calendar.googleapis.com | |
| # title: Google Calendar API | |
| # apis: | |
| # - name: google.calendar.v3.Calendar | |
| # 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 | |
| "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane. | |
| # service controller handles features like abuse, quota, billing, logging, | |
| # monitoring, etc. | |
| "environment": "A String", # The service control environment to use. If empty, no control plane | |
| # feature (like quota and billing) will be enabled. | |
| }, | |
| "monitoredResources": [ # Defines the monitored resources used by this service. This is required | |
| # by the Service.monitoring and Service.logging configurations. | |
| { # An object that describes the schema of a 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. | |
| # | |
| # Next ID: 10 | |
| "displayName": "A String", # 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"`. | |
| "name": "A String", # 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}"`. | |
| "labels": [ # 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"`. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the monitored resource definition. | |
| "type": "A String", # Required. The monitored resource type. For example, the type | |
| # `"cloudsql_database"` represents databases in Google Cloud SQL. | |
| # The maximum length of this value is 256 characters. | |
| "description": "A String", # Optional. A detailed description of the monitored resource type that might | |
| # be used in documentation. | |
| }, | |
| ], | |
| "logs": [ # Defines the logs used by this service. | |
| { # 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 | |
| "labels": [ # The set of labels that are available to describe a specific log entry. | |
| # Runtime requests that contain labels not specified here are | |
| # considered invalid. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "displayName": "A String", # The human-readable name for this log. This information appears on | |
| # the user interface and should be concise. | |
| "name": "A String", # 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 [/_-.]. | |
| "description": "A String", # A human-readable description of this log. This information appears in | |
| # the documentation and can contain details. | |
| }, | |
| ], | |
| "systemParameters": { # ### System parameter configuration # 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. | |
| "rules": [ # 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. | |
| { # Define a system parameter rule mapping system parameter definitions to | |
| # methods. | |
| "parameters": [ # 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. | |
| { # 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. | |
| "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case | |
| # sensitive. | |
| "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case | |
| # insensitive. | |
| "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive. | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| }, | |
| "id": "A String", # A unique ID for a specific instance of this message, typically assigned | |
| # by the client for tracking purpose. If empty, the server may choose to | |
| # generate one instead. Must be no longer than 60 characters. | |
| "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration. | |
| "rules": [ # A list of API backend rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A backend rule provides configuration for an individual API element. | |
| "jwtAudience": "A String", # The JWT audience is used when generating a JWT id token for the backend. | |
| "pathTranslation": "A String", | |
| "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline | |
| # value lower than this will be rejected. | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running | |
| # operation. The default is no deadline. | |
| "deadline": 3.14, # The number of seconds to wait for a response from a request. The default | |
| # deadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds. | |
| "address": "A String", # The address of the API backend. | |
| }, | |
| ], | |
| }, | |
| "monitoring": { # Monitoring configuration of the service. # Monitoring configuration. | |
| # | |
| # 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/overdue_count` metric is only sent to the | |
| # consumer 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/returned_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # - name: library.googleapis.com/book/overdue_count | |
| # metric_kind: GAUGE | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # 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/overdue_count | |
| "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project. | |
| # There can be multiple producer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project. | |
| # There can be multiple consumer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "billing": { # Billing related configuration of the service. # Billing configuration. | |
| # | |
| # The following example shows how to configure monitored resources and metrics | |
| # for billing: | |
| # | |
| # 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/borrowed_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # billing: | |
| # consumer_destinations: | |
| # - monitored_resource: library.googleapis.com/branch | |
| # metrics: | |
| # - library.googleapis.com/book/borrowed_count | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific billing destination (Currently only support | |
| # bill against consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Names of the metrics to report to this billing destination. | |
| # Each name must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "title": "A String", # The product title for this service. | |
| "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. | |
| # | |
| # Example for an API targeted for external use: | |
| # | |
| # 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 | |
| "rules": [ # A list of authentication rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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. | |
| "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials. | |
| # 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. | |
| "canonicalScopes": "A String", # 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 | |
| }, | |
| "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential. | |
| "requirements": [ # Requirements for additional authentication providers. | |
| { # User-defined authentication requirements, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "providerId": "A String", # id from authentication provider. | |
| # | |
| # Example: | |
| # | |
| # provider_id: bookstore_auth | |
| "audiences": "A String", # 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/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 | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "providers": [ # Defines a set of authentication providers that a service supports. | |
| { # Configuration for an authentication provider, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "jwksUri": "A String", # 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 | |
| "audiences": "A String", # 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/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 | |
| "id": "A String", # The unique identifier of the auth provider. It will be referred to by | |
| # `AuthRequirement.provider_id`. | |
| # | |
| # Example: "bookstore_auth". | |
| "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired. | |
| # Implement authorizationUrl of securityDefinitions in OpenAPI spec. | |
| "issuer": "A String", # 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 | |
| }, | |
| ], | |
| }, | |
| "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service. | |
| "rules": [ # A list of usage rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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 | |
| "skipServiceControl": True or False, # 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. | |
| "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls | |
| # that don't identify any user or application. | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "producerNotificationChannel": "A String", # 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. | |
| "requirements": [ # 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'. | |
| "A String", | |
| ], | |
| }, | |
| "configVersion": 42, # The semantic version of the service configuration. The config version | |
| # affects the interpretation of the service configuration. For example, | |
| # certain features are enabled by default for certain config versions. | |
| # The latest config version is `3`. | |
| "producerProjectId": "A String", # The Google project that owns this service. | |
| "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration. | |
| # HttpRule, each specifying the mapping of an RPC method | |
| # to one or more HTTP REST API methods. | |
| "rules": [ # A list of HTTP configuration rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # # 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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | | |
| # `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` | |
| # `GET /v1/users/me/messages/123456` | `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. 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 is "*", there is no URL query parameter, all fields | |
| # are passed via URL path and HTTP request body. | |
| # 3. If 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. | |
| # | |
| # Example: | |
| # | |
| # http: | |
| # rules: | |
| # # Selects a gRPC method and applies HttpRule to it. | |
| # - 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. | |
| "body": "A String", # The name of the request field whose value is mapped to the HTTP request | |
| # body, or `*` for mapping all request fields not captured by the path | |
| # pattern to the HTTP body, or omitted for not having any HTTP request body. | |
| # | |
| # NOTE: the referred field must be present at the top-level of the request | |
| # message type. | |
| "additionalBindings": [ # 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). | |
| # Object with schema name: HttpRule | |
| ], | |
| "get": "A String", # Maps to HTTP GET. Used for listing and getting information about | |
| # resources. | |
| "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource. | |
| "custom": { # A custom pattern is used for defining custom HTTP verb. # 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. | |
| "path": "A String", # The path matched by this custom verb. | |
| "kind": "A String", # The name of this custom HTTP verb. | |
| }, | |
| "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP | |
| # response body. When omitted, the entire response message will be used | |
| # as the HTTP response body. | |
| # | |
| # NOTE: The referred field must be present at the top-level of the response | |
| # message type. | |
| "put": "A String", # Maps to HTTP PUT. Used for replacing a resource. | |
| "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action. | |
| "selector": "A String", # Selects a method to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource. | |
| }, | |
| ], | |
| "fullyDecodeReservedExpansion": True or False, # 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. | |
| }, | |
| "apis": [ # A list of API interfaces exported by this service. Only the `name` field | |
| # of the 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. | |
| { # Api is a light-weight descriptor for an API Interface. | |
| # | |
| # Interfaces are also described as "protocol buffer services" in some contexts, | |
| # such as by the "service" keyword in a .proto file, but they are different | |
| # from API Services, which represent a concrete implementation of an interface | |
| # as opposed to simply a description of methods and bindings. They are also | |
| # sometimes simply referred to as "APIs" in other contexts, such as the name of | |
| # this message itself. See https://cloud.google.com/apis/design/glossary for | |
| # detailed terminology. | |
| "methods": [ # The methods of this interface, in unspecified order. | |
| { # Method represents a method of an API interface. | |
| "name": "A String", # The simple name of this method. | |
| "requestStreaming": True or False, # If true, the request is streamed. | |
| "responseTypeUrl": "A String", # The URL of the output message type. | |
| "requestTypeUrl": "A String", # A URL of the input message type. | |
| "responseStreaming": True or False, # If true, the response is streamed. | |
| "syntax": "A String", # The source syntax of this method. | |
| "options": [ # Any metadata attached to the method. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this | |
| # message. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "mixins": [ # Included interfaces. See Mixin. | |
| { # Declares an API Interface to be included in this interface. The including | |
| # interface must redeclare all the methods from the included interface, but | |
| # documentation and options are inherited as follows: | |
| # | |
| # - If after comment and whitespace stripping, the documentation | |
| # string of the redeclared method is empty, it will be inherited | |
| # from the original method. | |
| # | |
| # - Each annotation belonging to the service config (http, | |
| # visibility) which is not set in the redeclared method will be | |
| # inherited. | |
| # | |
| # - If an http annotation is inherited, the path pattern will be | |
| # modified as follows. Any version prefix will be replaced by the | |
| # version of the including interface plus the root path if | |
| # specified. | |
| # | |
| # Example of a simple mixin: | |
| # | |
| # package google.acl.v1; | |
| # service AccessControl { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v1/{resource=**}:getAcl"; | |
| # } | |
| # } | |
| # | |
| # package google.storage.v2; | |
| # service Storage { | |
| # // rpc GetAcl(GetAclRequest) returns (Acl); | |
| # | |
| # // Get a data record. | |
| # rpc GetData(GetDataRequest) returns (Data) { | |
| # option (google.api.http).get = "/v2/{resource=**}"; | |
| # } | |
| # } | |
| # | |
| # Example of a mixin configuration: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # | |
| # The mixin construct implies that all methods in `AccessControl` are | |
| # also declared with same name and request/response types in | |
| # `Storage`. A documentation generator or annotation processor will | |
| # see the effective `Storage.GetAcl` method after inherting | |
| # documentation and annotations as follows: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| # | |
| # Note how the version in the path pattern changed from `v1` to `v2`. | |
| # | |
| # If the `root` field in the mixin is specified, it should be a | |
| # relative path under which inherited HTTP paths are placed. Example: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # root: acls | |
| # | |
| # This implies the following inherited HTTP annotation: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| "root": "A String", # If non-empty specifies a path under which inherited HTTP paths | |
| # are rooted. | |
| "name": "A String", # The fully qualified name of the interface which is included. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax of the service. | |
| "version": "A String", # A version string for this interface. If specified, must have the form | |
| # `major-version.minor-version`, as in `1.10`. If the minor version is | |
| # omitted, it defaults to zero. If the entire version field is empty, the | |
| # major version is derived from the package name, as outlined below. If the | |
| # field is not empty, the version in the package name will be verified to be | |
| # consistent with what is provided here. | |
| # | |
| # The versioning schema uses [semantic | |
| # versioning](http://semver.org) where the major version number | |
| # indicates a breaking change and the minor version an additive, | |
| # non-breaking change. Both version numbers are signals to users | |
| # what to expect from different versions, and should be carefully | |
| # chosen based on the product plan. | |
| # | |
| # The major version is also reflected in the package name of the | |
| # interface, which must end in `v<major-version>`, as in | |
| # `google.feature.v1`. For major versions 0 and 1, the suffix can | |
| # be omitted. Zero major versions must only be used for | |
| # experimental, non-GA interfaces. | |
| "options": [ # Any metadata attached to the interface. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # The fully qualified name of this interface, including package name | |
| # followed by the interface's simple name. | |
| }, | |
| ], | |
| "customError": { # Customize service error responses. For example, list any service # Custom error configuration. | |
| # specific protobuf types that can appear in error detail lists of | |
| # error responses. | |
| # | |
| # Example: | |
| # | |
| # custom_error: | |
| # types: | |
| # - google.foo.v1.CustomError | |
| # - google.foo.v1.AnotherError | |
| "rules": [ # The list of custom error rules that apply to individual API messages. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A custom error rule. | |
| "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise, | |
| # objects of this type will be filtered when they appear in error payload. | |
| "selector": "A String", # Selects messages to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'. | |
| "A String", | |
| ], | |
| }, | |
| "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration. | |
| # 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 | |
| # | |
| "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one | |
| # or more metrics. | |
| { # Bind API methods to metrics. Binding a method to a metric causes that | |
| # metric's configured quota behaviors to apply to the method call. | |
| "metricCosts": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "limits": [ # List of `QuotaLimit` definitions for the service. | |
| { # `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`. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # 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. | |
| "defaultLimit": "A String", # 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. | |
| "metric": "A String", # 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. | |
| "values": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "maxLimit": "A String", # 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. | |
| "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d". | |
| # For duration longer than a day, only multiple of days is supported. We | |
| # support only "100s" and "1d" for now. Additional support will be added in | |
| # the future. "0" indicates indefinite duration. | |
| # | |
| # Used by group-based quotas only. | |
| "freeTier": "A String", # 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. | |
| "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as | |
| # Metric.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. | |
| "description": "A String", # 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`). | |
| }, | |
| ], | |
| }, | |
| "metrics": [ # Defines the metrics used by this service. | |
| { # 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. | |
| "description": "A String", # A detailed description of the metric, which can be used in documentation. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # The resource name of the metric descriptor. | |
| "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "labels": [ # 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. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the metric definition. | |
| "type": "A String", # 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" | |
| "unit": "A String", # The unit in which the metric value is reported. It is only applicable | |
| # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The | |
| # supported units are a subset of [The Unified Code for Units of | |
| # Measure](http://unitsofmeasure.org/ucum.html) standard: | |
| # | |
| # **Basic units (UNIT)** | |
| # | |
| # * `bit` bit | |
| # * `By` byte | |
| # * `s` second | |
| # * `min` minute | |
| # * `h` hour | |
| # * `d` day | |
| # | |
| # **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) | |
| # | |
| # **Grammar** | |
| # | |
| # The grammar also includes these connectors: | |
| # | |
| # * `/` division (as an infix operator, e.g. `1/s`). | |
| # * `.` multiplication (as an infix operator, e.g. `GBy.d`) | |
| # | |
| # 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` and is | |
| # equivalent to `1` if it is used alone. For examples, | |
| # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. | |
| # * `NAME` is a sequence of non-blank printable ASCII characters not | |
| # containing '{' or '}'. | |
| # * `1` represents dimensionless value 1, such as in `1/s`. | |
| # * `%` represents dimensionless value 1/100, and annotates values giving | |
| # a percentage. | |
| "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric. | |
| "launchStage": "A String", # Deprecated. Please use the MetricDescriptor.launch_stage instead. | |
| # The launch stage of the metric definition. | |
| "ingestDelay": "A String", # 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. | |
| "samplePeriod": "A String", # 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. | |
| }, | |
| }, | |
| ], | |
| "enums": [ # 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. Example: | |
| # | |
| # enums: | |
| # - name: google.someapi.v1.SomeEnum | |
| { # Enum type definition. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "enumvalue": [ # Enum value definitions. | |
| { # Enum value definition. | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum value name. | |
| "number": 42, # Enum value number. | |
| }, | |
| ], | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum type name. | |
| "syntax": "A String", # The source syntax. | |
| }, | |
| ], | |
| "types": [ # 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. Example: | |
| # | |
| # types: | |
| # - name: google.protobuf.Int32 | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "logging": { # Logging configuration of the service. # Logging configuration. | |
| # | |
| # 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 | |
| "producerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "name": "A String", # 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. | |
| "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. | |
| # | |
| # 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. | |
| "rules": [ # A list of documentation rules that apply to individual API elements. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A documentation rule provides information about individual API elements. | |
| "description": "A String", # Description of the selected API(s). | |
| "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if | |
| # an element is marked as `deprecated`. | |
| "selector": "A String", # The selector is a comma-separated list of patterns. 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. | |
| }, | |
| ], | |
| "documentationRootUrl": "A String", # The URL to the root of documentation. | |
| "overview": "A String", # 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. | |
| "pages": [ # The top level pages for the documentation set. | |
| { # Represents a documentation page. A page can contain subpages to represent | |
| # nested documentation set structure. | |
| "content": "A String", # The Markdown content of the page. You can use <code>(== include {path} | |
| # ==)</code> to include content from a Markdown file. | |
| "subpages": [ # Subpages of this page. The order of subpages specified here will be | |
| # honored in the generated docset. | |
| # Object with schema name: Page | |
| ], | |
| "name": "A String", # 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`. | |
| }, | |
| ], | |
| "summary": "A String", # A short summary of what the service does. Can only be provided by | |
| # plain text. | |
| }, | |
| "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available. | |
| "sourceFiles": [ # All files used during config generation. | |
| { | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| ], | |
| }, | |
| "systemTypes": [ # A list of all proto message types included in this API service. | |
| # It serves similar purpose as [google.api.Service.types], except that | |
| # these types are not needed by user-defined APIs. Therefore, they will not | |
| # show up in the generated discovery doc. This field should only be used | |
| # to define system APIs in ESF. | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "context": { # `Context` defines which contexts an API requests. # Context configuration. | |
| # | |
| # 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 whitelist 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. | |
| "rules": [ # A list of RPC context rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A context rule provides information about the context for an individual API | |
| # element. | |
| "provided": [ # A list of full type names of provided contexts. | |
| "A String", | |
| ], | |
| "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from backend to client. | |
| "A String", | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from client to backend. | |
| "A String", | |
| ], | |
| "requested": [ # A list of full type names of requested contexts. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "endpoints": [ # 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. | |
| { # `Endpoint` describes a network endpoint that serves a set of APIs. | |
| # A service may expose any number of endpoints, and all endpoints share the | |
| # same service configuration, such as quota configuration and monitoring | |
| # configuration. | |
| # | |
| # Example service configuration: | |
| # | |
| # name: library-example.googleapis.com | |
| # endpoints: | |
| # # Below entry makes 'google.example.library.v1.Library' | |
| # # API be served from endpoint address library-example.googleapis.com. | |
| # # It also allows HTTP OPTIONS calls to be passed to the backend, for | |
| # # it to decide whether the subsequent cross-origin request is | |
| # # allowed to proceed. | |
| # - name: library-example.googleapis.com | |
| # allow_cors: true | |
| "allowCors": True or False, # 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. | |
| "target": "A String", # 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". | |
| "features": [ # The list of features enabled on this endpoint. | |
| "A String", | |
| ], | |
| "name": "A String", # The canonical name of this endpoint. | |
| "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases, | |
| # please specify multiple google.api.Endpoint for each of the intended | |
| # aliases. | |
| # | |
| # Additional names that this endpoint will be hosted on. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }</pre> | |
| </div> | |
| <div class="method"> | |
| <code class="details" id="list">list(serviceName, pageSize=None, pageToken=None, x__xgafv=None)</code> | |
| <pre>Lists the history of the service configuration for a managed service, | |
| from the newest to the oldest. | |
| Args: | |
| serviceName: string, The name of the service. See the [overview](/service-management/overview) | |
| for naming requirements. For example: `example.googleapis.com`. (required) | |
| pageSize: integer, The max number of items to include in the response list. Page size is 50 | |
| if not specified. Maximum value is 100. | |
| pageToken: string, The token of the page to retrieve. | |
| x__xgafv: string, V1 error format. | |
| Allowed values | |
| 1 - v1 error format | |
| 2 - v2 error format | |
| Returns: | |
| An object of the form: | |
| { # Response message for ListServiceConfigs method. | |
| "nextPageToken": "A String", # The token of the next page of results. | |
| "serviceConfigs": [ # The list of service configuration resources. | |
| { # `Service` is the root object of Google service configuration schema. It | |
| # describes basic information about a service, such as the name and the | |
| # 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. See each proto message definition for details. | |
| # | |
| # Example: | |
| # | |
| # type: google.api.Service | |
| # config_version: 3 | |
| # name: calendar.googleapis.com | |
| # title: Google Calendar API | |
| # apis: | |
| # - name: google.calendar.v3.Calendar | |
| # 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 | |
| "control": { # Selects and configures the service controller used by the service. The # Configuration for the service control plane. | |
| # service controller handles features like abuse, quota, billing, logging, | |
| # monitoring, etc. | |
| "environment": "A String", # The service control environment to use. If empty, no control plane | |
| # feature (like quota and billing) will be enabled. | |
| }, | |
| "monitoredResources": [ # Defines the monitored resources used by this service. This is required | |
| # by the Service.monitoring and Service.logging configurations. | |
| { # An object that describes the schema of a 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. | |
| # | |
| # Next ID: 10 | |
| "displayName": "A String", # 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"`. | |
| "name": "A String", # 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}"`. | |
| "labels": [ # 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"`. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the monitored resource definition. | |
| "type": "A String", # Required. The monitored resource type. For example, the type | |
| # `"cloudsql_database"` represents databases in Google Cloud SQL. | |
| # The maximum length of this value is 256 characters. | |
| "description": "A String", # Optional. A detailed description of the monitored resource type that might | |
| # be used in documentation. | |
| }, | |
| ], | |
| "logs": [ # Defines the logs used by this service. | |
| { # 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 | |
| "labels": [ # The set of labels that are available to describe a specific log entry. | |
| # Runtime requests that contain labels not specified here are | |
| # considered invalid. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "displayName": "A String", # The human-readable name for this log. This information appears on | |
| # the user interface and should be concise. | |
| "name": "A String", # 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 [/_-.]. | |
| "description": "A String", # A human-readable description of this log. This information appears in | |
| # the documentation and can contain details. | |
| }, | |
| ], | |
| "systemParameters": { # ### System parameter configuration # 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. | |
| "rules": [ # 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. | |
| { # Define a system parameter rule mapping system parameter definitions to | |
| # methods. | |
| "parameters": [ # 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. | |
| { # 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. | |
| "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case | |
| # sensitive. | |
| "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case | |
| # insensitive. | |
| "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive. | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| }, | |
| "id": "A String", # A unique ID for a specific instance of this message, typically assigned | |
| # by the client for tracking purpose. If empty, the server may choose to | |
| # generate one instead. Must be no longer than 60 characters. | |
| "backend": { # `Backend` defines the backend configuration for a service. # API backend configuration. | |
| "rules": [ # A list of API backend rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A backend rule provides configuration for an individual API element. | |
| "jwtAudience": "A String", # The JWT audience is used when generating a JWT id token for the backend. | |
| "pathTranslation": "A String", | |
| "minDeadline": 3.14, # Minimum deadline in seconds needed for this method. Calls having deadline | |
| # value lower than this will be rejected. | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "operationDeadline": 3.14, # The number of seconds to wait for the completion of a long running | |
| # operation. The default is no deadline. | |
| "deadline": 3.14, # The number of seconds to wait for a response from a request. The default | |
| # deadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds. | |
| "address": "A String", # The address of the API backend. | |
| }, | |
| ], | |
| }, | |
| "monitoring": { # Monitoring configuration of the service. # Monitoring configuration. | |
| # | |
| # 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/overdue_count` metric is only sent to the | |
| # consumer 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/returned_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # - name: library.googleapis.com/book/overdue_count | |
| # metric_kind: GAUGE | |
| # value_type: INT64 | |
| # labels: | |
| # - key: /customer_id | |
| # 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/overdue_count | |
| "producerDestinations": [ # Monitoring configurations for sending metrics to the producer project. | |
| # There can be multiple producer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # Monitoring configurations for sending metrics to the consumer project. | |
| # There can be multiple consumer destinations. A monitored resouce 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. | |
| { # Configuration of a specific monitoring destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Types of the metrics to report to this monitoring destination. | |
| # Each type must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "billing": { # Billing related configuration of the service. # Billing configuration. | |
| # | |
| # The following example shows how to configure monitored resources and metrics | |
| # for billing: | |
| # | |
| # 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. | |
| # metrics: | |
| # - name: library.googleapis.com/book/borrowed_count | |
| # metric_kind: DELTA | |
| # value_type: INT64 | |
| # billing: | |
| # consumer_destinations: | |
| # - monitored_resource: library.googleapis.com/branch | |
| # metrics: | |
| # - library.googleapis.com/book/borrowed_count | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific billing destination (Currently only support | |
| # bill against consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in | |
| # Service.monitored_resources section. | |
| "metrics": [ # Names of the metrics to report to this billing destination. | |
| # Each name must be defined in Service.metrics section. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "title": "A String", # The product title for this service. | |
| "authentication": { # `Authentication` defines the authentication configuration for an API. # Auth configuration. | |
| # | |
| # Example for an API targeted for external use: | |
| # | |
| # 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 | |
| "rules": [ # A list of authentication rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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. | |
| "oauth": { # OAuth scopes are a way to define data and permissions on data. For example, # The requirements for OAuth credentials. | |
| # 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. | |
| "canonicalScopes": "A String", # 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 | |
| }, | |
| "allowWithoutCredential": True or False, # If true, the service accepts API keys without any other credential. | |
| "requirements": [ # Requirements for additional authentication providers. | |
| { # User-defined authentication requirements, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "providerId": "A String", # id from authentication provider. | |
| # | |
| # Example: | |
| # | |
| # provider_id: bookstore_auth | |
| "audiences": "A String", # 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/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 | |
| }, | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "providers": [ # Defines a set of authentication providers that a service supports. | |
| { # Configuration for an authentication provider, including support for | |
| # [JSON Web Token | |
| # (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). | |
| "jwksUri": "A String", # 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 | |
| "audiences": "A String", # 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/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 | |
| "id": "A String", # The unique identifier of the auth provider. It will be referred to by | |
| # `AuthRequirement.provider_id`. | |
| # | |
| # Example: "bookstore_auth". | |
| "authorizationUrl": "A String", # Redirect URL if JWT token is required but not present or is expired. | |
| # Implement authorizationUrl of securityDefinitions in OpenAPI spec. | |
| "issuer": "A String", # 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 | |
| }, | |
| ], | |
| }, | |
| "usage": { # Configuration controlling usage of a service. # Configuration controlling usage of this service. | |
| "rules": [ # A list of usage rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # 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 | |
| "skipServiceControl": True or False, # 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. | |
| "allowUnregisteredCalls": True or False, # If true, the selected method allows unregistered calls, e.g. calls | |
| # that don't identify any user or application. | |
| "selector": "A String", # Selects the methods to which this rule applies. Use '*' to indicate all | |
| # methods in all APIs. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "producerNotificationChannel": "A String", # 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. | |
| "requirements": [ # 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'. | |
| "A String", | |
| ], | |
| }, | |
| "configVersion": 42, # The semantic version of the service configuration. The config version | |
| # affects the interpretation of the service configuration. For example, | |
| # certain features are enabled by default for certain config versions. | |
| # The latest config version is `3`. | |
| "producerProjectId": "A String", # The Google project that owns this service. | |
| "http": { # Defines the HTTP configuration for an API service. It contains a list of # HTTP configuration. | |
| # HttpRule, each specifying the mapping of an RPC method | |
| # to one or more HTTP REST API methods. | |
| "rules": [ # A list of HTTP configuration rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # # 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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456?revision=2&sub.subfield=foo` | | |
| # `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `PATCH /v1/messages/123456 { "text": "Hi!" }` | `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 | gRPC | |
| # -----|----- | |
| # `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` | |
| # `GET /v1/users/me/messages/123456` | `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. 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 is "*", there is no URL query parameter, all fields | |
| # are passed via URL path and HTTP request body. | |
| # 3. If 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. | |
| # | |
| # Example: | |
| # | |
| # http: | |
| # rules: | |
| # # Selects a gRPC method and applies HttpRule to it. | |
| # - 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. | |
| "body": "A String", # The name of the request field whose value is mapped to the HTTP request | |
| # body, or `*` for mapping all request fields not captured by the path | |
| # pattern to the HTTP body, or omitted for not having any HTTP request body. | |
| # | |
| # NOTE: the referred field must be present at the top-level of the request | |
| # message type. | |
| "additionalBindings": [ # 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). | |
| # Object with schema name: HttpRule | |
| ], | |
| "get": "A String", # Maps to HTTP GET. Used for listing and getting information about | |
| # resources. | |
| "patch": "A String", # Maps to HTTP PATCH. Used for updating a resource. | |
| "custom": { # A custom pattern is used for defining custom HTTP verb. # 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. | |
| "path": "A String", # The path matched by this custom verb. | |
| "kind": "A String", # The name of this custom HTTP verb. | |
| }, | |
| "responseBody": "A String", # Optional. The name of the response field whose value is mapped to the HTTP | |
| # response body. When omitted, the entire response message will be used | |
| # as the HTTP response body. | |
| # | |
| # NOTE: The referred field must be present at the top-level of the response | |
| # message type. | |
| "put": "A String", # Maps to HTTP PUT. Used for replacing a resource. | |
| "post": "A String", # Maps to HTTP POST. Used for creating a resource or performing an action. | |
| "selector": "A String", # Selects a method to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "delete": "A String", # Maps to HTTP DELETE. Used for deleting a resource. | |
| }, | |
| ], | |
| "fullyDecodeReservedExpansion": True or False, # 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. | |
| }, | |
| "apis": [ # A list of API interfaces exported by this service. Only the `name` field | |
| # of the 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. | |
| { # Api is a light-weight descriptor for an API Interface. | |
| # | |
| # Interfaces are also described as "protocol buffer services" in some contexts, | |
| # such as by the "service" keyword in a .proto file, but they are different | |
| # from API Services, which represent a concrete implementation of an interface | |
| # as opposed to simply a description of methods and bindings. They are also | |
| # sometimes simply referred to as "APIs" in other contexts, such as the name of | |
| # this message itself. See https://cloud.google.com/apis/design/glossary for | |
| # detailed terminology. | |
| "methods": [ # The methods of this interface, in unspecified order. | |
| { # Method represents a method of an API interface. | |
| "name": "A String", # The simple name of this method. | |
| "requestStreaming": True or False, # If true, the request is streamed. | |
| "responseTypeUrl": "A String", # The URL of the output message type. | |
| "requestTypeUrl": "A String", # A URL of the input message type. | |
| "responseStreaming": True or False, # If true, the response is streamed. | |
| "syntax": "A String", # The source syntax of this method. | |
| "options": [ # Any metadata attached to the method. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "sourceContext": { # `SourceContext` represents information about the source of a # Source context for the protocol buffer service represented by this | |
| # message. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "mixins": [ # Included interfaces. See Mixin. | |
| { # Declares an API Interface to be included in this interface. The including | |
| # interface must redeclare all the methods from the included interface, but | |
| # documentation and options are inherited as follows: | |
| # | |
| # - If after comment and whitespace stripping, the documentation | |
| # string of the redeclared method is empty, it will be inherited | |
| # from the original method. | |
| # | |
| # - Each annotation belonging to the service config (http, | |
| # visibility) which is not set in the redeclared method will be | |
| # inherited. | |
| # | |
| # - If an http annotation is inherited, the path pattern will be | |
| # modified as follows. Any version prefix will be replaced by the | |
| # version of the including interface plus the root path if | |
| # specified. | |
| # | |
| # Example of a simple mixin: | |
| # | |
| # package google.acl.v1; | |
| # service AccessControl { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v1/{resource=**}:getAcl"; | |
| # } | |
| # } | |
| # | |
| # package google.storage.v2; | |
| # service Storage { | |
| # // rpc GetAcl(GetAclRequest) returns (Acl); | |
| # | |
| # // Get a data record. | |
| # rpc GetData(GetDataRequest) returns (Data) { | |
| # option (google.api.http).get = "/v2/{resource=**}"; | |
| # } | |
| # } | |
| # | |
| # Example of a mixin configuration: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # | |
| # The mixin construct implies that all methods in `AccessControl` are | |
| # also declared with same name and request/response types in | |
| # `Storage`. A documentation generator or annotation processor will | |
| # see the effective `Storage.GetAcl` method after inherting | |
| # documentation and annotations as follows: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| # | |
| # Note how the version in the path pattern changed from `v1` to `v2`. | |
| # | |
| # If the `root` field in the mixin is specified, it should be a | |
| # relative path under which inherited HTTP paths are placed. Example: | |
| # | |
| # apis: | |
| # - name: google.storage.v2.Storage | |
| # mixins: | |
| # - name: google.acl.v1.AccessControl | |
| # root: acls | |
| # | |
| # This implies the following inherited HTTP annotation: | |
| # | |
| # service Storage { | |
| # // Get the underlying ACL object. | |
| # rpc GetAcl(GetAclRequest) returns (Acl) { | |
| # option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; | |
| # } | |
| # ... | |
| # } | |
| "root": "A String", # If non-empty specifies a path under which inherited HTTP paths | |
| # are rooted. | |
| "name": "A String", # The fully qualified name of the interface which is included. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax of the service. | |
| "version": "A String", # A version string for this interface. If specified, must have the form | |
| # `major-version.minor-version`, as in `1.10`. If the minor version is | |
| # omitted, it defaults to zero. If the entire version field is empty, the | |
| # major version is derived from the package name, as outlined below. If the | |
| # field is not empty, the version in the package name will be verified to be | |
| # consistent with what is provided here. | |
| # | |
| # The versioning schema uses [semantic | |
| # versioning](http://semver.org) where the major version number | |
| # indicates a breaking change and the minor version an additive, | |
| # non-breaking change. Both version numbers are signals to users | |
| # what to expect from different versions, and should be carefully | |
| # chosen based on the product plan. | |
| # | |
| # The major version is also reflected in the package name of the | |
| # interface, which must end in `v<major-version>`, as in | |
| # `google.feature.v1`. For major versions 0 and 1, the suffix can | |
| # be omitted. Zero major versions must only be used for | |
| # experimental, non-GA interfaces. | |
| "options": [ # Any metadata attached to the interface. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # The fully qualified name of this interface, including package name | |
| # followed by the interface's simple name. | |
| }, | |
| ], | |
| "customError": { # Customize service error responses. For example, list any service # Custom error configuration. | |
| # specific protobuf types that can appear in error detail lists of | |
| # error responses. | |
| # | |
| # Example: | |
| # | |
| # custom_error: | |
| # types: | |
| # - google.foo.v1.CustomError | |
| # - google.foo.v1.AnotherError | |
| "rules": [ # The list of custom error rules that apply to individual API messages. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A custom error rule. | |
| "isErrorType": True or False, # Mark this message as possible payload in error response. Otherwise, | |
| # objects of this type will be filtered when they appear in error payload. | |
| "selector": "A String", # Selects messages to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "types": [ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'. | |
| "A String", | |
| ], | |
| }, | |
| "quota": { # Quota configuration helps to achieve fairness and budgeting in service # Quota configuration. | |
| # 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 | |
| # | |
| "metricRules": [ # List of `MetricRule` definitions, each one mapping a selected method to one | |
| # or more metrics. | |
| { # Bind API methods to metrics. Binding a method to a metric causes that | |
| # metric's configured quota behaviors to apply to the method call. | |
| "metricCosts": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| }, | |
| ], | |
| "limits": [ # List of `QuotaLimit` definitions for the service. | |
| { # `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`. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # 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. | |
| "defaultLimit": "A String", # 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. | |
| "metric": "A String", # 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. | |
| "values": { # 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. | |
| "a_key": "A String", | |
| }, | |
| "maxLimit": "A String", # 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. | |
| "duration": "A String", # Duration of this limit in textual notation. Example: "100s", "24h", "1d". | |
| # For duration longer than a day, only multiple of days is supported. We | |
| # support only "100s" and "1d" for now. Additional support will be added in | |
| # the future. "0" indicates indefinite duration. | |
| # | |
| # Used by group-based quotas only. | |
| "freeTier": "A String", # 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. | |
| "unit": "A String", # Specify the unit of the quota limit. It uses the same syntax as | |
| # Metric.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. | |
| "description": "A String", # 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`). | |
| }, | |
| ], | |
| }, | |
| "metrics": [ # Defines the metrics used by this service. | |
| { # 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. | |
| "description": "A String", # A detailed description of the metric, which can be used in documentation. | |
| "displayName": "A String", # 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. | |
| "name": "A String", # The resource name of the metric descriptor. | |
| "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. | |
| # Some combinations of `metric_kind` and `value_type` might not be supported. | |
| "labels": [ # 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. | |
| { # A description of a label. | |
| "valueType": "A String", # The type of data that can be assigned to the label. | |
| "description": "A String", # A human-readable description for the label. | |
| "key": "A String", # The label key. | |
| }, | |
| ], | |
| "launchStage": "A String", # Optional. The launch stage of the metric definition. | |
| "type": "A String", # 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" | |
| "unit": "A String", # The unit in which the metric value is reported. It is only applicable | |
| # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The | |
| # supported units are a subset of [The Unified Code for Units of | |
| # Measure](http://unitsofmeasure.org/ucum.html) standard: | |
| # | |
| # **Basic units (UNIT)** | |
| # | |
| # * `bit` bit | |
| # * `By` byte | |
| # * `s` second | |
| # * `min` minute | |
| # * `h` hour | |
| # * `d` day | |
| # | |
| # **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) | |
| # | |
| # **Grammar** | |
| # | |
| # The grammar also includes these connectors: | |
| # | |
| # * `/` division (as an infix operator, e.g. `1/s`). | |
| # * `.` multiplication (as an infix operator, e.g. `GBy.d`) | |
| # | |
| # 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` and is | |
| # equivalent to `1` if it is used alone. For examples, | |
| # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. | |
| # * `NAME` is a sequence of non-blank printable ASCII characters not | |
| # containing '{' or '}'. | |
| # * `1` represents dimensionless value 1, such as in `1/s`. | |
| # * `%` represents dimensionless value 1/100, and annotates values giving | |
| # a percentage. | |
| "metadata": { # Additional annotations that can be used to guide the usage of a metric. # Optional. Metadata which can be used to guide usage of the metric. | |
| "launchStage": "A String", # Deprecated. Please use the MetricDescriptor.launch_stage instead. | |
| # The launch stage of the metric definition. | |
| "ingestDelay": "A String", # 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. | |
| "samplePeriod": "A String", # 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. | |
| }, | |
| }, | |
| ], | |
| "enums": [ # 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. Example: | |
| # | |
| # enums: | |
| # - name: google.someapi.v1.SomeEnum | |
| { # Enum type definition. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "enumvalue": [ # Enum value definitions. | |
| { # Enum value definition. | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum value name. | |
| "number": 42, # Enum value number. | |
| }, | |
| ], | |
| "options": [ # Protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "name": "A String", # Enum type name. | |
| "syntax": "A String", # The source syntax. | |
| }, | |
| ], | |
| "types": [ # 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. Example: | |
| # | |
| # types: | |
| # - name: google.protobuf.Int32 | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "logging": { # Logging configuration of the service. # Logging configuration. | |
| # | |
| # 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 | |
| "producerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| "consumerDestinations": [ # 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. | |
| { # Configuration of a specific logging destination (the producer project | |
| # or the consumer project). | |
| "monitoredResource": "A String", # The monitored resource type. The type must be defined in the | |
| # Service.monitored_resources section. | |
| "logs": [ # Names of the logs to be sent to this destination. Each name must | |
| # be defined in the Service.logs section. If the log name is | |
| # not a domain scoped name, it will be automatically prefixed with | |
| # the service name followed by "/". | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "name": "A String", # 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. | |
| "documentation": { # `Documentation` provides the information for describing a service. # Additional API documentation. | |
| # | |
| # 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. | |
| "rules": [ # A list of documentation rules that apply to individual API elements. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A documentation rule provides information about individual API elements. | |
| "description": "A String", # Description of the selected API(s). | |
| "deprecationDescription": "A String", # Deprecation description of the selected element(s). It can be provided if | |
| # an element is marked as `deprecated`. | |
| "selector": "A String", # The selector is a comma-separated list of patterns. 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. | |
| }, | |
| ], | |
| "documentationRootUrl": "A String", # The URL to the root of documentation. | |
| "overview": "A String", # 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. | |
| "pages": [ # The top level pages for the documentation set. | |
| { # Represents a documentation page. A page can contain subpages to represent | |
| # nested documentation set structure. | |
| "content": "A String", # The Markdown content of the page. You can use <code>(== include {path} | |
| # ==)</code> to include content from a Markdown file. | |
| "subpages": [ # Subpages of this page. The order of subpages specified here will be | |
| # honored in the generated docset. | |
| # Object with schema name: Page | |
| ], | |
| "name": "A String", # 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`. | |
| }, | |
| ], | |
| "summary": "A String", # A short summary of what the service does. Can only be provided by | |
| # plain text. | |
| }, | |
| "sourceInfo": { # Source information used to create a Service Config # Output only. The source information for this configuration if available. | |
| "sourceFiles": [ # All files used during config generation. | |
| { | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| ], | |
| }, | |
| "systemTypes": [ # A list of all proto message types included in this API service. | |
| # It serves similar purpose as [google.api.Service.types], except that | |
| # these types are not needed by user-defined APIs. Therefore, they will not | |
| # show up in the generated discovery doc. This field should only be used | |
| # to define system APIs in ESF. | |
| { # A protocol buffer message type. | |
| "oneofs": [ # The list of types appearing in `oneof` definitions in this type. | |
| "A String", | |
| ], | |
| "name": "A String", # The fully qualified message name. | |
| "fields": [ # The list of fields. | |
| { # A single field of a message type. | |
| "kind": "A String", # The field type. | |
| "oneofIndex": 42, # The index of the field type in `Type.oneofs`, for message or enumeration | |
| # types. The first type has index 1; zero means the type is not in the list. | |
| "typeUrl": "A String", # The field type URL, without the scheme, for message or enumeration | |
| # types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. | |
| "name": "A String", # The field name. | |
| "defaultValue": "A String", # The string value of the default value of this field. Proto2 syntax only. | |
| "jsonName": "A String", # The field JSON name. | |
| "number": 42, # The field number. | |
| "cardinality": "A String", # The field cardinality. | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| "packed": True or False, # Whether to use alternative packed wire representation. | |
| }, | |
| ], | |
| "syntax": "A String", # The source syntax. | |
| "sourceContext": { # `SourceContext` represents information about the source of a # The source context. | |
| # protobuf element, like the file in which it is defined. | |
| "fileName": "A String", # The path-qualified name of the .proto file that contained the associated | |
| # protobuf element. For example: `"google/protobuf/source_context.proto"`. | |
| }, | |
| "options": [ # The protocol buffer options. | |
| { # A protocol buffer option, which can be attached to a message, field, | |
| # enumeration, etc. | |
| "name": "A String", # The option's name. For protobuf built-in options (options defined in | |
| # descriptor.proto), this is the short name. For example, `"map_entry"`. | |
| # For custom options, it should be the fully-qualified name. For example, | |
| # `"google.api.http"`. | |
| "value": { # The option's value packed in an Any message. If the value is a primitive, | |
| # the corresponding wrapper type defined in google/protobuf/wrappers.proto | |
| # should be used. If the value is an enum, it should be stored as an int32 | |
| # value using the google.protobuf.Int32Value type. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| }, | |
| ], | |
| }, | |
| ], | |
| "context": { # `Context` defines which contexts an API requests. # Context configuration. | |
| # | |
| # 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 whitelist 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. | |
| "rules": [ # A list of RPC context rules that apply to individual API methods. | |
| # | |
| # **NOTE:** All service configuration rules follow "last one wins" order. | |
| { # A context rule provides information about the context for an individual API | |
| # element. | |
| "provided": [ # A list of full type names of provided contexts. | |
| "A String", | |
| ], | |
| "allowedResponseExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from backend to client. | |
| "A String", | |
| ], | |
| "selector": "A String", # Selects the methods to which this rule applies. | |
| # | |
| # Refer to selector for syntax details. | |
| "allowedRequestExtensions": [ # A list of full type names or extension IDs of extensions allowed in grpc | |
| # side channel from client to backend. | |
| "A String", | |
| ], | |
| "requested": [ # A list of full type names of requested contexts. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| "endpoints": [ # 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. | |
| { # `Endpoint` describes a network endpoint that serves a set of APIs. | |
| # A service may expose any number of endpoints, and all endpoints share the | |
| # same service configuration, such as quota configuration and monitoring | |
| # configuration. | |
| # | |
| # Example service configuration: | |
| # | |
| # name: library-example.googleapis.com | |
| # endpoints: | |
| # # Below entry makes 'google.example.library.v1.Library' | |
| # # API be served from endpoint address library-example.googleapis.com. | |
| # # It also allows HTTP OPTIONS calls to be passed to the backend, for | |
| # # it to decide whether the subsequent cross-origin request is | |
| # # allowed to proceed. | |
| # - name: library-example.googleapis.com | |
| # allow_cors: true | |
| "allowCors": True or False, # 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. | |
| "target": "A String", # 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". | |
| "features": [ # The list of features enabled on this endpoint. | |
| "A String", | |
| ], | |
| "name": "A String", # The canonical name of this endpoint. | |
| "aliases": [ # DEPRECATED: This field is no longer supported. Instead of using aliases, | |
| # please specify multiple google.api.Endpoint for each of the intended | |
| # aliases. | |
| # | |
| # Additional names that this endpoint will be hosted on. | |
| "A String", | |
| ], | |
| }, | |
| ], | |
| }, | |
| ], | |
| }</pre> | |
| </div> | |
| <div class="method"> | |
| <code class="details" id="list_next">list_next(previous_request, previous_response)</code> | |
| <pre>Retrieves the next page of results. | |
| Args: | |
| previous_request: The request for the previous page. (required) | |
| previous_response: The response from the request for the previous page. (required) | |
| Returns: | |
| A request object that you can call 'execute()' on to request the next | |
| page. Returns None if there are no more items in the collection. | |
| </pre> | |
| </div> | |
| <div class="method"> | |
| <code class="details" id="submit">submit(serviceName, body, x__xgafv=None)</code> | |
| <pre>Creates a new service configuration (version) for a managed service based | |
| on | |
| user-supplied configuration source files (for example: OpenAPI | |
| Specification). This method stores the source configurations as well as the | |
| generated service configuration. To rollout the service configuration to | |
| other services, | |
| please call CreateServiceRollout. | |
| Only the 100 most recent configuration sources and ones referenced by | |
| existing service configurtions are kept for each service. The rest will be | |
| deleted eventually. | |
| Operation<response: SubmitConfigSourceResponse> | |
| Args: | |
| serviceName: string, The name of the service. See the [overview](/service-management/overview) | |
| for naming requirements. For example: `example.googleapis.com`. (required) | |
| body: object, The request body. (required) | |
| The object takes the form of: | |
| { # Request message for SubmitConfigSource method. | |
| "validateOnly": True or False, # Optional. If set, this will result in the generation of a | |
| # `google.api.Service` configuration based on the `ConfigSource` provided, | |
| # but the generated config and the sources will NOT be persisted. | |
| "configSource": { # Represents a source file which is used to generate the service configuration # The source configuration for the service. | |
| # defined by `google.api.Service`. | |
| "files": [ # Set of source configuration files that are used to generate a service | |
| # configuration (`google.api.Service`). | |
| { # Generic specification of a source configuration file | |
| "fileContents": "A String", # The bytes that constitute the file. | |
| "fileType": "A String", # The type of configuration file this represents. | |
| "filePath": "A String", # The file name of the configuration file (full or relative path). | |
| }, | |
| ], | |
| "id": "A String", # A unique ID for a specific instance of this message, typically assigned | |
| # by the client for tracking purpose. If empty, the server may choose to | |
| # generate one instead. | |
| }, | |
| } | |
| x__xgafv: string, V1 error format. | |
| Allowed values | |
| 1 - v1 error format | |
| 2 - v2 error format | |
| Returns: | |
| An object of the form: | |
| { # This resource represents a long-running operation that is the result of a | |
| # network API call. | |
| "response": { # The normal response of the operation in case of success. If the original | |
| # method returns no data on success, such as `Delete`, the response is | |
| # `google.protobuf.Empty`. If the original method is standard | |
| # `Get`/`Create`/`Update`, the response should be the resource. For other | |
| # methods, the response should have the type `XxxResponse`, where `Xxx` | |
| # is the original method name. For example, if the original method name | |
| # is `TakeSnapshot()`, the inferred response type is | |
| # `TakeSnapshotResponse`. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| "metadata": { # Service-specific metadata associated with the operation. It typically | |
| # contains progress information and common metadata such as create time. | |
| # Some services might not provide such metadata. Any method that returns a | |
| # long-running operation should document the metadata type, if any. | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| "done": True or False, # If the value is `false`, it means the operation is still in progress. | |
| # If `true`, the operation is completed, and either `error` or `response` is | |
| # available. | |
| "name": "A String", # The server-assigned name, which is only unique within the same service that | |
| # originally returns it. If you use the default HTTP mapping, the | |
| # `name` should be a resource name ending with `operations/{unique_id}`. | |
| "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation. | |
| # different programming environments, including REST APIs and RPC APIs. It is | |
| # used by [gRPC](https://github.com/grpc). Each `Status` message contains | |
| # three pieces of data: error code, error message, and error details. | |
| # | |
| # You can find out more about this error model and how to work with it in the | |
| # [API Design Guide](https://cloud.google.com/apis/design/errors). | |
| "message": "A String", # A developer-facing error message, which should be in English. Any | |
| # user-facing error message should be localized and sent in the | |
| # google.rpc.Status.details field, or localized by the client. | |
| "code": 42, # The status code, which should be an enum value of google.rpc.Code. | |
| "details": [ # A list of messages that carry the error details. There is a common set of | |
| # message types for APIs to use. | |
| { | |
| "a_key": "", # Properties of the object. Contains field @type with type URL. | |
| }, | |
| ], | |
| }, | |
| }</pre> | |
| </div> | |
| </body></html> |