Method: projects.databases.restore

Creates a new database by restoring from an existing backup.

The new database must be in the same cloud region or multi-region location as the existing backup. This behaves similar to FirestoreAdmin.CreateDatabase except instead of creating a new empty database, a new database is created with the database type, index configuration, and documents from an existing backup.

The long-running operation can be used to track the progress of the restore, with the Operation's metadata field type being the RestoreDatabaseMetadata. The response type is the Database if the restore was successful. The new database is not readable or writeable until the LRO has completed.

HTTP request

POST https://firestore.googleapis.com/v1/{parent=projects/*}/databases:restore

The URL uses gRPC Transcoding syntax.

Path parameters

Parameters
parent

string

Required. The project to restore the database in. Format is projects/{projectId}.

Request body

The request body contains data with the following structure:

JSON representation
{
  "databaseId": string,
  "backup": string,
  "encryptionConfig": {
    object (EncryptionConfig)
  }
}
Fields
databaseId

string

Required. The ID to use for the database, which will become the final component of the database's resource name. This database ID must not be associated with an existing database.

This value should be 4-63 characters. Valid characters are /[a-z][0-9]-/ with first character a letter and the last a letter or a number. Must not be UUID-like /[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/.

"(default)" database ID is also valid.

backup

string

Required. Backup to restore from. Must be from the same project as the parent.

The restored database will be created in the same location as the source backup.

Format is: projects/{projectId}/locations/{location}/backups/{backup}

encryptionConfig

object (EncryptionConfig)

Optional. Encryption configuration for the restored database.

If this field is not specified, the restored database will use the same encryption configuration as the backup, namely useSourceEncryption.

Response body

If successful, the response body contains an instance of Operation.

Authorization scopes

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/datastore
  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

EncryptionConfig

Encryption configuration for a new database being created from another source.

The source could be a Backup .

JSON representation
{

  // Union field encryption_type can be only one of the following:
  "googleDefaultEncryption": {
    object (GoogleDefaultEncryptionOptions)
  },
  "useSourceEncryption": {
    object (SourceEncryptionOptions)
  },
  "customerManagedEncryption": {
    object (CustomerManagedEncryptionOptions)
  }
  // End of list of possible types for union field encryption_type.
}
Fields
Union field encryption_type. The method for encrypting the database. encryption_type can be only one of the following:
googleDefaultEncryption

object (GoogleDefaultEncryptionOptions)

Use Google default encryption.

useSourceEncryption

object (SourceEncryptionOptions)

The database will use the same encryption configuration as the source.

customerManagedEncryption

object (CustomerManagedEncryptionOptions)

Use Customer Managed Encryption Keys (CMEK) for encryption.

GoogleDefaultEncryptionOptions

This type has no fields.

The configuration options for using Google default encryption.

SourceEncryptionOptions

This type has no fields.

The configuration options for using the same encryption method as the source.

CustomerManagedEncryptionOptions

The configuration options for using CMEK (Customer Managed Encryption Key) encryption.

JSON representation
{
  "kmsKeyName": string
}
Fields
kmsKeyName

string

Required. Only keys in the same location as the database are allowed to be used for encryption.

For Firestore's nam5 multi-region, this corresponds to Cloud KMS multi-region us. For Firestore's eur3 multi-region, this corresponds to Cloud KMS multi-region europe. See https://cloud.google.com/kms/docs/locations.

The expected format is projects/{projectId}/locations/{kms_location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}.