Method: projects.instances.databases.create

Creates a new Spanner database and starts to prepare it for serving. The returned long-running operation will have a name of the format<database_name>/operations/<operationId> and can be used to track preparation of the database. The metadata field type isCreateDatabaseMetadata. The response field type isDatabase, if successful.

HTTP request


POST https://spanner.googleapis.com/v1/{parent=projects/*/instances/*}/databases

The URLs usegRPC Transcoding syntax.

Path parameters

Parameters
parent

string

Required. The name of the instance that will serve the new database. Values are of the formprojects/<project>/instances/<instance>.

Authorization requires the followingIAM permission on the specified resourceparent:

  • spanner.databases.create

Request body

The request body contains data with the following structure:

JSON representation
{"createStatement":string,"extraStatements":[string],"encryptionConfig":{object (EncryptionConfig)},"databaseDialect":enum (DatabaseDialect),"protoDescriptors":string}
Fields
createStatement

string

Required. ACREATE DATABASE statement, which specifies the ID of the new database. The database ID must conform to the regular expression[a-z][a-z0-9_\-]*[a-z0-9] and be between 2 and 30 characters in length. If the database ID is a reserved word or if it contains a hyphen, the database ID must be enclosed in backticks (`).

extraStatements[]

string

Optional. A list of DDL statements to run inside the newly created database. Statements can create tables, indexes, etc. These statements execute atomically with the creation of the database: if there is an error in any statement, the database is not created.

encryptionConfig

object (EncryptionConfig)

Optional. The encryption configuration for the database. If this field is not specified, Cloud Spanner will encrypt/decrypt all data at rest using Google default encryption.

databaseDialect

enum (DatabaseDialect)

Optional. The dialect of the Cloud Spanner Database.

protoDescriptors

string (bytes format)

Optional. Proto descriptors used byCREATE/ALTER PROTO BUNDLE statements in 'extraStatements'. Contains a protobuf-serializedgoogle.protobuf.FileDescriptorSet descriptor set. To generate it,install and runprotoc with --include_imports and --descriptor_set_out. For example, to generate for moon/shot/app.proto, run

$protoc  --proto_path=/app_path --proto_path=/lib_path \         --include_imports \         --descriptor_set_out=descriptors.data \         moon/shot/app.proto

For more details, see protobufferself description.

A base64-encoded string.

Response body

If successful, the response body contains a newly created instance ofOperation.

Authorization scopes

Requires one of the following OAuth scopes:

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

For more information, see theAuthentication Overview.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-12 UTC.