Add core protos for Google APIs service config
This commit is contained in:
parent
f2327e9138
commit
26c21452b3
|
|
@ -0,0 +1,5 @@
|
|||
This folder contains the schema of the configuration model for the API services
|
||||
platform.
|
||||
|
||||
**Note**: Protos under this directory are in Alpha status, and therefore are
|
||||
subject to breaking changes.
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AuthProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// `Authentication` defines the authentication configuration for an API.
|
||||
//
|
||||
// Example for an API targeted for external use:
|
||||
//
|
||||
// name: calendar.googleapis.com
|
||||
// authentication:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// oauth:
|
||||
// canonical_scopes: https://www.googleapis.com/auth/calendar
|
||||
//
|
||||
// - selector: google.calendar.Delegate
|
||||
// oauth:
|
||||
// canonical_scopes: https://www.googleapis.com/auth/calendar.read
|
||||
message Authentication {
|
||||
// Individual rules for authentication.
|
||||
repeated AuthenticationRule rules = 3;
|
||||
|
||||
// Defines a set of authentication providers that a service supports.
|
||||
repeated AuthProvider providers = 4;
|
||||
}
|
||||
|
||||
// Authentication rules for the service.
|
||||
//
|
||||
// By default, if a method has any authentication requirements, every request
|
||||
// must include a valid credential matching one of the requirements.
|
||||
// It's an error to include more than one kind of credential in a single
|
||||
// request.
|
||||
//
|
||||
// If a method doesn't have any auth requirements, request credentials will be
|
||||
// ignored.
|
||||
//
|
||||
message AuthenticationRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// The requirements for OAuth credentials.
|
||||
OAuthRequirements oauth = 2;
|
||||
|
||||
// Whether to allow requests without a credential. If quota is enabled, an
|
||||
// API key is required for such request to pass the quota check.
|
||||
//
|
||||
bool allow_without_credential = 5;
|
||||
|
||||
// Requirements for additional authentication providers.
|
||||
repeated AuthRequirement requirements = 7;
|
||||
}
|
||||
|
||||
// Configuration for an anthentication provider, including support for
|
||||
// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
|
||||
message AuthProvider {
|
||||
// The unique identifier of the auth provider. It will be referred to by
|
||||
// `AuthRequirement.provider_id`.
|
||||
//
|
||||
// Example: "bookstore_auth".
|
||||
string id = 1;
|
||||
|
||||
// Identifies the principal that issued the JWT. See
|
||||
// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
|
||||
// Usually a URL or an email address.
|
||||
//
|
||||
// Example: https://securetoken.google.com
|
||||
// Example: 1234567-compute@developer.gserviceaccount.com
|
||||
string issuer = 2;
|
||||
|
||||
// URL of the provider's public key set to validate signature of the JWT. See
|
||||
// [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
|
||||
// Optional if the key set document:
|
||||
// - can be retrieved from
|
||||
// [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
|
||||
// of the issuer.
|
||||
// - can be inferred from the email domain of the issuer (e.g. a Google service account).
|
||||
//
|
||||
// Example: https://www.googleapis.com/oauth2/v1/certs
|
||||
string jwks_uri = 3;
|
||||
}
|
||||
|
||||
// OAuth scopes are a way to define data and permissions on data. For example,
|
||||
// there are scopes defined for "Read-only access to Google Calendar" and
|
||||
// "Access to Cloud Platform". Users can consent to a scope for an application,
|
||||
// giving it permission to access that data on their behalf.
|
||||
//
|
||||
// OAuth scope specifications should be fairly coarse grained; a user will need
|
||||
// to see and understand the text description of what your scope means.
|
||||
//
|
||||
// In most cases: use one or at most two OAuth scopes for an entire family of
|
||||
// products. If your product has multiple APIs, you should probably be sharing
|
||||
// the OAuth scope across all of those APIs.
|
||||
//
|
||||
// When you need finer grained OAuth consent screens: talk with your product
|
||||
// management about how developers will use them in practice.
|
||||
//
|
||||
// Please note that even though each of the canonical scopes is enough for a
|
||||
// request to be accepted and passed to the backend, a request can still fail
|
||||
// due to the backend requiring additional scopes or permissions.
|
||||
//
|
||||
message OAuthRequirements {
|
||||
// The list of publicly documented OAuth scopes that are allowed access. An
|
||||
// OAuth token containing any of these scopes will be accepted.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// canonical_scopes: https://www.googleapis.com/auth/calendar,
|
||||
// https://www.googleapis.com/auth/calendar.read
|
||||
string canonical_scopes = 1;
|
||||
}
|
||||
|
||||
// User-defined authentication requirements, including support for
|
||||
// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
|
||||
message AuthRequirement {
|
||||
// [id][google.api.AuthProvider.id] from authentication provider.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// provider_id: bookstore_auth
|
||||
string provider_id = 1;
|
||||
|
||||
// The list of JWT
|
||||
// [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
|
||||
// that are allowed to access. A JWT containing any of these audiences will
|
||||
// be accepted. When this setting is absent, only JWTs with audience
|
||||
// "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]"
|
||||
// will be accepted. For example, if no audiences are in the setting,
|
||||
// LibraryService API will only accept JWTs with the following audience
|
||||
// "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// audiences: bookstore_android.apps.googleusercontent.com,
|
||||
// bookstore_web.apps.googleusercontent.com
|
||||
string audiences = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "BackendProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// `Backend` defines the backend configuration for a service.
|
||||
message Backend {
|
||||
// A list of backend rules providing configuration for individual API
|
||||
// elements.
|
||||
repeated BackendRule rules = 1;
|
||||
}
|
||||
|
||||
// A backend rule provides configuration for an individual API element.
|
||||
message BackendRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// The address of the API backend.
|
||||
//
|
||||
string address = 2;
|
||||
|
||||
// The number of seconds to wait for a response from a request. The
|
||||
// default depends on the deployment context.
|
||||
double deadline = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/metric.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "BillingProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Billing related configuration of the service.
|
||||
//
|
||||
// The following example shows how to configure metrics for billing:
|
||||
//
|
||||
// metrics:
|
||||
// - name: library.googleapis.com/read_calls
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
// - name: library.googleapis.com/write_calls
|
||||
// metric_kind: DELTA
|
||||
// value_type: INT64
|
||||
// billing:
|
||||
// metrics:
|
||||
// - library.googleapis.com/read_calls
|
||||
// - library.googleapis.com/write_calls
|
||||
//
|
||||
// The next example shows how to enable billing status check and customize the
|
||||
// check behavior. It makes sure billing status check is included in the `Check`
|
||||
// method of [Service Control API](https://cloud.google.com/service-control/).
|
||||
// In the example, "google.storage.Get" method can be served when the billing
|
||||
// status is either `current` or `delinquent`, while "google.storage.Write"
|
||||
// method can only be served when the billing status is `current`:
|
||||
//
|
||||
// billing:
|
||||
// rules:
|
||||
// - selector: google.storage.Get
|
||||
// allowed_statuses:
|
||||
// - current
|
||||
// - delinquent
|
||||
// - selector: google.storage.Write
|
||||
// allowed_statuses: current
|
||||
//
|
||||
// Mostly services should only allow `current` status when serving requests.
|
||||
// In addition, services can choose to allow both `current` and `delinquent`
|
||||
// statuses when serving read-only requests to resources. If there's no
|
||||
// matching selector for operation, no billing status check will be performed.
|
||||
//
|
||||
message Billing {
|
||||
// Names of the metrics to report to billing. Each name must
|
||||
// be defined in [Service.metrics][google.api.Service.metrics] section.
|
||||
repeated string metrics = 1;
|
||||
|
||||
// A list of billing status rules for configuring billing status check.
|
||||
repeated BillingStatusRule rules = 5;
|
||||
}
|
||||
|
||||
// Defines the billing status requirements for operations.
|
||||
//
|
||||
// When used with
|
||||
// [Service Control API](https://cloud.google.com/service-control/), the
|
||||
// following statuses are supported:
|
||||
//
|
||||
// - **current**: the associated billing account is up to date and capable of
|
||||
// paying for resource usages.
|
||||
// - **delinquent**: the associated billing account has a correctable problem,
|
||||
// such as late payment.
|
||||
//
|
||||
// Mostly services should only allow `current` status when serving requests.
|
||||
// In addition, services can choose to allow both `current` and `delinquent`
|
||||
// statuses when serving read-only requests to resources. If the list of
|
||||
// allowed_statuses is empty, it means no billing requirement.
|
||||
//
|
||||
message BillingStatusRule {
|
||||
// Selects the operation names to which this rule applies.
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// Allowed billing statuses. The billing status check passes if the actual
|
||||
// billing status matches any of the provided values here.
|
||||
repeated string allowed_statuses = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ConsumerProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// A descriptor for defining project properties for a service. One service may
|
||||
// have many consumer projects, and the service may want to behave differently
|
||||
// depending on some properties on the project. For example, a project may be
|
||||
// associated with a school, or a business, or a government agency, a business
|
||||
// type property on the project may affect how a service responds to the client.
|
||||
// This descriptor defines which properties are allowed to be set on a project.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// project_properties:
|
||||
// properties:
|
||||
// - name: NO_WATERMARK
|
||||
// type: BOOL
|
||||
// description: Allows usage of the API without watermarks.
|
||||
// - name: EXTENDED_TILE_CACHE_PERIOD
|
||||
// type: INT64
|
||||
message ProjectProperties {
|
||||
// List of per consumer project-specific properties.
|
||||
repeated Property properties = 1;
|
||||
}
|
||||
|
||||
// Defines project properties.
|
||||
//
|
||||
// API services can define properties that can be assigned to consumer projects
|
||||
// so that backends can perform response customization without having to make
|
||||
// additional calls or maintain additional storage. For example, Maps API
|
||||
// defines properties that controls map tile cache period, or whether to embed a
|
||||
// watermark in a result.
|
||||
//
|
||||
// These values can be set via API producer console. Only API providers can
|
||||
// define and set these properties.
|
||||
message Property {
|
||||
// Supported data type of the property values
|
||||
enum PropertyType {
|
||||
// The type is unspecified, and will result in an error.
|
||||
UNSPECIFIED = 0;
|
||||
|
||||
// The type is `int64`.
|
||||
INT64 = 1;
|
||||
|
||||
// The type is `bool`.
|
||||
BOOL = 2;
|
||||
|
||||
// The type is `string`.
|
||||
STRING = 3;
|
||||
|
||||
// The type is 'double'.
|
||||
DOUBLE = 4;
|
||||
}
|
||||
|
||||
// The name of the property (a.k.a key).
|
||||
string name = 1;
|
||||
|
||||
// The type of this property.
|
||||
PropertyType type = 2;
|
||||
|
||||
// The description of the property
|
||||
string description = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ContextProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// `Context` defines which contexts an API requests.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// context:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// requested:
|
||||
// - google.rpc.context.ProjectContext
|
||||
// - google.rpc.context.OriginContext
|
||||
//
|
||||
// The above specifies that all methods in the API request
|
||||
// `google.rpc.context.ProjectContext` and
|
||||
// `google.rpc.context.OriginContext`.
|
||||
//
|
||||
// Available context types are defined in package
|
||||
// `google.rpc.context`.
|
||||
message Context {
|
||||
// List of rules for context, applicable to methods.
|
||||
repeated ContextRule rules = 1;
|
||||
}
|
||||
|
||||
// A context rule provides information about the context for an individual API
|
||||
// element.
|
||||
message ContextRule {
|
||||
// Selects the methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// A list of full type names of requested contexts.
|
||||
repeated string requested = 2;
|
||||
|
||||
// A list of full type names of provided contexts.
|
||||
repeated string provided = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ControlProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Selects and configures the service controller used by the service. The
|
||||
// service controller handles features like abuse, quota, billing, logging,
|
||||
// monitoring, etc.
|
||||
//
|
||||
message Control {
|
||||
// The service control environment to use. If empty, no control plane
|
||||
// feature (like quota and billing) will be enabled.
|
||||
string environment = 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,155 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "DocumentationProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// `Documentation` provides the information for describing a service.
|
||||
//
|
||||
// Example:
|
||||
// <pre><code>documentation:
|
||||
// summary: >
|
||||
// The Google Calendar API gives access
|
||||
// to most calendar features.
|
||||
// pages:
|
||||
// - name: Overview
|
||||
// content: (== include google/foo/overview.md ==)
|
||||
// - name: Tutorial
|
||||
// content: (== include google/foo/tutorial.md ==)
|
||||
// subpages;
|
||||
// - name: Java
|
||||
// content: (== include google/foo/tutorial_java.md ==)
|
||||
// rules:
|
||||
// - selector: google.calendar.Calendar.Get
|
||||
// description: >
|
||||
// ...
|
||||
// - selector: google.calendar.Calendar.Put
|
||||
// description: >
|
||||
// ...
|
||||
// </code></pre>
|
||||
// Documentation is provided in markdown syntax. In addition to
|
||||
// standard markdown features, definition lists, tables and fenced
|
||||
// code blocks are supported. Section headers can be provided and are
|
||||
// interpreted relative to the section nesting of the context where
|
||||
// a documentation fragment is embedded.
|
||||
//
|
||||
// Documentation from the IDL is merged with documentation defined
|
||||
// via the config at normalization time, where documentation provided
|
||||
// by config rules overrides IDL provided.
|
||||
//
|
||||
// A number of constructs specific to the API platform are supported
|
||||
// in documentation text.
|
||||
//
|
||||
// In order to reference a proto element, the following
|
||||
// notation can be used:
|
||||
// <pre><code>[fully.qualified.proto.name][]</code></pre>
|
||||
// To override the display text used for the link, this can be used:
|
||||
// <pre><code>[display text][fully.qualified.proto.name]</code></pre>
|
||||
// Text can be excluded from doc using the following notation:
|
||||
// <pre><code>(-- internal comment --)</code></pre>
|
||||
// Comments can be made conditional using a visibility label. The below
|
||||
// text will be only rendered if the `BETA` label is available:
|
||||
// <pre><code>(--BETA: comment for BETA users --)</code></pre>
|
||||
// A few directives are available in documentation. Note that
|
||||
// directives must appear on a single line to be properly
|
||||
// identified. The `include` directive includes a markdown file from
|
||||
// an external source:
|
||||
// <pre><code>(== include path/to/file ==)</code></pre>
|
||||
// The `resource_for` directive marks a message to be the resource of
|
||||
// a collection in REST view. If it is not specified, tools attempt
|
||||
// to infer the resource from the operations in a collection:
|
||||
// <pre><code>(== resource_for v1.shelves.books ==)</code></pre>
|
||||
// The directive `suppress_warning` does not directly affect documentation
|
||||
// and is documented together with service config validation.
|
||||
message Documentation {
|
||||
// A short summary of what the service does. Can only be provided by
|
||||
// plain text.
|
||||
string summary = 1;
|
||||
|
||||
// The top level pages for the documentation set.
|
||||
repeated Page pages = 5;
|
||||
|
||||
// Documentation rules for individual elements of the service.
|
||||
repeated DocumentationRule rules = 3;
|
||||
|
||||
// The URL to the root of documentation.
|
||||
string documentation_root_url = 4;
|
||||
|
||||
// Declares a single overview page. For example:
|
||||
// <pre><code>documentation:
|
||||
// summary: ...
|
||||
// overview: (== include overview.md ==)
|
||||
// </code></pre>
|
||||
// This is a shortcut for the following declaration (using pages style):
|
||||
// <pre><code>documentation:
|
||||
// summary: ...
|
||||
// pages:
|
||||
// - name: Overview
|
||||
// content: (== include overview.md ==)
|
||||
// </code></pre>
|
||||
// Note: you cannot specify both `overview` field and `pages` field.
|
||||
string overview = 2;
|
||||
}
|
||||
|
||||
// A documentation rule provides information about individual API elements.
|
||||
message DocumentationRule {
|
||||
// The selector is a comma-separated list of patterns. 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". To
|
||||
// specify a default for all applicable elements, the whole pattern "*"
|
||||
// is used.
|
||||
string selector = 1;
|
||||
|
||||
// Description of the selected API(s).
|
||||
string description = 2;
|
||||
|
||||
// Deprecation description of the selected element(s). It can be provided if an
|
||||
// element is marked as `deprecated`.
|
||||
string deprecation_description = 3;
|
||||
}
|
||||
|
||||
// Represents a documentation page. A page can contain subpages to represent
|
||||
// nested documentation set structure.
|
||||
message Page {
|
||||
// The name of the page. It will be used as an identity of the page to
|
||||
// generate URI of the page, text of the link to this page in navigation,
|
||||
// etc. The full page name (start from the root page name to this page
|
||||
// concatenated with `.`) can be used as reference to the page in your
|
||||
// documentation. For example:
|
||||
// <pre><code>pages:
|
||||
// - name: Tutorial
|
||||
// content: (== include tutorial.md ==)
|
||||
// subpages:
|
||||
// - name: Java
|
||||
// content: (== include tutorial_java.md ==)
|
||||
// </code></pre>
|
||||
// You can reference `Java` page using Markdown reference link syntax:
|
||||
// `[Java][Tutorial.Java]`.
|
||||
string name = 1;
|
||||
|
||||
// The Markdown content of the page. You can use <code>(== include {path} ==)</code>
|
||||
// to include content from a Markdown file.
|
||||
string content = 2;
|
||||
|
||||
// Subpages of this page. The order of subpages specified here will be
|
||||
// honored in the generated docset.
|
||||
repeated Page subpages = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/label.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LogProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// A description of a log type. Example in YAML format:
|
||||
//
|
||||
// - name: library.googleapis.com/activity_history
|
||||
// description: The history of borrowing and returning library items.
|
||||
// display_name: Activity
|
||||
// labels:
|
||||
// - key: /customer_id
|
||||
// description: Identifier of a library customer
|
||||
message LogDescriptor {
|
||||
// The name of the log. It must be less than 512 characters long and can
|
||||
// include the following characters: upper- and lower-case alphanumeric
|
||||
// characters [A-Za-z0-9], and punctuation characters including
|
||||
// slash, underscore, hyphen, period [/_-.].
|
||||
string name = 1;
|
||||
|
||||
// The set of labels that are available to describe a specific log entry.
|
||||
// Runtime requests that contain labels not specified here are
|
||||
// considered invalid.
|
||||
repeated LabelDescriptor labels = 2;
|
||||
|
||||
// A human-readable description of this log. This information appears in
|
||||
// the documentation and can contain details.
|
||||
string description = 3;
|
||||
|
||||
// The human-readable name for this log. This information appears on
|
||||
// the user interface and should be concise.
|
||||
string display_name = 4;
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "LoggingProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Logging configuration of the service.
|
||||
//
|
||||
// The following example shows how to configure logs to be sent to the
|
||||
// producer and consumer projects. In the example,
|
||||
// the `library.googleapis.com/activity_history` log is
|
||||
// sent to both the producer and consumer projects, whereas
|
||||
// the `library.googleapis.com/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: library.googleapis.com/activity_history
|
||||
// labels:
|
||||
// - key: /customer_id
|
||||
// - name: library.googleapis.com/purchase_history
|
||||
// logging:
|
||||
// producer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/branch
|
||||
// logs:
|
||||
// - library.googleapis.com/activity_history
|
||||
// - library.googleapis.com/purchase_history
|
||||
// consumer_destinations:
|
||||
// - monitored_resource: library.googleapis.com/branch
|
||||
// logs:
|
||||
// - library.googleapis.com/activity_history
|
||||
//
|
||||
message Logging {
|
||||
// Configuration of a specific logging destination (the producer project
|
||||
// or the consumer project).
|
||||
message LoggingDestination {
|
||||
// The monitored resource type. The type must be defined in
|
||||
// [Service.monitored_resources][google.api.Service.monitored_resources] section.
|
||||
string monitored_resource = 3;
|
||||
|
||||
// Names of the logs to be sent to this destination. Each name must
|
||||
// be defined in the [Service.logs][google.api.Service.logs] section.
|
||||
repeated string logs = 1;
|
||||
}
|
||||
|
||||
// Logging configurations for sending logs to the producer project.
|
||||
// There can be multiple producer destinations, each one must have a
|
||||
// different monitored resource type. A log can be used in at most
|
||||
// one producer destination.
|
||||
repeated LoggingDestination producer_destinations = 1;
|
||||
|
||||
// Logging configurations for sending logs to the consumer project.
|
||||
// There can be multiple consumer destinations, each one must have a
|
||||
// different monitored resource type. A log can be used in at most
|
||||
// one consumer destination.
|
||||
repeated LoggingDestination consumer_destinations = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/label.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MetricProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Defines a metric type and its schema.
|
||||
message MetricDescriptor {
|
||||
// The kind of measurement. It describes how the data is reported.
|
||||
enum MetricKind {
|
||||
// Do not use this default value.
|
||||
METRIC_KIND_UNSPECIFIED = 0;
|
||||
|
||||
// Instantaneous measurements of a varying quantity.
|
||||
GAUGE = 1;
|
||||
|
||||
// Changes over non-overlapping time intervals.
|
||||
DELTA = 2;
|
||||
|
||||
// Cumulative value over time intervals that can overlap.
|
||||
// The overlapping intervals must have the same start time.
|
||||
CUMULATIVE = 3;
|
||||
}
|
||||
|
||||
// The value type of a metric.
|
||||
enum ValueType {
|
||||
// Do not use this default value.
|
||||
VALUE_TYPE_UNSPECIFIED = 0;
|
||||
|
||||
// The value is a boolean.
|
||||
// This value type can be used only if the metric kind is `GAUGE`.
|
||||
BOOL = 1;
|
||||
|
||||
// The value is a signed 64-bit integer.
|
||||
INT64 = 2;
|
||||
|
||||
// The value is a double precision floating point number.
|
||||
DOUBLE = 3;
|
||||
|
||||
// The value is a text string.
|
||||
// This value type can be used only if the metric kind is `GAUGE`.
|
||||
STRING = 4;
|
||||
|
||||
// The value is a [`Distribution`][google.api.Distribution].
|
||||
DISTRIBUTION = 5;
|
||||
|
||||
// The value is money.
|
||||
MONEY = 6;
|
||||
}
|
||||
|
||||
// Resource name. The format of the name may vary between different
|
||||
// implementations. For examples:
|
||||
//
|
||||
// projects/{project_id}/metricDescriptors/{type=**}
|
||||
// metricDescriptors/{type=**}
|
||||
string name = 1;
|
||||
|
||||
// The metric type including a DNS name prefix, for example
|
||||
// `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
|
||||
// should use a natural hierarchical grouping such as the following:
|
||||
//
|
||||
// compute.googleapis.com/instance/cpu/utilization
|
||||
// compute.googleapis.com/instance/disk/read_ops_count
|
||||
// compute.googleapis.com/instance/network/received_bytes_count
|
||||
//
|
||||
// Note that if the metric type changes, the monitoring data will be
|
||||
// discontinued, and anything depends on it will break, such as monitoring
|
||||
// dashboards, alerting rules and quota limits. Therefore, once a metric has
|
||||
// been published, its type should be immutable.
|
||||
string type = 8;
|
||||
|
||||
// The set of labels that can be used to describe a specific instance of this
|
||||
// metric type. For example, the
|
||||
// `compute.googleapis.com/instance/network/received_bytes_count` metric type
|
||||
// has a label, `loadbalanced`, that specifies whether the traffic was
|
||||
// received through a load balanced IP address.
|
||||
repeated LabelDescriptor labels = 2;
|
||||
|
||||
// Whether the metric records instantaneous values, changes to a value, etc.
|
||||
MetricKind metric_kind = 3;
|
||||
|
||||
// Whether the measurement is an integer, a floating-point number, etc.
|
||||
ValueType value_type = 4;
|
||||
|
||||
// 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 includes the dimensionless unit `1`, such as `1/s`.
|
||||
//
|
||||
// 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 '}'.
|
||||
string unit = 5;
|
||||
|
||||
// A detailed description of the metric, which can be used in documentation.
|
||||
string description = 6;
|
||||
|
||||
// A concise name for the metric, which can be displayed in user interfaces.
|
||||
// Use sentence case without an ending period, for example "Request count".
|
||||
string display_name = 7;
|
||||
}
|
||||
|
||||
// A specific metric identified by specifying values for all of the
|
||||
// labels of a [`MetricDescriptor`][google.api.MetricDescriptor].
|
||||
message Metric {
|
||||
// An existing metric type, see [google.api.MetricDescriptor][google.api.MetricDescriptor].
|
||||
// For example, `compute.googleapis.com/instance/cpu/usage_time`.
|
||||
string type = 3;
|
||||
|
||||
// The set of labels that uniquely identify a metric. To specify a
|
||||
// metric, all labels enumerated in the `MetricDescriptor` must be
|
||||
// assigned values.
|
||||
map<string, string> labels = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "MonitoringProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Monitoring configuration of the service.
|
||||
//
|
||||
// The example below shows how to configure monitored resources and metrics
|
||||
// for monitoring. In the example, a monitored resource and two metrics are
|
||||
// defined. The `library.googleapis.com/book/returned_count` metric is sent
|
||||
// to both producer and consumer projects, whereas the
|
||||
// `library.googleapis.com/book/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
|
||||
//
|
||||
message Monitoring {
|
||||
// Configuration of a specific monitoring destination (the producer project
|
||||
// or the consumer project).
|
||||
message MonitoringDestination {
|
||||
// The monitored resource type. The type must be defined in
|
||||
// [Service.monitored_resources][google.api.Service.monitored_resources] section.
|
||||
string monitored_resource = 1;
|
||||
|
||||
// Names of the metrics to report to this monitoring destination.
|
||||
// Each name must be defined in [Service.metrics][google.api.Service.metrics] section.
|
||||
repeated string metrics = 2;
|
||||
}
|
||||
|
||||
// Monitoring configurations for sending metrics to the producer project.
|
||||
// There can be multiple producer destinations, each one must have a
|
||||
// different monitored resource type. A metric can be used in at most
|
||||
// one producer destination.
|
||||
repeated MonitoringDestination producer_destinations = 1;
|
||||
|
||||
// Monitoring configurations for sending metrics to the consumer project.
|
||||
// There can be multiple consumer destinations, each one must have a
|
||||
// different monitored resource type. A metric can be used in at most
|
||||
// one consumer destination.
|
||||
repeated MonitoringDestination consumer_destinations = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "google/api/auth.proto";
|
||||
import "google/api/backend.proto";
|
||||
import "google/api/billing.proto";
|
||||
import "google/api/consumer.proto";
|
||||
import "google/api/context.proto";
|
||||
import "google/api/control.proto";
|
||||
import "google/api/documentation.proto";
|
||||
import "google/api/http.proto";
|
||||
import "google/api/label.proto";
|
||||
import "google/api/log.proto";
|
||||
import "google/api/logging.proto";
|
||||
import "google/api/metric.proto";
|
||||
import "google/api/monitored_resource.proto";
|
||||
import "google/api/monitoring.proto";
|
||||
import "google/api/system_parameter.proto";
|
||||
import "google/api/usage.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/protobuf/api.proto";
|
||||
import "google/protobuf/type.proto";
|
||||
import "google/protobuf/wrappers.proto";
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "ServiceProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// `Service` is the root object of the configuration schema. It
|
||||
// describes basic information like the name of the service and the
|
||||
// exposed API interfaces, and delegates other aspects to configuration
|
||||
// sub-sections.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// type: google.api.Service
|
||||
// config_version: 1
|
||||
// name: calendar.googleapis.com
|
||||
// title: Google Calendar API
|
||||
// apis:
|
||||
// - name: google.calendar.Calendar
|
||||
// backend:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// address: calendar.example.com
|
||||
message Service {
|
||||
// The version of the service configuration. The config version may
|
||||
// influence interpretation of the configuration, for example, to
|
||||
// determine defaults. This is documented together with applicable
|
||||
// options. The current default for the config version itself is `3`.
|
||||
google.protobuf.UInt32Value config_version = 20;
|
||||
|
||||
// The DNS address at which this service is available,
|
||||
// e.g. `calendar.googleapis.com`.
|
||||
string name = 1;
|
||||
|
||||
// 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.
|
||||
string id = 33;
|
||||
|
||||
// The product title associated with this service.
|
||||
string title = 2;
|
||||
|
||||
// The id of the Google developer project that owns the service.
|
||||
// Members of this project can manage the service configuration,
|
||||
// manage consumption of the service, etc.
|
||||
string producer_project_id = 22;
|
||||
|
||||
// A list of API interfaces exported by this service. Only the `name` field
|
||||
// of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration
|
||||
// author, as the remaining fields will be derived from the IDL during the
|
||||
// normalization process. It is an error to specify an API interface here
|
||||
// which cannot be resolved against the associated IDL files.
|
||||
repeated google.protobuf.Api apis = 3;
|
||||
|
||||
// A list of all proto message types included in this API service.
|
||||
// Types referenced directly or indirectly by the `apis` are
|
||||
// automatically included. Messages which are not referenced but
|
||||
// shall be included, such as types used by the `google.protobuf.Any` type,
|
||||
// should be listed here by name. Example:
|
||||
//
|
||||
// types:
|
||||
// - name: google.protobuf.Int32
|
||||
repeated google.protobuf.Type types = 4;
|
||||
|
||||
// A list of all enum types included in this API service. Enums
|
||||
// referenced directly or indirectly by the `apis` are automatically
|
||||
// included. Enums which are not referenced but shall be included
|
||||
// should be listed here by name. Example:
|
||||
//
|
||||
// enums:
|
||||
// - name: google.someapi.v1.SomeEnum
|
||||
repeated google.protobuf.Enum enums = 5;
|
||||
|
||||
// Additional API documentation.
|
||||
Documentation documentation = 6;
|
||||
|
||||
// API backend configuration.
|
||||
Backend backend = 8;
|
||||
|
||||
// HTTP configuration.
|
||||
Http http = 9;
|
||||
|
||||
// Auth configuration.
|
||||
Authentication authentication = 11;
|
||||
|
||||
// Context configuration.
|
||||
Context context = 12;
|
||||
|
||||
// Configuration controlling usage of this service.
|
||||
Usage usage = 15;
|
||||
|
||||
// Configuration of per-consumer project properties.
|
||||
ProjectProperties project_properties = 17;
|
||||
|
||||
// Configuration for the service control plane.
|
||||
Control control = 21;
|
||||
|
||||
// Defines the logs used by this service.
|
||||
repeated LogDescriptor logs = 23;
|
||||
|
||||
// Defines the metrics used by this service.
|
||||
repeated MetricDescriptor metrics = 24;
|
||||
|
||||
// Defines the monitored resources used by this service. This is required
|
||||
// by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations.
|
||||
//
|
||||
repeated MonitoredResourceDescriptor monitored_resources = 25;
|
||||
|
||||
// Billing configuration of the service.
|
||||
Billing billing = 26;
|
||||
|
||||
// Logging configuration of the service.
|
||||
Logging logging = 27;
|
||||
|
||||
// Monitoring configuration of the service.
|
||||
Monitoring monitoring = 28;
|
||||
|
||||
// Configuration for system parameters.
|
||||
SystemParameters system_parameters = 29;
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "SystemParameterProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// ### System parameter configuration
|
||||
//
|
||||
// A system parameter is a special kind of parameter defined by the API
|
||||
// system, not by an individual API. It is typically mapped to an HTTP header
|
||||
// and/or a URL query parameter. This configuration specifies which methods
|
||||
// change the names of the system parameters.
|
||||
message SystemParameters {
|
||||
// Define system parameters.
|
||||
//
|
||||
// The parameters defined here will override the default parameters
|
||||
// implemented by the system. If this field is missing from the service
|
||||
// config, default system parameters will be used. Default system parameters
|
||||
// and names is implementation-dependent.
|
||||
//
|
||||
// Example: define api key and alt name for all methods
|
||||
//
|
||||
// SystemParameters
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// parameters:
|
||||
// - name: api_key
|
||||
// url_query_parameter: api_key
|
||||
// - name: alt
|
||||
// http_header: Response-Content-Type
|
||||
//
|
||||
// Example: define 2 api key names for a specific method.
|
||||
//
|
||||
// SystemParameters
|
||||
// rules:
|
||||
// - selector: "/ListShelves"
|
||||
// parameters:
|
||||
// - name: api_key
|
||||
// http_header: Api-Key1
|
||||
// - name: api_key
|
||||
// http_header: Api-Key2
|
||||
repeated SystemParameterRule rules = 1;
|
||||
}
|
||||
|
||||
// Define a system parameter rule mapping system parameter definitions to
|
||||
// methods.
|
||||
message SystemParameterRule {
|
||||
// Selects the methods to which this rule applies. Use '*' to indicate all
|
||||
// methods in all APIs.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// Define parameters. Multiple names may be defined for a parameter.
|
||||
// For a given method call, only one of them should be used. If multiple
|
||||
// names are used the behavior is implementation-dependent.
|
||||
// If none of the specified names are present the behavior is
|
||||
// parameter-dependent.
|
||||
repeated SystemParameter parameters = 2;
|
||||
}
|
||||
|
||||
// Define a parameter's name and location. The parameter may be passed as either
|
||||
// an HTTP header or a URL query parameter, and if both are passed the behavior
|
||||
// is implementation-dependent.
|
||||
message SystemParameter {
|
||||
// Define the name of the parameter, such as "api_key", "alt", "callback",
|
||||
// and etc. It is case sensitive.
|
||||
string name = 1;
|
||||
|
||||
// Define the HTTP header name to use for the parameter. It is case
|
||||
// insensitive.
|
||||
string http_header = 2;
|
||||
|
||||
// Define the URL query parameter name to use for the parameter. It is case
|
||||
// sensitive.
|
||||
string url_query_parameter = 3;
|
||||
}
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
// Copyright 2016 Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "UsageProto";
|
||||
option java_package = "com.google.api";
|
||||
|
||||
|
||||
// Configuration controlling usage of a service.
|
||||
message Usage {
|
||||
// Service access types.
|
||||
//
|
||||
// Access to restricted API features is always controlled by
|
||||
// [visibility][google.api.Visibility], independent of the ServiceAccess type.
|
||||
//
|
||||
enum ServiceAccess {
|
||||
// The service can only be seen/used by users identified in the service's
|
||||
// access control policy.
|
||||
//
|
||||
// If the service has not been whitelisted by your domain administrator
|
||||
// for out-of-org publishing, then this mode will be treated like
|
||||
// ORG_RESTRICTED.
|
||||
RESTRICTED = 0;
|
||||
|
||||
// The service can be seen/used by anyone.
|
||||
//
|
||||
// If the service has not been whitelisted by your domain administrator
|
||||
// for out-of-org publishing, then this mode will be treated like
|
||||
// ORG_PUBLIC.
|
||||
//
|
||||
// The discovery document for the service will also be public and allow
|
||||
// unregistered access.
|
||||
PUBLIC = 1;
|
||||
|
||||
// The service can be seen/used by users identified in the service's
|
||||
// access control policy and they are within the organization that owns the
|
||||
// service.
|
||||
//
|
||||
// Access is further constrained to the group
|
||||
// controlled by the administrator of the project/org that owns the
|
||||
// service.
|
||||
ORG_RESTRICTED = 2;
|
||||
|
||||
// The service can be seen/used by the group of users controlled by the
|
||||
// administrator of the project/org that owns the service.
|
||||
ORG_PUBLIC = 3;
|
||||
}
|
||||
|
||||
// Controls which users can see or activate the service.
|
||||
ServiceAccess service_access = 4;
|
||||
|
||||
// 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'.
|
||||
repeated string requirements = 1;
|
||||
|
||||
// Services that must be activated in order for this service to be used.
|
||||
// The set of services activated as a result of these relations are all
|
||||
// activated in parallel with no guaranteed order of activation.
|
||||
// Each string is a service name, e.g. `calendar.googleapis.com`.
|
||||
repeated string depends_on_services = 2;
|
||||
|
||||
// Services that must be contacted before a consumer can begin using the
|
||||
// service. Each service will be contacted in sequence, and, if any activation
|
||||
// call fails, the entire activation will fail. Each hook is of the form
|
||||
// <service.name>/<hook-id>, where <hook-id> is optional; for example:
|
||||
// 'robotservice.googleapis.com/default'.
|
||||
repeated string activation_hooks = 3;
|
||||
|
||||
// Services that must be contacted before a consumer can deactivate a
|
||||
// service. Each service will be contacted in sequence, and, if any
|
||||
// deactivation call fails, the entire deactivation will fail. Each hook is
|
||||
// of the form <service.name>/<hook-id>, where <hook-id> is optional; for
|
||||
// example:
|
||||
// 'compute.googleapis.com/'.
|
||||
repeated string deactivation_hooks = 5;
|
||||
|
||||
// Individual rules for configuring usage on selected methods.
|
||||
repeated UsageRule rules = 6;
|
||||
}
|
||||
|
||||
// Usage configuration rules for the service.
|
||||
//
|
||||
// NOTE: Under development.
|
||||
//
|
||||
//
|
||||
// Use this rule to configure unregistered calls for the service. Unregistered
|
||||
// calls are calls that do not contain consumer project identity.
|
||||
// (Example: calls that do not contain an API key).
|
||||
// By default, API methods do not allow unregistered calls, and each method call
|
||||
// must be identified by a consumer project identity. Use this rule to
|
||||
// allow/disallow unregistered calls.
|
||||
//
|
||||
// Example of an API that wants to allow unregistered calls for entire service.
|
||||
//
|
||||
// usage:
|
||||
// rules:
|
||||
// - selector: "*"
|
||||
// allow_unregistered_calls: true
|
||||
//
|
||||
// Example of a method that wants to allow unregistered calls.
|
||||
//
|
||||
// usage:
|
||||
// rules:
|
||||
// - selector: "google.example.library.v1.LibraryService.CreateBook"
|
||||
// allow_unregistered_calls: true
|
||||
message UsageRule {
|
||||
// Selects the methods to which this rule applies. Use '*' to indicate all
|
||||
// methods in all APIs.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// True, if the method allows unregistered calls; false otherwise.
|
||||
bool allow_unregistered_calls = 2;
|
||||
}
|
||||
Loading…
Reference in New Issue