Google API Extensions for Ruby

Generated API Client common code (gapic-common) is a set of modules which aids the development of APIs for clients and servers based on gRPC and Google API conventions.

Application code will rarely need to use most of the classes within this library directly, but code generated automatically from the API definition files in Google APIs can use services such as page streaming to provide a more convenient and idiomatic API surface to callers.

Supported Ruby Versions

This library is supported on Ruby 3.2+.

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. Older versions of Ruby may still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.

Post-Quantum Key Exchange

Clients built on this library negotiate the hybrid post-quantum key exchange group X25519MLKEM768 — classical X25519 paired with ML-KEM-768 (NIST FIPS 203) — over TLS 1.3. No application code changes are required, because the handshake belongs to the transport layer. The two transports source that support differently:

Transport Cryptographic provider Requirement Enforced by this gem?
gRPC BoringSSL, vendored inside the grpc gem grpc >= 1.83 Yes
REST Host system OpenSSL, via Net::HTTP and Faraday OpenSSL >= 3.5 No

gRPC clients get post-quantum key exchange automatically: gapic-common depends on grpc >= 1.83, the first release to offer X25519MLKEM768 in the TLS ClientHello by default.

The REST requirement cannot be expressed as a gem dependency. Ruby's openssl is a default gem bound to whatever libssl the host provides, and ML-KEM first ships in OpenSSL 3.5. On an older host, REST connections negotiate classical X25519 instead — a safe fallback rather than an error, but not post-quantum. To check the OpenSSL your Ruby is linked against:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'

Contributing

Contributions to this library are always welcome and highly encouraged.

See the CONTRIBUTING documentation for more information on how to get started.

Versioning

This library follows Semantic Versioning.

This library is considered to be stable and will not have backwards-incompatible changes introduced in subsequent minor releases.