Skip to content
Switch branches/tags

Latest commit

This PR was generated using Autosynth. 🌈

<details><summary>Log from Synthtool</summary>

2022-01-16 03:54:05,866 synthtool [DEBUG] > Executing /home/kbuilder/.cache/synthtool/google-api-ruby-client/
On branch autosynth-privateca-v1
nothing to commit, working tree clean
2022-01-16 03:54:05,947 synthtool [DEBUG] > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/google-api-ruby-client:/workspace -v/var/run/docker.sock:/var/run/docker.sock -w /workspace -e USER_GROUP=1000:1000 --entrypoint script/synth.rb privateca v1
DEBUG:synthtool:Running: docker run --rm -v/home/kbuilder/.cache/synthtool/google-api-ruby-client:/workspace -v/var/run/docker.sock:/var/run/docker.sock -w /workspace -e USER_GROUP=1000:1000 --entrypoint script/synth.rb privateca v1
git clean -df
bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from
Resolving dependencies...
Using rake 13.0.6
Fetching concurrent-ruby 1.1.9
Fetching public_suffix 4.0.6
Fetching minitest 5.15.0
Fetching zeitwerk 2.5.3
Installing zeitwerk 2.5.3
Installing public_suffix 4.0.6
Installing minitest 5.15.0
Installing concurrent-ruby 1.1.9
Fetching ast 2.4.2
Using bundler 2.3.5
Fetching byebug 11.1.3
Installing ast 2.4.2
Fetching coderay 1.1.3
Fetching json 2.6.1
Installing byebug 11.1.3 with native extensions
Installing coderay 1.1.3
Installing json 2.6.1 with native extensions
Fetching docile 1.4.0
Fetching simplecov-html 0.10.2
Installing docile 1.4.0
Using sync 0.5.0
Fetching thor 1.2.1
Installing simplecov-html 0.10.2
Installing thor 1.2.1
Fetching rexml 3.2.5
Fetching declarative 0.0.20
Installing declarative 0.0.20
Installing rexml 3.2.5
Fetching diff-lcs 1.5.0
Fetching dotenv 2.7.6
Installing diff-lcs 1.5.0
Installing dotenv 2.7.6
Fetching fakefs 0.20.1
Fetching faraday-em_http 1.0.0
Installing faraday-em_http 1.0.0
Installing fakefs 0.20.1
Fetching faraday-em_synchrony 1.0.0
Fetching faraday-excon 1.1.0
Installing faraday-em_synchrony 1.0.0
Installing faraday-excon 1.1.0
Fetching faraday-httpclient 1.0.1
Fetching multipart-post 2.1.1
Installing faraday-httpclient 1.0.1
Installing multipart-post 2.1.1
Fetching faraday-net_http 1.0.1
Fetching faraday-net_http_persistent 1.2.0
Installing faraday-net_http 1.0.1
Installing faraday-net_http_persistent 1.2.0
Fetching faraday-patron 1.0.0
Fetching faraday-rack 1.0.0
Installing faraday-rack 1.0.0
Installing faraday-patron 1.0.0
Fetching faraday-retry 1.0.3
Fetching ruby2_keywords 0.0.5
Installing ruby2_keywords 0.0.5
Installing faraday-retry 1.0.3
Fetching github-markup 1.7.0
Fetching gems 1.2.0
Installing gems 1.2.0
Installing github-markup 1.7.0
Fetching jwt 2.3.0
Fetching memoist 0.16.2
Installing jwt 2.3.0
Installing memoist 0.16.2
Fetching multi_json 1.15.0
Fetching os 0.9.6
Installing multi_json 1.15.0
Installing os 0.9.6
Fetching httpclient 2.8.3
Fetching mini_mime 1.1.2
Installing mini_mime 1.1.2
Fetching trailblazer-option 0.1.2
Installing httpclient 2.8.3
Installing trailblazer-option 0.1.2
Fetching uber 0.1.0
Installing uber 0.1.0
Fetching retriable 3.1.2
Fetching webrick 1.7.0
Installing retriable 3.1.2
Installing webrick 1.7.0
Fetching hashdiff 1.0.1
Fetching mime-types-data 3.2022.0105
Installing hashdiff 1.0.1
Fetching multi_xml 0.6.0
Installing mime-types-data 3.2022.0105
Installing multi_xml 0.6.0
Fetching rspec-support 3.10.3
Fetching little-plugger 1.1.4
Fetching method_source 1.0.0
Installing rspec-support 3.10.3
Installing little-plugger 1.1.4
Fetching opencensus 0.5.0
Installing method_source 1.0.0
Fetching parallel 1.21.0
Fetching powerpack 0.1.3
Installing opencensus 0.5.0
Installing parallel 1.21.0
Installing powerpack 0.1.3
Fetching rainbow 2.2.2
Fetching redcarpet 3.5.1
Fetching redis 3.3.5
Installing rainbow 2.2.2 with native extensions
Installing redcarpet 3.5.1 with native extensions
Installing redis 3.3.5
Fetching rmail 1.1.4
Installing rmail 1.1.4
Fetching ruby-progressbar 1.11.0
Installing ruby-progressbar 1.11.0
Fetching unicode-display_width 1.8.0
Fetching parser
Installing unicode-display_width 1.8.0
Fetching addressable 2.8.0
Installing addressable 2.8.0
Fetching i18n 1.8.11
Installing parser
Installing i18n 1.8.11
Fetching tzinfo 2.0.4
Installing tzinfo 2.0.4
Fetching tins 1.31.0
Fetching crack 0.4.5
Installing crack 0.4.5
Fetching faraday-multipart 1.0.3
Installing tins 1.31.0
Installing faraday-multipart 1.0.3
Fetching google-id-token 1.4.2
Installing google-id-token 1.4.2
Fetching representable 3.1.1
Fetching yard 0.9.27
Installing representable 3.1.1
Fetching mime-types 3.4.1
Installing yard 0.9.27
Installing mime-types 3.4.1
Fetching logging 2.3.0
Installing logging 2.3.0
Fetching pry 0.13.1
Installing pry 0.13.1
Fetching rspec-core 3.10.1
Fetching rspec-expectations 3.10.2
Fetching rspec-mocks 3.10.2
Installing rspec-core 3.10.1
Fetching launchy 2.5.0
Installing rspec-expectations 3.10.2
Installing launchy 2.5.0
Installing rspec-mocks 3.10.2
Fetching rubocop 0.49.1
Fetching activesupport
Fetching webmock 2.3.2
Installing webmock 2.3.2
Installing activesupport
Installing rubocop 0.49.1
Fetching faraday 1.9.3
Installing faraday 1.9.3
Fetching term-ansicolor 1.7.1
Installing term-ansicolor 1.7.1
Fetching httparty 0.20.0
Fetching simplecov 0.16.1
Installing httparty 0.20.0
Installing simplecov 0.16.1
Fetching pry-byebug 3.9.0
Fetching pry-doc 0.13.5
Installing pry-byebug 3.9.0
Fetching rspec 3.10.0
Fetching signet 0.16.0
Installing rspec 3.10.0
Fetching coveralls 0.8.23
Installing signet 0.16.0
Fetching json_spec 1.1.5
Installing coveralls 0.8.23
Installing json_spec 1.1.5
Fetching googleauth 1.1.0
Installing googleauth 1.1.0
Fetching google-apis-core 0.4.1
Installing google-apis-core 0.4.1
Fetching google-apis-discovery_v1 0.8.0
Installing google-apis-discovery_v1 0.8.0
Using google-apis-generator 0.4.1 from source at `.` and installing its executables
Installing pry-doc 0.13.5
Bundle complete! 25 Gemfile dependencies, 91 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from httparty:
When you HTTParty, you must party hard!
echo a | bundle exec bin/generate-api gen /workspace/generated --api=privateca.v1 --names=/workspace/api_names.yaml --names-out=/workspace/api_names_out.yaml --spot-check
Loading privateca, version v1 from
W, [2022-01-16T11:54:18.535814 #194]  WARN -- : Found reserved property 'object_id'
W, [2022-01-16T11:54:18.535887 #194]  WARN -- : Changed to 'object_id_prop'
W, [2022-01-16T11:54:18.537646 #194]  WARN -- : Found reserved property 'object_id'
W, [2022-01-16T11:54:18.537679 #194]  WARN -- : Changed to 'object_id_prop'
    conflict  google-apis-privateca_v1/lib/google/apis/privateca_v1/service.rb
<teca_v1/service.rb? (enter "h" for help) [Ynaqdhm] a
       force  google-apis-privateca_v1/lib/google/apis/privateca_v1/service.rb
    conflict  google-apis-privateca_v1/lib/google/apis/privateca_v1/gem_version.rb
       force  google-apis-privateca_v1/lib/google/apis/privateca_v1/gem_version.rb
    conflict  google-apis-privateca_v1/
       force  google-apis-privateca_v1/
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from
Resolving dependencies...
Using rake 13.0.6
Using public_suffix 4.0.6
Using bundler 2.3.5
Using declarative 0.0.20
Using diff-lcs 1.5.0
Using faraday-em_http 1.0.0
Using faraday-em_synchrony 1.0.0
Using faraday-excon 1.1.0
Using faraday-httpclient 1.0.1
Using multipart-post 2.1.1
Using faraday-net_http 1.0.1
Using faraday-net_http_persistent 1.2.0
Using faraday-patron 1.0.0
Using faraday-rack 1.0.0
Using faraday-retry 1.0.3
Using ruby2_keywords 0.0.5
Using jwt 2.3.0
Using memoist 0.16.2
Using multi_json 1.15.0
Fetching os 1.1.4
Using httpclient 2.8.3
Using trailblazer-option 0.1.2
Using mini_mime 1.1.2
Using retriable 3.1.2
Using uber 0.1.0
Using rexml 3.2.5
Using webrick 1.7.0
Using redcarpet 3.5.1
Using rspec-support 3.10.3
Using opencensus 0.5.0
Using addressable 2.8.0
Using representable 3.1.1
Using faraday-multipart 1.0.3
Using rspec-core 3.10.1
Using rspec-expectations 3.10.2
Using rspec-mocks 3.10.2
Using yard 0.9.27
Using faraday 1.9.3
Using signet 0.16.0
Using rspec 3.10.0
Installing os 1.1.4
Using googleauth 1.1.0
Using google-apis-core 0.4.1
Using google-apis-privateca_v1 0.13.0 from source at `.`
Bundle complete! 8 Gemfile dependencies, 43 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
/root/.rbenv/versions/2.6.7/bin/ruby -I/root/.rbenv/versions/2.6.7/lib/ruby/gems/2.6.0/gems/rspec-core-3.10.1/lib:/root/.rbenv/versions/2.6.7/lib/ruby/gems/2.6.0/gems/rspec-support-3.10.3/lib /root/.rbenv/versions/2.6.7/lib/ruby/gems/2.6.0/gems/rspec-core-3.10.1/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb

  should load

Finished in 0.34951 seconds (files took 0.1005 seconds to load)
1 example, 0 failures

Files:           4
Modules:         3 (    1 undocumented)
Classes:        67 (    1 undocumented)
Constants:       5 (    0 undocumented)
Attributes:    173 (    0 undocumented)
Methods:       178 (    0 undocumented)
 99.53% documented
google-apis-privateca_v1 0.13.0 built to pkg/google-apis-privateca_v1-0.13.0.gem.
    conflict  /workspace/api_names_out.yaml
       force  /workspace/api_names_out.yaml
chown -R 1000:1000 /workspace/generated
2022-01-16 03:54:30,751 synthtool [DEBUG] > Wrote metadata to generated/google-apis-privateca_v1/synth.metadata.
DEBUG:synthtool:Wrote metadata to generated/google-apis-privateca_v1/synth.metadata.


Full log will be available here:

- [ ] To automatically regenerate this PR, check this box. (May take up to 24 hours.)

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Simple REST Clients for Google APIs

This repository contains a set of simple client libraries for various Google APIs. These libraries are generated automatically from Discovery Documents, and the code generator is also hosted here in this repository.

Each client provides:

  • A client object that connects to the HTTP/JSON REST endpoint for the service.
  • Ruby objects for data structures related to the service.
  • Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
  • Control of retry, pagination, and timeouts.

These client libraries are officially supported by Google, and are updated regularly to track changes to the service. However, many Google services, especially Google Cloud Platform services such as Cloud Storage, Pub/Sub, and BigQuery, may provide a more modern client that is easier to use and more performant. See the section below titled "Which client should I use?" for more information.

Using the clients

The client gems are named according to the pattern google-apis-<servicename>_<serviceversion>. For example, the client for the Google Drive V3 API is google-apis-drive_v3.

Install the client using gem install or by adding it to your Gemfile. Then, to use it, require the file and instantiate the service. For example to use the Drive API:

require 'google/apis/drive_v3'

drive =
drive.authorization = ... # See Googleauth or Signet libraries

# Search for files in Drive (first page only)
files = drive.list_files(q: "title contains 'finances'")
files.items.each do |file|
  puts file.title

# Upload a file
metadata = 'test.txt')
metadata = drive.create_file(metadata, upload_source: '/tmp/test.txt', content_type: 'text/plain')

# Download a file
drive.get_file(, download_dest: '/tmp/downloaded-test.txt')

Following is another example using the Content API (Google Merchant Center), provided by the google-apis-content_v2 gem:

require 'google/apis/content_v2'
require 'googleauth' #

content =

scope = ''
merchant_id = # Merchant ID found on dashboard

content.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
  scope: scope)

# Service methods:
content.list_datafeeds(merchant_id) # Returns Google::Apis::ContentV2::ListDatafeedsResponse

For more detailed information, see the Usage Guide.

Which client should I use?

Google provides two types of Ruby API client libraries: simple REST clients and modern clients.

The libraries in this repo are simple REST clients. These clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.

Modern clients are produced by a modern code generator, combined with hand-crafted functionality for some services. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Cloud Platform services, but do not yet support all the services covered by the simple clients. Most modern clients live in the repository.

For most users, we recommend the modern client, if one is available. Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.

The documentation for the particular Google service you are working with, may provide guidance regarding the preferred client library to use.


See the samples for examples on how to use the client library for various services.

Supported Ruby versions

This library is supported on Ruby 2.5+.

Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby may still work, but are unsupported and not recommended. See for details about the Ruby support schedule.


This library is licensed under Apache 2.0. Full license text is available in the LICENSE.




Please report bugs at the project on Github. Don't hesitate to ask questions about the client or APIs on StackOverflow.