86 lines
3.2 KiB
Protocol Buffer
86 lines
3.2 KiB
Protocol Buffer
|
// Copyright 2023 Google LLC
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
syntax = "proto3";
|
||
|
|
||
|
package google.api;
|
||
|
|
||
|
import "google/protobuf/descriptor.proto";
|
||
|
|
||
|
option cc_enable_arenas = true;
|
||
|
option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
|
||
|
option java_multiple_files = true;
|
||
|
option java_outer_classname = "PolicyProto";
|
||
|
option java_package = "com.google.api";
|
||
|
option objc_class_prefix = "GAPI";
|
||
|
|
||
|
// Provides `google.api.field_policy` annotation at proto fields.
|
||
|
extend google.protobuf.FieldOptions {
|
||
|
// See [FieldPolicy][].
|
||
|
FieldPolicy field_policy = 158361448;
|
||
|
}
|
||
|
|
||
|
// Provides `google.api.method_policy` annotation at proto methods.
|
||
|
extend google.protobuf.MethodOptions {
|
||
|
// See [MethodPolicy][].
|
||
|
MethodPolicy method_policy = 161893301;
|
||
|
}
|
||
|
|
||
|
// Google API Policy Annotation
|
||
|
//
|
||
|
// This message defines a simple API policy annotation that can be used to
|
||
|
// annotate API request and response message fields with applicable policies.
|
||
|
// One field may have multiple applicable policies that must all be satisfied
|
||
|
// before a request can be processed. This policy annotation is used to
|
||
|
// generate the overall policy that will be used for automatic runtime
|
||
|
// policy enforcement and documentation generation.
|
||
|
message FieldPolicy {
|
||
|
// Selects one or more request or response message fields to apply this
|
||
|
// `FieldPolicy`.
|
||
|
//
|
||
|
// When a `FieldPolicy` is used in proto annotation, the selector must
|
||
|
// be left as empty. The service config generator will automatically fill
|
||
|
// the correct value.
|
||
|
//
|
||
|
// When a `FieldPolicy` is used in service config, the selector must be a
|
||
|
// comma-separated string with valid request or response field paths,
|
||
|
// such as "foo.bar" or "foo.bar,foo.baz".
|
||
|
string selector = 1;
|
||
|
|
||
|
// Specifies the required permission(s) for the resource referred to by the
|
||
|
// field. It requires the field contains a valid resource reference, and
|
||
|
// the request must pass the permission checks to proceed. For example,
|
||
|
// "resourcemanager.projects.get".
|
||
|
string resource_permission = 2;
|
||
|
|
||
|
// Specifies the resource type for the resource referred to by the field.
|
||
|
string resource_type = 3;
|
||
|
}
|
||
|
|
||
|
// Defines policies applying to an RPC method.
|
||
|
message MethodPolicy {
|
||
|
// Selects a method to which these policies should be enforced, for example,
|
||
|
// "google.pubsub.v1.Subscriber.CreateSubscription".
|
||
|
//
|
||
|
// Refer to [selector][google.api.DocumentationRule.selector] for syntax
|
||
|
// details.
|
||
|
//
|
||
|
// NOTE: This field must not be set in the proto annotation. It will be
|
||
|
// automatically filled by the service config compiler .
|
||
|
string selector = 9;
|
||
|
|
||
|
// Policies that are applicable to the request message.
|
||
|
repeated FieldPolicy request_policies = 2;
|
||
|
}
|