| // 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/visibility;visibility"; |
| option java_multiple_files = true; |
| option java_outer_classname = "VisibilityProto"; |
| option java_package = "com.google.api"; |
| option objc_class_prefix = "GAPI"; |
| |
| extend google.protobuf.EnumOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule enum_visibility = 72295727; |
| } |
| |
| extend google.protobuf.EnumValueOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule value_visibility = 72295727; |
| } |
| |
| extend google.protobuf.FieldOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule field_visibility = 72295727; |
| } |
| |
| extend google.protobuf.MessageOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule message_visibility = 72295727; |
| } |
| |
| extend google.protobuf.MethodOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule method_visibility = 72295727; |
| } |
| |
| extend google.protobuf.ServiceOptions { |
| // See `VisibilityRule`. |
| google.api.VisibilityRule api_visibility = 72295727; |
| } |
| |
| // `Visibility` restricts service consumer's access to service elements, |
| // such as whether an application can call a visibility-restricted method. |
| // The restriction is expressed by applying visibility labels on service |
| // elements. The visibility labels are elsewhere linked to service consumers. |
| // |
| // A service can define multiple visibility labels, but a service consumer |
| // should be granted at most one visibility label. Multiple visibility |
| // labels for a single service consumer are not supported. |
| // |
| // If an element and all its parents have no visibility label, its visibility |
| // is unconditionally granted. |
| // |
| // Example: |
| // |
| // visibility: |
| // rules: |
| // - selector: google.calendar.Calendar.EnhancedSearch |
| // restriction: PREVIEW |
| // - selector: google.calendar.Calendar.Delegate |
| // restriction: INTERNAL |
| // |
| // Here, all methods are publicly visible except for the restricted methods |
| // EnhancedSearch and Delegate. |
| message Visibility { |
| // A list of visibility rules that apply to individual API elements. |
| // |
| // **NOTE:** All service configuration rules follow "last one wins" order. |
| repeated VisibilityRule rules = 1; |
| } |
| |
| // A visibility rule provides visibility configuration for an individual API |
| // element. |
| message VisibilityRule { |
| // Selects methods, messages, fields, enums, etc. to which this rule applies. |
| // |
| // Refer to [selector][google.api.DocumentationRule.selector] for syntax |
| // details. |
| string selector = 1; |
| |
| // A comma-separated list of visibility labels that apply to the `selector`. |
| // Any of the listed labels can be used to grant the visibility. |
| // |
| // If a rule has multiple labels, removing one of the labels but not all of |
| // them can break clients. |
| // |
| // Example: |
| // |
| // visibility: |
| // rules: |
| // - selector: google.calendar.Calendar.EnhancedSearch |
| // restriction: INTERNAL, PREVIEW |
| // |
| // Removing INTERNAL from this restriction will break clients that rely on |
| // this method and only had access to it through INTERNAL. |
| string restriction = 2; |
| } |