# frozen_string_literal: true
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/api/policy.proto

require 'google/protobuf'

require 'google/protobuf/descriptor_pb'


descriptor_data = "\n\x17google/api/policy.proto\x12\ngoogle.api\x1a google/protobuf/descriptor.proto\"S\n\x0b\x46ieldPolicy\x12\x10\n\x08selector\x18\x01 \x01(\t\x12\x1b\n\x13resource_permission\x18\x02 \x01(\t\x12\x15\n\rresource_type\x18\x03 \x01(\t\"S\n\x0cMethodPolicy\x12\x10\n\x08selector\x18\t \x01(\t\x12\x31\n\x10request_policies\x18\x02 \x03(\x0b\x32\x17.google.api.FieldPolicy:O\n\x0c\x66ield_policy\x12\x1d.google.protobuf.FieldOptions\x18\xe8\xce\xc1K \x01(\x0b\x32\x17.google.api.FieldPolicy:R\n\rmethod_policy\x12\x1e.google.protobuf.MethodOptions\x18\xb5\x97\x99M \x01(\x0b\x32\x18.google.api.MethodPolicyBp\n\x0e\x63om.google.apiB\x0bPolicyProtoP\x01ZEgoogle.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig\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
    FieldPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.FieldPolicy").msgclass
    MethodPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.MethodPolicy").msgclass
  end
end

#### Source proto file: google/api/policy.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/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;
# }
