# frozen_string_literal: true # Generated by the protocol buffer compiler. DO NOT EDIT! # source: google/api/resource.proto require 'google/protobuf' require 'google/protobuf/descriptor_pb' descriptor_data = "\n\x19google/api/resource.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"\xee\x02\n\x12ResourceDescriptor\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x0f\n\x07pattern\x18\x02 \x03(\t\x12\x12\n\nname_field\x18\x03 \x01(\t\x12\x37\n\x07history\x18\x04 \x01(\x0e\x32&.google.api.ResourceDescriptor.History\x12\x0e\n\x06plural\x18\x05 \x01(\t\x12\x10\n\x08singular\x18\x06 \x01(\t\x12\x33\n\x05style\x18\n \x03(\x0e\x32$.google.api.ResourceDescriptor.Style\"[\n\x07History\x12\x17\n\x13HISTORY_UNSPECIFIED\x10\x00\x12\x1d\n\x19ORIGINALLY_SINGLE_PATTERN\x10\x01\x12\x18\n\x14\x46UTURE_MULTI_PATTERN\x10\x02\"8\n\x05Style\x12\x15\n\x11STYLE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44\x45\x43LARATIVE_FRIENDLY\x10\x01\"5\n\x11ResourceReference\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x12\n\nchild_type\x18\x02 \x01(\t:Y\n\x12resource_reference\x12\x1d.google.protobuf.FieldOptions\x18\x9f\x08 \x01(\x0b\x32\x1d.google.api.ResourceReference:Z\n\x13resource_definition\x12\x1c.google.protobuf.FileOptions\x18\x9d\x08 \x03(\x0b\x32\x1e.google.api.ResourceDescriptor:R\n\x08resource\x12\x1f.google.protobuf.MessageOptions\x18\x9d\x08 \x01(\x0b\x32\x1e.google.api.ResourceDescriptorBn\n\x0e\x63om.google.apiB\rResourceProtoP\x01ZAgoogle.golang.org/genproto/googleapis/api/annotations;annotations\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3" pool = Google::Protobuf::DescriptorPool.generated_pool begin pool.add_serialized_file(descriptor_data) rescue TypeError # Compatibility code: will be removed in the next major version. require 'google/protobuf/descriptor_pb' parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data) parsed.clear_dependency serialized = parsed.class.encode(parsed) file = pool.add_serialized_file(serialized) warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}" imports = [ ] imports.each do |type_name, expected_filename| import_file = pool.lookup(type_name).file_descriptor if import_file.name != expected_filename warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}" end end warn "Each proto file must use a consistent fully-qualified name." warn "This will become an error in the next major version." end module Google module Api ResourceDescriptor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.ResourceDescriptor").msgclass ResourceDescriptor::History = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.ResourceDescriptor.History").enummodule ResourceDescriptor::Style = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.ResourceDescriptor.Style").enummodule ResourceReference = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.ResourceReference").msgclass end end #### Source proto file: google/api/resource.proto #### # # // Copyright 2024 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/annotations;annotations"; # option java_multiple_files = true; # option java_outer_classname = "ResourceProto"; # option java_package = "com.google.api"; # option objc_class_prefix = "GAPI"; # # extend google.protobuf.FieldOptions { # // An annotation that describes a resource reference, see # // [ResourceReference][]. # google.api.ResourceReference resource_reference = 1055; # } # # extend google.protobuf.FileOptions { # // An annotation that describes a resource definition without a corresponding # // message; see [ResourceDescriptor][]. # repeated google.api.ResourceDescriptor resource_definition = 1053; # } # # extend google.protobuf.MessageOptions { # // An annotation that describes a resource definition, see # // [ResourceDescriptor][]. # google.api.ResourceDescriptor resource = 1053; # } # # // A simple descriptor of a resource type. # // # // ResourceDescriptor annotates a resource message (either by means of a # // protobuf annotation or use in the service config), and associates the # // resource's schema, the resource type, and the pattern of the resource name. # // # // Example: # // # // message Topic { # // // Indicates this message defines a resource schema. # // // Declares the resource type in the format of {service}/{kind}. # // // For Kubernetes resources, the format is {api group}/{kind}. # // option (google.api.resource) = { # // type: "pubsub.googleapis.com/Topic" # // pattern: "projects/{project}/topics/{topic}" # // }; # // } # // # // The ResourceDescriptor Yaml config will look like: # // # // resources: # // - type: "pubsub.googleapis.com/Topic" # // pattern: "projects/{project}/topics/{topic}" # // # // Sometimes, resources have multiple patterns, typically because they can # // live under multiple parents. # // # // Example: # // # // message LogEntry { # // option (google.api.resource) = { # // type: "logging.googleapis.com/LogEntry" # // pattern: "projects/{project}/logs/{log}" # // pattern: "folders/{folder}/logs/{log}" # // pattern: "organizations/{organization}/logs/{log}" # // pattern: "billingAccounts/{billing_account}/logs/{log}" # // }; # // } # // # // The ResourceDescriptor Yaml config will look like: # // # // resources: # // - type: 'logging.googleapis.com/LogEntry' # // pattern: "projects/{project}/logs/{log}" # // pattern: "folders/{folder}/logs/{log}" # // pattern: "organizations/{organization}/logs/{log}" # // pattern: "billingAccounts/{billing_account}/logs/{log}" # message ResourceDescriptor { # // A description of the historical or future-looking state of the # // resource pattern. # enum History { # // The "unset" value. # HISTORY_UNSPECIFIED = 0; # # // The resource originally had one pattern and launched as such, and # // additional patterns were added later. # ORIGINALLY_SINGLE_PATTERN = 1; # # // The resource has one pattern, but the API owner expects to add more # // later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents # // that from being necessary once there are multiple patterns.) # FUTURE_MULTI_PATTERN = 2; # } # # // A flag representing a specific style that a resource claims to conform to. # enum Style { # // The unspecified value. Do not use. # STYLE_UNSPECIFIED = 0; # # // This resource is intended to be "declarative-friendly". # // # // Declarative-friendly resources must be more strictly consistent, and # // setting this to true communicates to tools that this resource should # // adhere to declarative-friendly expectations. # // # // Note: This is used by the API linter (linter.aip.dev) to enable # // additional checks. # DECLARATIVE_FRIENDLY = 1; # } # # // The resource type. It must be in the format of # // {service_name}/{resource_type_kind}. The `resource_type_kind` must be # // singular and must not include version numbers. # // # // Example: `storage.googleapis.com/Bucket` # // # // The value of the resource_type_kind must follow the regular expression # // /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and # // should use PascalCase (UpperCamelCase). The maximum number of # // characters allowed for the `resource_type_kind` is 100. # string type = 1; # # // Optional. The relative resource name pattern associated with this resource # // type. The DNS prefix of the full resource name shouldn't be specified here. # // # // The path pattern must follow the syntax, which aligns with HTTP binding # // syntax: # // # // Template = Segment { "/" Segment } ; # // Segment = LITERAL | Variable ; # // Variable = "{" LITERAL "}" ; # // # // Examples: # // # // - "projects/{project}/topics/{topic}" # // - "projects/{project}/knowledgeBases/{knowledge_base}" # // # // The components in braces correspond to the IDs for each resource in the # // hierarchy. It is expected that, if multiple patterns are provided, # // the same component name (e.g. "project") refers to IDs of the same # // type of resource. # repeated string pattern = 2; # # // Optional. The field on the resource that designates the resource name # // field. If omitted, this is assumed to be "name". # string name_field = 3; # # // Optional. The historical or future-looking state of the resource pattern. # // # // Example: # // # // // The InspectTemplate message originally only supported resource # // // names with organization, and project was added later. # // message InspectTemplate { # // option (google.api.resource) = { # // type: "dlp.googleapis.com/InspectTemplate" # // pattern: # // "organizations/{organization}/inspectTemplates/{inspect_template}" # // pattern: "projects/{project}/inspectTemplates/{inspect_template}" # // history: ORIGINALLY_SINGLE_PATTERN # // }; # // } # History history = 4; # # // The plural name used in the resource name and permission names, such as # // 'projects' for the resource name of 'projects/{project}' and the permission # // name of 'cloudresourcemanager.googleapis.com/projects.get'. It is the same # // concept of the `plural` field in k8s CRD spec # // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ # // # // Note: The plural form is required even for singleton resources. See # // https://aip.dev/156 # string plural = 5; # # // The same concept of the `singular` field in k8s CRD spec # // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ # // Such as "project" for the `resourcemanager.googleapis.com/Project` type. # string singular = 6; # # // Style flag(s) for this resource. # // These indicate that a resource is expected to conform to a given # // style. See the specific style flags for additional information. # repeated Style style = 10; # } # # // Defines a proto annotation that describes a string field that refers to # // an API resource. # message ResourceReference { # // The resource type that the annotated field references. # // # // Example: # // # // message Subscription { # // string topic = 2 [(google.api.resource_reference) = { # // type: "pubsub.googleapis.com/Topic" # // }]; # // } # // # // Occasionally, a field may reference an arbitrary resource. In this case, # // APIs use the special value * in their resource reference. # // # // Example: # // # // message GetIamPolicyRequest { # // string resource = 2 [(google.api.resource_reference) = { # // type: "*" # // }]; # // } # string type = 1; # # // The resource type of a child collection that the annotated field # // references. This is useful for annotating the `parent` field that # // doesn't have a fixed resource type. # // # // Example: # // # // message ListLogEntriesRequest { # // string parent = 1 [(google.api.resource_reference) = { # // child_type: "logging.googleapis.com/LogEntry" # // }; # // } # string child_type = 2; # }