diff --git a/google-iam-v3beta/.owlbot-manifest.json b/google-iam-v3beta/.owlbot-manifest.json index 16ff0d5b1a53..94a80bd15cd8 100644 --- a/google-iam-v3beta/.owlbot-manifest.json +++ b/google-iam-v3beta/.owlbot-manifest.json @@ -12,9 +12,22 @@ "README.md", "Rakefile", "gapic_metadata.json", - "google-iam-v3beta.gemspec", - "lib/google-iam-v3beta.rb", + "google-cloud-iam-v3beta.gemspec", + "lib/google-cloud-iam-v3beta.rb", + "lib/google/cloud/iam/v3beta/version.rb", "lib/google/iam/v3beta.rb", + "lib/google/iam/v3beta/access_policies.rb", + "lib/google/iam/v3beta/access_policies/client.rb", + "lib/google/iam/v3beta/access_policies/credentials.rb", + "lib/google/iam/v3beta/access_policies/operations.rb", + "lib/google/iam/v3beta/access_policies/paths.rb", + "lib/google/iam/v3beta/access_policies/rest.rb", + "lib/google/iam/v3beta/access_policies/rest/client.rb", + "lib/google/iam/v3beta/access_policies/rest/operations.rb", + "lib/google/iam/v3beta/access_policies/rest/service_stub.rb", + "lib/google/iam/v3beta/access_policies_service_pb.rb", + "lib/google/iam/v3beta/access_policies_service_services_pb.rb", + "lib/google/iam/v3beta/access_policy_resources_pb.rb", "lib/google/iam/v3beta/operation_metadata_pb.rb", "lib/google/iam/v3beta/policy_binding_resources_pb.rb", "lib/google/iam/v3beta/policy_bindings.rb", @@ -41,13 +54,14 @@ "lib/google/iam/v3beta/principal_access_boundary_policies_service_services_pb.rb", "lib/google/iam/v3beta/principal_access_boundary_policy_resources_pb.rb", "lib/google/iam/v3beta/rest.rb", - "lib/google/iam/v3beta/version.rb", "proto_docs/README.md", "proto_docs/google/api/client.rb", "proto_docs/google/api/field_behavior.rb", "proto_docs/google/api/field_info.rb", "proto_docs/google/api/launch_stage.rb", "proto_docs/google/api/resource.rb", + "proto_docs/google/iam/v3beta/access_policies_service.rb", + "proto_docs/google/iam/v3beta/access_policy_resources.rb", "proto_docs/google/iam/v3beta/operation_metadata.rb", "proto_docs/google/iam/v3beta/policy_binding_resources.rb", "proto_docs/google/iam/v3beta/policy_bindings_service.rb", @@ -62,6 +76,12 @@ "proto_docs/google/rpc/status.rb", "proto_docs/google/type/expr.rb", "snippets/Gemfile", + "snippets/access_policies/create_access_policy.rb", + "snippets/access_policies/delete_access_policy.rb", + "snippets/access_policies/get_access_policy.rb", + "snippets/access_policies/list_access_policies.rb", + "snippets/access_policies/search_access_policy_bindings.rb", + "snippets/access_policies/update_access_policy.rb", "snippets/policy_bindings/create_policy_binding.rb", "snippets/policy_bindings/delete_policy_binding.rb", "snippets/policy_bindings/get_policy_binding.rb", @@ -75,6 +95,10 @@ "snippets/principal_access_boundary_policies/search_principal_access_boundary_policy_bindings.rb", "snippets/principal_access_boundary_policies/update_principal_access_boundary_policy.rb", "snippets/snippet_metadata_google.iam.v3beta.json", + "test/google/iam/v3beta/access_policies_operations_test.rb", + "test/google/iam/v3beta/access_policies_paths_test.rb", + "test/google/iam/v3beta/access_policies_rest_test.rb", + "test/google/iam/v3beta/access_policies_test.rb", "test/google/iam/v3beta/policy_bindings_operations_test.rb", "test/google/iam/v3beta/policy_bindings_paths_test.rb", "test/google/iam/v3beta/policy_bindings_rest_test.rb", @@ -86,6 +110,7 @@ "test/helper.rb" ], "static": [ - ".OwlBot.yaml" + ".OwlBot.yaml", + "lib/google/iam/v3beta/version.rb" ] } diff --git a/google-iam-v3beta/.repo-metadata.json b/google-iam-v3beta/.repo-metadata.json index 93cab105a70f..8b436ae98da4 100644 --- a/google-iam-v3beta/.repo-metadata.json +++ b/google-iam-v3beta/.repo-metadata.json @@ -1,8 +1,8 @@ { "api_id": "iam.googleapis.com", "api_shortname": "iam", - "client_documentation": "https://cloud.google.com/ruby/docs/reference/google-iam-v3beta/latest", - "distribution_name": "google-iam-v3beta", + "client_documentation": "https://cloud.google.com/ruby/docs/reference/google-cloud-iam-v3beta/latest", + "distribution_name": "google-cloud-iam-v3beta", "is_cloud": true, "language": "ruby", "name": "iam", @@ -11,7 +11,7 @@ "release_level": "preview", "repo": "googleapis/google-cloud-ruby", "requires_billing": true, - "ruby-cloud-description": "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API. Note that google-iam-v3beta is a version-specific client library. For most uses, we recommend installing the main client library google-iam instead. See the readme for more details.", + "ruby-cloud-description": "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API. Note that google-cloud-iam-v3beta is a version-specific client library. For most uses, we recommend installing the main client library google-cloud-iam instead. See the readme for more details.", "ruby-cloud-product-url": "https://cloud.google.com/iam/docs/overview", "library_type": "GAPIC_AUTO" } diff --git a/google-iam-v3beta/.rubocop.yml b/google-iam-v3beta/.rubocop.yml index b142b763dfa7..efbd005346b3 100644 --- a/google-iam-v3beta/.rubocop.yml +++ b/google-iam-v3beta/.rubocop.yml @@ -3,7 +3,7 @@ inherit_gem: AllCops: Exclude: - - "google-iam-v3beta.gemspec" + - "google-cloud-iam-v3beta.gemspec" - "lib/**/*_pb.rb" - "proto_docs/**/*" - "test/**/*" @@ -30,4 +30,4 @@ Naming/AccessorMethodName: - "snippets/**/*.rb" Naming/FileName: Exclude: - - "lib/google-iam-v3beta.rb" + - "lib/google-cloud-iam-v3beta.rb" diff --git a/google-iam-v3beta/AUTHENTICATION.md b/google-iam-v3beta/AUTHENTICATION.md index 27d31ca1f47f..ff7654b6751d 100644 --- a/google-iam-v3beta/AUTHENTICATION.md +++ b/google-iam-v3beta/AUTHENTICATION.md @@ -1,6 +1,6 @@ # Authentication -The recommended way to authenticate to the google-iam-v3beta library is to use +The recommended way to authenticate to the google-cloud-iam-v3beta library is to use [Application Default Credentials (ADC)](https://cloud.google.com/docs/authentication/application-default-credentials). To review all of your authentication options, see [Credentials lookup](#credential-lookup). @@ -26,7 +26,7 @@ For more information about setting up authentication for a local development env ## Credential Lookup -The google-iam-v3beta library provides several mechanisms to configure your system. +The google-cloud-iam-v3beta library provides several mechanisms to configure your system. Generally, using Application Default Credentials to facilitate automatic credentials discovery is the easist method. But if you need to explicitly specify credentials, there are several methods available to you. @@ -56,7 +56,7 @@ To configure a credentials file for an individual client initialization: ```ruby require "google/iam/v3beta" -client = ::Google::Iam::V3beta::PolicyBindings::Client.new do |config| +client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| config.credentials = "path/to/credentialfile.json" end ``` @@ -66,11 +66,11 @@ To configure a credentials file globally for all clients: ```ruby require "google/iam/v3beta" -::Google::Iam::V3beta::PolicyBindings::Client.configure do |config| +::Google::Iam::V3beta::AccessPolicies::Client.configure do |config| config.credentials = "path/to/credentialfile.json" end -client = ::Google::Iam::V3beta::PolicyBindings::Client.new +client = ::Google::Iam::V3beta::AccessPolicies::Client.new ``` ### Environment Variables @@ -89,7 +89,7 @@ Note: Service account keys are a security risk if not managed correctly. You sho [choose a more secure alternative to service account keys](https://cloud.google.com/docs/authentication#auth-decision-tree) whenever possible. -The environment variables that google-iam-v3beta +The environment variables that google-cloud-iam-v3beta checks for credentials are: * `GOOGLE_CLOUD_CREDENTIALS` - Path to JSON file, or JSON contents @@ -100,7 +100,7 @@ require "google/iam/v3beta" ENV["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/credentialfile.json" -client = ::Google::Iam::V3beta::PolicyBindings::Client.new +client = ::Google::Iam::V3beta::AccessPolicies::Client.new ``` ### Local ADC file diff --git a/google-iam-v3beta/README.md b/google-iam-v3beta/README.md index cba8c6d0bb77..f708122c6c3a 100644 --- a/google-iam-v3beta/README.md +++ b/google-iam-v3beta/README.md @@ -9,13 +9,13 @@ https://github.com/googleapis/google-cloud-ruby This gem is a _versioned_ client. It provides basic client classes for a specific version of the Identity and Access Management (IAM) V3BETA API. Most users should consider using the main client gem, -[google-iam](https://rubygems.org/gems/google-iam). +[google-cloud-iam](https://rubygems.org/gems/google-cloud-iam). See the section below titled *Which client should I use?* for more information. ## Installation ``` -$ gem install google-iam-v3beta +$ gem install google-cloud-iam-v3beta ``` ## Before You Begin @@ -32,12 +32,12 @@ In order to use this library, you first need to go through the following steps: ```ruby require "google/iam/v3beta" -client = ::Google::Iam::V3beta::PolicyBindings::Client.new -request = ::Google::Iam::V3beta::CreatePolicyBindingRequest.new # (request fields as keyword arguments...) -response = client.create_policy_binding request +client = ::Google::Iam::V3beta::AccessPolicies::Client.new +request = ::Google::Iam::V3beta::CreateAccessPolicyRequest.new # (request fields as keyword arguments...) +response = client.create_access_policy request ``` -View the [Client Library Documentation](https://cloud.google.com/ruby/docs/reference/google-iam-v3beta/latest) +View the [Client Library Documentation](https://cloud.google.com/ruby/docs/reference/google-cloud-iam-v3beta/latest) for class and method documentation. See also the [Product Documentation](https://cloud.google.com/iam/docs/overview) @@ -75,7 +75,7 @@ constructing a client object. For example: require "google/iam/v3beta" require "logger" -client = ::Google::Iam::V3beta::PolicyBindings::Client.new do |config| +client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| config.logger = Logger.new "my-app.log" end ``` @@ -98,9 +98,9 @@ support schedule. ## Which client should I use? Most modern Ruby client libraries for Google APIs come in two flavors: the main -client library with a name such as `google-iam`, +client library with a name such as `google-cloud-iam`, and lower-level _versioned_ client libraries with names such as -`google-iam-v3beta`. +`google-cloud-iam-v3beta`. _In most cases, you should install the main client._ ### What's the difference between the main client and a versioned client? @@ -125,7 +125,7 @@ service version. We recommend that most users install the main client gem for a service. You can identify this gem as the one _without_ a version in its name, e.g. -`google-iam`. +`google-cloud-iam`. The main client is recommended because it will embody the best practices for accessing the service, and may also provide more convenient interfaces or tighter integration into frameworks and third-party libraries. In addition, the @@ -138,7 +138,7 @@ You can use a versioned client if you are content with a possibly lower-level class interface, you explicitly want to avoid features provided by the main client, or you want to access a specific service version not be covered by the main client. You can identify versioned client gems because the service version -is part of the name, e.g. `google-iam-v3beta`. +is part of the name, e.g. `google-cloud-iam-v3beta`. ### What about the google-apis- clients? diff --git a/google-iam-v3beta/Rakefile b/google-iam-v3beta/Rakefile index 381a7cce87a4..dd6bd1c27699 100644 --- a/google-iam-v3beta/Rakefile +++ b/google-iam-v3beta/Rakefile @@ -37,7 +37,7 @@ Rake::TestTask.new :smoke_test do |t| end # Acceptance tests -desc "Run the google-iam-v3beta acceptance tests." +desc "Run the google-cloud-iam-v3beta acceptance tests." task :acceptance, :project, :keyfile do |t, args| project = args[:project] project ||= @@ -57,8 +57,8 @@ task :acceptance, :project, :keyfile do |t, args| if project.nil? || keyfile.nil? fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or GOOGLE_CLOUD_TEST_PROJECT=test123 GOOGLE_CLOUD_TEST_KEYFILE=/path/to/keyfile.json rake acceptance" end - require "google/iam/v3beta/policy_bindings/credentials" - ::Google::Iam::V3beta::PolicyBindings::Credentials.env_vars.each do |path| + require "google/iam/v3beta/access_policies/credentials" + ::Google::Iam::V3beta::AccessPolicies::Credentials.env_vars.each do |path| ENV[path] = nil end ENV["GOOGLE_CLOUD_PROJECT"] = project @@ -73,7 +73,7 @@ namespace :acceptance do if File.directory? "acceptance" Rake::Task[:smoke_test].invoke else - puts "The google-iam-v3beta gem has no acceptance tests." + puts "The google-cloud-iam-v3beta gem has no acceptance tests." end end @@ -97,7 +97,7 @@ namespace :samples do end end else - puts "The google-iam-v3beta gem has no samples to test." + puts "The google-cloud-iam-v3beta gem has no samples to test." end end @@ -111,7 +111,7 @@ namespace :samples do end end else - puts "The google-iam-v3beta gem has no samples to test." + puts "The google-cloud-iam-v3beta gem has no samples to test." end end end @@ -124,17 +124,17 @@ end desc "Run yard-doctest example tests." task :doctest do - puts "The google-iam-v3beta gem does not have doctest tests." + puts "The google-cloud-iam-v3beta gem does not have doctest tests." end desc "Run the CI build" task :ci do - header "BUILDING google-iam-v3beta" - header "google-iam-v3beta rubocop", "*" + header "BUILDING google-cloud-iam-v3beta" + header "google-cloud-iam-v3beta rubocop", "*" Rake::Task[:rubocop].invoke - header "google-iam-v3beta yard", "*" + header "google-cloud-iam-v3beta yard", "*" Rake::Task[:yard].invoke - header "google-iam-v3beta test", "*" + header "google-cloud-iam-v3beta test", "*" Rake::Task[:test].invoke end @@ -142,13 +142,13 @@ namespace :ci do desc "Run the CI build, with smoke tests." task :smoke_test do Rake::Task[:ci].invoke - header "google-iam-v3beta smoke_test", "*" + header "google-cloud-iam-v3beta smoke_test", "*" Rake::Task[:smoke_test].invoke end desc "Run the CI build, with acceptance tests." task :acceptance do Rake::Task[:ci].invoke - header "google-iam-v3beta acceptance", "*" + header "google-cloud-iam-v3beta acceptance", "*" Rake::Task[:acceptance].invoke end task :a do diff --git a/google-iam-v3beta/gapic_metadata.json b/google-iam-v3beta/gapic_metadata.json index 5aec57c62173..13391b62f322 100644 --- a/google-iam-v3beta/gapic_metadata.json +++ b/google-iam-v3beta/gapic_metadata.json @@ -5,6 +5,45 @@ "protoPackage": "google.iam.v3beta", "libraryPackage": "::Google::Iam::V3beta", "services": { + "AccessPolicies": { + "clients": { + "grpc": { + "libraryClient": "::Google::Iam::V3beta::AccessPolicies::Client", + "rpcs": { + "CreateAccessPolicy": { + "methods": [ + "create_access_policy" + ] + }, + "GetAccessPolicy": { + "methods": [ + "get_access_policy" + ] + }, + "UpdateAccessPolicy": { + "methods": [ + "update_access_policy" + ] + }, + "DeleteAccessPolicy": { + "methods": [ + "delete_access_policy" + ] + }, + "ListAccessPolicies": { + "methods": [ + "list_access_policies" + ] + }, + "SearchAccessPolicyBindings": { + "methods": [ + "search_access_policy_bindings" + ] + } + } + } + } + }, "PolicyBindings": { "clients": { "grpc": { diff --git a/google-iam-v3beta/google-iam-v3beta.gemspec b/google-iam-v3beta/google-cloud-iam-v3beta.gemspec similarity index 80% rename from google-iam-v3beta/google-iam-v3beta.gemspec rename to google-iam-v3beta/google-cloud-iam-v3beta.gemspec index 17bc1cf0bcb8..044d5a00e43b 100644 --- a/google-iam-v3beta/google-iam-v3beta.gemspec +++ b/google-iam-v3beta/google-cloud-iam-v3beta.gemspec @@ -1,15 +1,15 @@ # -*- ruby -*- # encoding: utf-8 -require File.expand_path("lib/google/iam/v3beta/version", __dir__) +require File.expand_path("lib/google/cloud/iam/v3beta/version", __dir__) Gem::Specification.new do |gem| - gem.name = "google-iam-v3beta" - gem.version = Google::Iam::V3beta::VERSION + gem.name = "google-cloud-iam-v3beta" + gem.version = Google::Cloud::Iam::V3beta::VERSION gem.authors = ["Google LLC"] gem.email = "googleapis-packages@google.com" - gem.description = "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API. Note that google-iam-v3beta is a version-specific client library. For most uses, we recommend installing the main client library google-iam instead. See the readme for more details." + gem.description = "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API. Note that google-cloud-iam-v3beta is a version-specific client library. For most uses, we recommend installing the main client library google-cloud-iam instead. See the readme for more details." gem.summary = "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API." gem.homepage = "https://github.com/googleapis/google-cloud-ruby" gem.license = "Apache-2.0" diff --git a/google-iam-v3beta/lib/google-iam-v3beta.rb b/google-iam-v3beta/lib/google-cloud-iam-v3beta.rb similarity index 96% rename from google-iam-v3beta/lib/google-iam-v3beta.rb rename to google-iam-v3beta/lib/google-cloud-iam-v3beta.rb index 30f210f5cac7..462c76ed1789 100644 --- a/google-iam-v3beta/lib/google-iam-v3beta.rb +++ b/google-iam-v3beta/lib/google-cloud-iam-v3beta.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/google-iam-v3beta/lib/google/cloud/iam/v3beta/version.rb b/google-iam-v3beta/lib/google/cloud/iam/v3beta/version.rb new file mode 100644 index 000000000000..55a2615baf4d --- /dev/null +++ b/google-iam-v3beta/lib/google/cloud/iam/v3beta/version.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Cloud + module Iam + module V3beta + VERSION = "0.0.1" + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta.rb b/google-iam-v3beta/lib/google/iam/v3beta.rb index 40867bb6556e..dd4a67511d55 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta.rb @@ -16,9 +16,10 @@ # Auto-generated by gapic-generator-ruby. DO NOT EDIT! +require "google/iam/v3beta/access_policies" require "google/iam/v3beta/policy_bindings" require "google/iam/v3beta/principal_access_boundary_policies" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" module Google module Iam @@ -28,12 +29,12 @@ module Iam # @example Load this package, including all its services, and instantiate a gRPC client # # require "google/iam/v3beta" - # client = ::Google::Iam::V3beta::PolicyBindings::Client.new + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new # # @example Load this package, including all its services, and instantiate a REST client # # require "google/iam/v3beta" - # client = ::Google::Iam::V3beta::PolicyBindings::Rest::Client.new + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new # module V3beta end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies.rb new file mode 100644 index 000000000000..e3d3fbdca4e0 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "gapic/common" +require "gapic/config" +require "gapic/config/method" + +require "google/cloud/iam/v3beta/version" + +require "google/iam/v3beta/access_policies/credentials" +require "google/iam/v3beta/access_policies/paths" +require "google/iam/v3beta/access_policies/operations" +require "google/iam/v3beta/access_policies/client" +require "google/iam/v3beta/access_policies/rest" + +module Google + module Iam + module V3beta + ## + # Manages Identity and Access Management (IAM) access policies. + # + # @example Load this service and instantiate a gRPC client + # + # require "google/iam/v3beta/access_policies" + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new + # + # @example Load this service and instantiate a REST client + # + # require "google/iam/v3beta/access_policies/rest" + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + module AccessPolicies + end + end + end +end + +helper_path = ::File.join __dir__, "access_policies", "helpers.rb" +require "google/iam/v3beta/access_policies/helpers" if ::File.file? helper_path diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/client.rb new file mode 100644 index 000000000000..bb1f972cbbee --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/client.rb @@ -0,0 +1,1111 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "google/cloud/errors" +require "google/iam/v3beta/access_policies_service_pb" +require "google/cloud/location" + +module Google + module Iam + module V3beta + module AccessPolicies + ## + # Client for the AccessPolicies service. + # + # Manages Identity and Access Management (IAM) access policies. + # + class Client + # @private + API_VERSION = "" + + # @private + DEFAULT_ENDPOINT_TEMPLATE = "iam.$UNIVERSE_DOMAIN$" + + include Paths + + # @private + attr_reader :access_policies_stub + + ## + # Configure the AccessPolicies Client class. + # + # See {::Google::Iam::V3beta::AccessPolicies::Client::Configuration} + # for a description of the configuration fields. + # + # @example + # + # # Modify the configuration for all AccessPolicies clients + # ::Google::Iam::V3beta::AccessPolicies::Client.configure do |config| + # config.timeout = 10.0 + # end + # + # @yield [config] Configure the Client client. + # @yieldparam config [Client::Configuration] + # + # @return [Client::Configuration] + # + def self.configure + @configure ||= begin + namespace = ["Google", "Iam", "V3beta"] + parent_config = while namespace.any? + parent_name = namespace.join "::" + parent_const = const_get parent_name + break parent_const.configure if parent_const.respond_to? :configure + namespace.pop + end + default_config = Client::Configuration.new parent_config + + default_config.rpcs.create_access_policy.timeout = 30.0 + + default_config.rpcs.get_access_policy.timeout = 60.0 + default_config.rpcs.get_access_policy.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config.rpcs.update_access_policy.timeout = 30.0 + + default_config.rpcs.delete_access_policy.timeout = 30.0 + + default_config.rpcs.list_access_policies.timeout = 60.0 + default_config.rpcs.list_access_policies.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config.rpcs.search_access_policy_bindings.timeout = 60.0 + default_config.rpcs.search_access_policy_bindings.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config + end + yield @configure if block_given? + @configure + end + + ## + # Configure the AccessPolicies Client instance. + # + # The configuration is set to the derived mode, meaning that values can be changed, + # but structural changes (adding new fields, etc.) are not allowed. Structural changes + # should be made on {Client.configure}. + # + # See {::Google::Iam::V3beta::AccessPolicies::Client::Configuration} + # for a description of the configuration fields. + # + # @yield [config] Configure the Client client. + # @yieldparam config [Client::Configuration] + # + # @return [Client::Configuration] + # + def configure + yield @config if block_given? + @config + end + + ## + # The effective universe domain + # + # @return [String] + # + def universe_domain + @access_policies_stub.universe_domain + end + + ## + # Create a new AccessPolicies client object. + # + # @example + # + # # Create a client using the default configuration + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a client using a custom configuration + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + # config.timeout = 10.0 + # end + # + # @yield [config] Configure the AccessPolicies client. + # @yieldparam config [Client::Configuration] + # + def initialize + # These require statements are intentionally placed here to initialize + # the gRPC module only when it's required. + # See https://github.com/googleapis/toolkit/issues/446 + require "gapic/grpc" + require "google/iam/v3beta/access_policies_service_services_pb" + + # Create the configuration object + @config = Configuration.new Client.configure + + # Yield the configuration if needed + yield @config if block_given? + + # Create credentials + credentials = @config.credentials + # Use self-signed JWT if the endpoint is unchanged from default, + # but only if the default endpoint does not have a region prefix. + enable_self_signed_jwt = @config.endpoint.nil? || + (@config.endpoint == Configuration::DEFAULT_ENDPOINT && + !@config.endpoint.split(".").first.include?("-")) + credentials ||= Credentials.default scope: @config.scope, + enable_self_signed_jwt: enable_self_signed_jwt + if credentials.is_a?(::String) || credentials.is_a?(::Hash) + credentials = Credentials.new credentials, scope: @config.scope + end + @quota_project_id = @config.quota_project + @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id + + @operations_client = Operations.new do |config| + config.credentials = credentials + config.quota_project = @quota_project_id + config.endpoint = @config.endpoint + config.universe_domain = @config.universe_domain + end + + @access_policies_stub = ::Gapic::ServiceStub.new( + ::Google::Iam::V3beta::AccessPolicies::Stub, + credentials: credentials, + endpoint: @config.endpoint, + endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, + universe_domain: @config.universe_domain, + channel_args: @config.channel_args, + interceptors: @config.interceptors, + channel_pool_config: @config.channel_pool, + logger: @config.logger + ) + + @access_policies_stub.stub_logger&.info do |entry| + entry.set_system_name + entry.set_service + entry.message = "Created client for #{entry.service}" + entry.set_credentials_fields credentials + entry.set "customEndpoint", @config.endpoint if @config.endpoint + entry.set "defaultTimeout", @config.timeout if @config.timeout + entry.set "quotaProject", @quota_project_id if @quota_project_id + end + + @location_client = Google::Cloud::Location::Locations::Client.new do |config| + config.credentials = credentials + config.quota_project = @quota_project_id + config.endpoint = @access_policies_stub.endpoint + config.universe_domain = @access_policies_stub.universe_domain + config.logger = @access_policies_stub.logger if config.respond_to? :logger= + end + end + + ## + # Get the associated client for long-running operations. + # + # @return [::Google::Iam::V3beta::AccessPolicies::Operations] + # + attr_reader :operations_client + + ## + # Get the associated client for mix-in of the Locations. + # + # @return [Google::Cloud::Location::Locations::Client] + # + attr_reader :location_client + + ## + # The logger used for request/response debug logging. + # + # @return [Logger] + # + def logger + @access_policies_stub.logger + end + + # Service calls + + ## + # Creates an access policy, and returns a long running operation. + # + # @overload create_access_policy(request, options = nil) + # Pass arguments to `create_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::CreateAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::CreateAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload create_access_policy(parent: nil, access_policy_id: nil, access_policy: nil, validate_only: nil) + # Pass arguments to `create_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. The parent resource where this access policy will be created. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @param access_policy_id [::String] + # Required. The ID to use for the access policy, which + # will become the final component of the access policy's + # resource name. + # + # This value must start with a lowercase letter followed by up to 62 + # lowercase letters, numbers, hyphens, or dots. Pattern, + # /[a-z][a-z0-9-\.]\\{2,62}/. + # + # This value must be unique among all access policies with the same parent. + # @param access_policy [::Google::Iam::V3beta::AccessPolicy, ::Hash] + # Required. The access policy to create. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the creation, but do not + # actually post it. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::Operation] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::CreateAccessPolicyRequest.new + # + # # Call the create_access_policy method. + # result = client.create_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def create_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::CreateAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.create_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.parent + header_params["parent"] = request.parent + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.create_access_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.create_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :create_access_policy, request, options: options do |response, operation| + response = ::Gapic::Operation.new response, @operations_client, options: options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Gets an access policy. + # + # @overload get_access_policy(request, options = nil) + # Pass arguments to `get_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::GetAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::GetAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload get_access_policy(name: nil) + # Pass arguments to `get_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy to retrieve. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Iam::V3beta::AccessPolicy] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Iam::V3beta::AccessPolicy] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::GetAccessPolicyRequest.new + # + # # Call the get_access_policy method. + # result = client.get_access_policy request + # + # # The returned object is of type Google::Iam::V3beta::AccessPolicy. + # p result + # + def get_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::GetAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.get_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.get_access_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.get_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :get_access_policy, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Updates an access policy. + # + # @overload update_access_policy(request, options = nil) + # Pass arguments to `update_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::UpdateAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::UpdateAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload update_access_policy(access_policy: nil, validate_only: nil) + # Pass arguments to `update_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param access_policy [::Google::Iam::V3beta::AccessPolicy, ::Hash] + # Required. The access policy to update. + # + # The access policy's `name` field is used to identify the + # policy to update. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the update, but do not + # actually post it. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::Operation] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::UpdateAccessPolicyRequest.new + # + # # Call the update_access_policy method. + # result = client.update_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def update_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::UpdateAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.update_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.access_policy&.name + header_params["access_policy.name"] = request.access_policy.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.update_access_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.update_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :update_access_policy, request, options: options do |response, operation| + response = ::Gapic::Operation.new response, @operations_client, options: options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Deletes an access policy. + # + # @overload delete_access_policy(request, options = nil) + # Pass arguments to `delete_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::DeleteAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::DeleteAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload delete_access_policy(name: nil, etag: nil, validate_only: nil, force: nil) + # Pass arguments to `delete_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy to delete. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # @param etag [::String] + # Optional. The etag of the access policy. If this is provided, it must match + # the server's etag. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the deletion, but do not + # actually post it. + # @param force [::Boolean] + # Optional. If set to true, the request will force the deletion of the Policy + # even if the Policy references PolicyBindings. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::Operation] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::DeleteAccessPolicyRequest.new + # + # # Call the delete_access_policy method. + # result = client.delete_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def delete_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::DeleteAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.delete_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.delete_access_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.delete_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :delete_access_policy, request, options: options do |response, operation| + response = ::Gapic::Operation.new response, @operations_client, options: options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Lists access policies. + # + # @overload list_access_policies(request, options = nil) + # Pass arguments to `list_access_policies` via a request object, either of type + # {::Google::Iam::V3beta::ListAccessPoliciesRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::ListAccessPoliciesRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload list_access_policies(parent: nil, page_size: nil, page_token: nil) + # Pass arguments to `list_access_policies` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. The parent resource, which owns the collection of access policy + # resources. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @param page_size [::Integer] + # Optional. The maximum number of access policies to return. The + # service may return fewer than this value. + # + # If unspecified, at most 50 access policies will be returned. Valid value + # ranges from 1 to 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `ListAccessPolicies` call. Provide this to retrieve the + # subsequent page. + # + # When paginating, all other parameters provided to + # `ListAccessPolicies` must match the call that provided the + # page token. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::PagedEnumerable<::Google::Iam::V3beta::AccessPolicy>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::PagedEnumerable<::Google::Iam::V3beta::AccessPolicy>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::ListAccessPoliciesRequest.new + # + # # Call the list_access_policies method. + # result = client.list_access_policies request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Iam::V3beta::AccessPolicy. + # p item + # end + # + def list_access_policies request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::ListAccessPoliciesRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.list_access_policies.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.parent + header_params["parent"] = request.parent + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.list_access_policies.timeout, + metadata: metadata, + retry_policy: @config.rpcs.list_access_policies.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :list_access_policies, request, options: options do |response, operation| + response = ::Gapic::PagedEnumerable.new @access_policies_stub, :list_access_policies, request, response, operation, options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Returns all policy bindings that bind a specific policy if a user has + # searchPolicyBindings permission on that policy. + # + # @overload search_access_policy_bindings(request, options = nil) + # Pass arguments to `search_access_policy_bindings` via a request object, either of type + # {::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload search_access_policy_bindings(name: nil, page_size: nil, page_token: nil) + # Pass arguments to `search_access_policy_bindings` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy. + # Format: + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # @param page_size [::Integer] + # Optional. The maximum number of policy bindings to return. The service may + # return fewer than this value. + # + # If unspecified, at most 50 policy bindings will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `SearchAccessPolicyBindingsRequest` call. Provide this to + # retrieve the subsequent page. + # + # When paginating, all other parameters provided to + # `SearchAccessPolicyBindingsRequest` must match the call + # that provided the page token. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new + # + # # Call the search_access_policy_bindings method. + # result = client.search_access_policy_bindings request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Iam::V3beta::PolicyBinding. + # p item + # end + # + def search_access_policy_bindings request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.search_access_policy_bindings.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.search_access_policy_bindings.timeout, + metadata: metadata, + retry_policy: @config.rpcs.search_access_policy_bindings.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.call_rpc :search_access_policy_bindings, request, options: options do |response, operation| + response = ::Gapic::PagedEnumerable.new @access_policies_stub, :search_access_policy_bindings, request, response, operation, options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Configuration class for the AccessPolicies API. + # + # This class represents the configuration for AccessPolicies, + # providing control over timeouts, retry behavior, logging, transport + # parameters, and other low-level controls. Certain parameters can also be + # applied individually to specific RPCs. See + # {::Google::Iam::V3beta::AccessPolicies::Client::Configuration::Rpcs} + # for a list of RPCs that can be configured independently. + # + # Configuration can be applied globally to all clients, or to a single client + # on construction. + # + # @example + # + # # Modify the global config, setting the timeout for + # # create_access_policy to 20 seconds, + # # and all remaining timeouts to 10 seconds. + # ::Google::Iam::V3beta::AccessPolicies::Client.configure do |config| + # config.timeout = 10.0 + # config.rpcs.create_access_policy.timeout = 20.0 + # end + # + # # Apply the above configuration only to a new client. + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + # config.timeout = 10.0 + # config.rpcs.create_access_policy.timeout = 20.0 + # end + # + # @!attribute [rw] endpoint + # A custom service endpoint, as a hostname or hostname:port. The default is + # nil, indicating to use the default endpoint in the current universe domain. + # @return [::String,nil] + # @!attribute [rw] credentials + # Credentials to send with calls. You may provide any of the following types: + # * (`Google::Auth::Credentials`) A googleauth credentials object + # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials)) + # * (`Signet::OAuth2::Client`) A signet oauth2 client object + # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client)) + # * (`GRPC::Core::Channel`) a gRPC channel with included credentials + # * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object + # * (`nil`) indicating no credentials + # + # @note Warning: Passing a `String` to a keyfile path or a `Hash` of credentials + # is deprecated. Providing an unvalidated credential configuration to + # Google APIs can compromise the security of your systems and data. + # + # @example + # + # # The recommended way to provide credentials is to use the `make_creds` method + # # on the appropriate credentials class for your environment. + # + # require "googleauth" + # + # credentials = ::Google::Auth::ServiceAccountCredentials.make_creds( + # json_key_io: ::File.open("/path/to/keyfile.json") + # ) + # + # client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + # config.credentials = credentials + # end + # + # @note Warning: If you accept a credential configuration (JSON file or Hash) from an + # external source for authentication to Google Cloud, you must validate it before + # providing it to a Google API client library. Providing an unvalidated credential + # configuration to Google APIs can compromise the security of your systems and data. + # For more information, refer to [Validate credential configurations from external + # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). + # @return [::Object] + # @!attribute [rw] scope + # The OAuth scopes + # @return [::Array<::String>] + # @!attribute [rw] lib_name + # The library name as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] lib_version + # The library version as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] channel_args + # Extra parameters passed to the gRPC channel. Note: this is ignored if a + # `GRPC::Core::Channel` object is provided as the credential. + # @return [::Hash] + # @!attribute [rw] interceptors + # An array of interceptors that are run before calls are executed. + # @return [::Array<::GRPC::ClientInterceptor>] + # @!attribute [rw] timeout + # The call timeout in seconds. + # @return [::Numeric] + # @!attribute [rw] metadata + # Additional gRPC headers to be sent with the call. + # @return [::Hash{::Symbol=>::String}] + # @!attribute [rw] retry_policy + # The retry policy. The value is a hash with the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # @return [::Hash] + # @!attribute [rw] quota_project + # A separate project against which to charge quota. + # @return [::String] + # @!attribute [rw] universe_domain + # The universe domain within which to make requests. This determines the + # default endpoint URL. The default value of nil uses the environment + # universe (usually the default "googleapis.com" universe). + # @return [::String,nil] + # @!attribute [rw] logger + # A custom logger to use for request/response debug logging, or the value + # `:default` (the default) to construct a default logger, or `nil` to + # explicitly disable logging. + # @return [::Logger,:default,nil] + # + class Configuration + extend ::Gapic::Config + + # @private + # The endpoint specific to the default "googleapis.com" universe. Deprecated. + DEFAULT_ENDPOINT = "iam.googleapis.com" + + config_attr :endpoint, nil, ::String, nil + config_attr :credentials, nil do |value| + allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil] + allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC::Core::Channel + allowed.any? { |klass| klass === value } + end + config_attr :scope, nil, ::String, ::Array, nil + config_attr :lib_name, nil, ::String, nil + config_attr :lib_version, nil, ::String, nil + config_attr(:channel_args, { "grpc.service_config_disable_resolution" => 1 }, ::Hash, nil) + config_attr :interceptors, nil, ::Array, nil + config_attr :timeout, nil, ::Numeric, nil + config_attr :metadata, nil, ::Hash, nil + config_attr :retry_policy, nil, ::Hash, ::Proc, nil + config_attr :quota_project, nil, ::String, nil + config_attr :universe_domain, nil, ::String, nil + config_attr :logger, :default, ::Logger, nil, :default + + # @private + def initialize parent_config = nil + @parent_config = parent_config unless parent_config.nil? + + yield self if block_given? + end + + ## + # Configurations for individual RPCs + # @return [Rpcs] + # + def rpcs + @rpcs ||= begin + parent_rpcs = nil + parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs) + Rpcs.new parent_rpcs + end + end + + ## + # Configuration for the channel pool + # @return [::Gapic::ServiceStub::ChannelPool::Configuration] + # + def channel_pool + @channel_pool ||= ::Gapic::ServiceStub::ChannelPool::Configuration.new + end + + ## + # Configuration RPC class for the AccessPolicies API. + # + # Includes fields providing the configuration for each RPC in this service. + # Each configuration object is of type `Gapic::Config::Method` and includes + # the following configuration fields: + # + # * `timeout` (*type:* `Numeric`) - The call timeout in seconds + # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers + # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields + # include the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # + class Rpcs + ## + # RPC-specific configuration for `create_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :create_access_policy + ## + # RPC-specific configuration for `get_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :get_access_policy + ## + # RPC-specific configuration for `update_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :update_access_policy + ## + # RPC-specific configuration for `delete_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :delete_access_policy + ## + # RPC-specific configuration for `list_access_policies` + # @return [::Gapic::Config::Method] + # + attr_reader :list_access_policies + ## + # RPC-specific configuration for `search_access_policy_bindings` + # @return [::Gapic::Config::Method] + # + attr_reader :search_access_policy_bindings + + # @private + def initialize parent_rpcs = nil + create_access_policy_config = parent_rpcs.create_access_policy if parent_rpcs.respond_to? :create_access_policy + @create_access_policy = ::Gapic::Config::Method.new create_access_policy_config + get_access_policy_config = parent_rpcs.get_access_policy if parent_rpcs.respond_to? :get_access_policy + @get_access_policy = ::Gapic::Config::Method.new get_access_policy_config + update_access_policy_config = parent_rpcs.update_access_policy if parent_rpcs.respond_to? :update_access_policy + @update_access_policy = ::Gapic::Config::Method.new update_access_policy_config + delete_access_policy_config = parent_rpcs.delete_access_policy if parent_rpcs.respond_to? :delete_access_policy + @delete_access_policy = ::Gapic::Config::Method.new delete_access_policy_config + list_access_policies_config = parent_rpcs.list_access_policies if parent_rpcs.respond_to? :list_access_policies + @list_access_policies = ::Gapic::Config::Method.new list_access_policies_config + search_access_policy_bindings_config = parent_rpcs.search_access_policy_bindings if parent_rpcs.respond_to? :search_access_policy_bindings + @search_access_policy_bindings = ::Gapic::Config::Method.new search_access_policy_bindings_config + + yield self if block_given? + end + end + end + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/credentials.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/credentials.rb new file mode 100644 index 000000000000..c1cd49c60577 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/credentials.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "googleauth" + +module Google + module Iam + module V3beta + module AccessPolicies + # Credentials for the AccessPolicies API. + class Credentials < ::Google::Auth::Credentials + self.scope = [ + "https://www.googleapis.com/auth/cloud-platform" + ] + self.env_vars = [ + "GOOGLE_CLOUD_CREDENTIALS", + "GOOGLE_CLOUD_KEYFILE", + "GCLOUD_KEYFILE", + "GOOGLE_CLOUD_CREDENTIALS_JSON", + "GOOGLE_CLOUD_KEYFILE_JSON", + "GCLOUD_KEYFILE_JSON" + ] + self.paths = [ + "~/.config/google_cloud/application_default_credentials.json" + ] + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/operations.rb new file mode 100644 index 000000000000..1aca758a03d0 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/operations.rb @@ -0,0 +1,839 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "gapic/operation" +require "google/longrunning/operations_pb" + +module Google + module Iam + module V3beta + module AccessPolicies + # Service that implements Longrunning Operations API. + class Operations + # @private + API_VERSION = "" + + # @private + DEFAULT_ENDPOINT_TEMPLATE = "iam.$UNIVERSE_DOMAIN$" + + # @private + attr_reader :operations_stub + + ## + # Configuration for the AccessPolicies Operations API. + # + # @yield [config] Configure the Operations client. + # @yieldparam config [Operations::Configuration] + # + # @return [Operations::Configuration] + # + def self.configure + @configure ||= Operations::Configuration.new + yield @configure if block_given? + @configure + end + + ## + # Configure the AccessPolicies Operations instance. + # + # The configuration is set to the derived mode, meaning that values can be changed, + # but structural changes (adding new fields, etc.) are not allowed. Structural changes + # should be made on {Operations.configure}. + # + # @yield [config] Configure the Operations client. + # @yieldparam config [Operations::Configuration] + # + # @return [Operations::Configuration] + # + def configure + yield @config if block_given? + @config + end + + ## + # The effective universe domain + # + # @return [String] + # + def universe_domain + @operations_stub.universe_domain + end + + ## + # Create a new Operations client object. + # + # @yield [config] Configure the Client client. + # @yieldparam config [Operations::Configuration] + # + def initialize + # These require statements are intentionally placed here to initialize + # the gRPC module only when it's required. + # See https://github.com/googleapis/toolkit/issues/446 + require "gapic/grpc" + require "google/longrunning/operations_services_pb" + + # Create the configuration object + @config = Configuration.new Operations.configure + + # Yield the configuration if needed + yield @config if block_given? + + # Create credentials + credentials = @config.credentials + credentials ||= Credentials.default scope: @config.scope + if credentials.is_a?(::String) || credentials.is_a?(::Hash) + credentials = Credentials.new credentials, scope: @config.scope + end + @quota_project_id = @config.quota_project + @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id + + @operations_stub = ::Gapic::ServiceStub.new( + ::Google::Longrunning::Operations::Stub, + credentials: credentials, + endpoint: @config.endpoint, + endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, + universe_domain: @config.universe_domain, + channel_args: @config.channel_args, + interceptors: @config.interceptors, + channel_pool_config: @config.channel_pool + ) + + # Used by an LRO wrapper for some methods of this service + @operations_client = self + end + + # Service calls + + ## + # Lists operations that match the specified filter in the request. If the + # server doesn't support this method, it returns `UNIMPLEMENTED`. + # + # @overload list_operations(request, options = nil) + # Pass arguments to `list_operations` via a request object, either of type + # {::Google::Longrunning::ListOperationsRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::ListOperationsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload list_operations(name: nil, filter: nil, page_size: nil, page_token: nil, return_partial_success: nil) + # Pass arguments to `list_operations` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation's parent resource. + # @param filter [::String] + # The standard list filter. + # @param page_size [::Integer] + # The standard list page size. + # @param page_token [::String] + # The standard list page token. + # @param return_partial_success [::Boolean] + # When set to `true`, operations that are reachable are returned as normal, + # and those that are unreachable are returned in the + # [ListOperationsResponse.unreachable] field. + # + # This can only be `true` when reading across collections e.g. when `parent` + # is set to `"projects/example/locations/-"`. + # + # This field is not by default supported and will result in an + # `UNIMPLEMENTED` error if set unless explicitly documented otherwise in + # service or product specific documentation. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::PagedEnumerable<::Gapic::Operation>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::PagedEnumerable<::Gapic::Operation>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::ListOperationsRequest.new + # + # # Call the list_operations method. + # result = client.list_operations request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Longrunning::Operation. + # p item + # end + # + def list_operations request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::ListOperationsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.list_operations.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.list_operations.timeout, + metadata: metadata, + retry_policy: @config.rpcs.list_operations.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.call_rpc :list_operations, request, options: options do |response, operation| + wrap_lro_operation = ->(op_response) { ::Gapic::Operation.new op_response, @operations_client } + response = ::Gapic::PagedEnumerable.new @operations_stub, :list_operations, request, response, operation, options, format_resource: wrap_lro_operation + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Gets the latest state of a long-running operation. Clients can use this + # method to poll the operation result at intervals as recommended by the API + # service. + # + # @overload get_operation(request, options = nil) + # Pass arguments to `get_operation` via a request object, either of type + # {::Google::Longrunning::GetOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::GetOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload get_operation(name: nil) + # Pass arguments to `get_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::Operation] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::GetOperationRequest.new + # + # # Call the get_operation method. + # result = client.get_operation request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def get_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::GetOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.get_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.get_operation.timeout, + metadata: metadata, + retry_policy: @config.rpcs.get_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.call_rpc :get_operation, request, options: options do |response, operation| + response = ::Gapic::Operation.new response, @operations_client, options: options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Deletes a long-running operation. This method indicates that the client is + # no longer interested in the operation result. It does not cancel the + # operation. If the server doesn't support this method, it returns + # `google.rpc.Code.UNIMPLEMENTED`. + # + # @overload delete_operation(request, options = nil) + # Pass arguments to `delete_operation` via a request object, either of type + # {::Google::Longrunning::DeleteOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::DeleteOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload delete_operation(name: nil) + # Pass arguments to `delete_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource to be deleted. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Protobuf::Empty] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Protobuf::Empty] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::DeleteOperationRequest.new + # + # # Call the delete_operation method. + # result = client.delete_operation request + # + # # The returned object is of type Google::Protobuf::Empty. + # p result + # + def delete_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::DeleteOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.delete_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.delete_operation.timeout, + metadata: metadata, + retry_policy: @config.rpcs.delete_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.call_rpc :delete_operation, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Starts asynchronous cancellation on a long-running operation. The server + # makes a best effort to cancel the operation, but success is not + # guaranteed. If the server doesn't support this method, it returns + # `google.rpc.Code.UNIMPLEMENTED`. Clients can use + # Operations.GetOperation or + # other methods to check whether the cancellation succeeded or whether the + # operation completed despite cancellation. On successful cancellation, + # the operation is not deleted; instead, it becomes an operation with + # an {::Google::Longrunning::Operation#error Operation.error} value with a + # {::Google::Rpc::Status#code google.rpc.Status.code} of `1`, corresponding to + # `Code.CANCELLED`. + # + # @overload cancel_operation(request, options = nil) + # Pass arguments to `cancel_operation` via a request object, either of type + # {::Google::Longrunning::CancelOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::CancelOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload cancel_operation(name: nil) + # Pass arguments to `cancel_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource to be cancelled. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Protobuf::Empty] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Protobuf::Empty] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::CancelOperationRequest.new + # + # # Call the cancel_operation method. + # result = client.cancel_operation request + # + # # The returned object is of type Google::Protobuf::Empty. + # p result + # + def cancel_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::CancelOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.cancel_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.cancel_operation.timeout, + metadata: metadata, + retry_policy: @config.rpcs.cancel_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.call_rpc :cancel_operation, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Waits until the specified long-running operation is done or reaches at most + # a specified timeout, returning the latest state. If the operation is + # already done, the latest state is immediately returned. If the timeout + # specified is greater than the default HTTP/RPC timeout, the HTTP/RPC + # timeout is used. If the server does not support this method, it returns + # `google.rpc.Code.UNIMPLEMENTED`. + # Note that this method is on a best-effort basis. It may return the latest + # state before the specified timeout (including immediately), meaning even an + # immediate response is no guarantee that the operation is done. + # + # @overload wait_operation(request, options = nil) + # Pass arguments to `wait_operation` via a request object, either of type + # {::Google::Longrunning::WaitOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::WaitOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload wait_operation(name: nil, timeout: nil) + # Pass arguments to `wait_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource to wait on. + # @param timeout [::Google::Protobuf::Duration, ::Hash] + # The maximum duration to wait before timing out. If left blank, the wait + # will be at most the time permitted by the underlying HTTP/RPC protocol. + # If RPC context deadline is also specified, the shorter one will be used. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::Operation] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::WaitOperationRequest.new + # + # # Call the wait_operation method. + # result = client.wait_operation request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def wait_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::WaitOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.wait_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.wait_operation.timeout, + metadata: metadata, + retry_policy: @config.rpcs.wait_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.call_rpc :wait_operation, request, options: options do |response, operation| + response = ::Gapic::Operation.new response, @operations_client, options: options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Configuration class for the Operations API. + # + # This class represents the configuration for Operations, + # providing control over timeouts, retry behavior, logging, transport + # parameters, and other low-level controls. Certain parameters can also be + # applied individually to specific RPCs. See + # {::Google::Longrunning::Operations::Client::Configuration::Rpcs} + # for a list of RPCs that can be configured independently. + # + # Configuration can be applied globally to all clients, or to a single client + # on construction. + # + # @example + # + # # Modify the global config, setting the timeout for + # # list_operations to 20 seconds, + # # and all remaining timeouts to 10 seconds. + # ::Google::Longrunning::Operations::Client.configure do |config| + # config.timeout = 10.0 + # config.rpcs.list_operations.timeout = 20.0 + # end + # + # # Apply the above configuration only to a new client. + # client = ::Google::Longrunning::Operations::Client.new do |config| + # config.timeout = 10.0 + # config.rpcs.list_operations.timeout = 20.0 + # end + # + # @!attribute [rw] endpoint + # A custom service endpoint, as a hostname or hostname:port. The default is + # nil, indicating to use the default endpoint in the current universe domain. + # @return [::String,nil] + # @!attribute [rw] credentials + # Credentials to send with calls. You may provide any of the following types: + # * (`Google::Auth::Credentials`) A googleauth credentials object + # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials)) + # * (`Signet::OAuth2::Client`) A signet oauth2 client object + # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client)) + # * (`GRPC::Core::Channel`) a gRPC channel with included credentials + # * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object + # * (`nil`) indicating no credentials + # + # @note Warning: Passing a `String` to a keyfile path or a `Hash` of credentials + # is deprecated. Providing an unvalidated credential configuration to + # Google APIs can compromise the security of your systems and data. + # + # @example + # + # # The recommended way to provide credentials is to use the `make_creds` method + # # on the appropriate credentials class for your environment. + # + # require "googleauth" + # + # credentials = ::Google::Auth::ServiceAccountCredentials.make_creds( + # json_key_io: ::File.open("/path/to/keyfile.json") + # ) + # + # client = ::Google::Longrunning::Operations::Client.new do |config| + # config.credentials = credentials + # end + # + # @note Warning: If you accept a credential configuration (JSON file or Hash) from an + # external source for authentication to Google Cloud, you must validate it before + # providing it to a Google API client library. Providing an unvalidated credential + # configuration to Google APIs can compromise the security of your systems and data. + # For more information, refer to [Validate credential configurations from external + # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). + # @return [::Object] + # @!attribute [rw] scope + # The OAuth scopes + # @return [::Array<::String>] + # @!attribute [rw] lib_name + # The library name as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] lib_version + # The library version as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] channel_args + # Extra parameters passed to the gRPC channel. Note: this is ignored if a + # `GRPC::Core::Channel` object is provided as the credential. + # @return [::Hash] + # @!attribute [rw] interceptors + # An array of interceptors that are run before calls are executed. + # @return [::Array<::GRPC::ClientInterceptor>] + # @!attribute [rw] timeout + # The call timeout in seconds. + # @return [::Numeric] + # @!attribute [rw] metadata + # Additional gRPC headers to be sent with the call. + # @return [::Hash{::Symbol=>::String}] + # @!attribute [rw] retry_policy + # The retry policy. The value is a hash with the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # @return [::Hash] + # @!attribute [rw] quota_project + # A separate project against which to charge quota. + # @return [::String] + # @!attribute [rw] universe_domain + # The universe domain within which to make requests. This determines the + # default endpoint URL. The default value of nil uses the environment + # universe (usually the default "googleapis.com" universe). + # @return [::String,nil] + # @!attribute [rw] logger + # A custom logger to use for request/response debug logging, or the value + # `:default` (the default) to construct a default logger, or `nil` to + # explicitly disable logging. + # @return [::Logger,:default,nil] + # + class Configuration + extend ::Gapic::Config + + # @private + # The endpoint specific to the default "googleapis.com" universe. Deprecated. + DEFAULT_ENDPOINT = "iam.googleapis.com" + + config_attr :endpoint, nil, ::String, nil + config_attr :credentials, nil do |value| + allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil] + allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC::Core::Channel + allowed.any? { |klass| klass === value } + end + config_attr :scope, nil, ::String, ::Array, nil + config_attr :lib_name, nil, ::String, nil + config_attr :lib_version, nil, ::String, nil + config_attr(:channel_args, { "grpc.service_config_disable_resolution" => 1 }, ::Hash, nil) + config_attr :interceptors, nil, ::Array, nil + config_attr :timeout, nil, ::Numeric, nil + config_attr :metadata, nil, ::Hash, nil + config_attr :retry_policy, nil, ::Hash, ::Proc, nil + config_attr :quota_project, nil, ::String, nil + config_attr :universe_domain, nil, ::String, nil + config_attr :logger, :default, ::Logger, nil, :default + + # @private + def initialize parent_config = nil + @parent_config = parent_config unless parent_config.nil? + + yield self if block_given? + end + + ## + # Configurations for individual RPCs + # @return [Rpcs] + # + def rpcs + @rpcs ||= begin + parent_rpcs = nil + parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs) + Rpcs.new parent_rpcs + end + end + + ## + # Configuration for the channel pool + # @return [::Gapic::ServiceStub::ChannelPool::Configuration] + # + def channel_pool + @channel_pool ||= ::Gapic::ServiceStub::ChannelPool::Configuration.new + end + + ## + # Configuration RPC class for the Operations API. + # + # Includes fields providing the configuration for each RPC in this service. + # Each configuration object is of type `Gapic::Config::Method` and includes + # the following configuration fields: + # + # * `timeout` (*type:* `Numeric`) - The call timeout in seconds + # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional gRPC headers + # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields + # include the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # + class Rpcs + ## + # RPC-specific configuration for `list_operations` + # @return [::Gapic::Config::Method] + # + attr_reader :list_operations + ## + # RPC-specific configuration for `get_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :get_operation + ## + # RPC-specific configuration for `delete_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :delete_operation + ## + # RPC-specific configuration for `cancel_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :cancel_operation + ## + # RPC-specific configuration for `wait_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :wait_operation + + # @private + def initialize parent_rpcs = nil + list_operations_config = parent_rpcs.list_operations if parent_rpcs.respond_to? :list_operations + @list_operations = ::Gapic::Config::Method.new list_operations_config + get_operation_config = parent_rpcs.get_operation if parent_rpcs.respond_to? :get_operation + @get_operation = ::Gapic::Config::Method.new get_operation_config + delete_operation_config = parent_rpcs.delete_operation if parent_rpcs.respond_to? :delete_operation + @delete_operation = ::Gapic::Config::Method.new delete_operation_config + cancel_operation_config = parent_rpcs.cancel_operation if parent_rpcs.respond_to? :cancel_operation + @cancel_operation = ::Gapic::Config::Method.new cancel_operation_config + wait_operation_config = parent_rpcs.wait_operation if parent_rpcs.respond_to? :wait_operation + @wait_operation = ::Gapic::Config::Method.new wait_operation_config + + yield self if block_given? + end + end + end + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/paths.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/paths.rb new file mode 100644 index 000000000000..84aeb6908123 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/paths.rb @@ -0,0 +1,140 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Iam + module V3beta + module AccessPolicies + # Path helper methods for the AccessPolicies API. + module Paths + ## + # Create a fully-qualified AccessPolicy resource string. + # + # @overload access_policy_path(organization:, location:, access_policy:) + # The resource will be in the following format: + # + # `organizations/{organization}/locations/{location}/accessPolicies/{access_policy}` + # + # @param organization [String] + # @param location [String] + # @param access_policy [String] + # + # @overload access_policy_path(folder:, location:, access_policy:) + # The resource will be in the following format: + # + # `folders/{folder}/locations/{location}/accessPolicies/{access_policy}` + # + # @param folder [String] + # @param location [String] + # @param access_policy [String] + # + # @overload access_policy_path(project:, location:, access_policy:) + # The resource will be in the following format: + # + # `projects/{project}/locations/{location}/accessPolicies/{access_policy}` + # + # @param project [String] + # @param location [String] + # @param access_policy [String] + # + # @return [::String] + def access_policy_path **args + resources = { + "access_policy:location:organization" => (proc do |organization:, location:, access_policy:| + raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/" + raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/" + + "organizations/#{organization}/locations/#{location}/accessPolicies/#{access_policy}" + end), + "access_policy:folder:location" => (proc do |folder:, location:, access_policy:| + raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/" + raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/" + + "folders/#{folder}/locations/#{location}/accessPolicies/#{access_policy}" + end), + "access_policy:location:project" => (proc do |project:, location:, access_policy:| + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + raise ::ArgumentError, "location cannot contain /" if location.to_s.include? "/" + + "projects/#{project}/locations/#{location}/accessPolicies/#{access_policy}" + end) + } + + resource = resources[args.keys.sort.join(":")] + raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil? + resource.call(**args) + end + + ## + # Create a fully-qualified FolderLocation resource string. + # + # The resource will be in the following format: + # + # `folders/{folder}/locations/{location}` + # + # @param folder [String] + # @param location [String] + # + # @return [::String] + def folder_location_path folder:, location: + raise ::ArgumentError, "folder cannot contain /" if folder.to_s.include? "/" + + "folders/#{folder}/locations/#{location}" + end + + ## + # Create a fully-qualified Location resource string. + # + # The resource will be in the following format: + # + # `projects/{project}/locations/{location}` + # + # @param project [String] + # @param location [String] + # + # @return [::String] + def location_path project:, location: + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + + "projects/#{project}/locations/#{location}" + end + + ## + # Create a fully-qualified OrganizationLocation resource string. + # + # The resource will be in the following format: + # + # `organizations/{organization}/locations/{location}` + # + # @param organization [String] + # @param location [String] + # + # @return [::String] + def organization_location_path organization:, location: + raise ::ArgumentError, "organization cannot contain /" if organization.to_s.include? "/" + + "organizations/#{organization}/locations/#{location}" + end + + extend self + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest.rb new file mode 100644 index 000000000000..51742f0ec501 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "gapic/rest" +require "gapic/config" +require "gapic/config/method" + +require "google/cloud/iam/v3beta/version" + +require "google/iam/v3beta/access_policies/credentials" +require "google/iam/v3beta/access_policies/paths" +require "google/iam/v3beta/access_policies/rest/operations" +require "google/iam/v3beta/access_policies/rest/client" + +module Google + module Iam + module V3beta + ## + # Manages Identity and Access Management (IAM) access policies. + # + # To load this service and instantiate a REST client: + # + # require "google/iam/v3beta/access_policies/rest" + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + module AccessPolicies + # Client for the REST transport + module Rest + end + end + end + end +end + +helper_path = ::File.join __dir__, "rest", "helpers.rb" +require "google/iam/v3beta/access_policies/rest/helpers" if ::File.file? helper_path diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/client.rb new file mode 100644 index 000000000000..fbc4603967a1 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/client.rb @@ -0,0 +1,1026 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "google/cloud/errors" +require "google/iam/v3beta/access_policies_service_pb" +require "google/iam/v3beta/access_policies/rest/service_stub" +require "google/cloud/location/rest" + +module Google + module Iam + module V3beta + module AccessPolicies + module Rest + ## + # REST client for the AccessPolicies service. + # + # Manages Identity and Access Management (IAM) access policies. + # + class Client + # @private + API_VERSION = "" + + # @private + DEFAULT_ENDPOINT_TEMPLATE = "iam.$UNIVERSE_DOMAIN$" + + include Paths + + # @private + attr_reader :access_policies_stub + + ## + # Configure the AccessPolicies Client class. + # + # See {::Google::Iam::V3beta::AccessPolicies::Rest::Client::Configuration} + # for a description of the configuration fields. + # + # @example + # + # # Modify the configuration for all AccessPolicies clients + # ::Google::Iam::V3beta::AccessPolicies::Rest::Client.configure do |config| + # config.timeout = 10.0 + # end + # + # @yield [config] Configure the Client client. + # @yieldparam config [Client::Configuration] + # + # @return [Client::Configuration] + # + def self.configure + @configure ||= begin + namespace = ["Google", "Iam", "V3beta"] + parent_config = while namespace.any? + parent_name = namespace.join "::" + parent_const = const_get parent_name + break parent_const.configure if parent_const.respond_to? :configure + namespace.pop + end + default_config = Client::Configuration.new parent_config + + default_config.rpcs.create_access_policy.timeout = 30.0 + + default_config.rpcs.get_access_policy.timeout = 60.0 + default_config.rpcs.get_access_policy.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config.rpcs.update_access_policy.timeout = 30.0 + + default_config.rpcs.delete_access_policy.timeout = 30.0 + + default_config.rpcs.list_access_policies.timeout = 60.0 + default_config.rpcs.list_access_policies.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config.rpcs.search_access_policy_bindings.timeout = 60.0 + default_config.rpcs.search_access_policy_bindings.retry_policy = { + initial_delay: 1.0, max_delay: 10.0, multiplier: 1.3, retry_codes: [14] + } + + default_config + end + yield @configure if block_given? + @configure + end + + ## + # Configure the AccessPolicies Client instance. + # + # The configuration is set to the derived mode, meaning that values can be changed, + # but structural changes (adding new fields, etc.) are not allowed. Structural changes + # should be made on {Client.configure}. + # + # See {::Google::Iam::V3beta::AccessPolicies::Rest::Client::Configuration} + # for a description of the configuration fields. + # + # @yield [config] Configure the Client client. + # @yieldparam config [Client::Configuration] + # + # @return [Client::Configuration] + # + def configure + yield @config if block_given? + @config + end + + ## + # The effective universe domain + # + # @return [String] + # + def universe_domain + @access_policies_stub.universe_domain + end + + ## + # Create a new AccessPolicies REST client object. + # + # @example + # + # # Create a client using the default configuration + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a client using a custom configuration + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + # config.timeout = 10.0 + # end + # + # @yield [config] Configure the AccessPolicies client. + # @yieldparam config [Client::Configuration] + # + def initialize + # Create the configuration object + @config = Configuration.new Client.configure + + # Yield the configuration if needed + yield @config if block_given? + + # Create credentials + credentials = @config.credentials + # Use self-signed JWT if the endpoint is unchanged from default, + # but only if the default endpoint does not have a region prefix. + enable_self_signed_jwt = @config.endpoint.nil? || + (@config.endpoint == Configuration::DEFAULT_ENDPOINT && + !@config.endpoint.split(".").first.include?("-")) + credentials ||= Credentials.default scope: @config.scope, + enable_self_signed_jwt: enable_self_signed_jwt + if credentials.is_a?(::String) || credentials.is_a?(::Hash) + credentials = Credentials.new credentials, scope: @config.scope + end + + @quota_project_id = @config.quota_project + @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id + + @operations_client = ::Google::Iam::V3beta::AccessPolicies::Rest::Operations.new do |config| + config.credentials = credentials + config.quota_project = @quota_project_id + config.endpoint = @config.endpoint + config.universe_domain = @config.universe_domain + end + + @access_policies_stub = ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.new( + endpoint: @config.endpoint, + endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, + universe_domain: @config.universe_domain, + credentials: credentials, + logger: @config.logger + ) + + @access_policies_stub.logger(stub: true)&.info do |entry| + entry.set_system_name + entry.set_service + entry.message = "Created client for #{entry.service}" + entry.set_credentials_fields credentials + entry.set "customEndpoint", @config.endpoint if @config.endpoint + entry.set "defaultTimeout", @config.timeout if @config.timeout + entry.set "quotaProject", @quota_project_id if @quota_project_id + end + + @location_client = Google::Cloud::Location::Locations::Rest::Client.new do |config| + config.credentials = credentials + config.quota_project = @quota_project_id + config.endpoint = @access_policies_stub.endpoint + config.universe_domain = @access_policies_stub.universe_domain + config.logger = @access_policies_stub.logger if config.respond_to? :logger= + end + end + + ## + # Get the associated client for long-running operations. + # + # @return [::Google::Iam::V3beta::AccessPolicies::Rest::Operations] + # + attr_reader :operations_client + + ## + # Get the associated client for mix-in of the Locations. + # + # @return [Google::Cloud::Location::Locations::Rest::Client] + # + attr_reader :location_client + + ## + # The logger used for request/response debug logging. + # + # @return [Logger] + # + def logger + @access_policies_stub.logger + end + + # Service calls + + ## + # Creates an access policy, and returns a long running operation. + # + # @overload create_access_policy(request, options = nil) + # Pass arguments to `create_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::CreateAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::CreateAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload create_access_policy(parent: nil, access_policy_id: nil, access_policy: nil, validate_only: nil) + # Pass arguments to `create_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. The parent resource where this access policy will be created. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @param access_policy_id [::String] + # Required. The ID to use for the access policy, which + # will become the final component of the access policy's + # resource name. + # + # This value must start with a lowercase letter followed by up to 62 + # lowercase letters, numbers, hyphens, or dots. Pattern, + # /[a-z][a-z0-9-\.]\\{2,62}/. + # + # This value must be unique among all access policies with the same parent. + # @param access_policy [::Google::Iam::V3beta::AccessPolicy, ::Hash] + # Required. The access policy to create. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the creation, but do not + # actually post it. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::CreateAccessPolicyRequest.new + # + # # Call the create_access_policy method. + # result = client.create_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def create_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::CreateAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.create_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.create_access_policy.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.create_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.create_access_policy request, options do |result, operation| + result = ::Gapic::Operation.new result, @operations_client, options: options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Gets an access policy. + # + # @overload get_access_policy(request, options = nil) + # Pass arguments to `get_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::GetAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::GetAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload get_access_policy(name: nil) + # Pass arguments to `get_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy to retrieve. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Iam::V3beta::AccessPolicy] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Iam::V3beta::AccessPolicy] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::GetAccessPolicyRequest.new + # + # # Call the get_access_policy method. + # result = client.get_access_policy request + # + # # The returned object is of type Google::Iam::V3beta::AccessPolicy. + # p result + # + def get_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::GetAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.get_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.get_access_policy.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.get_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.get_access_policy request, options do |result, operation| + yield result, operation if block_given? + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Updates an access policy. + # + # @overload update_access_policy(request, options = nil) + # Pass arguments to `update_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::UpdateAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::UpdateAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload update_access_policy(access_policy: nil, validate_only: nil) + # Pass arguments to `update_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param access_policy [::Google::Iam::V3beta::AccessPolicy, ::Hash] + # Required. The access policy to update. + # + # The access policy's `name` field is used to identify the + # policy to update. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the update, but do not + # actually post it. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::UpdateAccessPolicyRequest.new + # + # # Call the update_access_policy method. + # result = client.update_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def update_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::UpdateAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.update_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.update_access_policy.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.update_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.update_access_policy request, options do |result, operation| + result = ::Gapic::Operation.new result, @operations_client, options: options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Deletes an access policy. + # + # @overload delete_access_policy(request, options = nil) + # Pass arguments to `delete_access_policy` via a request object, either of type + # {::Google::Iam::V3beta::DeleteAccessPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::DeleteAccessPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload delete_access_policy(name: nil, etag: nil, validate_only: nil, force: nil) + # Pass arguments to `delete_access_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy to delete. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # @param etag [::String] + # Optional. The etag of the access policy. If this is provided, it must match + # the server's etag. + # @param validate_only [::Boolean] + # Optional. If set, validate the request and preview the deletion, but do not + # actually post it. + # @param force [::Boolean] + # Optional. If set to true, the request will force the deletion of the Policy + # even if the Policy references PolicyBindings. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::DeleteAccessPolicyRequest.new + # + # # Call the delete_access_policy method. + # result = client.delete_access_policy request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def delete_access_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::DeleteAccessPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.delete_access_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.delete_access_policy.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.delete_access_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.delete_access_policy request, options do |result, operation| + result = ::Gapic::Operation.new result, @operations_client, options: options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Lists access policies. + # + # @overload list_access_policies(request, options = nil) + # Pass arguments to `list_access_policies` via a request object, either of type + # {::Google::Iam::V3beta::ListAccessPoliciesRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::ListAccessPoliciesRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload list_access_policies(parent: nil, page_size: nil, page_token: nil) + # Pass arguments to `list_access_policies` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. The parent resource, which owns the collection of access policy + # resources. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @param page_size [::Integer] + # Optional. The maximum number of access policies to return. The + # service may return fewer than this value. + # + # If unspecified, at most 50 access policies will be returned. Valid value + # ranges from 1 to 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `ListAccessPolicies` call. Provide this to retrieve the + # subsequent page. + # + # When paginating, all other parameters provided to + # `ListAccessPolicies` must match the call that provided the + # page token. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Iam::V3beta::AccessPolicy>] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Rest::PagedEnumerable<::Google::Iam::V3beta::AccessPolicy>] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::ListAccessPoliciesRequest.new + # + # # Call the list_access_policies method. + # result = client.list_access_policies request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Iam::V3beta::AccessPolicy. + # p item + # end + # + def list_access_policies request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::ListAccessPoliciesRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.list_access_policies.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.list_access_policies.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.list_access_policies.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.list_access_policies request, options do |result, operation| + result = ::Gapic::Rest::PagedEnumerable.new @access_policies_stub, :list_access_policies, "access_policies", request, result, options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Returns all policy bindings that bind a specific policy if a user has + # searchPolicyBindings permission on that policy. + # + # @overload search_access_policy_bindings(request, options = nil) + # Pass arguments to `search_access_policy_bindings` via a request object, either of type + # {::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest} or an equivalent Hash. + # + # @param request [::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload search_access_policy_bindings(name: nil, page_size: nil, page_token: nil) + # Pass arguments to `search_access_policy_bindings` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the access policy. + # Format: + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # @param page_size [::Integer] + # Optional. The maximum number of policy bindings to return. The service may + # return fewer than this value. + # + # If unspecified, at most 50 policy bindings will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `SearchAccessPolicyBindingsRequest` call. Provide this to + # retrieve the subsequent page. + # + # When paginating, all other parameters provided to + # `SearchAccessPolicyBindingsRequest` must match the call + # that provided the page token. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Rest::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/iam/v3beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Iam::V3beta::AccessPolicies::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new + # + # # Call the search_access_policy_bindings method. + # result = client.search_access_policy_bindings request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Iam::V3beta::PolicyBinding. + # p item + # end + # + def search_access_policy_bindings request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.search_access_policy_bindings.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.search_access_policy_bindings.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.search_access_policy_bindings.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @access_policies_stub.search_access_policy_bindings request, options do |result, operation| + result = ::Gapic::Rest::PagedEnumerable.new @access_policies_stub, :search_access_policy_bindings, "policy_bindings", request, result, options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Configuration class for the AccessPolicies REST API. + # + # This class represents the configuration for AccessPolicies REST, + # providing control over timeouts, retry behavior, logging, transport + # parameters, and other low-level controls. Certain parameters can also be + # applied individually to specific RPCs. See + # {::Google::Iam::V3beta::AccessPolicies::Rest::Client::Configuration::Rpcs} + # for a list of RPCs that can be configured independently. + # + # Configuration can be applied globally to all clients, or to a single client + # on construction. + # + # @example + # + # # Modify the global config, setting the timeout for + # # create_access_policy to 20 seconds, + # # and all remaining timeouts to 10 seconds. + # ::Google::Iam::V3beta::AccessPolicies::Rest::Client.configure do |config| + # config.timeout = 10.0 + # config.rpcs.create_access_policy.timeout = 20.0 + # end + # + # # Apply the above configuration only to a new client. + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + # config.timeout = 10.0 + # config.rpcs.create_access_policy.timeout = 20.0 + # end + # + # @!attribute [rw] endpoint + # A custom service endpoint, as a hostname or hostname:port. The default is + # nil, indicating to use the default endpoint in the current universe domain. + # @return [::String,nil] + # @!attribute [rw] credentials + # Credentials to send with calls. You may provide any of the following types: + # * (`String`) The path to a service account key file in JSON format + # * (`Hash`) A service account key as a Hash + # * (`Google::Auth::Credentials`) A googleauth credentials object + # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials)) + # * (`Signet::OAuth2::Client`) A signet oauth2 client object + # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client)) + # * (`nil`) indicating no credentials + # + # Warning: If you accept a credential configuration (JSON file or Hash) from an + # external source for authentication to Google Cloud, you must validate it before + # providing it to a Google API client library. Providing an unvalidated credential + # configuration to Google APIs can compromise the security of your systems and data. + # For more information, refer to [Validate credential configurations from external + # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). + # @return [::Object] + # @!attribute [rw] scope + # The OAuth scopes + # @return [::Array<::String>] + # @!attribute [rw] lib_name + # The library name as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] lib_version + # The library version as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] timeout + # The call timeout in seconds. + # @return [::Numeric] + # @!attribute [rw] metadata + # Additional headers to be sent with the call. + # @return [::Hash{::Symbol=>::String}] + # @!attribute [rw] retry_policy + # The retry policy. The value is a hash with the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # @return [::Hash] + # @!attribute [rw] quota_project + # A separate project against which to charge quota. + # @return [::String] + # @!attribute [rw] universe_domain + # The universe domain within which to make requests. This determines the + # default endpoint URL. The default value of nil uses the environment + # universe (usually the default "googleapis.com" universe). + # @return [::String,nil] + # @!attribute [rw] logger + # A custom logger to use for request/response debug logging, or the value + # `:default` (the default) to construct a default logger, or `nil` to + # explicitly disable logging. + # @return [::Logger,:default,nil] + # + class Configuration + extend ::Gapic::Config + + # @private + # The endpoint specific to the default "googleapis.com" universe. Deprecated. + DEFAULT_ENDPOINT = "iam.googleapis.com" + + config_attr :endpoint, nil, ::String, nil + config_attr :credentials, nil do |value| + allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil] + allowed.any? { |klass| klass === value } + end + config_attr :scope, nil, ::String, ::Array, nil + config_attr :lib_name, nil, ::String, nil + config_attr :lib_version, nil, ::String, nil + config_attr :timeout, nil, ::Numeric, nil + config_attr :metadata, nil, ::Hash, nil + config_attr :retry_policy, nil, ::Hash, ::Proc, nil + config_attr :quota_project, nil, ::String, nil + config_attr :universe_domain, nil, ::String, nil + config_attr :logger, :default, ::Logger, nil, :default + + # @private + def initialize parent_config = nil + @parent_config = parent_config unless parent_config.nil? + + yield self if block_given? + end + + ## + # Configurations for individual RPCs + # @return [Rpcs] + # + def rpcs + @rpcs ||= begin + parent_rpcs = nil + parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs) + Rpcs.new parent_rpcs + end + end + + ## + # Configuration RPC class for the AccessPolicies API. + # + # Includes fields providing the configuration for each RPC in this service. + # Each configuration object is of type `Gapic::Config::Method` and includes + # the following configuration fields: + # + # * `timeout` (*type:* `Numeric`) - The call timeout in seconds + # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional headers + # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields + # include the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # + class Rpcs + ## + # RPC-specific configuration for `create_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :create_access_policy + ## + # RPC-specific configuration for `get_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :get_access_policy + ## + # RPC-specific configuration for `update_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :update_access_policy + ## + # RPC-specific configuration for `delete_access_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :delete_access_policy + ## + # RPC-specific configuration for `list_access_policies` + # @return [::Gapic::Config::Method] + # + attr_reader :list_access_policies + ## + # RPC-specific configuration for `search_access_policy_bindings` + # @return [::Gapic::Config::Method] + # + attr_reader :search_access_policy_bindings + + # @private + def initialize parent_rpcs = nil + create_access_policy_config = parent_rpcs.create_access_policy if parent_rpcs.respond_to? :create_access_policy + @create_access_policy = ::Gapic::Config::Method.new create_access_policy_config + get_access_policy_config = parent_rpcs.get_access_policy if parent_rpcs.respond_to? :get_access_policy + @get_access_policy = ::Gapic::Config::Method.new get_access_policy_config + update_access_policy_config = parent_rpcs.update_access_policy if parent_rpcs.respond_to? :update_access_policy + @update_access_policy = ::Gapic::Config::Method.new update_access_policy_config + delete_access_policy_config = parent_rpcs.delete_access_policy if parent_rpcs.respond_to? :delete_access_policy + @delete_access_policy = ::Gapic::Config::Method.new delete_access_policy_config + list_access_policies_config = parent_rpcs.list_access_policies if parent_rpcs.respond_to? :list_access_policies + @list_access_policies = ::Gapic::Config::Method.new list_access_policies_config + search_access_policy_bindings_config = parent_rpcs.search_access_policy_bindings if parent_rpcs.respond_to? :search_access_policy_bindings + @search_access_policy_bindings = ::Gapic::Config::Method.new search_access_policy_bindings_config + + yield self if block_given? + end + end + end + end + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/operations.rb new file mode 100644 index 000000000000..746676e0ba56 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/operations.rb @@ -0,0 +1,937 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "gapic/operation" + +module Google + module Iam + module V3beta + module AccessPolicies + module Rest + # Service that implements Longrunning Operations API. + class Operations + # @private + API_VERSION = "" + + # @private + DEFAULT_ENDPOINT_TEMPLATE = "iam.$UNIVERSE_DOMAIN$" + + # @private + attr_reader :operations_stub + + ## + # Configuration for the AccessPolicies Operations API. + # + # @yield [config] Configure the Operations client. + # @yieldparam config [Operations::Configuration] + # + # @return [Operations::Configuration] + # + def self.configure + @configure ||= Operations::Configuration.new + yield @configure if block_given? + @configure + end + + ## + # Configure the AccessPolicies Operations instance. + # + # The configuration is set to the derived mode, meaning that values can be changed, + # but structural changes (adding new fields, etc.) are not allowed. Structural changes + # should be made on {Operations.configure}. + # + # @yield [config] Configure the Operations client. + # @yieldparam config [Operations::Configuration] + # + # @return [Operations::Configuration] + # + def configure + yield @config if block_given? + @config + end + + ## + # The effective universe domain + # + # @return [String] + # + def universe_domain + @operations_stub.universe_domain + end + + ## + # Create a new Operations client object. + # + # @yield [config] Configure the Client client. + # @yieldparam config [Operations::Configuration] + # + def initialize + # Create the configuration object + @config = Configuration.new Operations.configure + + # Yield the configuration if needed + yield @config if block_given? + + # Create credentials + credentials = @config.credentials + credentials ||= Credentials.default scope: @config.scope + if credentials.is_a?(::String) || credentials.is_a?(::Hash) + credentials = Credentials.new credentials, scope: @config.scope + end + + @quota_project_id = @config.quota_project + @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id + + @operations_stub = OperationsServiceStub.new( + endpoint: @config.endpoint, + endpoint_template: DEFAULT_ENDPOINT_TEMPLATE, + universe_domain: @config.universe_domain, + credentials: credentials + ) + + # Used by an LRO wrapper for some methods of this service + @operations_client = self + end + + # Service calls + + ## + # Lists operations that match the specified filter in the request. If the + # server doesn't support this method, it returns `UNIMPLEMENTED`. + # + # @overload list_operations(request, options = nil) + # Pass arguments to `list_operations` via a request object, either of type + # {::Google::Longrunning::ListOperationsRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::ListOperationsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload list_operations(name: nil, filter: nil, page_size: nil, page_token: nil, return_partial_success: nil) + # Pass arguments to `list_operations` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation's parent resource. + # @param filter [::String] + # The standard list filter. + # @param page_size [::Integer] + # The standard list page size. + # @param page_token [::String] + # The standard list page token. + # @param return_partial_success [::Boolean] + # When set to `true`, operations that are reachable are returned as normal, + # and those that are unreachable are returned in the + # [ListOperationsResponse.unreachable] field. + # + # This can only be `true` when reading across collections e.g. when `parent` + # is set to `"projects/example/locations/-"`. + # + # This field is not by default supported and will result in an + # `UNIMPLEMENTED` error if set unless explicitly documented otherwise in + # service or product specific documentation. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::ListOperationsRequest.new + # + # # Call the list_operations method. + # result = client.list_operations request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Longrunning::Operation. + # p item + # end + # + def list_operations request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::ListOperationsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.list_operations.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.list_operations.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.list_operations.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.list_operations request, options do |result, operation| + result = ::Gapic::Rest::PagedEnumerable.new @operations_stub, :list_operations, "operations", request, result, options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Gets the latest state of a long-running operation. Clients can use this + # method to poll the operation result at intervals as recommended by the API + # service. + # + # @overload get_operation(request, options = nil) + # Pass arguments to `get_operation` via a request object, either of type + # {::Google::Longrunning::GetOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::GetOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload get_operation(name: nil) + # Pass arguments to `get_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Operation] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::GetOperationRequest.new + # + # # Call the get_operation method. + # result = client.get_operation request + # + # # The returned object is of type Gapic::Operation. You can use it to + # # check the status of an operation, cancel it, or wait for results. + # # Here is how to wait for a response. + # result.wait_until_done! timeout: 60 + # if result.response? + # p result.response + # else + # puts "No response received." + # end + # + def get_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::GetOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.get_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.get_operation.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.get_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.get_operation request, options do |result, operation| + result = ::Gapic::Operation.new result, @operations_client, options: options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Deletes a long-running operation. This method indicates that the client is + # no longer interested in the operation result. It does not cancel the + # operation. If the server doesn't support this method, it returns + # `google.rpc.Code.UNIMPLEMENTED`. + # + # @overload delete_operation(request, options = nil) + # Pass arguments to `delete_operation` via a request object, either of type + # {::Google::Longrunning::DeleteOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::DeleteOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload delete_operation(name: nil) + # Pass arguments to `delete_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource to be deleted. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Protobuf::Empty] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Protobuf::Empty] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::DeleteOperationRequest.new + # + # # Call the delete_operation method. + # result = client.delete_operation request + # + # # The returned object is of type Google::Protobuf::Empty. + # p result + # + def delete_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::DeleteOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.delete_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.delete_operation.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.delete_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.delete_operation request, options do |result, operation| + yield result, operation if block_given? + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Starts asynchronous cancellation on a long-running operation. The server + # makes a best effort to cancel the operation, but success is not + # guaranteed. If the server doesn't support this method, it returns + # `google.rpc.Code.UNIMPLEMENTED`. Clients can use + # Operations.GetOperation or + # other methods to check whether the cancellation succeeded or whether the + # operation completed despite cancellation. On successful cancellation, + # the operation is not deleted; instead, it becomes an operation with + # an {::Google::Longrunning::Operation#error Operation.error} value with a + # {::Google::Rpc::Status#code google.rpc.Status.code} of `1`, corresponding to + # `Code.CANCELLED`. + # + # @overload cancel_operation(request, options = nil) + # Pass arguments to `cancel_operation` via a request object, either of type + # {::Google::Longrunning::CancelOperationRequest} or an equivalent Hash. + # + # @param request [::Google::Longrunning::CancelOperationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload cancel_operation(name: nil) + # Pass arguments to `cancel_operation` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # The name of the operation resource to be cancelled. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Protobuf::Empty] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Protobuf::Empty] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/longrunning" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Longrunning::Operations::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Longrunning::CancelOperationRequest.new + # + # # Call the cancel_operation method. + # result = client.cancel_operation request + # + # # The returned object is of type Google::Protobuf::Empty. + # p result + # + def cancel_operation request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Longrunning::CancelOperationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.cancel_operation.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.cancel_operation.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.cancel_operation.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @operations_stub.cancel_operation request, options do |result, operation| + yield result, operation if block_given? + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Configuration class for the Operations REST API. + # + # This class represents the configuration for Operations REST, + # providing control over timeouts, retry behavior, logging, transport + # parameters, and other low-level controls. Certain parameters can also be + # applied individually to specific RPCs. See + # {::Google::Longrunning::Operations::Rest::Client::Configuration::Rpcs} + # for a list of RPCs that can be configured independently. + # + # Configuration can be applied globally to all clients, or to a single client + # on construction. + # + # @example + # + # # Modify the global config, setting the timeout for + # # list_operations to 20 seconds, + # # and all remaining timeouts to 10 seconds. + # ::Google::Longrunning::Operations::Rest::Client.configure do |config| + # config.timeout = 10.0 + # config.rpcs.list_operations.timeout = 20.0 + # end + # + # # Apply the above configuration only to a new client. + # client = ::Google::Longrunning::Operations::Rest::Client.new do |config| + # config.timeout = 10.0 + # config.rpcs.list_operations.timeout = 20.0 + # end + # + # @!attribute [rw] endpoint + # A custom service endpoint, as a hostname or hostname:port. The default is + # nil, indicating to use the default endpoint in the current universe domain. + # @return [::String,nil] + # @!attribute [rw] credentials + # Credentials to send with calls. You may provide any of the following types: + # * (`String`) The path to a service account key file in JSON format + # * (`Hash`) A service account key as a Hash + # * (`Google::Auth::Credentials`) A googleauth credentials object + # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials)) + # * (`Signet::OAuth2::Client`) A signet oauth2 client object + # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client)) + # * (`nil`) indicating no credentials + # + # Warning: If you accept a credential configuration (JSON file or Hash) from an + # external source for authentication to Google Cloud, you must validate it before + # providing it to a Google API client library. Providing an unvalidated credential + # configuration to Google APIs can compromise the security of your systems and data. + # For more information, refer to [Validate credential configurations from external + # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials). + # @return [::Object] + # @!attribute [rw] scope + # The OAuth scopes + # @return [::Array<::String>] + # @!attribute [rw] lib_name + # The library name as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] lib_version + # The library version as recorded in instrumentation and logging + # @return [::String] + # @!attribute [rw] timeout + # The call timeout in seconds. + # @return [::Numeric] + # @!attribute [rw] metadata + # Additional headers to be sent with the call. + # @return [::Hash{::Symbol=>::String}] + # @!attribute [rw] retry_policy + # The retry policy. The value is a hash with the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # @return [::Hash] + # @!attribute [rw] quota_project + # A separate project against which to charge quota. + # @return [::String] + # @!attribute [rw] universe_domain + # The universe domain within which to make requests. This determines the + # default endpoint URL. The default value of nil uses the environment + # universe (usually the default "googleapis.com" universe). + # @return [::String,nil] + # @!attribute [rw] logger + # A custom logger to use for request/response debug logging, or the value + # `:default` (the default) to construct a default logger, or `nil` to + # explicitly disable logging. + # @return [::Logger,:default,nil] + # + class Configuration + extend ::Gapic::Config + + # @private + # The endpoint specific to the default "googleapis.com" universe. Deprecated. + DEFAULT_ENDPOINT = "iam.googleapis.com" + + config_attr :endpoint, nil, ::String, nil + config_attr :credentials, nil do |value| + allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil] + allowed.any? { |klass| klass === value } + end + config_attr :scope, nil, ::String, ::Array, nil + config_attr :lib_name, nil, ::String, nil + config_attr :lib_version, nil, ::String, nil + config_attr :timeout, nil, ::Numeric, nil + config_attr :metadata, nil, ::Hash, nil + config_attr :retry_policy, nil, ::Hash, ::Proc, nil + config_attr :quota_project, nil, ::String, nil + config_attr :universe_domain, nil, ::String, nil + config_attr :logger, :default, ::Logger, nil, :default + + # @private + def initialize parent_config = nil + @parent_config = parent_config unless parent_config.nil? + + yield self if block_given? + end + + ## + # Configurations for individual RPCs + # @return [Rpcs] + # + def rpcs + @rpcs ||= begin + parent_rpcs = nil + parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs) + Rpcs.new parent_rpcs + end + end + + ## + # Configuration RPC class for the Operations API. + # + # Includes fields providing the configuration for each RPC in this service. + # Each configuration object is of type `Gapic::Config::Method` and includes + # the following configuration fields: + # + # * `timeout` (*type:* `Numeric`) - The call timeout in seconds + # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional headers + # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields + # include the following keys: + # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds. + # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds. + # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier. + # * `:retry_codes` (*type:* `Array`) - The error codes that should + # trigger a retry. + # + class Rpcs + ## + # RPC-specific configuration for `list_operations` + # @return [::Gapic::Config::Method] + # + attr_reader :list_operations + ## + # RPC-specific configuration for `get_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :get_operation + ## + # RPC-specific configuration for `delete_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :delete_operation + ## + # RPC-specific configuration for `cancel_operation` + # @return [::Gapic::Config::Method] + # + attr_reader :cancel_operation + + # @private + def initialize parent_rpcs = nil + list_operations_config = parent_rpcs.list_operations if parent_rpcs.respond_to? :list_operations + @list_operations = ::Gapic::Config::Method.new list_operations_config + get_operation_config = parent_rpcs.get_operation if parent_rpcs.respond_to? :get_operation + @get_operation = ::Gapic::Config::Method.new get_operation_config + delete_operation_config = parent_rpcs.delete_operation if parent_rpcs.respond_to? :delete_operation + @delete_operation = ::Gapic::Config::Method.new delete_operation_config + cancel_operation_config = parent_rpcs.cancel_operation if parent_rpcs.respond_to? :cancel_operation + @cancel_operation = ::Gapic::Config::Method.new cancel_operation_config + + yield self if block_given? + end + end + end + end + + ## + # @private + # REST service stub for the Longrunning Operations API. + # Service stub contains baseline method implementations + # including transcoding, making the REST call, and deserialing the response. + class OperationsServiceStub + def initialize endpoint:, endpoint_template:, universe_domain:, credentials: + # These require statements are intentionally placed here to initialize + # the REST modules only when it's required. + require "gapic/rest" + + @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials + end + + ## + # Baseline implementation for the list_operations REST call + # + # @param request_pb [::Google::Longrunning::ListOperationsRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Longrunning::ListOperationsResponse] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Longrunning::ListOperationsResponse] + # A result object deserialized from the server's reply + def list_operations request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = OperationsServiceStub.transcode_list_operations_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "list_operations", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Longrunning::ListOperationsResponse.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the get_operation REST call + # + # @param request_pb [::Google::Longrunning::GetOperationRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Longrunning::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Longrunning::Operation] + # A result object deserialized from the server's reply + def get_operation request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = OperationsServiceStub.transcode_get_operation_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "get_operation", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Longrunning::Operation.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the delete_operation REST call + # + # @param request_pb [::Google::Longrunning::DeleteOperationRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Protobuf::Empty] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Protobuf::Empty] + # A result object deserialized from the server's reply + def delete_operation request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = OperationsServiceStub.transcode_delete_operation_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "delete_operation", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Protobuf::Empty.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the cancel_operation REST call + # + # @param request_pb [::Google::Longrunning::CancelOperationRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Protobuf::Empty] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Protobuf::Empty] + # A result object deserialized from the server's reply + def cancel_operation request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = OperationsServiceStub.transcode_cancel_operation_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "cancel_operation", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Protobuf::Empty.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # @private + # + # GRPC transcoding helper method for the list_operations REST call + # + # @param request_pb [::Google::Longrunning::ListOperationsRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_list_operations_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :get, + uri_template: "/v1/{name}", + matches: [ + ["name", %r{^operations/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the get_operation REST call + # + # @param request_pb [::Google::Longrunning::GetOperationRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_get_operation_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^projects/[^/]+/locations/[^/]+/operations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^folders/[^/]+/locations/[^/]+/operations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^organizations/[^/]+/locations/[^/]+/operations/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the delete_operation REST call + # + # @param request_pb [::Google::Longrunning::DeleteOperationRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_delete_operation_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :delete, + uri_template: "/v1/{name}", + matches: [ + ["name", %r{^operations(?:/.*)?$}, true] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the cancel_operation REST call + # + # @param request_pb [::Google::Longrunning::CancelOperationRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_cancel_operation_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :post, + uri_template: "/v1/{name}:cancel", + body: "*", + matches: [ + ["name", %r{^operations(?:/.*)?$}, true] + ] + ) + transcoder.transcode request_pb + end + end + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/service_stub.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/service_stub.rb new file mode 100644 index 000000000000..932dd88668d4 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies/rest/service_stub.rb @@ -0,0 +1,535 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "google/iam/v3beta/access_policies_service_pb" + +module Google + module Iam + module V3beta + module AccessPolicies + module Rest + ## + # REST service stub for the AccessPolicies service. + # Service stub contains baseline method implementations + # including transcoding, making the REST call, and deserialing the response. + # + class ServiceStub + # @private + def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger: + # These require statements are intentionally placed here to initialize + # the REST modules only when it's required. + require "gapic/rest" + + @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, + endpoint_template: endpoint_template, + universe_domain: universe_domain, + credentials: credentials, + numeric_enums: true, + service_name: self.class, + raise_faraday_errors: false, + logger: logger + end + + ## + # The effective universe domain + # + # @return [String] + # + def universe_domain + @client_stub.universe_domain + end + + ## + # The effective endpoint + # + # @return [String] + # + def endpoint + @client_stub.endpoint + end + + ## + # The logger used for request/response debug logging. + # + # @return [Logger] + # + def logger stub: false + stub ? @client_stub.stub_logger : @client_stub.logger + end + + ## + # Baseline implementation for the create_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::CreateAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Longrunning::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Longrunning::Operation] + # A result object deserialized from the server's reply + def create_access_policy request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_create_access_policy_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "create_access_policy", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Longrunning::Operation.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the get_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::GetAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Iam::V3beta::AccessPolicy] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Iam::V3beta::AccessPolicy] + # A result object deserialized from the server's reply + def get_access_policy request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_get_access_policy_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "get_access_policy", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Iam::V3beta::AccessPolicy.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the update_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::UpdateAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Longrunning::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Longrunning::Operation] + # A result object deserialized from the server's reply + def update_access_policy request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_update_access_policy_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "update_access_policy", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Longrunning::Operation.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the delete_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::DeleteAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Longrunning::Operation] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Longrunning::Operation] + # A result object deserialized from the server's reply + def delete_access_policy request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_delete_access_policy_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "delete_access_policy", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Longrunning::Operation.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the list_access_policies REST call + # + # @param request_pb [::Google::Iam::V3beta::ListAccessPoliciesRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Iam::V3beta::ListAccessPoliciesResponse] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Iam::V3beta::ListAccessPoliciesResponse] + # A result object deserialized from the server's reply + def list_access_policies request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_list_access_policies_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "list_access_policies", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Iam::V3beta::ListAccessPoliciesResponse.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # Baseline implementation for the search_access_policy_bindings REST call + # + # @param request_pb [::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse] + # A result object deserialized from the server's reply + def search_access_policy_bindings request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_search_access_policy_bindings_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "search_access_policy_bindings", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + + ## + # @private + # + # GRPC transcoding helper method for the create_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::CreateAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_create_access_policy_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :post, + uri_template: "/v3beta/{parent}/accessPolicies", + body: "access_policy", + matches: [ + ["parent", %r{^projects/[^/]+/locations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :post, + uri_template: "/v3beta/{parent}/accessPolicies", + body: "access_policy", + matches: [ + ["parent", %r{^folders/[^/]+/locations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :post, + uri_template: "/v3beta/{parent}/accessPolicies", + body: "access_policy", + matches: [ + ["parent", %r{^organizations/[^/]+/locations/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the get_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::GetAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_get_access_policy_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^projects/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^folders/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^organizations/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the update_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::UpdateAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_update_access_policy_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :patch, + uri_template: "/v3beta/{access_policy.name}", + body: "access_policy", + matches: [ + ["access_policy.name", %r{^projects/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :patch, + uri_template: "/v3beta/{access_policy.name}", + body: "access_policy", + matches: [ + ["access_policy.name", %r{^folders/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :patch, + uri_template: "/v3beta/{access_policy.name}", + body: "access_policy", + matches: [ + ["access_policy.name", %r{^organizations/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the delete_access_policy REST call + # + # @param request_pb [::Google::Iam::V3beta::DeleteAccessPolicyRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_delete_access_policy_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :delete, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^projects/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :delete, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^folders/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :delete, + uri_template: "/v3beta/{name}", + matches: [ + ["name", %r{^organizations/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the list_access_policies REST call + # + # @param request_pb [::Google::Iam::V3beta::ListAccessPoliciesRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_list_access_policies_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{parent}/accessPolicies", + matches: [ + ["parent", %r{^projects/[^/]+/locations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{parent}/accessPolicies", + matches: [ + ["parent", %r{^folders/[^/]+/locations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{parent}/accessPolicies", + matches: [ + ["parent", %r{^organizations/[^/]+/locations/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + + ## + # @private + # + # GRPC transcoding helper method for the search_access_policy_bindings REST call + # + # @param request_pb [::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_search_access_policy_bindings_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}:searchPolicyBindings", + matches: [ + ["name", %r{^organizations/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}:searchPolicyBindings", + matches: [ + ["name", %r{^folders/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :get, + uri_template: "/v3beta/{name}:searchPolicyBindings", + matches: [ + ["name", %r{^projects/[^/]+/locations/[^/]+/accessPolicies/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + end + end + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_pb.rb new file mode 100644 index 000000000000..f20f2856a2e5 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_pb.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/iam/v3beta/access_policies_service.proto + +require 'google/protobuf' + +require 'google/api/annotations_pb' +require 'google/api/client_pb' +require 'google/api/field_behavior_pb' +require 'google/api/resource_pb' +require 'google/iam/v3beta/access_policy_resources_pb' +require 'google/iam/v3beta/operation_metadata_pb' +require 'google/iam/v3beta/policy_binding_resources_pb' +require 'google/longrunning/operations_pb' +require 'google/protobuf/empty_pb' + + +descriptor_data = "\n/google/iam/v3beta/access_policies_service.proto\x12\x11google.iam.v3beta\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a/google/iam/v3beta/access_policy_resources.proto\x1a*google/iam/v3beta/operation_metadata.proto\x1a\x30google/iam/v3beta/policy_binding_resources.proto\x1a#google/longrunning/operations.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xcc\x01\n\x19\x43reateAccessPolicyRequest\x12\x37\n\x06parent\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\x12\x1fiam.googleapis.com/AccessPolicy\x12\x1d\n\x10\x61\x63\x63\x65ss_policy_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12;\n\raccess_policy\x18\x03 \x01(\x0b\x32\x1f.google.iam.v3beta.AccessPolicyB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\"O\n\x16GetAccessPolicyRequest\x12\x35\n\x04name\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fiam.googleapis.com/AccessPolicy\"t\n\x19UpdateAccessPolicyRequest\x12;\n\raccess_policy\x18\x01 \x01(\x0b\x32\x1f.google.iam.v3beta.AccessPolicyB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"\x95\x01\n\x19\x44\x65leteAccessPolicyRequest\x12\x35\n\x04name\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fiam.googleapis.com/AccessPolicy\x12\x11\n\x04\x65tag\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rvalidate_only\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12\x12\n\x05\x66orce\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\"\x85\x01\n\x19ListAccessPoliciesRequest\x12\x37\n\x06parent\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\x12\x1fiam.googleapis.com/AccessPolicy\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"t\n\x1aListAccessPoliciesResponse\x12\x38\n\x0f\x61\x63\x63\x65ss_policies\x18\x01 \x03(\x0b\x32\x1f.google.iam.v3beta.AccessPolicy\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x8b\x01\n!SearchAccessPolicyBindingsRequest\x12\x35\n\x04name\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fiam.googleapis.com/AccessPolicy\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"}\n\"SearchAccessPolicyBindingsResponse\x12\x39\n\x0fpolicy_bindings\x18\x01 \x03(\x0b\x32 .google.iam.v3beta.PolicyBinding\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\x32\xbe\x11\n\x0e\x41\x63\x63\x65ssPolicies\x12\x94\x03\n\x12\x43reateAccessPolicy\x12,.google.iam.v3beta.CreateAccessPolicyRequest\x1a\x1d.google.longrunning.Operation\"\xb0\x02\xca\x41!\n\x0c\x41\x63\x63\x65ssPolicy\x12\x11OperationMetadata\xda\x41%parent,access_policy,access_policy_id\x82\xd3\xe4\x93\x02\xdd\x01\"6/v3beta/{parent=projects/*/locations/*}/accessPolicies:\raccess_policyZF\"5/v3beta/{parent=folders/*/locations/*}/accessPolicies:\raccess_policyZL\";/v3beta/{parent=organizations/*/locations/*}/accessPolicies:\raccess_policy\x12\x9e\x02\n\x0fGetAccessPolicy\x12).google.iam.v3beta.GetAccessPolicyRequest\x1a\x1f.google.iam.v3beta.AccessPolicy\"\xbe\x01\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{name=projects/*/locations/*/accessPolicies/*}Z7\x12\x35/v3beta/{name=folders/*/locations/*/accessPolicies/*}Z=\x12;/v3beta/{name=organizations/*/locations/*/accessPolicies/*}\x12\x96\x03\n\x12UpdateAccessPolicy\x12,.google.iam.v3beta.UpdateAccessPolicyRequest\x1a\x1d.google.longrunning.Operation\"\xb2\x02\xca\x41!\n\x0c\x41\x63\x63\x65ssPolicy\x12\x11OperationMetadata\x82\xd3\xe4\x93\x02\x87\x02\x32\x44/v3beta/{access_policy.name=projects/*/locations/*/accessPolicies/*}:\raccess_policyZT2C/v3beta/{access_policy.name=folders/*/locations/*/accessPolicies/*}:\raccess_policyZZ2I/v3beta/{access_policy.name=organizations/*/locations/*/accessPolicies/*}:\raccess_policy\x12\xcf\x02\n\x12\x44\x65leteAccessPolicy\x12,.google.iam.v3beta.DeleteAccessPolicyRequest\x1a\x1d.google.longrunning.Operation\"\xeb\x01\xca\x41*\n\x15google.protobuf.Empty\x12\x11OperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01*6/v3beta/{name=projects/*/locations/*/accessPolicies/*}Z7*5/v3beta/{name=folders/*/locations/*/accessPolicies/*}Z=*;/v3beta/{name=organizations/*/locations/*/accessPolicies/*}\x12\xb4\x02\n\x12ListAccessPolicies\x12,.google.iam.v3beta.ListAccessPoliciesRequest\x1a-.google.iam.v3beta.ListAccessPoliciesResponse\"\xc0\x01\xda\x41\x06parent\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{parent=projects/*/locations/*}/accessPoliciesZ7\x12\x35/v3beta/{parent=folders/*/locations/*}/accessPoliciesZ=\x12;/v3beta/{parent=organizations/*/locations/*}/accessPolicies\x12\x89\x03\n\x1aSearchAccessPolicyBindings\x12\x34.google.iam.v3beta.SearchAccessPolicyBindingsRequest\x1a\x35.google.iam.v3beta.SearchAccessPolicyBindingsResponse\"\xfd\x01\xda\x41\x04name\x82\xd3\xe4\x93\x02\xef\x01\x12P/v3beta/{name=organizations/*/locations/*/accessPolicies/*}:searchPolicyBindingsZL\x12J/v3beta/{name=folders/*/locations/*/accessPolicies/*}:searchPolicyBindingsZM\x12K/v3beta/{name=projects/*/locations/*/accessPolicies/*}:searchPolicyBindings\x1a\x46\xca\x41\x12iam.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\x91\x01\n\x15\x63om.google.iam.v3betaB\x13\x41\x63\x63\x65ssPoliciesProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3betab\x06proto3" + +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) + +module Google + module Iam + module V3beta + CreateAccessPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.CreateAccessPolicyRequest").msgclass + GetAccessPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.GetAccessPolicyRequest").msgclass + UpdateAccessPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.UpdateAccessPolicyRequest").msgclass + DeleteAccessPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.DeleteAccessPolicyRequest").msgclass + ListAccessPoliciesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.ListAccessPoliciesRequest").msgclass + ListAccessPoliciesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.ListAccessPoliciesResponse").msgclass + SearchAccessPolicyBindingsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.SearchAccessPolicyBindingsRequest").msgclass + SearchAccessPolicyBindingsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.SearchAccessPolicyBindingsResponse").msgclass + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_services_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_services_pb.rb new file mode 100644 index 000000000000..fb03418341a3 --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policies_service_services_pb.rb @@ -0,0 +1,54 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# Source: google/iam/v3beta/access_policies_service.proto for package 'google.iam.v3beta' +# Original file comments: +# Copyright 2026 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. +# + +require 'grpc' +require 'google/iam/v3beta/access_policies_service_pb' + +module Google + module Iam + module V3beta + module AccessPolicies + # Manages Identity and Access Management (IAM) access policies. + class Service + + include ::GRPC::GenericService + + self.marshal_class_method = :encode + self.unmarshal_class_method = :decode + self.service_name = 'google.iam.v3beta.AccessPolicies' + + # Creates an access policy, and returns a long running operation. + rpc :CreateAccessPolicy, ::Google::Iam::V3beta::CreateAccessPolicyRequest, ::Google::Longrunning::Operation + # Gets an access policy. + rpc :GetAccessPolicy, ::Google::Iam::V3beta::GetAccessPolicyRequest, ::Google::Iam::V3beta::AccessPolicy + # Updates an access policy. + rpc :UpdateAccessPolicy, ::Google::Iam::V3beta::UpdateAccessPolicyRequest, ::Google::Longrunning::Operation + # Deletes an access policy. + rpc :DeleteAccessPolicy, ::Google::Iam::V3beta::DeleteAccessPolicyRequest, ::Google::Longrunning::Operation + # Lists access policies. + rpc :ListAccessPolicies, ::Google::Iam::V3beta::ListAccessPoliciesRequest, ::Google::Iam::V3beta::ListAccessPoliciesResponse + # Returns all policy bindings that bind a specific policy if a user has + # searchPolicyBindings permission on that policy. + rpc :SearchAccessPolicyBindings, ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest, ::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse + end + + Stub = Service.rpc_stub_class + end + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/access_policy_resources_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/access_policy_resources_pb.rb new file mode 100644 index 000000000000..43366a70afff --- /dev/null +++ b/google-iam-v3beta/lib/google/iam/v3beta/access_policy_resources_pb.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/iam/v3beta/access_policy_resources.proto + +require 'google/protobuf' + +require 'google/api/field_behavior_pb' +require 'google/api/field_info_pb' +require 'google/api/resource_pb' +require 'google/protobuf/timestamp_pb' +require 'google/type/expr_pb' + + +descriptor_data = "\n/google/iam/v3beta/access_policy_resources.proto\x12\x11google.iam.v3beta\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/field_info.proto\x1a\x19google/api/resource.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16google/type/expr.proto\"\xb9\x05\n\x0c\x41\x63\x63\x65ssPolicy\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x18\n\x03uid\x18\x02 \x01(\tB\x0b\xe0\x41\x03\xe2\x8c\xcf\xd7\x08\x02\x08\x01\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0c\x64isplay_name\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12J\n\x0b\x61nnotations\x18\x05 \x03(\x0b\x32\x30.google.iam.v3beta.AccessPolicy.AnnotationsEntryB\x03\xe0\x41\x01\x12\x34\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12<\n\x07\x64\x65tails\x18\x08 \x01(\x0b\x32&.google.iam.v3beta.AccessPolicyDetailsB\x03\xe0\x41\x01\x1a\x32\n\x10\x41nnotationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:\xa3\x02\xea\x41\x9f\x02\n\x1fiam.googleapis.com/AccessPolicy\x12Porganizations/{organization}/locations/{location}/accessPolicies/{access_policy}\x12\x44\x66olders/{folder}/locations/{location}/accessPolicies/{access_policy}\x12\x46projects/{project}/locations/{location}/accessPolicies/{access_policy}*\x0e\x61\x63\x63\x65ssPolicies2\x0c\x61\x63\x63\x65ssPolicy\"N\n\x13\x41\x63\x63\x65ssPolicyDetails\x12\x37\n\x05rules\x18\x01 \x03(\x0b\x32#.google.iam.v3beta.AccessPolicyRuleB\x03\xe0\x41\x02\"\xa9\x04\n\x10\x41\x63\x63\x65ssPolicyRule\x12\x1d\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x03\xe0\x41\x01H\x00\x88\x01\x01\x12\x44\n\x06\x65\x66\x66\x65\x63t\x18\x02 \x01(\x0e\x32*.google.iam.v3beta.AccessPolicyRule.EffectB\x03\xe0\x41\x02H\x01\x88\x01\x01\x12\x17\n\nprincipals\x18\x03 \x03(\tB\x03\xe0\x41\x02\x12 \n\x13\x65xcluded_principals\x18\x04 \x03(\tB\x03\xe0\x41\x01\x12\x45\n\toperation\x18\n \x01(\x0b\x32-.google.iam.v3beta.AccessPolicyRule.OperationB\x03\xe0\x41\x02\x12L\n\nconditions\x18\t \x03(\x0b\x32\x33.google.iam.v3beta.AccessPolicyRule.ConditionsEntryB\x03\xe0\x41\x01\x1aH\n\tOperation\x12\x18\n\x0bpermissions\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12!\n\x14\x65xcluded_permissions\x18\x02 \x03(\tB\x03\xe0\x41\x01\x1a\x44\n\x0f\x43onditionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12 \n\x05value\x18\x02 \x01(\x0b\x32\x11.google.type.Expr:\x02\x38\x01\"5\n\x06\x45\x66\x66\x65\x63t\x12\x16\n\x12\x45\x46\x46\x45\x43T_UNSPECIFIED\x10\x00\x12\x08\n\x04\x44\x45NY\x10\x01\x12\t\n\x05\x41LLOW\x10\x02\x42\x0e\n\x0c_descriptionB\t\n\x07_effectB\x98\x01\n\x15\x63om.google.iam.v3betaB\x1a\x41\x63\x63\x65ssPolicyResourcesProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3betab\x06proto3" + +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) + +module Google + module Iam + module V3beta + AccessPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.AccessPolicy").msgclass + AccessPolicyDetails = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.AccessPolicyDetails").msgclass + AccessPolicyRule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.AccessPolicyRule").msgclass + AccessPolicyRule::Operation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.AccessPolicyRule.Operation").msgclass + AccessPolicyRule::Effect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.iam.v3beta.AccessPolicyRule.Effect").enummodule + end + end +end diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_binding_resources_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_binding_resources_pb.rb index 8062797ff505..ec1093319476 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_binding_resources_pb.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_binding_resources_pb.rb @@ -11,7 +11,7 @@ require 'google/type/expr_pb' -descriptor_data = "\n0google/iam/v3beta/policy_binding_resources.proto\x12\x11google.iam.v3beta\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/field_info.proto\x1a\x19google/api/resource.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16google/type/expr.proto\"\xe2\x07\n\rPolicyBinding\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x18\n\x03uid\x18\x02 \x01(\tB\x0b\xe0\x41\x03\xe2\x8c\xcf\xd7\x08\x02\x08\x01\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0c\x64isplay_name\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12K\n\x0b\x61nnotations\x18\x05 \x03(\x0b\x32\x31.google.iam.v3beta.PolicyBinding.AnnotationsEntryB\x03\xe0\x41\x01\x12?\n\x06target\x18\x06 \x01(\x0b\x32\'.google.iam.v3beta.PolicyBinding.TargetB\x06\xe0\x41\x05\xe0\x41\x02\x12\x45\n\x0bpolicy_kind\x18\x0b \x01(\x0e\x32+.google.iam.v3beta.PolicyBinding.PolicyKindB\x03\xe0\x41\x05\x12\x16\n\x06policy\x18\x07 \x01(\tB\x06\xe0\x41\x05\xe0\x41\x02\x12\x17\n\npolicy_uid\x18\x0c \x01(\tB\x03\xe0\x41\x03\x12)\n\tcondition\x18\x08 \x01(\x0b\x32\x11.google.type.ExprB\x03\xe0\x41\x01\x12\x34\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x1a\x30\n\x06Target\x12\x1c\n\rprincipal_set\x18\x01 \x01(\tB\x03\xe0\x41\x05H\x00\x42\x08\n\x06target\x1a\x32\n\x10\x41nnotationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\nPolicyKind\x12\x1b\n\x17POLICY_KIND_UNSPECIFIED\x10\x00\x12\x1d\n\x19PRINCIPAL_ACCESS_BOUNDARY\x10\x01:\xa8\x02\xea\x41\xa4\x02\n iam.googleapis.com/PolicyBinding\x12Qorganizations/{organization}/locations/{location}/policyBindings/{policy_binding}\x12\x45\x66olders/{folder}/locations/{location}/policyBindings/{policy_binding}\x12Gprojects/{project}/locations/{location}/policyBindings/{policy_binding}*\x0epolicyBindings2\rpolicyBindingB\x99\x01\n\x15\x63om.google.iam.v3betaB\x1bPolicyBindingResourcesProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3betab\x06proto3" +descriptor_data = "\n0google/iam/v3beta/policy_binding_resources.proto\x12\x11google.iam.v3beta\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/field_info.proto\x1a\x19google/api/resource.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x16google/type/expr.proto\"\x87\x08\n\rPolicyBinding\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x18\n\x03uid\x18\x02 \x01(\tB\x0b\xe0\x41\x03\xe2\x8c\xcf\xd7\x08\x02\x08\x01\x12\x11\n\x04\x65tag\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x19\n\x0c\x64isplay_name\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12K\n\x0b\x61nnotations\x18\x05 \x03(\x0b\x32\x31.google.iam.v3beta.PolicyBinding.AnnotationsEntryB\x03\xe0\x41\x01\x12?\n\x06target\x18\x06 \x01(\x0b\x32\'.google.iam.v3beta.PolicyBinding.TargetB\x06\xe0\x41\x05\xe0\x41\x02\x12\x45\n\x0bpolicy_kind\x18\x0b \x01(\x0e\x32+.google.iam.v3beta.PolicyBinding.PolicyKindB\x03\xe0\x41\x05\x12\x16\n\x06policy\x18\x07 \x01(\tB\x06\xe0\x41\x05\xe0\x41\x02\x12\x17\n\npolicy_uid\x18\x0c \x01(\tB\x03\xe0\x41\x03\x12)\n\tcondition\x18\x08 \x01(\x0b\x32\x11.google.type.ExprB\x03\xe0\x41\x01\x12\x34\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x1aI\n\x06Target\x12\x1c\n\rprincipal_set\x18\x01 \x01(\tB\x03\xe0\x41\x05H\x00\x12\x17\n\x08resource\x18\x02 \x01(\tB\x03\xe0\x41\x05H\x00\x42\x08\n\x06target\x1a\x32\n\x10\x41nnotationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"T\n\nPolicyKind\x12\x1b\n\x17POLICY_KIND_UNSPECIFIED\x10\x00\x12\x1d\n\x19PRINCIPAL_ACCESS_BOUNDARY\x10\x01\x12\n\n\x06\x41\x43\x43\x45SS\x10\x02:\xa8\x02\xea\x41\xa4\x02\n iam.googleapis.com/PolicyBinding\x12Qorganizations/{organization}/locations/{location}/policyBindings/{policy_binding}\x12\x45\x66olders/{folder}/locations/{location}/policyBindings/{policy_binding}\x12Gprojects/{project}/locations/{location}/policyBindings/{policy_binding}*\x0epolicyBindings2\rpolicyBindingB\x99\x01\n\x15\x63om.google.iam.v3betaB\x1bPolicyBindingResourcesProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3betab\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings.rb index 14760bb14ac2..7379275c3ade 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings.rb @@ -20,7 +20,7 @@ require "gapic/config" require "gapic/config/method" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" require "google/iam/v3beta/policy_bindings/credentials" require "google/iam/v3beta/policy_bindings/paths" diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/client.rb index e090eeac5823..f8c5567eb445 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/client.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/client.rb @@ -237,7 +237,7 @@ def logger ## # Creates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is created, the policy is applied to the target. + # After the binding is created, the policy is applied to the target. # # @overload create_policy_binding(request, options = nil) # Pass arguments to `create_policy_binding` via a request object, either of type @@ -322,7 +322,7 @@ def create_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -416,7 +416,7 @@ def get_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -446,9 +446,7 @@ def get_policy_binding request, options = nil ## # Updates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on the policy and target in the - # binding to update, and the IAM permission to remove the existing policy - # from the binding. Target is immutable and cannot be updated. Once the - # binding is updated, the new policy is applied to the target. + # binding to update. Target and policy are immutable and cannot be updated. # # @overload update_policy_binding(request, options = nil) # Pass arguments to `update_policy_binding` via a request object, either of type @@ -520,7 +518,7 @@ def update_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -552,7 +550,7 @@ def update_policy_binding request, options = nil ## # Deletes a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is deleted, the policy no longer applies to the target. + # After the binding is deleted, the policy no longer applies to the target. # # @overload delete_policy_binding(request, options = nil) # Pass arguments to `delete_policy_binding` via a request object, either of type @@ -629,7 +627,7 @@ def delete_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -690,8 +688,7 @@ def delete_policy_binding request, options = nil # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @param page_token [::String] # Optional. A page token, received from a previous `ListPolicyBindings` call. # Provide this to retrieve the subsequent page. @@ -700,7 +697,8 @@ def delete_policy_binding request, options = nil # match the call that provided the page token. # @param filter [::String] # Optional. An expression for filtering the results of the request. Filter - # rules are case insensitive. Some eligible fields for filtering are: + # rules are case insensitive. Some eligible fields for filtering are the + # following: # # + `target` # + `policy` @@ -752,7 +750,7 @@ def list_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -795,7 +793,7 @@ def list_policy_bindings request, options = nil # @param options [::Gapic::CallOptions, ::Hash] # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. # - # @overload search_target_policy_bindings(target: nil, page_size: nil, page_token: nil, parent: nil) + # @overload search_target_policy_bindings(target: nil, page_size: nil, page_token: nil, parent: nil, filter: nil) # Pass arguments to `search_target_policy_bindings` via keyword arguments. Note that at # least one keyword argument is required. To specify no parameters, or to keep all # the default parameter values, pass an empty Hash as a request object (see above). @@ -815,8 +813,7 @@ def list_policy_bindings request, options = nil # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @param page_token [::String] # Optional. A page token, received from a previous # `SearchTargetPolicyBindingsRequest` call. Provide this to retrieve the @@ -836,6 +833,17 @@ def list_policy_bindings request, options = nil # * `projects/{project_number}/locations/{location}` # * `folders/{folder_id}/locations/{location}` # * `organizations/{organization_id}/locations/{location}` + # @param filter [::String] + # Optional. Filtering currently only supports the kind of policies to return, + # and must be in the format "policy_kind=\\{policy_kind}". + # + # If String is empty, bindings bound to all kinds of policies would be + # returned. + # + # The only supported values are the following: + # + # * "policy_kind=PRINCIPAL_ACCESS_BOUNDARY", + # * "policy_kind=ACCESS" # # @yield [response, operation] Access the result along with the RPC operation # @yieldparam response [::Gapic::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] @@ -878,7 +886,7 @@ def search_target_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/operations.rb index 967476c55eb3..a726d37bc697 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/operations.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/operations.rb @@ -199,7 +199,7 @@ def list_operations request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -296,7 +296,7 @@ def get_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -386,7 +386,7 @@ def delete_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -481,7 +481,7 @@ def cancel_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -585,7 +585,7 @@ def wait_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest.rb index a419663fb807..de364a77d181 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest.rb @@ -20,7 +20,7 @@ require "gapic/config" require "gapic/config/method" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" require "google/iam/v3beta/policy_bindings/credentials" require "google/iam/v3beta/policy_bindings/paths" diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/client.rb index a3d9a590a422..3967991ff656 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/client.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/client.rb @@ -230,7 +230,7 @@ def logger ## # Creates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is created, the policy is applied to the target. + # After the binding is created, the policy is applied to the target. # # @overload create_policy_binding(request, options = nil) # Pass arguments to `create_policy_binding` via a request object, either of type @@ -314,7 +314,7 @@ def create_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -401,7 +401,7 @@ def get_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -425,9 +425,7 @@ def get_policy_binding request, options = nil ## # Updates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on the policy and target in the - # binding to update, and the IAM permission to remove the existing policy - # from the binding. Target is immutable and cannot be updated. Once the - # binding is updated, the new policy is applied to the target. + # binding to update. Target and policy are immutable and cannot be updated. # # @overload update_policy_binding(request, options = nil) # Pass arguments to `update_policy_binding` via a request object, either of type @@ -498,7 +496,7 @@ def update_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -524,7 +522,7 @@ def update_policy_binding request, options = nil ## # Deletes a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is deleted, the policy no longer applies to the target. + # After the binding is deleted, the policy no longer applies to the target. # # @overload delete_policy_binding(request, options = nil) # Pass arguments to `delete_policy_binding` via a request object, either of type @@ -600,7 +598,7 @@ def delete_policy_binding request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -655,8 +653,7 @@ def delete_policy_binding request, options = nil # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @param page_token [::String] # Optional. A page token, received from a previous `ListPolicyBindings` call. # Provide this to retrieve the subsequent page. @@ -665,7 +662,8 @@ def delete_policy_binding request, options = nil # match the call that provided the page token. # @param filter [::String] # Optional. An expression for filtering the results of the request. Filter - # rules are case insensitive. Some eligible fields for filtering are: + # rules are case insensitive. Some eligible fields for filtering are the + # following: # # + `target` # + `policy` @@ -716,7 +714,7 @@ def list_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -753,7 +751,7 @@ def list_policy_bindings request, options = nil # @param options [::Gapic::CallOptions, ::Hash] # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. # - # @overload search_target_policy_bindings(target: nil, page_size: nil, page_token: nil, parent: nil) + # @overload search_target_policy_bindings(target: nil, page_size: nil, page_token: nil, parent: nil, filter: nil) # Pass arguments to `search_target_policy_bindings` via keyword arguments. Note that at # least one keyword argument is required. To specify no parameters, or to keep all # the default parameter values, pass an empty Hash as a request object (see above). @@ -773,8 +771,7 @@ def list_policy_bindings request, options = nil # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @param page_token [::String] # Optional. A page token, received from a previous # `SearchTargetPolicyBindingsRequest` call. Provide this to retrieve the @@ -794,6 +791,17 @@ def list_policy_bindings request, options = nil # * `projects/{project_number}/locations/{location}` # * `folders/{folder_id}/locations/{location}` # * `organizations/{organization_id}/locations/{location}` + # @param filter [::String] + # Optional. Filtering currently only supports the kind of policies to return, + # and must be in the format "policy_kind=\\{policy_kind}". + # + # If String is empty, bindings bound to all kinds of policies would be + # returned. + # + # The only supported values are the following: + # + # * "policy_kind=PRINCIPAL_ACCESS_BOUNDARY", + # * "policy_kind=ACCESS" # @yield [result, operation] Access the result along with the TransportOperation object # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Iam::V3beta::PolicyBinding>] # @yieldparam operation [::Gapic::Rest::TransportOperation] @@ -835,7 +843,7 @@ def search_target_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/operations.rb index f726edbcaa6e..f87ef9d848f6 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/operations.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings/rest/operations.rb @@ -189,7 +189,7 @@ def list_operations request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -278,7 +278,7 @@ def get_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -361,7 +361,7 @@ def delete_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -449,7 +449,7 @@ def cancel_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_pb.rb index 0398541a7af3..6c9513bee8e7 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_pb.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_pb.rb @@ -15,7 +15,7 @@ require 'google/protobuf/field_mask_pb' -descriptor_data = "\n/google/iam/v3beta/policy_bindings_service.proto\x12\x11google.iam.v3beta\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a*google/iam/v3beta/operation_metadata.proto\x1a\x30google/iam/v3beta/policy_binding_resources.proto\x1a#google/longrunning/operations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\"\xd1\x01\n\x1a\x43reatePolicyBindingRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\x12\x1e\n\x11policy_binding_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12=\n\x0epolicy_binding\x18\x03 \x01(\x0b\x32 .google.iam.v3beta.PolicyBindingB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\"Q\n\x17GetPolicyBindingRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\n iam.googleapis.com/PolicyBinding\"\xad\x01\n\x1aUpdatePolicyBindingRequest\x12=\n\x0epolicy_binding\x18\x01 \x01(\x0b\x32 .google.iam.v3beta.PolicyBindingB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x34\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"\x83\x01\n\x1a\x44\x65letePolicyBindingRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\n iam.googleapis.com/PolicyBinding\x12\x11\n\x04\x65tag\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rvalidate_only\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\"\x9b\x01\n\x19ListPolicyBindingsRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x04 \x01(\tB\x03\xe0\x41\x01\"u\n\x1aListPolicyBindingsResponse\x12\x39\n\x0fpolicy_bindings\x18\x01 \x03(\x0b\x32 .google.iam.v3beta.PolicyBinding\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\xa3\x01\n!SearchTargetPolicyBindingsRequest\x12\x13\n\x06target\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x38\n\x06parent\x18\x05 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\"}\n\"SearchTargetPolicyBindingsResponse\x12\x39\n\x0fpolicy_bindings\x18\x01 \x03(\x0b\x32 .google.iam.v3beta.PolicyBinding\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\x32\x8c\x12\n\x0ePolicyBindings\x12\x9c\x03\n\x13\x43reatePolicyBinding\x12-.google.iam.v3beta.CreatePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xb6\x02\xca\x41\"\n\rPolicyBinding\x12\x11OperationMetadata\xda\x41\'parent,policy_binding,policy_binding_id\x82\xd3\xe4\x93\x02\xe0\x01\"6/v3beta/{parent=projects/*/locations/*}/policyBindings:\x0epolicy_bindingZG\"5/v3beta/{parent=folders/*/locations/*}/policyBindings:\x0epolicy_bindingZM\";/v3beta/{parent=organizations/*/locations/*}/policyBindings:\x0epolicy_binding\x12\xa1\x02\n\x10GetPolicyBinding\x12*.google.iam.v3beta.GetPolicyBindingRequest\x1a .google.iam.v3beta.PolicyBinding\"\xbe\x01\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{name=projects/*/locations/*/policyBindings/*}Z7\x12\x35/v3beta/{name=folders/*/locations/*/policyBindings/*}Z=\x12;/v3beta/{name=organizations/*/locations/*/policyBindings/*}\x12\xbc\x03\n\x13UpdatePolicyBinding\x12-.google.iam.v3beta.UpdatePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xd6\x02\xca\x41\"\n\rPolicyBinding\x12\x11OperationMetadata\xda\x41\x1apolicy_binding,update_mask\x82\xd3\xe4\x93\x02\x8d\x02\x32\x45/v3beta/{policy_binding.name=projects/*/locations/*/policyBindings/*}:\x0epolicy_bindingZV2D/v3beta/{policy_binding.name=folders/*/locations/*/policyBindings/*}:\x0epolicy_bindingZ\\2J/v3beta/{policy_binding.name=organizations/*/locations/*/policyBindings/*}:\x0epolicy_binding\x12\xd1\x02\n\x13\x44\x65letePolicyBinding\x12-.google.iam.v3beta.DeletePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xeb\x01\xca\x41*\n\x15google.protobuf.Empty\x12\x11OperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01*6/v3beta/{name=projects/*/locations/*/policyBindings/*}Z7*5/v3beta/{name=folders/*/locations/*/policyBindings/*}Z=*;/v3beta/{name=organizations/*/locations/*/policyBindings/*}\x12\xb4\x02\n\x12ListPolicyBindings\x12,.google.iam.v3beta.ListPolicyBindingsRequest\x1a-.google.iam.v3beta.ListPolicyBindingsResponse\"\xc0\x01\xda\x41\x06parent\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{parent=projects/*/locations/*}/policyBindingsZ7\x12\x35/v3beta/{parent=folders/*/locations/*}/policyBindingsZ=\x12;/v3beta/{parent=organizations/*/locations/*}/policyBindings\x12\xa4\x03\n\x1aSearchTargetPolicyBindings\x12\x34.google.iam.v3beta.SearchTargetPolicyBindingsRequest\x1a\x35.google.iam.v3beta.SearchTargetPolicyBindingsResponse\"\x98\x02\xda\x41\rparent,target\x82\xd3\xe4\x93\x02\x81\x02\x12Q/v3beta/{parent=projects/*/locations/*}/policyBindings:searchTargetPolicyBindingsZR\x12P/v3beta/{parent=folders/*/locations/*}/policyBindings:searchTargetPolicyBindingsZX\x12V/v3beta/{parent=organizations/*/locations/*}/policyBindings:searchTargetPolicyBindings\x1a\x46\xca\x41\x12iam.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xc4\x02\n\x15\x63om.google.iam.v3betaB\x1aPolicyBindingsServiceProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3beta\xea\x41\\\n\'iam.googleapis.com/OrganizationLocation\x12\x31organizations/{organization}/locations/{location}\xea\x41J\n!iam.googleapis.com/FolderLocation\x12%folders/{folder}/locations/{location}b\x06proto3" +descriptor_data = "\n/google/iam/v3beta/policy_bindings_service.proto\x12\x11google.iam.v3beta\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a*google/iam/v3beta/operation_metadata.proto\x1a\x30google/iam/v3beta/policy_binding_resources.proto\x1a#google/longrunning/operations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\"\xd1\x01\n\x1a\x43reatePolicyBindingRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\x12\x1e\n\x11policy_binding_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12=\n\x0epolicy_binding\x18\x03 \x01(\x0b\x32 .google.iam.v3beta.PolicyBindingB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x04 \x01(\x08\x42\x03\xe0\x41\x01\"Q\n\x17GetPolicyBindingRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\n iam.googleapis.com/PolicyBinding\"\xad\x01\n\x1aUpdatePolicyBindingRequest\x12=\n\x0epolicy_binding\x18\x01 \x01(\x0b\x32 .google.iam.v3beta.PolicyBindingB\x03\xe0\x41\x02\x12\x1a\n\rvalidate_only\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x34\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"\x83\x01\n\x1a\x44\x65letePolicyBindingRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\n iam.googleapis.com/PolicyBinding\x12\x11\n\x04\x65tag\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rvalidate_only\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\"\x9b\x01\n\x19ListPolicyBindingsRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x04 \x01(\tB\x03\xe0\x41\x01\"u\n\x1aListPolicyBindingsResponse\x12\x39\n\x0fpolicy_bindings\x18\x01 \x03(\x0b\x32 .google.iam.v3beta.PolicyBinding\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\xb8\x01\n!SearchTargetPolicyBindingsRequest\x12\x13\n\x06target\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x38\n\x06parent\x18\x05 \x01(\tB(\xe0\x41\x02\xfa\x41\"\x12 iam.googleapis.com/PolicyBinding\x12\x13\n\x06\x66ilter\x18\x06 \x01(\tB\x03\xe0\x41\x01\"}\n\"SearchTargetPolicyBindingsResponse\x12\x39\n\x0fpolicy_bindings\x18\x01 \x03(\x0b\x32 .google.iam.v3beta.PolicyBinding\x12\x1c\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\x32\x8c\x12\n\x0ePolicyBindings\x12\x9c\x03\n\x13\x43reatePolicyBinding\x12-.google.iam.v3beta.CreatePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xb6\x02\xca\x41\"\n\rPolicyBinding\x12\x11OperationMetadata\xda\x41\'parent,policy_binding,policy_binding_id\x82\xd3\xe4\x93\x02\xe0\x01\"6/v3beta/{parent=projects/*/locations/*}/policyBindings:\x0epolicy_bindingZG\"5/v3beta/{parent=folders/*/locations/*}/policyBindings:\x0epolicy_bindingZM\";/v3beta/{parent=organizations/*/locations/*}/policyBindings:\x0epolicy_binding\x12\xa1\x02\n\x10GetPolicyBinding\x12*.google.iam.v3beta.GetPolicyBindingRequest\x1a .google.iam.v3beta.PolicyBinding\"\xbe\x01\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{name=projects/*/locations/*/policyBindings/*}Z7\x12\x35/v3beta/{name=folders/*/locations/*/policyBindings/*}Z=\x12;/v3beta/{name=organizations/*/locations/*/policyBindings/*}\x12\xbc\x03\n\x13UpdatePolicyBinding\x12-.google.iam.v3beta.UpdatePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xd6\x02\xca\x41\"\n\rPolicyBinding\x12\x11OperationMetadata\xda\x41\x1apolicy_binding,update_mask\x82\xd3\xe4\x93\x02\x8d\x02\x32\x45/v3beta/{policy_binding.name=projects/*/locations/*/policyBindings/*}:\x0epolicy_bindingZV2D/v3beta/{policy_binding.name=folders/*/locations/*/policyBindings/*}:\x0epolicy_bindingZ\\2J/v3beta/{policy_binding.name=organizations/*/locations/*/policyBindings/*}:\x0epolicy_binding\x12\xd1\x02\n\x13\x44\x65letePolicyBinding\x12-.google.iam.v3beta.DeletePolicyBindingRequest\x1a\x1d.google.longrunning.Operation\"\xeb\x01\xca\x41*\n\x15google.protobuf.Empty\x12\x11OperationMetadata\xda\x41\x04name\x82\xd3\xe4\x93\x02\xb0\x01*6/v3beta/{name=projects/*/locations/*/policyBindings/*}Z7*5/v3beta/{name=folders/*/locations/*/policyBindings/*}Z=*;/v3beta/{name=organizations/*/locations/*/policyBindings/*}\x12\xb4\x02\n\x12ListPolicyBindings\x12,.google.iam.v3beta.ListPolicyBindingsRequest\x1a-.google.iam.v3beta.ListPolicyBindingsResponse\"\xc0\x01\xda\x41\x06parent\x82\xd3\xe4\x93\x02\xb0\x01\x12\x36/v3beta/{parent=projects/*/locations/*}/policyBindingsZ7\x12\x35/v3beta/{parent=folders/*/locations/*}/policyBindingsZ=\x12;/v3beta/{parent=organizations/*/locations/*}/policyBindings\x12\xa4\x03\n\x1aSearchTargetPolicyBindings\x12\x34.google.iam.v3beta.SearchTargetPolicyBindingsRequest\x1a\x35.google.iam.v3beta.SearchTargetPolicyBindingsResponse\"\x98\x02\xda\x41\rparent,target\x82\xd3\xe4\x93\x02\x81\x02\x12Q/v3beta/{parent=projects/*/locations/*}/policyBindings:searchTargetPolicyBindingsZR\x12P/v3beta/{parent=folders/*/locations/*}/policyBindings:searchTargetPolicyBindingsZX\x12V/v3beta/{parent=organizations/*/locations/*}/policyBindings:searchTargetPolicyBindings\x1a\x46\xca\x41\x12iam.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xc4\x02\n\x15\x63om.google.iam.v3betaB\x1aPolicyBindingsServiceProtoP\x01Z-cloud.google.com/go/iam/apiv3beta/iampb;iampb\xaa\x02\x17Google.Cloud.Iam.V3Beta\xca\x02\x17Google\\Cloud\\Iam\\V3beta\xea\x41\\\n\'iam.googleapis.com/OrganizationLocation\x12\x31organizations/{organization}/locations/{location}\xea\x41J\n!iam.googleapis.com/FolderLocation\x12%folders/{folder}/locations/{location}b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_services_pb.rb b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_services_pb.rb index 4529103991f0..6756bfa36dc0 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_services_pb.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/policy_bindings_service_services_pb.rb @@ -35,19 +35,17 @@ class Service # Creates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is created, the policy is applied to the target. + # After the binding is created, the policy is applied to the target. rpc :CreatePolicyBinding, ::Google::Iam::V3beta::CreatePolicyBindingRequest, ::Google::Longrunning::Operation # Gets a policy binding. rpc :GetPolicyBinding, ::Google::Iam::V3beta::GetPolicyBindingRequest, ::Google::Iam::V3beta::PolicyBinding # Updates a policy binding and returns a long-running operation. # Callers will need the IAM permissions on the policy and target in the - # binding to update, and the IAM permission to remove the existing policy - # from the binding. Target is immutable and cannot be updated. Once the - # binding is updated, the new policy is applied to the target. + # binding to update. Target and policy are immutable and cannot be updated. rpc :UpdatePolicyBinding, ::Google::Iam::V3beta::UpdatePolicyBindingRequest, ::Google::Longrunning::Operation # Deletes a policy binding and returns a long-running operation. # Callers will need the IAM permissions on both the policy and target. - # Once the binding is deleted, the policy no longer applies to the target. + # After the binding is deleted, the policy no longer applies to the target. rpc :DeletePolicyBinding, ::Google::Iam::V3beta::DeletePolicyBindingRequest, ::Google::Longrunning::Operation # Lists policy bindings. rpc :ListPolicyBindings, ::Google::Iam::V3beta::ListPolicyBindingsRequest, ::Google::Iam::V3beta::ListPolicyBindingsResponse diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies.rb index abbc7442e148..68b668f8d20e 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies.rb @@ -20,7 +20,7 @@ require "gapic/config" require "gapic/config/method" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" require "google/iam/v3beta/principal_access_boundary_policies/credentials" require "google/iam/v3beta/principal_access_boundary_policies/paths" diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/client.rb index edf536817c95..8436fc95c2c1 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/client.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/client.rb @@ -317,7 +317,7 @@ def create_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -407,7 +407,7 @@ def get_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -507,7 +507,7 @@ def update_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -613,7 +613,7 @@ def delete_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -723,7 +723,7 @@ def list_principal_access_boundary_policies request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -831,7 +831,7 @@ def search_principal_access_boundary_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/operations.rb index 1b086e408dea..453387aae9fe 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/operations.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/operations.rb @@ -199,7 +199,7 @@ def list_operations request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -296,7 +296,7 @@ def get_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -386,7 +386,7 @@ def delete_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -481,7 +481,7 @@ def cancel_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id @@ -585,7 +585,7 @@ def wait_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest.rb index bc4a47b973f1..70f0fad5038e 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest.rb @@ -20,7 +20,7 @@ require "gapic/config" require "gapic/config/method" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" require "google/iam/v3beta/principal_access_boundary_policies/credentials" require "google/iam/v3beta/principal_access_boundary_policies/paths" diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/client.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/client.rb index 50759dad3f44..c00cea6a266a 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/client.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/client.rb @@ -309,7 +309,7 @@ def create_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -392,7 +392,7 @@ def get_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -485,7 +485,7 @@ def update_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -584,7 +584,7 @@ def delete_principal_access_boundary_policy request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -687,7 +687,7 @@ def list_principal_access_boundary_policies request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -788,7 +788,7 @@ def search_principal_access_boundary_policy_bindings request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? diff --git a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/operations.rb b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/operations.rb index 8b267f7f6a9f..f790a52a68e6 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/operations.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/principal_access_boundary_policies/rest/operations.rb @@ -189,7 +189,7 @@ def list_operations request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -278,7 +278,7 @@ def get_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -361,7 +361,7 @@ def delete_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? @@ -449,7 +449,7 @@ def cancel_operation request, options = nil # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ lib_name: @config.lib_name, lib_version: @config.lib_version, - gapic_version: ::Google::Iam::V3beta::VERSION, + gapic_version: ::Google::Cloud::Iam::V3beta::VERSION, transports_version_send: [:rest] call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? diff --git a/google-iam-v3beta/lib/google/iam/v3beta/rest.rb b/google-iam-v3beta/lib/google/iam/v3beta/rest.rb index 4492108e6037..2382e231a62c 100644 --- a/google-iam-v3beta/lib/google/iam/v3beta/rest.rb +++ b/google-iam-v3beta/lib/google/iam/v3beta/rest.rb @@ -16,9 +16,10 @@ # Auto-generated by gapic-generator-ruby. DO NOT EDIT! +require "google/iam/v3beta/access_policies/rest" require "google/iam/v3beta/policy_bindings/rest" require "google/iam/v3beta/principal_access_boundary_policies/rest" -require "google/iam/v3beta/version" +require "google/cloud/iam/v3beta/version" module Google module Iam @@ -28,7 +29,7 @@ module Iam # @example # # require "google/iam/v3beta/rest" - # client = ::Google::Iam::V3beta::PolicyBindings::Rest::Client.new + # client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new # module V3beta end diff --git a/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policies_service.rb b/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policies_service.rb new file mode 100644 index 000000000000..a8350bf45f46 --- /dev/null +++ b/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policies_service.rb @@ -0,0 +1,203 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Iam + module V3beta + # Request message for CreateAccessPolicy method. + # @!attribute [rw] parent + # @return [::String] + # Required. The parent resource where this access policy will be created. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @!attribute [rw] access_policy_id + # @return [::String] + # Required. The ID to use for the access policy, which + # will become the final component of the access policy's + # resource name. + # + # This value must start with a lowercase letter followed by up to 62 + # lowercase letters, numbers, hyphens, or dots. Pattern, + # /[a-z][a-z0-9-\.]\\{2,62}/. + # + # This value must be unique among all access policies with the same parent. + # @!attribute [rw] access_policy + # @return [::Google::Iam::V3beta::AccessPolicy] + # Required. The access policy to create. + # @!attribute [rw] validate_only + # @return [::Boolean] + # Optional. If set, validate the request and preview the creation, but do not + # actually post it. + class CreateAccessPolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Request message for GetAccessPolicy method. + # @!attribute [rw] name + # @return [::String] + # Required. The name of the access policy to retrieve. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + class GetAccessPolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Request message for UpdateAccessPolicy method. + # @!attribute [rw] access_policy + # @return [::Google::Iam::V3beta::AccessPolicy] + # Required. The access policy to update. + # + # The access policy's `name` field is used to identify the + # policy to update. + # @!attribute [rw] validate_only + # @return [::Boolean] + # Optional. If set, validate the request and preview the update, but do not + # actually post it. + class UpdateAccessPolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Request message for DeleteAccessPolicy method. + # @!attribute [rw] name + # @return [::String] + # Required. The name of the access policy to delete. + # + # Format: + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # @!attribute [rw] etag + # @return [::String] + # Optional. The etag of the access policy. If this is provided, it must match + # the server's etag. + # @!attribute [rw] validate_only + # @return [::Boolean] + # Optional. If set, validate the request and preview the deletion, but do not + # actually post it. + # @!attribute [rw] force + # @return [::Boolean] + # Optional. If set to true, the request will force the deletion of the Policy + # even if the Policy references PolicyBindings. + class DeleteAccessPolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Request message for ListAccessPolicies method. + # @!attribute [rw] parent + # @return [::String] + # Required. The parent resource, which owns the collection of access policy + # resources. + # + # Format: + # `projects/{project_id}/locations/{location}` + # `projects/{project_number}/locations/{location}` + # `folders/{folder_id}/locations/{location}` + # `organizations/{organization_id}/locations/{location}` + # @!attribute [rw] page_size + # @return [::Integer] + # Optional. The maximum number of access policies to return. The + # service may return fewer than this value. + # + # If unspecified, at most 50 access policies will be returned. Valid value + # ranges from 1 to 1000; values above 1000 will be coerced to 1000. + # @!attribute [rw] page_token + # @return [::String] + # Optional. A page token, received from a previous + # `ListAccessPolicies` call. Provide this to retrieve the + # subsequent page. + # + # When paginating, all other parameters provided to + # `ListAccessPolicies` must match the call that provided the + # page token. + class ListAccessPoliciesRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Response message for ListAccessPolicies method. + # @!attribute [rw] access_policies + # @return [::Array<::Google::Iam::V3beta::AccessPolicy>] + # The access policies from the specified parent. + # @!attribute [rw] next_page_token + # @return [::String] + # Optional. A token, which can be sent as `page_token` to retrieve the next + # page. If this field is omitted, there are no subsequent pages. + class ListAccessPoliciesResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Request message for SearchAccessPolicyBindings rpc. + # @!attribute [rw] name + # @return [::String] + # Required. The name of the access policy. + # Format: + # `organizations/{organization_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `folders/{folder_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_id}/locations/{location}/accessPolicies/{access_policy_id}` + # `projects/{project_number}/locations/{location}/accessPolicies/{access_policy_id}` + # @!attribute [rw] page_size + # @return [::Integer] + # Optional. The maximum number of policy bindings to return. The service may + # return fewer than this value. + # + # If unspecified, at most 50 policy bindings will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @!attribute [rw] page_token + # @return [::String] + # Optional. A page token, received from a previous + # `SearchAccessPolicyBindingsRequest` call. Provide this to + # retrieve the subsequent page. + # + # When paginating, all other parameters provided to + # `SearchAccessPolicyBindingsRequest` must match the call + # that provided the page token. + class SearchAccessPolicyBindingsRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Response message for SearchAccessPolicyBindings rpc. + # @!attribute [rw] policy_bindings + # @return [::Array<::Google::Iam::V3beta::PolicyBinding>] + # The policy bindings that reference the specified policy. + # @!attribute [rw] next_page_token + # @return [::String] + # Optional. A token, which can be sent as `page_token` to retrieve the next + # page. If this field is omitted, there are no subsequent pages. + class SearchAccessPolicyBindingsResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + end +end diff --git a/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policy_resources.rb b/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policy_resources.rb new file mode 100644 index 000000000000..cb77bb996aa9 --- /dev/null +++ b/google-iam-v3beta/proto_docs/google/iam/v3beta/access_policy_resources.rb @@ -0,0 +1,223 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Iam + module V3beta + # An IAM access policy resource. + # @!attribute [rw] name + # @return [::String] + # Identifier. The resource name of the access policy. + # + # The following formats are supported: + # + # * `projects/{project_id}/locations/{location}/accessPolicies/{policy_id}` + # * `projects/{project_number}/locations/{location}/accessPolicies/{policy_id}` + # * `folders/{folder_id}/locations/{location}/accessPolicies/{policy_id}` + # * `organizations/{organization_id}/locations/{location}/accessPolicies/{policy_id}` + # @!attribute [r] uid + # @return [::String] + # Output only. The globally unique ID of the access policy. + # @!attribute [rw] etag + # @return [::String] + # Optional. The etag for the access policy. + # If this is provided on update, it must match the server's etag. + # @!attribute [rw] display_name + # @return [::String] + # Optional. The description of the access policy. Must be less than + # or equal to 63 characters. + # @!attribute [rw] annotations + # @return [::Google::Protobuf::Map{::String => ::String}] + # Optional. User defined annotations. See + # https://google.aip.dev/148#annotations for more details such as format and + # size limitations + # @!attribute [r] create_time + # @return [::Google::Protobuf::Timestamp] + # Output only. The time when the access policy was created. + # @!attribute [r] update_time + # @return [::Google::Protobuf::Timestamp] + # Output only. The time when the access policy was most recently + # updated. + # @!attribute [rw] details + # @return [::Google::Iam::V3beta::AccessPolicyDetails] + # Optional. The details for the access policy. + class AccessPolicy + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::String] + class AnnotationsEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Access policy details. + # @!attribute [rw] rules + # @return [::Array<::Google::Iam::V3beta::AccessPolicyRule>] + # Required. A list of access policy rules. + class AccessPolicyDetails + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Access Policy Rule that determines the behavior of the policy. + # @!attribute [rw] description + # @return [::String] + # Optional. Customer specified description of the rule. Must be less than or + # equal to 256 characters. + # @!attribute [rw] effect + # @return [::Google::Iam::V3beta::AccessPolicyRule::Effect] + # Required. The effect of the rule. + # @!attribute [rw] principals + # @return [::Array<::String>] + # Required. The identities for which this rule's effect governs using one or + # more permissions on Google Cloud resources. This field can contain the + # following values: + # + # * `principal://goog/subject/{email_id}`: A specific Google Account. + # Includes Gmail, Cloud Identity, and Google Workspace user accounts. For + # example, `principal://goog/subject/alice@example.com`. + # + # * `principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}`: + # A Google Cloud service account. For example, + # `principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com`. + # + # * `principalSet://goog/group/{group_id}`: A Google group. For example, + # `principalSet://goog/group/admins@example.com`. + # + # * `principalSet://goog/cloudIdentityCustomerId/{customer_id}`: All of the + # principals associated with the specified Google Workspace or Cloud + # Identity customer ID. For example, + # `principalSet://goog/cloudIdentityCustomerId/C01Abc35`. + # + # + # If an identifier that was previously set on a policy is soft deleted, then + # calls to read that policy will return the identifier with a deleted + # prefix. Users cannot set identifiers with this syntax. + # + # * `deleted:principal://goog/subject/{email_id}?uid={uid}`: A specific + # Google Account that was deleted recently. For example, + # `deleted:principal://goog/subject/alice@example.com?uid=1234567890`. If + # the Google Account is recovered, this identifier reverts to the standard + # identifier for a Google Account. + # + # * `deleted:principalSet://goog/group/{group_id}?uid={uid}`: A Google group + # that was deleted recently. For example, + # `deleted:principalSet://goog/group/admins@example.com?uid=1234567890`. + # If the Google group is restored, this identifier reverts to the standard + # identifier for a Google group. + # + # * `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}?uid={uid}`: + # A Google Cloud service account that was deleted recently. For example, + # `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com?uid=1234567890`. + # If the service account is undeleted, this identifier reverts to the + # standard identifier for a service account. + # @!attribute [rw] excluded_principals + # @return [::Array<::String>] + # Optional. The identities that are excluded from the access policy rule, + # even if they are listed in the `principals`. For example, you could add a + # Google group to the `principals`, then exclude specific users who belong to + # that group. + # @!attribute [rw] operation + # @return [::Google::Iam::V3beta::AccessPolicyRule::Operation] + # Required. Attributes that are used to determine whether this rule applies + # to a request. + # @!attribute [rw] conditions + # @return [::Google::Protobuf::Map{::String => ::Google::Type::Expr}] + # Optional. The conditions that determine whether this rule applies to a + # request. Conditions are identified by their key, which is the FQDN of the + # service that they are relevant to. For example: + # + # ``` + # "conditions": { + # "iam.googleapis.com": { + # "expression": + # } + # } + # ``` + # + # Each rule is evaluated independently. If this rule does not apply + # to a request, other rules might still apply. + # Currently supported keys are as follows: + # + # + # * `eventarc.googleapis.com`: Can use `CEL` functions that evaluate + # resource fields. + # + # * `iam.googleapis.com`: Can use `CEL` functions that evaluate + # [resource + # tags](https://cloud.google.com/iam/help/conditions/resource-tags) and + # combine them using boolean and logical operators. Other functions and + # operators are not supported. + class AccessPolicyRule + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Attributes that are used to determine whether this rule applies to a + # request. + # @!attribute [rw] permissions + # @return [::Array<::String>] + # Optional. The permissions that are explicitly affected by this rule. Each + # permission uses the format `{service_fqdn}/{resource}.{verb}`, where + # `{service_fqdn}` is the fully qualified domain name for the service. + # Currently supported permissions are as follows: + # + # * `eventarc.googleapis.com/messageBuses.publish`. + # @!attribute [rw] excluded_permissions + # @return [::Array<::String>] + # Optional. Specifies the permissions that this rule excludes from the set + # of affected permissions given by `permissions`. If a permission appears + # in `permissions` _and_ in `excluded_permissions` then it will _not_ be + # subject to the policy effect. + # + # The excluded permissions can be specified using the same syntax as + # `permissions`. + class Operation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::Google::Type::Expr] + class ConditionsEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # An effect to describe the access relationship. + module Effect + # The effect is unspecified. + EFFECT_UNSPECIFIED = 0 + + # The policy will deny access if it evaluates to true. + DENY = 1 + + # The policy will grant access if it evaluates to true. + ALLOW = 2 + end + end + end + end +end diff --git a/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_binding_resources.rb b/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_binding_resources.rb index 5eefbd2f1aab..2d9c21ec07d3 100644 --- a/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_binding_resources.rb +++ b/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_binding_resources.rb @@ -53,8 +53,8 @@ module V3beta # size limitations # @!attribute [rw] target # @return [::Google::Iam::V3beta::PolicyBinding::Target] - # Required. Immutable. Target is the full resource name of the resource to - # which the policy will be bound. Immutable once set. + # Required. Immutable. The full resource name of the resource to which the + # policy will be bound. Immutable once set. # @!attribute [rw] policy_kind # @return [::Google::Iam::V3beta::PolicyBinding::PolicyKind] # Immutable. The kind of the policy to attach in this binding. This field @@ -100,13 +100,14 @@ module V3beta # - `principal.type != ` # - `principal.type in []` # - # Supported principal types are Workspace, Workforce Pool, Workload Pool and - # Service Account. Allowed string must be one of: + # Supported principal types are workspace, workforce pool, workload pool, + # service account, and Agent Identity. Allowed string must be one of: # - # - iam.googleapis.com/WorkspaceIdentity - # - iam.googleapis.com/WorkforcePoolIdentity - # - iam.googleapis.com/WorkloadPoolIdentity - # - iam.googleapis.com/ServiceAccount + # - `iam.googleapis.com/WorkspaceIdentity` + # - `iam.googleapis.com/WorkforcePoolIdentity` + # - `iam.googleapis.com/WorkloadPoolIdentity` + # - `iam.googleapis.com/ServiceAccount` + # - `iam.googleapis.com/AgentPoolIdentity` (available in Preview) # @!attribute [r] create_time # @return [::Google::Protobuf::Timestamp] # Output only. The time when the policy binding was created. @@ -117,32 +118,50 @@ class PolicyBinding include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods - # Target is the full resource name of the resource to which the policy will + # The full resource name of the resource to which the policy will # be bound. Immutable once set. # @!attribute [rw] principal_set # @return [::String] - # Immutable. Full Resource Name used for principal access boundary policy - # bindings. The principal set must be directly parented by the policy - # binding's parent or same as the parent if the target is a - # project/folder/organization. + # Immutable. The full resource name that's used for principal access + # boundary policy bindings. The principal set must be directly parented + # by the policy binding's parent or same as the parent if the target is a + # project, folder, or organization. # # Examples: - # * For binding's parented by an organization: - # * Organization: - # `//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID` - # * Workforce Identity: - # `//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID` - # * Workspace Identity: - # `//iam.googleapis.com/locations/global/workspace/WORKSPACE_ID` - # * For binding's parented by a folder: - # * Folder: - # `//cloudresourcemanager.googleapis.com/folders/FOLDER_ID` - # * For binding's parented by a project: - # * Project: + # + # * For bindings parented by an organization: + # * Organization: + # `//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID` + # * Workforce Identity: + # `//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID` + # * Workspace Identity: + # `//iam.googleapis.com/locations/global/workspace/WORKSPACE_ID` + # * For bindings parented by a folder: + # * Folder: + # `//cloudresourcemanager.googleapis.com/folders/FOLDER_ID` + # * For bindings parented by a project: + # * Project: + # * `//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER` + # * `//cloudresourcemanager.googleapis.com/projects/PROJECT_ID` + # * Workload Identity Pool: + # `//iam.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/workloadIdentityPools/WORKLOAD_POOL_ID` + # + # Note: The following fields are mutually exclusive: `principal_set`, `resource`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] resource + # @return [::String] + # Immutable. The full resource name that's used for access policy + # bindings. + # + # Examples: + # + # * Organization: + # `//cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID` + # * Folder: `//cloudresourcemanager.googleapis.com/folders/FOLDER_ID` + # * Project: # * `//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER` # * `//cloudresourcemanager.googleapis.com/projects/PROJECT_ID` - # * Workload Identity Pool: - # `//iam.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/workloadIdentityPools/WORKLOAD_POOL_ID` + # + # Note: The following fields are mutually exclusive: `resource`, `principal_set`. If a field in that set is populated, all other fields in the set will automatically be cleared. class Target include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -157,13 +176,16 @@ class AnnotationsEntry extend ::Google::Protobuf::MessageExts::ClassMethods end - # Different policy kinds supported in this binding. + # The different policy kinds supported in this binding. module PolicyKind # Unspecified policy kind; Not a valid state POLICY_KIND_UNSPECIFIED = 0 # Principal access boundary policy kind PRINCIPAL_ACCESS_BOUNDARY = 1 + + # Access policy kind. + ACCESS = 2 end end end diff --git a/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_bindings_service.rb b/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_bindings_service.rb index 50db4575c321..6032552361e9 100644 --- a/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_bindings_service.rb +++ b/google-iam-v3beta/proto_docs/google/iam/v3beta/policy_bindings_service.rb @@ -129,8 +129,7 @@ class DeletePolicyBindingRequest # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @!attribute [rw] page_token # @return [::String] # Optional. A page token, received from a previous `ListPolicyBindings` call. @@ -141,7 +140,8 @@ class DeletePolicyBindingRequest # @!attribute [rw] filter # @return [::String] # Optional. An expression for filtering the results of the request. Filter - # rules are case insensitive. Some eligible fields for filtering are: + # rules are case insensitive. Some eligible fields for filtering are the + # following: # # + `target` # + `policy` @@ -187,8 +187,7 @@ class ListPolicyBindingsResponse # Optional. The maximum number of policy bindings to return. The service may # return fewer than this value. # - # If unspecified, at most 50 policy bindings will be returned. - # The maximum value is 1000; values above 1000 will be coerced to 1000. + # The default value is 50. The maximum value is 1000. # @!attribute [rw] page_token # @return [::String] # Optional. A page token, received from a previous @@ -210,6 +209,18 @@ class ListPolicyBindingsResponse # * `projects/{project_number}/locations/{location}` # * `folders/{folder_id}/locations/{location}` # * `organizations/{organization_id}/locations/{location}` + # @!attribute [rw] filter + # @return [::String] + # Optional. Filtering currently only supports the kind of policies to return, + # and must be in the format "policy_kind=\\{policy_kind}". + # + # If String is empty, bindings bound to all kinds of policies would be + # returned. + # + # The only supported values are the following: + # + # * "policy_kind=PRINCIPAL_ACCESS_BOUNDARY", + # * "policy_kind=ACCESS" class SearchTargetPolicyBindingsRequest include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods diff --git a/google-iam-v3beta/snippets/Gemfile b/google-iam-v3beta/snippets/Gemfile index 5202fc1b4ae1..77a6b0cc1e2c 100644 --- a/google-iam-v3beta/snippets/Gemfile +++ b/google-iam-v3beta/snippets/Gemfile @@ -19,9 +19,9 @@ source "https://rubygems.org" if ENV["GOOGLE_CLOUD_SAMPLES_TEST"] == "master" - gem "google-iam-v3beta", path: "../" + gem "google-cloud-iam-v3beta", path: "../" else - gem "google-iam-v3beta" + gem "google-cloud-iam-v3beta" end group :test do diff --git a/google-iam-v3beta/snippets/access_policies/create_access_policy.rb b/google-iam-v3beta/snippets/access_policies/create_access_policy.rb new file mode 100644 index 000000000000..97be59c7632e --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/create_access_policy.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_CreateAccessPolicy_sync] +require "google/iam/v3beta" + +## +# Snippet for the create_access_policy call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#create_access_policy. +# +def create_access_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::CreateAccessPolicyRequest.new + + # Call the create_access_policy method. + result = client.create_access_policy request + + # The returned object is of type Gapic::Operation. You can use it to + # check the status of an operation, cancel it, or wait for results. + # Here is how to wait for a response. + result.wait_until_done! timeout: 60 + if result.response? + p result.response + else + puts "No response received." + end +end +# [END iam_v3beta_generated_AccessPolicies_CreateAccessPolicy_sync] diff --git a/google-iam-v3beta/snippets/access_policies/delete_access_policy.rb b/google-iam-v3beta/snippets/access_policies/delete_access_policy.rb new file mode 100644 index 000000000000..39044451fe13 --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/delete_access_policy.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_DeleteAccessPolicy_sync] +require "google/iam/v3beta" + +## +# Snippet for the delete_access_policy call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#delete_access_policy. +# +def delete_access_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::DeleteAccessPolicyRequest.new + + # Call the delete_access_policy method. + result = client.delete_access_policy request + + # The returned object is of type Gapic::Operation. You can use it to + # check the status of an operation, cancel it, or wait for results. + # Here is how to wait for a response. + result.wait_until_done! timeout: 60 + if result.response? + p result.response + else + puts "No response received." + end +end +# [END iam_v3beta_generated_AccessPolicies_DeleteAccessPolicy_sync] diff --git a/google-iam-v3beta/snippets/access_policies/get_access_policy.rb b/google-iam-v3beta/snippets/access_policies/get_access_policy.rb new file mode 100644 index 000000000000..dd29cbf9cc54 --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/get_access_policy.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_GetAccessPolicy_sync] +require "google/iam/v3beta" + +## +# Snippet for the get_access_policy call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#get_access_policy. +# +def get_access_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::GetAccessPolicyRequest.new + + # Call the get_access_policy method. + result = client.get_access_policy request + + # The returned object is of type Google::Iam::V3beta::AccessPolicy. + p result +end +# [END iam_v3beta_generated_AccessPolicies_GetAccessPolicy_sync] diff --git a/google-iam-v3beta/snippets/access_policies/list_access_policies.rb b/google-iam-v3beta/snippets/access_policies/list_access_policies.rb new file mode 100644 index 000000000000..6ba1518a5a0f --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/list_access_policies.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_ListAccessPolicies_sync] +require "google/iam/v3beta" + +## +# Snippet for the list_access_policies call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#list_access_policies. +# +def list_access_policies + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::ListAccessPoliciesRequest.new + + # Call the list_access_policies method. + result = client.list_access_policies request + + # The returned object is of type Gapic::PagedEnumerable. You can iterate + # over elements, and API calls will be issued to fetch pages as needed. + result.each do |item| + # Each element is of type ::Google::Iam::V3beta::AccessPolicy. + p item + end +end +# [END iam_v3beta_generated_AccessPolicies_ListAccessPolicies_sync] diff --git a/google-iam-v3beta/snippets/access_policies/search_access_policy_bindings.rb b/google-iam-v3beta/snippets/access_policies/search_access_policy_bindings.rb new file mode 100644 index 000000000000..4e6b43897d7b --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/search_access_policy_bindings.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_SearchAccessPolicyBindings_sync] +require "google/iam/v3beta" + +## +# Snippet for the search_access_policy_bindings call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#search_access_policy_bindings. +# +def search_access_policy_bindings + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new + + # Call the search_access_policy_bindings method. + result = client.search_access_policy_bindings request + + # The returned object is of type Gapic::PagedEnumerable. You can iterate + # over elements, and API calls will be issued to fetch pages as needed. + result.each do |item| + # Each element is of type ::Google::Iam::V3beta::PolicyBinding. + p item + end +end +# [END iam_v3beta_generated_AccessPolicies_SearchAccessPolicyBindings_sync] diff --git a/google-iam-v3beta/snippets/access_policies/update_access_policy.rb b/google-iam-v3beta/snippets/access_policies/update_access_policy.rb new file mode 100644 index 000000000000..72e82547181e --- /dev/null +++ b/google-iam-v3beta/snippets/access_policies/update_access_policy.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START iam_v3beta_generated_AccessPolicies_UpdateAccessPolicy_sync] +require "google/iam/v3beta" + +## +# Snippet for the update_access_policy call in the AccessPolicies service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Iam::V3beta::AccessPolicies::Client#update_access_policy. +# +def update_access_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Iam::V3beta::AccessPolicies::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Iam::V3beta::UpdateAccessPolicyRequest.new + + # Call the update_access_policy method. + result = client.update_access_policy request + + # The returned object is of type Gapic::Operation. You can use it to + # check the status of an operation, cancel it, or wait for results. + # Here is how to wait for a response. + result.wait_until_done! timeout: 60 + if result.response? + p result.response + else + puts "No response received." + end +end +# [END iam_v3beta_generated_AccessPolicies_UpdateAccessPolicy_sync] diff --git a/google-iam-v3beta/snippets/snippet_metadata_google.iam.v3beta.json b/google-iam-v3beta/snippets/snippet_metadata_google.iam.v3beta.json index 859765a02a09..858601e636ad 100644 --- a/google-iam-v3beta/snippets/snippet_metadata_google.iam.v3beta.json +++ b/google-iam-v3beta/snippets/snippet_metadata_google.iam.v3beta.json @@ -1,6 +1,6 @@ { "client_library": { - "name": "google-iam-v3beta", + "name": "google-cloud-iam-v3beta", "version": "0.4.1", "language": "RUBY", "apis": [ @@ -11,6 +11,246 @@ ] }, "snippets": [ + { + "region_tag": "iam_v3beta_generated_AccessPolicies_CreateAccessPolicy_sync", + "title": "Snippet for the create_access_policy call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#create_access_policy.", + "file": "access_policies/create_access_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "create_access_policy", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#create_access_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::CreateAccessPolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Longrunning::Operation", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "CreateAccessPolicy", + "full_name": "google.iam.v3beta.AccessPolicies.CreateAccessPolicy", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 53, + "type": "FULL" + } + ] + }, + { + "region_tag": "iam_v3beta_generated_AccessPolicies_GetAccessPolicy_sync", + "title": "Snippet for the get_access_policy call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#get_access_policy.", + "file": "access_policies/get_access_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "get_access_policy", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#get_access_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::GetAccessPolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Iam::V3beta::AccessPolicy", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "GetAccessPolicy", + "full_name": "google.iam.v3beta.AccessPolicies.GetAccessPolicy", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 46, + "type": "FULL" + } + ] + }, + { + "region_tag": "iam_v3beta_generated_AccessPolicies_UpdateAccessPolicy_sync", + "title": "Snippet for the update_access_policy call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#update_access_policy.", + "file": "access_policies/update_access_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "update_access_policy", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#update_access_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::UpdateAccessPolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Longrunning::Operation", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "UpdateAccessPolicy", + "full_name": "google.iam.v3beta.AccessPolicies.UpdateAccessPolicy", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 53, + "type": "FULL" + } + ] + }, + { + "region_tag": "iam_v3beta_generated_AccessPolicies_DeleteAccessPolicy_sync", + "title": "Snippet for the delete_access_policy call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#delete_access_policy.", + "file": "access_policies/delete_access_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "delete_access_policy", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#delete_access_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::DeleteAccessPolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Longrunning::Operation", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "DeleteAccessPolicy", + "full_name": "google.iam.v3beta.AccessPolicies.DeleteAccessPolicy", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 53, + "type": "FULL" + } + ] + }, + { + "region_tag": "iam_v3beta_generated_AccessPolicies_ListAccessPolicies_sync", + "title": "Snippet for the list_access_policies call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#list_access_policies.", + "file": "access_policies/list_access_policies.rb", + "language": "RUBY", + "client_method": { + "short_name": "list_access_policies", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#list_access_policies", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::ListAccessPoliciesRequest", + "name": "request" + } + ], + "result_type": "::Google::Iam::V3beta::ListAccessPoliciesResponse", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "ListAccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies.ListAccessPolicies", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 50, + "type": "FULL" + } + ] + }, + { + "region_tag": "iam_v3beta_generated_AccessPolicies_SearchAccessPolicyBindings_sync", + "title": "Snippet for the search_access_policy_bindings call in the AccessPolicies service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Iam::V3beta::AccessPolicies::Client#search_access_policy_bindings.", + "file": "access_policies/search_access_policy_bindings.rb", + "language": "RUBY", + "client_method": { + "short_name": "search_access_policy_bindings", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client#search_access_policy_bindings", + "async": false, + "parameters": [ + { + "type": "::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest", + "name": "request" + } + ], + "result_type": "::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse", + "client": { + "short_name": "AccessPolicies::Client", + "full_name": "::Google::Iam::V3beta::AccessPolicies::Client" + }, + "method": { + "short_name": "SearchAccessPolicyBindings", + "full_name": "google.iam.v3beta.AccessPolicies.SearchAccessPolicyBindings", + "service": { + "short_name": "AccessPolicies", + "full_name": "google.iam.v3beta.AccessPolicies" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 50, + "type": "FULL" + } + ] + }, { "region_tag": "iam_v3beta_generated_PolicyBindings_CreatePolicyBinding_sync", "title": "Snippet for the create_policy_binding call in the PolicyBindings service", diff --git a/google-iam-v3beta/test/google/iam/v3beta/access_policies_operations_test.rb b/google-iam-v3beta/test/google/iam/v3beta/access_policies_operations_test.rb new file mode 100644 index 000000000000..2b61d2eea2a1 --- /dev/null +++ b/google-iam-v3beta/test/google/iam/v3beta/access_policies_operations_test.rb @@ -0,0 +1,400 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "helper" + +require "gapic/grpc/service_stub" + +require "google/iam/v3beta/access_policies_service_pb" +require "google/iam/v3beta/access_policies_service_services_pb" +require "google/iam/v3beta/access_policies" + +class ::Google::Iam::V3beta::AccessPolicies::OperationsTest < Minitest::Test + class ClientStub + attr_accessor :call_rpc_count, :requests + + def initialize response, operation, &block + @response = response + @operation = operation + @block = block + @call_rpc_count = 0 + @requests = [] + end + + def call_rpc *args, **kwargs + @call_rpc_count += 1 + + @requests << @block&.call(*args, **kwargs) + + catch :response do + yield @response, @operation if block_given? + @response + end + end + + def endpoint + "endpoint.example.com" + end + + def universe_domain + "example.com" + end + + def stub_logger + nil + end + + def logger + nil + end + end + + def test_list_operations + # Create GRPC objects. + grpc_response = ::Google::Longrunning::ListOperationsResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + filter = "hello world" + page_size = 42 + page_token = "hello world" + return_partial_success = true + + list_operations_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :list_operations, name + assert_kind_of ::Google::Longrunning::ListOperationsRequest, request + assert_equal "hello world", request["name"] + assert_equal "hello world", request["filter"] + assert_equal 42, request["page_size"] + assert_equal "hello world", request["page_token"] + assert_equal true, request["return_partial_success"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, list_operations_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.list_operations({ name: name, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.list_operations name: name, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.list_operations ::Google::Longrunning::ListOperationsRequest.new(name: name, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.list_operations({ name: name, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success }, grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.list_operations(::Google::Longrunning::ListOperationsRequest.new(name: name, filter: filter, page_size: page_size, page_token: page_token, return_partial_success: return_partial_success), grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, list_operations_client_stub.call_rpc_count + end + end + + def test_get_operation + # Create GRPC objects. + grpc_response = ::Google::Longrunning::Operation.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + get_operation_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :get_operation, name + assert_kind_of ::Google::Longrunning::GetOperationRequest, request + assert_equal "hello world", request["name"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, get_operation_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.get_operation({ name: name }) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use named arguments + client.get_operation name: name do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.get_operation ::Google::Longrunning::GetOperationRequest.new(name: name) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.get_operation({ name: name }, grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.get_operation(::Google::Longrunning::GetOperationRequest.new(name: name), grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, get_operation_client_stub.call_rpc_count + end + end + + def test_delete_operation + # Create GRPC objects. + grpc_response = ::Google::Protobuf::Empty.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + delete_operation_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :delete_operation, name + assert_kind_of ::Google::Longrunning::DeleteOperationRequest, request + assert_equal "hello world", request["name"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, delete_operation_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.delete_operation({ name: name }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.delete_operation name: name do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.delete_operation ::Google::Longrunning::DeleteOperationRequest.new(name: name) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.delete_operation({ name: name }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.delete_operation(::Google::Longrunning::DeleteOperationRequest.new(name: name), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, delete_operation_client_stub.call_rpc_count + end + end + + def test_cancel_operation + # Create GRPC objects. + grpc_response = ::Google::Protobuf::Empty.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + cancel_operation_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :cancel_operation, name + assert_kind_of ::Google::Longrunning::CancelOperationRequest, request + assert_equal "hello world", request["name"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, cancel_operation_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.cancel_operation({ name: name }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.cancel_operation name: name do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.cancel_operation ::Google::Longrunning::CancelOperationRequest.new(name: name) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.cancel_operation({ name: name }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.cancel_operation(::Google::Longrunning::CancelOperationRequest.new(name: name), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, cancel_operation_client_stub.call_rpc_count + end + end + + def test_wait_operation + # Create GRPC objects. + grpc_response = ::Google::Longrunning::Operation.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + timeout = {} + + wait_operation_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :wait_operation, name + assert_kind_of ::Google::Longrunning::WaitOperationRequest, request + assert_equal "hello world", request["name"] + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Protobuf::Duration), request["timeout"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, wait_operation_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.wait_operation({ name: name, timeout: timeout }) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use named arguments + client.wait_operation name: name, timeout: timeout do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.wait_operation ::Google::Longrunning::WaitOperationRequest.new(name: name, timeout: timeout) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.wait_operation({ name: name, timeout: timeout }, grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.wait_operation(::Google::Longrunning::WaitOperationRequest.new(name: name, timeout: timeout), grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, wait_operation_client_stub.call_rpc_count + end + end + + def test_configure + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + + client = block_config = config = nil + dummy_stub = ClientStub.new nil, nil + Gapic::ServiceStub.stub :new, dummy_stub do + client = ::Google::Iam::V3beta::AccessPolicies::Operations.new do |config| + config.credentials = grpc_channel + end + end + + config = client.configure do |c| + block_config = c + end + + assert_same block_config, config + assert_kind_of ::Google::Iam::V3beta::AccessPolicies::Operations::Configuration, config + end +end diff --git a/google-iam-v3beta/test/google/iam/v3beta/access_policies_paths_test.rb b/google-iam-v3beta/test/google/iam/v3beta/access_policies_paths_test.rb new file mode 100644 index 000000000000..2e29e3248257 --- /dev/null +++ b/google-iam-v3beta/test/google/iam/v3beta/access_policies_paths_test.rb @@ -0,0 +1,97 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "helper" + +require "gapic/grpc/service_stub" + +require "google/iam/v3beta/access_policies" + +class ::Google::Iam::V3beta::AccessPolicies::ClientPathsTest < Minitest::Test + class DummyStub + def endpoint + "endpoint.example.com" + end + + def universe_domain + "example.com" + end + + def stub_logger + nil + end + + def logger + nil + end + end + + def test_access_policy_path + grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + ::Gapic::ServiceStub.stub :new, DummyStub.new do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + path = client.access_policy_path organization: "value0", location: "value1", access_policy: "value2" + assert_equal "organizations/value0/locations/value1/accessPolicies/value2", path + + path = client.access_policy_path folder: "value0", location: "value1", access_policy: "value2" + assert_equal "folders/value0/locations/value1/accessPolicies/value2", path + + path = client.access_policy_path project: "value0", location: "value1", access_policy: "value2" + assert_equal "projects/value0/locations/value1/accessPolicies/value2", path + end + end + + def test_folder_location_path + grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + ::Gapic::ServiceStub.stub :new, DummyStub.new do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + path = client.folder_location_path folder: "value0", location: "value1" + assert_equal "folders/value0/locations/value1", path + end + end + + def test_location_path + grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + ::Gapic::ServiceStub.stub :new, DummyStub.new do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + path = client.location_path project: "value0", location: "value1" + assert_equal "projects/value0/locations/value1", path + end + end + + def test_organization_location_path + grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + ::Gapic::ServiceStub.stub :new, DummyStub.new do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + path = client.organization_location_path organization: "value0", location: "value1" + assert_equal "organizations/value0/locations/value1", path + end + end +end diff --git a/google-iam-v3beta/test/google/iam/v3beta/access_policies_rest_test.rb b/google-iam-v3beta/test/google/iam/v3beta/access_policies_rest_test.rb new file mode 100644 index 000000000000..8d0ded48f620 --- /dev/null +++ b/google-iam-v3beta/test/google/iam/v3beta/access_policies_rest_test.rb @@ -0,0 +1,434 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "helper" +require "gapic/rest" +require "google/iam/v3beta/access_policies_service_pb" +require "google/iam/v3beta/access_policies/rest" + + +class ::Google::Iam::V3beta::AccessPolicies::Rest::ClientTest < Minitest::Test + class ClientStub + attr_accessor :call_count, :requests + + def initialize response, &block + @response = response + @block = block + @call_count = 0 + @requests = [] + end + + def make_get_request uri:, params: {}, options: {}, method_name: nil + make_http_request :get, uri: uri, body: nil, params: params, options: options, method_name: method_name + end + + def make_delete_request uri:, params: {}, options: {}, method_name: nil + make_http_request :delete, uri: uri, body: nil, params: params, options: options, method_name: method_name + end + + def make_post_request uri:, body: nil, params: {}, options: {}, method_name: nil + make_http_request :post, uri: uri, body: body, params: params, options: options, method_name: method_name + end + + def make_patch_request uri:, body:, params: {}, options: {}, method_name: nil + make_http_request :patch, uri: uri, body: body, params: params, options: options, method_name: method_name + end + + def make_put_request uri:, body:, params: {}, options: {}, method_name: nil + make_http_request :put, uri: uri, body: body, params: params, options: options, method_name: method_name + end + + def make_http_request *args, **kwargs + @call_count += 1 + + @requests << @block&.call(*args, **kwargs) + + @response + end + + def endpoint + "endpoint.example.com" + end + + def universe_domain + "example.com" + end + + def stub_logger + nil + end + + def logger + nil + end + end + + def test_create_access_policy + # Create test objects. + client_result = ::Google::Longrunning::Operation.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + access_policy_id = "hello world" + access_policy = {} + validate_only = true + + create_access_policy_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_create_access_policy_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, create_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.create_access_policy({ parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.create_access_policy parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.create_access_policy ::Google::Iam::V3beta::CreateAccessPolicyRequest.new(parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.create_access_policy({ parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.create_access_policy(::Google::Iam::V3beta::CreateAccessPolicyRequest.new(parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, create_access_policy_client_stub.call_count + end + end + end + + def test_get_access_policy + # Create test objects. + client_result = ::Google::Iam::V3beta::AccessPolicy.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + get_access_policy_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_get_access_policy_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, get_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.get_access_policy({ name: name }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.get_access_policy name: name do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.get_access_policy ::Google::Iam::V3beta::GetAccessPolicyRequest.new(name: name) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.get_access_policy({ name: name }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.get_access_policy(::Google::Iam::V3beta::GetAccessPolicyRequest.new(name: name), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, get_access_policy_client_stub.call_count + end + end + end + + def test_update_access_policy + # Create test objects. + client_result = ::Google::Longrunning::Operation.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + access_policy = {} + validate_only = true + + update_access_policy_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_update_access_policy_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, update_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.update_access_policy({ access_policy: access_policy, validate_only: validate_only }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.update_access_policy access_policy: access_policy, validate_only: validate_only do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.update_access_policy ::Google::Iam::V3beta::UpdateAccessPolicyRequest.new(access_policy: access_policy, validate_only: validate_only) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.update_access_policy({ access_policy: access_policy, validate_only: validate_only }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.update_access_policy(::Google::Iam::V3beta::UpdateAccessPolicyRequest.new(access_policy: access_policy, validate_only: validate_only), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, update_access_policy_client_stub.call_count + end + end + end + + def test_delete_access_policy + # Create test objects. + client_result = ::Google::Longrunning::Operation.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + name = "hello world" + etag = "hello world" + validate_only = true + force = true + + delete_access_policy_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_delete_access_policy_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, delete_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.delete_access_policy({ name: name, etag: etag, validate_only: validate_only, force: force }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.delete_access_policy name: name, etag: etag, validate_only: validate_only, force: force do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.delete_access_policy ::Google::Iam::V3beta::DeleteAccessPolicyRequest.new(name: name, etag: etag, validate_only: validate_only, force: force) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.delete_access_policy({ name: name, etag: etag, validate_only: validate_only, force: force }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.delete_access_policy(::Google::Iam::V3beta::DeleteAccessPolicyRequest.new(name: name, etag: etag, validate_only: validate_only, force: force), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, delete_access_policy_client_stub.call_count + end + end + end + + def test_list_access_policies + # Create test objects. + client_result = ::Google::Iam::V3beta::ListAccessPoliciesResponse.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + page_size = 42 + page_token = "hello world" + + list_access_policies_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_list_access_policies_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, list_access_policies_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.list_access_policies({ parent: parent, page_size: page_size, page_token: page_token }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.list_access_policies parent: parent, page_size: page_size, page_token: page_token do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.list_access_policies ::Google::Iam::V3beta::ListAccessPoliciesRequest.new(parent: parent, page_size: page_size, page_token: page_token) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.list_access_policies({ parent: parent, page_size: page_size, page_token: page_token }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.list_access_policies(::Google::Iam::V3beta::ListAccessPoliciesRequest.new(parent: parent, page_size: page_size, page_token: page_token), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, list_access_policies_client_stub.call_count + end + end + end + + def test_search_access_policy_bindings + # Create test objects. + client_result = ::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + name = "hello world" + page_size = 42 + page_token = "hello world" + + search_access_policy_bindings_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Iam::V3beta::AccessPolicies::Rest::ServiceStub.stub :transcode_search_access_policy_bindings_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, search_access_policy_bindings_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.search_access_policy_bindings({ name: name, page_size: page_size, page_token: page_token }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.search_access_policy_bindings name: name, page_size: page_size, page_token: page_token do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.search_access_policy_bindings ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new(name: name, page_size: page_size, page_token: page_token) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.search_access_policy_bindings({ name: name, page_size: page_size, page_token: page_token }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.search_access_policy_bindings(::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new(name: name, page_size: page_size, page_token: page_token), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, search_access_policy_bindings_client_stub.call_count + end + end + end + + def test_configure + credentials_token = :dummy_value + + client = block_config = config = nil + dummy_stub = ClientStub.new nil + Gapic::Rest::ClientStub.stub :new, dummy_stub do + client = ::Google::Iam::V3beta::AccessPolicies::Rest::Client.new do |config| + config.credentials = credentials_token + end + end + + config = client.configure do |c| + block_config = c + end + + assert_same block_config, config + assert_kind_of ::Google::Iam::V3beta::AccessPolicies::Rest::Client::Configuration, config + end +end diff --git a/google-iam-v3beta/test/google/iam/v3beta/access_policies_test.rb b/google-iam-v3beta/test/google/iam/v3beta/access_policies_test.rb new file mode 100644 index 000000000000..78d84bfdeff7 --- /dev/null +++ b/google-iam-v3beta/test/google/iam/v3beta/access_policies_test.rb @@ -0,0 +1,513 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +require "helper" + +require "gapic/grpc/service_stub" + +require "google/iam/v3beta/access_policies_service_pb" +require "google/iam/v3beta/access_policies" + +class ::Google::Iam::V3beta::AccessPolicies::ClientTest < Minitest::Test + class ClientStub + attr_accessor :call_rpc_count, :requests + + def initialize response, operation, &block + @response = response + @operation = operation + @block = block + @call_rpc_count = 0 + @requests = [] + end + + def call_rpc *args, **kwargs + @call_rpc_count += 1 + + @requests << @block&.call(*args, **kwargs) + + catch :response do + yield @response, @operation if block_given? + @response + end + end + + def endpoint + "endpoint.example.com" + end + + def universe_domain + "example.com" + end + + def stub_logger + nil + end + + def logger + nil + end + end + + def test_create_access_policy + # Create GRPC objects. + grpc_response = ::Google::Longrunning::Operation.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + access_policy_id = "hello world" + access_policy = {} + validate_only = true + + create_access_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :create_access_policy, name + assert_kind_of ::Google::Iam::V3beta::CreateAccessPolicyRequest, request + assert_equal "hello world", request["parent"] + assert_equal "hello world", request["access_policy_id"] + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Iam::V3beta::AccessPolicy), request["access_policy"] + assert_equal true, request["validate_only"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, create_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.create_access_policy({ parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only }) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use named arguments + client.create_access_policy parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.create_access_policy ::Google::Iam::V3beta::CreateAccessPolicyRequest.new(parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.create_access_policy({ parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only }, grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.create_access_policy(::Google::Iam::V3beta::CreateAccessPolicyRequest.new(parent: parent, access_policy_id: access_policy_id, access_policy: access_policy, validate_only: validate_only), grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, create_access_policy_client_stub.call_rpc_count + end + end + + def test_get_access_policy + # Create GRPC objects. + grpc_response = ::Google::Iam::V3beta::AccessPolicy.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + get_access_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :get_access_policy, name + assert_kind_of ::Google::Iam::V3beta::GetAccessPolicyRequest, request + assert_equal "hello world", request["name"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, get_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.get_access_policy({ name: name }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.get_access_policy name: name do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.get_access_policy ::Google::Iam::V3beta::GetAccessPolicyRequest.new(name: name) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.get_access_policy({ name: name }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.get_access_policy(::Google::Iam::V3beta::GetAccessPolicyRequest.new(name: name), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, get_access_policy_client_stub.call_rpc_count + end + end + + def test_update_access_policy + # Create GRPC objects. + grpc_response = ::Google::Longrunning::Operation.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + access_policy = {} + validate_only = true + + update_access_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :update_access_policy, name + assert_kind_of ::Google::Iam::V3beta::UpdateAccessPolicyRequest, request + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Iam::V3beta::AccessPolicy), request["access_policy"] + assert_equal true, request["validate_only"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, update_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.update_access_policy({ access_policy: access_policy, validate_only: validate_only }) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use named arguments + client.update_access_policy access_policy: access_policy, validate_only: validate_only do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.update_access_policy ::Google::Iam::V3beta::UpdateAccessPolicyRequest.new(access_policy: access_policy, validate_only: validate_only) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.update_access_policy({ access_policy: access_policy, validate_only: validate_only }, grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.update_access_policy(::Google::Iam::V3beta::UpdateAccessPolicyRequest.new(access_policy: access_policy, validate_only: validate_only), grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, update_access_policy_client_stub.call_rpc_count + end + end + + def test_delete_access_policy + # Create GRPC objects. + grpc_response = ::Google::Longrunning::Operation.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + etag = "hello world" + validate_only = true + force = true + + delete_access_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :delete_access_policy, name + assert_kind_of ::Google::Iam::V3beta::DeleteAccessPolicyRequest, request + assert_equal "hello world", request["name"] + assert_equal "hello world", request["etag"] + assert_equal true, request["validate_only"] + assert_equal true, request["force"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, delete_access_policy_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.delete_access_policy({ name: name, etag: etag, validate_only: validate_only, force: force }) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use named arguments + client.delete_access_policy name: name, etag: etag, validate_only: validate_only, force: force do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.delete_access_policy ::Google::Iam::V3beta::DeleteAccessPolicyRequest.new(name: name, etag: etag, validate_only: validate_only, force: force) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.delete_access_policy({ name: name, etag: etag, validate_only: validate_only, force: force }, grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.delete_access_policy(::Google::Iam::V3beta::DeleteAccessPolicyRequest.new(name: name, etag: etag, validate_only: validate_only, force: force), grpc_options) do |response, operation| + assert_kind_of Gapic::Operation, response + assert_equal grpc_response, response.grpc_op + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, delete_access_policy_client_stub.call_rpc_count + end + end + + def test_list_access_policies + # Create GRPC objects. + grpc_response = ::Google::Iam::V3beta::ListAccessPoliciesResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + page_size = 42 + page_token = "hello world" + + list_access_policies_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :list_access_policies, name + assert_kind_of ::Google::Iam::V3beta::ListAccessPoliciesRequest, request + assert_equal "hello world", request["parent"] + assert_equal 42, request["page_size"] + assert_equal "hello world", request["page_token"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, list_access_policies_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.list_access_policies({ parent: parent, page_size: page_size, page_token: page_token }) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.list_access_policies parent: parent, page_size: page_size, page_token: page_token do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.list_access_policies ::Google::Iam::V3beta::ListAccessPoliciesRequest.new(parent: parent, page_size: page_size, page_token: page_token) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.list_access_policies({ parent: parent, page_size: page_size, page_token: page_token }, grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.list_access_policies(::Google::Iam::V3beta::ListAccessPoliciesRequest.new(parent: parent, page_size: page_size, page_token: page_token), grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, list_access_policies_client_stub.call_rpc_count + end + end + + def test_search_access_policy_bindings + # Create GRPC objects. + grpc_response = ::Google::Iam::V3beta::SearchAccessPolicyBindingsResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + page_size = 42 + page_token = "hello world" + + search_access_policy_bindings_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :search_access_policy_bindings, name + assert_kind_of ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest, request + assert_equal "hello world", request["name"] + assert_equal 42, request["page_size"] + assert_equal "hello world", request["page_token"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, search_access_policy_bindings_client_stub do + # Create client + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.search_access_policy_bindings({ name: name, page_size: page_size, page_token: page_token }) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.search_access_policy_bindings name: name, page_size: page_size, page_token: page_token do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.search_access_policy_bindings ::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new(name: name, page_size: page_size, page_token: page_token) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.search_access_policy_bindings({ name: name, page_size: page_size, page_token: page_token }, grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.search_access_policy_bindings(::Google::Iam::V3beta::SearchAccessPolicyBindingsRequest.new(name: name, page_size: page_size, page_token: page_token), grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, search_access_policy_bindings_client_stub.call_rpc_count + end + end + + def test_configure + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + + client = block_config = config = nil + dummy_stub = ClientStub.new nil, nil + Gapic::ServiceStub.stub :new, dummy_stub do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + end + + config = client.configure do |c| + block_config = c + end + + assert_same block_config, config + assert_kind_of ::Google::Iam::V3beta::AccessPolicies::Client::Configuration, config + end + + def test_credentials + key = OpenSSL::PKey::RSA.new 2048 + cred_json = { + "private_key" => key.to_pem, + "client_email" => "app@developer.gserviceaccount.com", + "type" => "service_account" + } + key_file = StringIO.new cred_json.to_json + creds = Google::Auth::ServiceAccountCredentials.make_creds({ json_key_io: key_file }) + + dummy_stub = ClientStub.new nil, nil + Gapic::ServiceStub.stub :new, dummy_stub do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = creds + end + assert_kind_of ::Google::Iam::V3beta::AccessPolicies::Client, client + assert_equal creds, client.configure.credentials + end + end + + def test_operations_client + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + + client = nil + dummy_stub = ClientStub.new nil, nil + Gapic::ServiceStub.stub :new, dummy_stub do + client = ::Google::Iam::V3beta::AccessPolicies::Client.new do |config| + config.credentials = grpc_channel + end + end + + assert_kind_of ::Google::Iam::V3beta::AccessPolicies::Operations, client.operations_client + end +end diff --git a/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_rest_test.rb b/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_rest_test.rb index a6213bfeb014..a305f0ee187f 100644 --- a/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_rest_test.rb +++ b/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_rest_test.rb @@ -370,6 +370,7 @@ def test_search_target_policy_bindings page_size = 42 page_token = "hello world" parent = "hello world" + filter = "hello world" search_target_policy_bindings_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| assert options.metadata.key? :"x-goog-api-client" @@ -385,27 +386,27 @@ def test_search_target_policy_bindings end # Use hash object - client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent }) do |_result, response| + client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter }) do |_result, response| assert_equal http_response, response.underlying_op end # Use named arguments - client.search_target_policy_bindings target: target, page_size: page_size, page_token: page_token, parent: parent do |_result, response| + client.search_target_policy_bindings target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter do |_result, response| assert_equal http_response, response.underlying_op end # Use protobuf object - client.search_target_policy_bindings ::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent) do |_result, response| + client.search_target_policy_bindings ::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter) do |_result, response| assert_equal http_response, response.underlying_op end # Use hash object with options - client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent }, call_options) do |_result, response| + client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter }, call_options) do |_result, response| assert_equal http_response, response.underlying_op end # Use protobuf object with options - client.search_target_policy_bindings(::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent), call_options) do |_result, response| + client.search_target_policy_bindings(::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter), call_options) do |_result, response| assert_equal http_response, response.underlying_op end diff --git a/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_test.rb b/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_test.rb index 2619d5f5c1c4..9d3e0530a2f9 100644 --- a/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_test.rb +++ b/google-iam-v3beta/test/google/iam/v3beta/policy_bindings_test.rb @@ -405,6 +405,7 @@ def test_search_target_policy_bindings page_size = 42 page_token = "hello world" parent = "hello world" + filter = "hello world" search_target_policy_bindings_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| assert_equal :search_target_policy_bindings, name @@ -413,6 +414,7 @@ def test_search_target_policy_bindings assert_equal 42, request["page_size"] assert_equal "hello world", request["page_token"] assert_equal "hello world", request["parent"] + assert_equal "hello world", request["filter"] refute_nil options end @@ -423,35 +425,35 @@ def test_search_target_policy_bindings end # Use hash object - client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent }) do |response, operation| + client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter }) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use named arguments - client.search_target_policy_bindings target: target, page_size: page_size, page_token: page_token, parent: parent do |response, operation| + client.search_target_policy_bindings target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object - client.search_target_policy_bindings ::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent) do |response, operation| + client.search_target_policy_bindings ::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use hash object with options - client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent }, grpc_options) do |response, operation| + client.search_target_policy_bindings({ target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter }, grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation end # Use protobuf object with options - client.search_target_policy_bindings(::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent), grpc_options) do |response, operation| + client.search_target_policy_bindings(::Google::Iam::V3beta::SearchTargetPolicyBindingsRequest.new(target: target, page_size: page_size, page_token: page_token, parent: parent, filter: filter), grpc_options) do |response, operation| assert_kind_of Gapic::PagedEnumerable, response assert_equal grpc_response, response.response assert_equal grpc_operation, operation