// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // syntax = "proto3"; package google.api; import "google/protobuf/descriptor.proto"; option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; option java_multiple_files = true; option java_outer_classname = "ResourceProto"; option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; option (google.api.resource_definition) = { pattern: "projects/{project}" symbol: "Project" }; option (google.api.resource_definition) = { pattern: "organizations/{organization}" symbol: "Organization" }; extend google.protobuf.FieldOptions { // A representation of the resource. // This is generally intended to be attached to the "name" field of // the message representing the resource. // // Example: // // message Topic { // string name = 1 [(google.api.resource) = { // pattern: "projects/{project}/topics/{topic}" // }]; // } // // Only one of {`resource`, `resource_reference`} may be set. google.api.Resource resource = 1053; // The fully qualified message name of the type that this field references. // Marks this as a field referring to a resource in another message. // // Example: // // message Subscription { // string topic = 2 // [(google.api.resource_reference) = "google.pubsub.v1.Topic"]; // } // // If the referenced message is in the same proto package, the package // may be omitted: // // message Subscription { // string topic = 2 // [(google.api.resource_reference) = "Topic"]; // } // // Only one of {`resource`, `resource_reference`} may be set. string resource_reference = 1055; } extend google.protobuf.FileOptions { // A representation of a resource. // At a file level, this is generally used to define information for a // resource from another API, or for a resource that does not have an // associated proto message. // // See the example of `google.api.Project` and `google.api.Organization` // at the bottom of this file. repeated google.api.Resource resource_definition = 1053; } // An annotation designating that this field designates a resource. // // Example: // // message Topic { // string name = 1 [(google.api.resource) = { // name: "projects/{project}/topics/{topic}" // }]; // } message Resource { // Required. The resource's name template. // // Examples: // - "projects/{project}/topics/{topic}" // - "projects/{project}/knowledgeBases/{knowledge_base}" string pattern = 1; // The name that should be used in code to describe the resource, // in PascalCase. // // If omitted, this is inferred from the name of the message. // This is required if the resource is being defined without the context // of a message (see `resource_definition`, below). // // Example: // option (google.api.resource_definition) = { // pattern: "projects/{project}" // symbol: "Project" // }; string symbol = 2; }