3.14.0-rc 3.13.0 (latest) 3.12.0 3.11.0 3.10.0 3.9.0 3.8.0 3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.0 2.48.0-rc 2.47.1 2.46.0 2.45.0 2.44.0 2.43.0 2.42.0 2.41.0 2.40.0 2.39.0 2.38.0 2.37.0 2.36.0 2.35.0 2.34.0 2.33.0 2.32.0 2.31.0 2.30.0 2.29.0 2.28.0 2.27.0 2.26.0 2.25.1 2.24.0 2.23.0 2.22.1 2.21.0 2.20.0 2.19.0 2.18.0 2.17.0 2.16.0 2.15.1 2.14.0 2.13.0 2.12.0 2.11.0 Contains all the Google Cloud Storage C++ client APIs.

## Classes

### [AlwaysRetryIdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AlwaysRetryIdempotencyPolicy)

A [IdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1IdempotencyPolicy) that always retries all requests.

### [AsyncClient](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncClient)

A client for Google Cloud Storage offering asynchronous operations.

### [AsyncConnection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncConnection)

The `*Connection` object for [`AsyncClient`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncClient).

### [AsyncIdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncIdempotencyPolicy)

Define the interface for the [`AsyncClient`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncClient)'s idempotency policy.

### [AsyncReader](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncReader)

A handle for streaming downloads.

### [AsyncReaderConnection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncReaderConnection)

The `*Connection` object for [`AsyncReader`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncReader).

### [AsyncRetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncRetryPolicy)

The base class for the Storage library async retry policies.

### [AsyncRewriter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncRewriter)

Perform object rewrites asynchronously.

### [AsyncRewriterConnection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncRewriterConnection)

An interface for asynchronous object rewrite implementations.

### [AsyncToken](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncToken)

Serialize streams of asynchronous operations.

### [AsyncWriter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncWriter)

Perform resumable uploads asynchronously.

### [AsyncWriterConnection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1AsyncWriterConnection)

An interface to asynchronously perform resumable uploads.

### [BucketAccessControl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketAccessControl)

Wraps the bucketAccessControl resource in Google Cloud Storage.

### [BucketAccessControlPatchBuilder](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketAccessControlPatchBuilder)

Prepares a patch for a [BucketAccessControl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketAccessControl) resource.

### [BucketMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketMetadata)

Represents a Google Cloud Storage Bucket Metadata object.

### [BucketMetadataPatchBuilder](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketMetadataPatchBuilder)

Prepares a patch for the Bucket resource.

### [BucketName](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketName)

Represent bucket names.

### [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client)

The Google Cloud Storage (GCS) [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client).

### [CustomHeader](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1CustomHeader)

An option to inject custom headers into the request.

### [HashMismatchError](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1HashMismatchError)

Report checksum mismatches as exceptions.

### [HmacKeyMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1HmacKeyMetadata)

Represents the metadata for a Google Cloud Storage HmacKeyResource.

### [IdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1IdempotencyPolicy)

Define the interface for the idempotency policy.

### [LifecycleRule](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1LifecycleRule)

Defines objects to read, create, and modify Object Lifecycle Rules.

### [LimitedErrorCountAsyncRetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1LimitedErrorCountAsyncRetryPolicy)

A retry policy based on counting errors.

### [LimitedErrorCountRetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1LimitedErrorCountRetryPolicy)

A retry policy based on counting errors.

### [LimitedTimeAsyncRetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1LimitedTimeAsyncRetryPolicy)

A retry policy based on elapsed time.

### [LimitedTimeRetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1LimitedTimeRetryPolicy)

A retry policy based on elapsed time.

### [MaxStreams](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MaxStreams)

A parameter type indicating the maximum number of streams to `ParallelUploadFile`.

### [MinStreamSize](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MinStreamSize)

A parameter type indicating the minimum stream size to `ParallelUploadFile`.

### [NativeExpression](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1NativeExpression)

Represents a google::type::Expr.

### [NativeIamBinding](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1NativeIamBinding)

Represents a Binding which associates a `member` with a particular `role` which can be used for Identity and Access management for Cloud Platform Resources.

### [NativeIamPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1NativeIamPolicy)

Represent the result of a GetIamPolicy or SetIamPolicy request.

### [NotificationMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1NotificationMetadata)

Represents the metadata for a Google Cloud Storage Notification resource.

### [ObjectAccessControl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectAccessControl)

Wraps the objectAccessControl resource in Google Cloud Storage.

### [ObjectAccessControlPatchBuilder](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectAccessControlPatchBuilder)

Prepares a patch for an [ObjectAccessControl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectAccessControl) resource.

### [ObjectContexts](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectContexts)

Specifies the custom contexts of an object.

### [ObjectDescriptor](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptor)

[`ObjectDescriptor`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptor) is analogous to a file descriptor.

### [ObjectDescriptorConnection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptorConnection)

[`ObjectDescriptor`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptor) is analogous to a file descriptor.

### [ObjectMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectMetadata)

Represents the metadata for a Google Cloud Storage Object.

### [ObjectMetadataPatchBuilder](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectMetadataPatchBuilder)

Prepares a patch for the Bucket resource.

### [ObjectReadStream](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectReadStream)

Defines a `std::basic_istream<char>` to read from a GCS Object.

### [ObjectRewriter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectRewriter)

Complete long running object rewrite operations.

### [ObjectWriteStream](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectWriteStream)

Defines a `std::basic_ostream<char>` to write to a GCS object.

### [PolicyDocumentCondition](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1PolicyDocumentCondition)

Define a condition for a policy document.

### [ReadPayload](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ReadPayload)

A partial or full response to an asynchronous download.

### [ResumePolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ResumePolicy)

Controls how the client library resumes uploads and downloads.

### [RetryPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1RetryPolicy)

The base class for the Storage library retry policies.

### [ServiceAccount](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ServiceAccount)

Represents the metadata for a Google Cloud Storage service account.

### [StrictIdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1StrictIdempotencyPolicy)

A [IdempotencyPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1IdempotencyPolicy) that only retries strictly idempotent requests.

### [WritePayload](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1WritePayload)

An opaque representation of the data for an object payload.

## Structs

### [AcceptEncoding](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AcceptEncoding)

Modify the accepted encodings.

### [AddExtensionFieldOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AddExtensionFieldOption)

Add a extension header to a POST policy.

### [AddExtensionHeaderOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AddExtensionHeaderOption)

Add a extension header to a signed URL.

### [AddQueryParameterOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AddQueryParameterOption)

Add a extension header to a signed URL.

### [AsyncIdempotencyPolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AsyncIdempotencyPolicyOption)

An option (see [`google::cloud::Options`](https://docs.cloud.google.com/cpp/docs/reference/common/latest/classgoogle_1_1cloud_1_1Options.html)) to set the idempotency policy.

### [AsyncRetryPolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AsyncRetryPolicyOption)

Configure the resume policy used in a request, client, or connection.

### [AutoFinalize](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1AutoFinalize)

Control whether upload streams auto-finalize on destruction.

### [BackoffPolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BackoffPolicyOption)

Set the backoff policy for a GCS client.

### [BucketAutoclass](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketAutoclass)

The autoclass configuration for a Bucket.

### [BucketBilling](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketBilling)

The billing configuration for a Bucket.

### [BucketBoundHostname](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketBoundHostname)

Use domain-named bucket in a V4 signed URL.

### [BucketCustomPlacementConfig](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketCustomPlacementConfig)

Configuration for Custom Dual Regions.

### [BucketEncryption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketEncryption)

Describes the default customer managed encryption key for a bucket.

### [BucketHierarchicalNamespace](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketHierarchicalNamespace)

Configuration for a bucket's hierarchical namespace feature.

### [BucketIamConfiguration](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketIamConfiguration)

The IAM configuration for a Bucket.

### [BucketLifecycle](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketLifecycle)

The Object Lifecycle configuration for a Bucket.

### [BucketLogging](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketLogging)

The Logging configuration for a Bucket.

### [BucketObjectRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketObjectRetention)

The soft delete policy for a bucket.

### [BucketRetentionPolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketRetentionPolicy)

The retention policy for a bucket.

### [BucketsExtended](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketsExtended)

### [BucketSoftDeletePolicy](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketSoftDeletePolicy)

The soft delete policy for a bucket.

### [BucketVersioning](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketVersioning)

The versioning configuration for a Bucket.

### [BucketWebsite](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BucketWebsite)

The website configuration for a Bucket.

### [BufferedUploadHwmOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BufferedUploadHwmOption)

Configure the flow control algorithm for buffered uploads.

### [BufferedUploadLwmOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1BufferedUploadLwmOption)

Configure the flow control algorithm for buffered uploads.

### [ComposeSourceObject](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ComposeSourceObject)

Defines one of the source objects for a compose operation.

### [ConnectionPoolSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ConnectionPoolSizeOption)

Set the maximum connection pool size.

### [ContentEncoding](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ContentEncoding)

Sets the contentEncoding option for object uploads.

### [ContentType](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ContentType)

Set the MIME content type of an object.

### [CopySourceAcl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1CopySourceAcl)

Applicable only for buckets the don't have uniform bucket-level access enabled.

### [CorsEntry](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1CorsEntry)

An entry in the CORS list.

### [Crc32cChecksumValue](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Crc32cChecksumValue)

Provide a pre-computed CRC32C checksum value.

### [CustomerEncryption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1CustomerEncryption)

A simple representation for the customerEncryption field.

### [CustomerManagedEncryptionEnforcementConfigTag](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1CustomerManagedEncryptionEnforcementConfigTag)

### [CustomerSuppliedEncryptionEnforcementConfigTag](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1CustomerSuppliedEncryptionEnforcementConfigTag)

### [Deleted](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Deleted)

Included deleted HMAC keys in list requests.

### [DeleteSourceObjects](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DeleteSourceObjects)

Controls if the source objects should be deleted after a successful compose.

### [Delimiter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Delimiter)

Returns results in a directory-like mode.

### [DestinationKmsKeyName](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DestinationKmsKeyName)

Configure the Customer-Managed Encryption Key (CMEK) for an rewrite.

### [DestinationPredefinedAcl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DestinationPredefinedAcl)

Set the ACL to a predefined value when copying Objects.

### [DisableCrc32cChecksum](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DisableCrc32cChecksum)

Disable CRC32C checksum computations.

### [DisableMD5Hash](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DisableMD5Hash)

Disable or enable MD5 Hashing computations.

### [DownloadBufferSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DownloadBufferSizeOption)

Control the formatted I/O download buffer.

### [DownloadChecksumValidationOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DownloadChecksumValidationOption)

Configure the checksum algorithm used for downloads.

### [DownloadStallMinimumRateOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DownloadStallMinimumRateOption)

The minimum accepted bytes/second download rate.

### [DownloadStallTimeoutOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DownloadStallTimeoutOption)

Sets the download stall timeout.

### [EnableCrc32cValidationOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableCrc32cValidationOption)

If enabled, the client computes (if necessary) and validates the CRC32C checksum of an object during uploads and downloads.

### [EnableCurlSigpipeHandlerOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableCurlSigpipeHandlerOption)

Disables automatic OpenSSL sigpipe handler.

### [EnableCurlSslLockingOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableCurlSslLockingOption)

Disables automatic OpenSSL locking.

### [EnableMD5ValidationOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableMD5ValidationOption)

If enabled, the client computes (if necessary) and validates the MD5 hash of an object during uploads and downloads.

### [EnableMultiStreamOptimizationOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableMultiStreamOptimizationOption)

If enabled, the client uses multiple streams for downloading objects, which can improve performance for large objects.

### [EnableObjectRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EnableObjectRetention)

Set this parameter to `true` to create buckets with object retention enabled.

### [EncryptionEnforcementConfig\<Tag\>](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionEnforcementConfig)

### [EncryptionEnforcementConfigName\<Tag\>](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionEnforcementConfigName)

### [EncryptionEnforcementConfigName\< CustomerManagedEncryptionEnforcementConfigTag \>](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionEnforcementConfigName_3_01CustomerManagedEncryptionEnforcementConfigTag_01_4)

### [EncryptionEnforcementConfigName\< CustomerSuppliedEncryptionEnforcementConfigTag \>](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionEnforcementConfigName_3_01CustomerSuppliedEncryptionEnforcementConfigTag_01_4)

### [EncryptionEnforcementConfigName\< GoogleManagedEncryptionEnforcementConfigTag \>](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionEnforcementConfigName_3_01GoogleManagedEncryptionEnforcementConfigTag_01_4)

### [EncryptionKey](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionKey)

An optional parameter to set the Customer-Supplied Encryption key.

### [EncryptionKeyData](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionKeyData)

A simple wrapper for the encryption key attributes.

### [EndOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EndOffset)

Filter results to objects whose names are lexicographically before [EndOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EndOffset).

### [ExpirationTime](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ExpirationTime)

Define the expiration time for a signed URL.

### [Fields](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Fields)

Defines the `fields` query parameter.

### [Generation](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Generation)

Set the version of an object to operate on.

### [GoogleManagedEncryptionEnforcementConfigTag](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1GoogleManagedEncryptionEnforcementConfigTag)

### [IamEndpointOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IamEndpointOption)

Configure the IAM endpoint for the GCS client library.

### [IdempotencyPolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IdempotencyPolicyOption)

Set the idempotency policy for a GCS client.

### [IfGenerationMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfGenerationMatch)

A pre-condition: the request succeeds only if the object generation matches.

### [IfGenerationNotMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfGenerationNotMatch)

A pre-condition: the request succeeds unless the object generation matches.

### [IfMatchEtag](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfMatchEtag)

A pre-condition: apply this operation only if the HTTP Entity Tag matches.

### [IfMetagenerationMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfMetagenerationMatch)

A pre-condition: the request succeeds if the metadata generation matches.

### [IfMetagenerationNotMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfMetagenerationNotMatch)

A pre-condition: the request succeeds unless the metadata generation matches.

### [IfNoneMatchEtag](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfNoneMatchEtag)

A pre-condition: apply this operation only if the HTTP Entity Tag does not match.

### [IfSourceGenerationMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfSourceGenerationMatch)

A pre-condition: the request succeeds if the source object generation matches.

### [IfSourceGenerationNotMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfSourceGenerationNotMatch)

A pre-condition: the request succeeds unless the source object generation matches.

### [IfSourceMetagenerationMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfSourceMetagenerationMatch)

A pre-condition: the request succeeds if the source object metadata generation matches.

### [IfSourceMetagenerationNotMatch](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfSourceMetagenerationNotMatch)

A pre-condition: the request succeeds unless the source object metadata generation matches.

### [IncludeFoldersAsPrefixes](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IncludeFoldersAsPrefixes)

Set this parameter to `true` to include folders in the [`Client::ListObjectsAndPrefixes()`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1a20aaa9bbee515b6553663a68fa1fa894) calls.

### [IncludeTrailingDelimiter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IncludeTrailingDelimiter)

If `true`, objects that end in exactly one instance of delimiter have their metadata included in `items[]` in addition to the relevant part of the object name appearing in `prefixes[]`.

### [KmsKeyName](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1KmsKeyName)

Configure the Customer-Managed Encryption Key (CMEK) for an upload.

### [LifecycleRuleAction](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1LifecycleRuleAction)

Implement a wrapper for Lifecycle Rules actions.

### [LifecycleRuleCondition](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1LifecycleRuleCondition)

Implement a wrapper for Lifecycle Conditions.

### [MatchGlob](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MatchGlob)

Restrict list operations to entries matching a glob pattern.

### [MaxBytesRewrittenPerCall](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaxBytesRewrittenPerCall)

Limit the number of bytes rewritten in a `Objects: rewrite` step.

### [MaximumCurlSocketRecvSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaximumCurlSocketRecvSizeOption)

Control the maximum socket receive buffer.

### [MaximumCurlSocketSendSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaximumCurlSocketSendSizeOption)

Control the maximum socket send buffer.

### [MaximumRangeSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaximumRangeSizeOption)

Use this option to limit the size of [`ObjectDescriptor::Read()`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptor#classgoogle_1_1cloud_1_1storage_1_1ObjectDescriptor_1a8cd0adcfd23db3893462522c1b8067bf) requests.

### [MaximumSimpleUploadSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaximumSimpleUploadSizeOption)

Defines the threshold to switch from simple to resumable uploads for files.

### [MaxResults](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MaxResults)

Limit the number of results per page when listing Buckets and Objects.

### [MD5HashValue](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1MD5HashValue)

### [ObjectCustomContextPayload](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ObjectCustomContextPayload)

Represents the payload of a user-defined object context.

### [ObjectRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ObjectRetention)

Specifies the retention parameters of an object.

### [OverrideDefaultProject](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1OverrideDefaultProject)

Override the default project.

### [OverrideUnlockedRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1OverrideUnlockedRetention)

Set this parameter to `true` to override the current object's retention.

### [Owner](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Owner)

A simple wrapper for the `owner` field in object and bucket metadata.

### [PolicyDocument](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PolicyDocument)

Define a policy document.

### [PolicyDocumentResult](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PolicyDocumentResult)

Define a policy document result.

### [PolicyDocumentV4](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PolicyDocumentV4)

Define a policy document V4.

### [PolicyDocumentV4Result](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PolicyDocumentV4Result)

Define a policy document result V4.

### [PrecomputedChecksums](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PrecomputedChecksums)

Provide a pre-computed MD5 hash value.

### [PrecomputedChecksumsOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PrecomputedChecksumsOption)

Provide precomputed hashes for uploads and downloads.

### [PredefinedAcl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PredefinedAcl)

Set the ACL to predefined values when creating Buckets or Objects.

### [PredefinedDefaultObjectAcl](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1PredefinedDefaultObjectAcl)

Set the default object ACL to a predefined value in a Bucket.

### [Prefix](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Prefix)

Restrict list operations to entries starting with this value.

### [ProjectIdOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ProjectIdOption)

Set the Google Cloud Platform project id.

### [Projection](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Projection)

Controls what metadata fields are included in the response.

### [ProjectTeam](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ProjectTeam)

Represents the projectTeam field in \*AccessControls.

### [QuotaUser](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1QuotaUser)

Sets the user for this operation for quota enforcement purposes.

### [ReadFromOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ReadFromOffset)

Download all the data from the GCS object starting at the given offset.

### [ReadLast](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ReadLast)

Read last N bytes from the GCS object.

### [ReadRange](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ReadRange)

Request only a portion of the GCS object in a ReadObject operation.

### [ReadRangeData](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ReadRangeData)

### [RequestedPolicyVersion](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1RequestedPolicyVersion)

Controls the IAM policy version returned by IAM queries.

### [RestEndpointOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1RestEndpointOption)

Configure the REST endpoint for the GCS client library.

### [ResumePolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ResumePolicyOption)

Configure the resume policy used in a request, client, or connection.

### [RetryPolicyOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1RetryPolicyOption)

Set the retry policy for a GCS client.

### [ReturnPartialSuccess](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ReturnPartialSuccess)

Controls if unreachable resources should be included when performing list operations.

### [RewriteProgress](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1RewriteProgress)

Represents the status of a rewrite operation.

### [Scheme](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Scheme)

Use the specified scheme (e.g. "http") in a V4 signed URL.

### [ServiceAccountFilter](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ServiceAccountFilter)

Only list HMAC keys belonging to a specific Service Account.

### [SignedUrlDuration](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SignedUrlDuration)

Define the duration for a V4 signed URL.

### [SignedUrlTimestamp](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SignedUrlTimestamp)

Define the timestamp duration for a V4 signed URL.

### [SigningAccount](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SigningAccount)

Specify the service account used to sign a blob.

### [SigningAccountDelegates](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SigningAccountDelegates)

Specify the sequence of delegates used to sign a blob.

### [SoftDeleted](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SoftDeleted)

Set this parameter to `true` to include soft-deleted object in [`Client::ListObjects()`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1ac632b30c61f6447eb35ce393a63070f5) and [`Client::GetObjectMetadata()`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1acfb30990e93b1c2aab5a4d6ab059a384) calls.

### [SourceEncryptionKey](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SourceEncryptionKey)

An optional parameter to set the Customer-Supplied Encryption key for rewrite source object.

### [SourceGeneration](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SourceGeneration)

Set the generation for the source object in copy operations.

### [StartOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1StartOffset)

Filter results to objects whose names are lexicographically equal to or after [StartOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1StartOffset).

### [SubResourceOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1SubResourceOption)

Specify a sub-resource in a signed URL.

### [TransferStallMinimumRateOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1TransferStallMinimumRateOption)

The minimum accepted bytes/second transfer rate.

### [TransferStallTimeoutOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1TransferStallTimeoutOption)

Sets the transfer stall timeout.

### [UniformBucketLevelAccess](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UniformBucketLevelAccess)

Configure if only the IAM policies are used for access control.

### [UploadBufferSize](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadBufferSize)

Set the buffer size for a stream created in [`Client::WriteObject()`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1a8918b5f338d91607b06d5107965ed35e).

### [UploadBufferSizeOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadBufferSizeOption)

Control the formatted I/O upload buffer.

### [UploadChecksumValidationOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadChecksumValidationOption)

Configure the checksum algorithm used for uploads.

### [UploadContentLength](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadContentLength)

Provide an expected final length of an uploaded object.

### [UploadFromOffset](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadFromOffset)

Upload the local file to GCS server starting at the given offset.

### [UploadLimit](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UploadLimit)

The maximum length of the local file to upload to GCS server.

### [UseCrc32cValueOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UseCrc32cValueOption)

If this option is present, the client does not compute the MD5 hash of an object during uploads or downloads.

### [UseMD5ValueOption](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UseMD5ValueOption)

If this option is present, the client does not compute the MD5 hash of an object during uploads or downloads.

### [UseResumableUploadSession](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UseResumableUploadSession)

Request a resumable upload, restoring a previous session if necessary.

### [UserIp](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserIp)

Sets the user IP on an operation for quota enforcement purposes.

### [UserProject](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserProject)

Set the project used for billing in "requester pays" Buckets.

### [Versions](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Versions)

Control if all versions of an object should be included when listing objects.

### [VirtualHostname](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1VirtualHostname)

Indicate that the bucket should be a part of hostname in the URL.

### [WithObjectMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1WithObjectMetadata)

A request option to define the object metadata attributes.

## Enums

### [AutoFinalizeConfig](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/namespacegoogle_1_1cloud_1_1storage_1a836e535a68661ccfe9c9a58e40cd4f82)

## Functions

### PublicAccessPreventionEnforced()

Public Access Prevention helper functions

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### PublicAccessPreventionInherited()

Public Access Prevention helper functions

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### PublicAccessPreventionUnspecified()

Public Access Prevention helper functions

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### TEAM_EDITORS()

Well-known values for the project_team().team field..
The following functions are handy to avoid common typos in the team names.

We use functions instead of enums because enums are not backwards compatible and are brittle to changes in the server-side.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### TEAM_OWNERS()

Well-known values for the project_team().team field..
The following functions are handy to avoid common typos in the team names.

We use functions instead of enums because enums are not backwards compatible and are brittle to changes in the server-side.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### TEAM_VIEWERS()

Well-known values for the project_team().team field..
The following functions are handy to avoid common typos in the team names.

We use functions instead of enums because enums are not backwards compatible and are brittle to changes in the server-side.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### MakeBucketName(std::string_view)

Constructs a [`BucketName`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1BucketName) from the given `full_name`.
Returns a non-OK [Status](https://docs.cloud.google.com/cpp/docs/reference/common/latest/classgoogle_1_1cloud_1_1Status.html) if `full_name` is improperly formed.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `full_name` | `std::string_view` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `StatusOr< BucketName >` |   |

### MakeStrictAsyncIdempotencyPolicy()

Creates an idempotency policy where only safe operations are retried.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::unique_ptr< AsyncIdempotencyPolicy >` |   |

### MakeAlwaysRetryAsyncIdempotencyPolicy()

Creates an idempotency policy that retries all operations.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::unique_ptr< AsyncIdempotencyPolicy >` |   |

### ReadAll(AsyncReader, AsyncToken)

Accumulate all the responses from `reader`.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `reader` | `AsyncReader` |
| `token` | `AsyncToken` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `future< StatusOr< ReadPayload > >` |   |

### ReadAll(StatusOr\< std::pair\< AsyncReader, AsyncToken \> \>)

Accumulate all the responses in `read` or return the corresponding error.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `read` | `StatusOr< std::pair< AsyncReader, AsyncToken > >` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `future< StatusOr< ReadPayload > >` |   |

### ReadAll(future\< StatusOr\< std::pair\< AsyncReader, AsyncToken \> \> \>)

Wait until `pending_read` is satisfied and then accumulate all the responses, or return the corresponding error.

###### Example

      // [START storage_read_all]
      namespace gcs = google::cloud::storage;
      auto coro =
          [](gcs::AsyncClient& client, std::string bucket_name,
             std::string object_name) -> google::cloud::future<std::uint64_t> {
        // For small objects, consider `ReadAll()` which accumulates all the
        // contents in memory using background threads.
        auto payload =
            (co_await gcs::ReadAll(client.ReadObject(
                 gcs::BucketName(std::move(bucket_name)), std::move(object_name))))
                .value();
        std::uint64_t count = 0;
        for (auto const& buffer : payload.contents()) {
          count += std::count(buffer.begin(), buffer.end(), '\n');
        }
        co_return count;
      };
      // [END storage_read_all]

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `pending_read` | `future< StatusOr< std::pair< AsyncReader, AsyncToken > > >` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `future< StatusOr< ReadPayload > >` |   |

### LimitedErrorCountResumePolicy(int)

Returns a factory which resumes up to `maximum_resumes` times.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `maximum_resumes` | `int` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `ResumePolicyFactory` |   |

### StopOnConsecutiveErrorsResumePolicy()

Returns a factory which resumes as long as the previous attempt connected successfully.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `ResumePolicyFactory` |   |

### AutoFinalizeEnabled()

Configure a stream to automatically finalize an upload on destruction.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AutoFinalize` |   |

### AutoFinalizeDisabled()

Configure a stream to leave uploads pending (not finalized) on destruction.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AutoFinalize` |   |

### RpoDefault()

A helper function to avoid typos in the RPO configuration.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### RpoAsyncTurbo()

A helper function to avoid typos in the RPO configuration.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### CreateRandomPrefixName(std::string const \&)

Create a random prefix for object names.
This is useful for operations which require a unique prefix for temporary files.

This is a helper function and it doesn't communicate with GCS, so there is a very small chance that names generated this way aren't unique. The chance should be small enough to fit any error budget.

Given the same `prefix`, the randomly generated names will have the same length.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `prefix` | `std::string const &` the prefix of the prefix to be created. |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` | the random prefix name |

### DeleteByPrefix(Client \&, std::string const \&, std::string const \&, Options \&\&...)

Delete objects whose names match a given prefix.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `client` | `Client &` the client on which to perform the operation. |
| `bucket_name` | `std::string const &` the name of the bucket that will contain the object. |
| `prefix` | `std::string const &` the prefix of the objects to be deleted. |
| `options` | `Options &&...` a list of optional query parameters and/or request headers. Valid types for this operation include [`QuotaUser`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1QuotaUser), [`UserIp`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserIp), [`UserProject`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserProject) and [`Versions`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1Versions). |
| `typename...` |   |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `Status` |   |

### ComposeMany(Client \&, std::string const \&, std::vector\< ComposeSourceObject \>, std::string const \&, std::string, bool, Options \&\&...)

Compose existing objects into a new object in the same bucket.
Contrary to [`Client::ComposeObject`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1a8b6b839af39e35dd98720ac31e43a558), this function doesn't have a limit on the number of source objects.

The implementation may need to perform multiple [`Client::ComposeObject`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client#classgoogle_1_1cloud_1_1storage_1_1Client_1a8b6b839af39e35dd98720ac31e43a558) calls to create intermediate, temporary objects which are then further composed. Due to the lack of atomicity of this series of operations, stray temporary objects might be left over if there are transient failures. In order to allow the user to easily control for such situations, the user is expected to provide a unique `prefix` parameter, which will become the prefix of all the temporary objects created by this function. Once this function finishes, the user may safely remove all objects with the provided prefix (e.g. via [DeleteByPrefix()](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/namespacegoogle_1_1cloud_1_1storage)). We recommend using [CreateRandomPrefixName()](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/namespacegoogle_1_1cloud_1_1storage) for selecting a random prefix within a bucket.

###### Idempotency

This operation is not idempotent. While each request performed by this function is retried based on the client policies, the operation itself stops on the first request that fails.

###### Example

      namespace gcs = ::google::cloud::storage;
      using ::google::cloud::StatusOr;
      [](gcs::Client client, std::string const& bucket_name,
         std::string const& destination_object_name,
         std::vector<gcs::ComposeSourceObject> const& compose_objects) {
        std::string prefix = gcs::CreateRandomPrefixName(".tmpfiles");
        StatusOr<gcs::ObjectMetadata> composed_object =
            ComposeMany(client, bucket_name, compose_objects, prefix,
                        destination_object_name, false);
        // If this is an effect of some transient unavailability, stray temporary
        // might be left over. You can use `DeleteByPrefix()` with `prefix` as
        // argument to delete them.
        if (!composed_object) throw std::move(composed_object).status();

        std::cout << "Composed new object " << composed_object->name()
                  << " in bucket " << composed_object->bucket()
                  << "\nFull metadata: " << *composed_object << "\n";
      }

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `client` | `Client &` the client on which to perform the operations needed by this function |
| `bucket_name` | `std::string const &` the name of the bucket used for source object and destination object. |
| `source_objects` | `std::vector< ComposeSourceObject >` objects used to compose `destination_object_name`. |
| `prefix` | `std::string const &` prefix for temporary objects created by this function; there should not be any objects with this prefix; in order to avoid race conditions, this function will create an object with this name |
| `destination_object_name` | `std::string` the composed object name. |
| `ignore_cleanup_failures` | `bool` if the composition succeeds but cleanup of temporary objects fails, depending on this parameter either a success will be returned (`true`) or the relevant cleanup error (`false`) |
| `options` | `Options &&...` a list of optional query parameters and/or request headers. Valid types for this operation include [`DestinationPredefinedAcl`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DestinationPredefinedAcl), [`EncryptionKey`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionKey), [`IfGenerationMatch`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfGenerationMatch), [`IfMetagenerationMatch`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfMetagenerationMatch)[`KmsKeyName`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1KmsKeyName), [`QuotaUser`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1QuotaUser), [`UserIp`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserIp), [`UserProject`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserProject) and [`WithObjectMetadata`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1WithObjectMetadata). |
| `typename...` |   |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `StatusOr< ObjectMetadata >` |   |

### MakeGrpcClient(Options)

Create a [`google::cloud::storage::Client`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client) object configured to use gRPC.

###### Example

    void GrpcReadWrite(std::string const& bucket_name) {
      namespace gcs = ::google::cloud::storage;
      auto constexpr kText = R"""(Hello World!)""";

      auto client = gcs::MakeGrpcClient();

      auto object = client.InsertObject(bucket_name, "lorem.txt", kText);
      if (!object) throw std::move(object).status();

      auto input = client.ReadObject(bucket_name, "lorem.txt",
                                     gcs::Generation(object->generation()));
      std::string const actual(std::istreambuf_iterator<char>{input}, {});
      if (input.bad()) throw google::cloud::Status(input.status());
      std::cout << "The contents read back are:\n"
                << actual
                << "\nThe received checksums are: " << input.received_hash()
                << "\nThe computed checksums are: " << input.computed_hash()
                << "\nThe original hashes    are: crc32c=" << object->crc32c()
                << ",md5=" << object->md5_hash() << "\n";
    }

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `opts` | `Options` the configuration parameters for the [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client). |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `google::cloud::storage::Client` |   |

### ComputeMD5Hash(std::string_view)

Compute the MD5 Hash of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `std::string_view` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ComputeMD5Hash(std::string const \&)

Compute the MD5 Hash of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `std::string const &` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ComputeMD5Hash(char const \*)

Compute the MD5 Hash of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `char const *` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### EnableMD5Hash()

Enable MD5 hashes in upload and download operations.
Use this function where the option [`DisableMD5Hash`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DisableMD5Hash) is expected to enable MD5 hashes.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `DisableMD5Hash` |   |

### ComputeCrc32cChecksum(std::string_view)

Compute the CRC32C checksum of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `std::string_view` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ComputeCrc32cChecksum(std::string const \&)

Compute the CRC32C checksum of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `std::string const &` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ComputeCrc32cChecksum(char const \*)

Compute the CRC32C checksum of a buffer in the format preferred by GCS.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `payload` | `char const *` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ObjectRetentionUnlocked()

A helper function to avoid typos in the [ObjectRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ObjectRetention) configuration.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ObjectRetentionLocked()

A helper function to avoid typos in the [ObjectRetention](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1ObjectRetention) configuration.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### ParallelUploadFile(Client, std::string, std::string, std::string, std::string, bool, Options \&\&...)

Perform a parallel upload of a given file.
You can affect how many shards will be created by using the [`MaxStreams`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MaxStreams) and [`MinStreamSize`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MinStreamSize) options.

###### Idempotency

This operation is not idempotent. While each request performed by this function is retried based on the client policies, the operation itself stops on the first request that fails.

###### Example

      namespace gcs = ::google::cloud::storage;
      using ::google::cloud::StatusOr;
      [](gcs::Client client, std::string const& file_name,
         std::string const& bucket_name, std::string const& object_name) {
        // Pick a unique random prefix for the temporary objects created by the
        // parallel upload.
        auto prefix = gcs::CreateRandomPrefixName("");

        auto metadata = gcs::ParallelUploadFile(
            std::move(client), file_name, bucket_name, object_name, prefix, false);
        if (!metadata) throw std::move(metadata).status();

        std::cout << "Uploaded " << file_name << " to object " << metadata->name()
                  << " in bucket " << metadata->bucket()
                  << "\nFull metadata: " << *metadata << "\n";
      }

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `client` | `Client` the client on which to perform the operation. |
| `file_name` | `std::string` the path to the file to be uploaded |
| `bucket_name` | `std::string` the name of the bucket that will contain the object. |
| `object_name` | `std::string` the uploaded object name. |
| `prefix` | `std::string` the prefix with which temporary objects will be created. |
| `ignore_cleanup_failures` | `bool` treat failures to cleanup the temporary objects as not fatal. |
| `options` | `Options &&...` a list of optional query parameters and/or request headers. Valid types for this operation include [`DestinationPredefinedAcl`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1DestinationPredefinedAcl), [`EncryptionKey`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1EncryptionKey), [`IfGenerationMatch`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfGenerationMatch), [`IfMetagenerationMatch`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1IfMetagenerationMatch), [`KmsKeyName`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1KmsKeyName), [`MaxStreams`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MaxStreams)`,`[MinStreamSize](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1MinStreamSize)`,`[QuotaUser](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1QuotaUser)`,`[UserIp](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserIp)`,`[UserProject](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UserProject)`,`[WithObjectMetadata](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1WithObjectMetadata)`,`UseResumableUploadSession\`. |
| `typename...` |   |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `StatusOr< ObjectMetadata >` | the metadata of the object created by the upload. |

### FormatDateForForm(PolicyDocumentV4Result const \&)

Format the current date in the format expected by a POST form.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
|   | `PolicyDocumentV4Result const &` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### AddExtensionHeader(std::string, std::string)

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `header` | `std::string` |
| `value` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddExtensionHeaderOption` |   |

### WithGeneration(std::uint64_t)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `generation` | `std::uint64_t` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithGenerationMarker(std::uint64_t)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `generation` | `std::uint64_t` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithUserProject(std::string)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `user_project` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithMarker(std::string)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `marker` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithResponseContentDisposition(std::string)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `disposition` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithResponseContentType(std::string const \&)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `type` | `std::string const &` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddQueryParameterOption` |   |

### WithAcl()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithBilling()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithCompose()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithCors()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithEncryption()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithEncryptionConfig()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithLifecycle()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithLocation()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithLogging()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithStorageClass()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### WithTagging()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `SubResourceOption` |   |

### AddExtensionField(std::string, std::string)

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `field` | `std::string` |
| `value` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AddExtensionFieldOption` |   |

### RestoreResumableUploadSession(std::string)

Create a [UseResumableUploadSession](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UseResumableUploadSession) option that restores previous sessions.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `session_id` | `std::string` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `UseResumableUploadSession` |   |

### NewResumableUploadSession()

Create a [UseResumableUploadSession](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/structgoogle_1_1cloud_1_1storage_1_1UseResumableUploadSession) option that requests new sessions.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `UseResumableUploadSession` |   |

### version_major()

Returns the Google Cloud Storage C++ [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client) major version.

###### See Also

<https://semver.org/spec/v2.0.0.html> for details.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `int constexpr` |   |

### version_minor()

Returns the Google Cloud Storage C++ [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client) minor version.

###### See Also

<https://semver.org/spec/v2.0.0.html> for details.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `int constexpr` |   |

### version_patch()

Returns the Google Cloud Storage C++ [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client) patch version.

###### See Also

<https://semver.org/spec/v2.0.0.html> for details.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `int constexpr` |   |

### version_pre_release()

Returns the Google Cloud Storage C++ [Client](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client) pre-release version.

###### See Also

<https://semver.org/spec/v2.0.0.html> for details.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `char const *` |   |

### version()

Returns a single integer representing the Major/Minor/Patch version.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `int constexpr` |   |

### version_string()

Returns the version as a string, in MAJOR.MINOR.PATCH\[-PRE\]\[+gitrev\] format.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### x_goog_api_client()

Returns the value for `x-goog-api-client` header.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `std::string` |   |

### EncryptionDataFromBinaryKey(std::string const \&)

Formats a (potentially binary) encryption key in the format required by the Google Cloud Storage API.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `key` | `std::string const &` a binary key, must have exactly 32 bytes. |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `EncryptionKeyData` |   |

### EncryptionDataFromBase64Key(std::string const \&)

Formats an encryption key in base64 format to the data structure required by the Google Cloud Storage API.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `key` | `std::string const &` a base64-encoded key, must have exactly 32 bytes when decoded. |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `EncryptionKeyData` |   |

### CreateKeyFromGenerator(Generator \&)

Creates an encryption key parameter from a pseudo-random number generator.

###### Example

      // Create a pseudo-random number generator (PRNG), this is included for
      // demonstration purposes only. You should consult your security team about
      // best practices to initialize PRNG. In particular, you should verify that
      // the C++ library and operating system provide enough entropy to meet the
      // security policies in your organization.

      // Use the Mersenne-Twister Engine in this example:
      //   https://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine
      // Any C++ PRNG can be used below, the choice is arbitrary.
      using GeneratorType = std::mt19937_64;

      // Create the default random device to fetch entropy.
      std::random_device rd;

      // Compute how much entropy we need to initialize the GeneratorType:
      constexpr auto kRequiredEntropyWords =
          GeneratorType::state_size *
          (GeneratorType::word_size / std::numeric_limits<unsigned int>::digits);

      // Capture the entropy bits into a vector.
      std::vector<std::uint64_t> entropy(kRequiredEntropyWords);
      std::generate(entropy.begin(), entropy.end(), [&rd] { return rd(); });

      // Create the PRNG with the fetched entropy.
      std::seed_seq seed(entropy.begin(), entropy.end());

      // initialized with enough entropy such that the encryption keys are not
      // predictable. Note that the default constructor for all the generators in
      // the C++ standard library produce predictable keys.
      std::mt19937_64 gen(seed);

      namespace gcs = ::google::cloud::storage;
      gcs::EncryptionKeyData data = gcs::CreateKeyFromGenerator(gen);

      std::cout << "Base64 encoded key = " << data.key << "\n"
                << "Base64 encoded SHA256 of key = " << data.sha256 << "\n";

###### See Also

<https://en.cppreference.com/w/cpp/numeric/random> for a general overview of C++ pseudo-random number support.

###### See Also

<https://en.cppreference.com/w/cpp/numeric/random/UniformRandomBitGenerator> for a more detailed overview of the requirements for generators.

| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `gen` | `Generator &` the pseudo-random number generator. |
| `typename Generator` | the pseudo-random number generator type, it must meet the `UniformRandomBitGenerator` requirements. |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `EncryptionKeyData` |   |

### AcceptEncodingGzip()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AcceptEncoding` |   |

### AcceptEncodingIdentity()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `AcceptEncoding` |   |

## Type Aliases

### ResumePolicyFactory

**Alias Of** : `std::function< std::unique_ptr< ResumePolicy >()>` Creates new instances of a [`ResumePolicy`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1ResumePolicy).

### AsyncBackoffPolicy

**Alias Of** : `::google::cloud::internal::BackoffPolicy` The backoff policy base class.

### ExponentialAsyncBackoffPolicy

**Alias Of** : `::google::cloud::internal::ExponentialBackoffPolicy` Implement truncated exponential backoff with randomization.

### GoogleManagedEncryptionEnforcementConfig

**Alias Of** : `EncryptionEnforcementConfig< GoogleManagedEncryptionEnforcementConfigTag >`

### CustomerManagedEncryptionEnforcementConfig

**Alias Of** : `EncryptionEnforcementConfig< CustomerManagedEncryptionEnforcementConfigTag >`

### CustomerSuppliedEncryptionEnforcementConfig

**Alias Of** : `EncryptionEnforcementConfig< CustomerSuppliedEncryptionEnforcementConfigTag >`

### BucketPolicyOnly

**Alias Of** : `UniformBucketLevelAccess`

### HeadersMap

**Alias Of** : `std::multimap< std::string, std::string >` Represents the headers returned in a streaming upload or download operation.

### ListBucketsExtendedReader

**Alias Of** : `StreamRange< BucketsExtended >`

### ListBucketsExtendedIterator

**Alias Of** : `ListBucketsExtendedReader::iterator`

### ListBucketsReader

**Alias Of** : `StreamRange< BucketMetadata >`

### ListBucketsIterator

**Alias Of** : `ListBucketsReader::iterator`

### ListHmacKeysReader

**Alias Of** : `StreamRange< HmacKeyMetadata >` A range to paginate over the HmacKeys for a project.

### ListHmacKeysIterator

**Alias Of** : `ListHmacKeysReader::iterator`

### ObjectOrPrefix

**Alias Of** : `std::variant< ObjectMetadata, std::string >`

### ListObjectsAndPrefixesReader

**Alias Of** : `StreamRange< ObjectOrPrefix >`

### ListObjectsAndPrefixesIterator

**Alias Of** : `ListObjectsAndPrefixesReader::iterator`

### ListObjectsReader

**Alias Of** : `StreamRange< ObjectMetadata >`

### ListObjectsIterator

**Alias Of** : `ListObjectsReader::iterator`

### ClientOptionList

**Alias Of** : `::google::cloud::OptionList< RestEndpointOption, IamEndpointOption, ProjectIdOption, ProjectIdOption, ConnectionPoolSizeOption, DownloadBufferSizeOption, UploadBufferSizeOption, EnableCurlSslLockingOption, EnableCurlSigpipeHandlerOption, MaximumCurlSocketRecvSizeOption, MaximumCurlSocketSendSizeOption, TransferStallTimeoutOption, RetryPolicyOption, BackoffPolicyOption, IdempotencyPolicyOption, CARootsFilePathOption, UploadChecksumValidationOption, DownloadChecksumValidationOption, PrecomputedChecksumsOption, storage_experimental::HttpVersionOption, storage_experimental::HttpConnectTimeoutOption, storage_experimental::EnableReadHedgingOption, storage_experimental::ReadHedgeRateLimitOption, storage_experimental::MaxConcurrentHedgesOption, storage_experimental::MaxTotalHedgesOption, storage_experimental::MaximumHedgeBufferOption, storage_experimental::ReadHedgeDelayOption, storage_experimental::MaxReadHedgesOption, storage_experimental::ReadThreadPoolSizeOption, storage_experimental::HedgingThreadPoolSizeOption, storage_experimental::OTelSpanEnrichmentOption >` The complete list of options accepted by [`storage::Client`](https://docs.cloud.google.com/cpp/docs/reference/storage/latest/classgoogle_1_1cloud_1_1storage_1_1Client).

### BackoffPolicy

**Alias Of** : `::google::cloud::internal::BackoffPolicy` The backoff policy base class.

### ExponentialBackoffPolicy

**Alias Of** : `::google::cloud::internal::ExponentialBackoffPolicy` Implement truncated exponential backoff with randomization.