Package google.spanner.admin.instance.v1

Stay organized with collections Save and categorize content based on your preferences.

Index

InstanceAdmin

Cloud Spanner Instance Admin API

The Cloud Spanner Instance Admin API can be used to create, delete, modify and list instances. Instances are dedicated Cloud Spanner serving and storage resources to be used by Cloud Spanner databases.

Each instance has a "configuration", which dictates where the serving resources for the Cloud Spanner instance are located (e.g., US-central, Europe). Configurations are created by Google based on resource availability.

Cloud Spanner billing is based on the instances that exist and their sizes. After an instance exists, there are no additional per-database or per-operation charges for use of the instance (though there may be additional network bandwidth charges). Instances offer isolation: problems with databases in one instance will not affect other instances. However, within an instance databases can affect each other. For example, if one database in an instance receives a lot of requests and consumes most of the instance resources, fewer resources are available for other databases in that instance, and their performance may suffer.

CreateInstance

rpc CreateInstance(CreateInstanceRequest) returns (Operation)

Creates an instance and begins preparing it to begin serving. The returned long-running operation can be used to track the progress of preparing the new instance. The instance name is assigned by the caller. If the named instance already exists, CreateInstance returns ALREADY_EXISTS.

Immediately upon completion of this request:

  • The instance is readable via the API, with all requested attributes but no allocated resources. Its state is CREATING.

Until completion of the returned operation:

  • Cancelling the operation renders the instance immediately unreadable via the API.
  • The instance can be deleted.
  • All other attempts to modify the instance are rejected.

Upon completion of the returned operation:

  • Billing for all successfully-allocated resources begins (some types may have lower than the requested levels).
  • Databases can be created in the instance.
  • The instance's allocated resource levels are readable via the API.
  • The instance's state becomes READY.

The returned long-running operation will have a name of the format <instance_name>/operations/<operation_id> and can be used to track creation of the instance. The metadata field type is CreateInstanceMetadata. The response field type is Instance, if successful.

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 the Authentication Overview.

DeleteInstance

rpc DeleteInstance(DeleteInstanceRequest) returns (Empty)

Deletes an instance.

Immediately upon completion of the request:

  • Billing ceases for all of the instance's reserved resources.

Soon afterward:

  • The instance and all of its databases immediately and irrevocably disappear from the API. All data in the databases is permanently deleted.
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 the Authentication Overview.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

Gets the access control policy for an instance resource. Returns an empty policy if an instance exists but does not have a policy set.

Authorization requires spanner.instances.getIamPolicy on resource.

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 the Authentication Overview.

GetInstance

rpc GetInstance(GetInstanceRequest) returns (Instance)

Gets information about a particular instance.

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 the Authentication Overview.

GetInstanceConfig

rpc GetInstanceConfig(GetInstanceConfigRequest) returns (InstanceConfig)

Gets information about a particular instance configuration.

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 the Authentication Overview.

ListInstanceConfigs

rpc ListInstanceConfigs(ListInstanceConfigsRequest) returns (ListInstanceConfigsResponse)

Lists the supported instance configurations for a given project.

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 the Authentication Overview.

ListInstances

rpc ListInstances(ListInstancesRequest) returns (ListInstancesResponse)

Lists all instances in the given project.

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 the Authentication Overview.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

Sets the access control policy on an instance resource. Replaces any existing policy.

Authorization requires spanner.instances.setIamPolicy on resource.

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 the Authentication Overview.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

Returns permissions that the caller has on the specified instance resource.

Attempting this RPC on a non-existent Cloud Spanner instance resource will result in a NOT_FOUND error if the user has spanner.instances.list permission on the containing Google Cloud Project. Otherwise returns an empty set of permissions.

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 the Authentication Overview.

UpdateInstance

rpc UpdateInstance(UpdateInstanceRequest) returns (Operation)

Updates an instance, and begins allocating or releasing resources as requested. The returned long-running operation can be used to track the progress of updating the instance. If the named instance does not exist, returns NOT_FOUND.

Immediately upon completion of this request:

  • For resource types for which a decrease in the instance's allocation has been requested, billing is based on the newly-requested level.

Until completion of the returned operation:

  • Cancelling the operation sets its metadata's cancel_time, and begins restoring resources to their pre-request values. The operation is guaranteed to succeed at undoing all resource changes, after which point it terminates with a CANCELLED status.
  • All other attempts to modify the instance are rejected.
  • Reading the instance via the API continues to give the pre-request resource levels.

Upon completion of the returned operation:

  • Billing begins for all successfully-allocated resources (some types may have lower than the requested levels).
  • All newly-reserved resources are available for serving the instance's tables.
  • The instance's new resource levels are readable via the API.

The returned long-running operation will have a name of the format <instance_name>/operations/<operation_id> and can be used to track the instance modification. The metadata field type is UpdateInstanceMetadata. The response field type is Instance, if successful.

Authorization requires spanner.instances.update permission on the resource name.

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 the Authentication Overview.

CreateInstanceMetadata

Metadata type for the operation returned by CreateInstance.

Fields
instance

Instance

The instance being created.

start_time

Timestamp

The time at which the CreateInstance request was received.

cancel_time

Timestamp

The time at which this operation was cancelled. If set, this operation is in the process of undoing itself (which is guaranteed to succeed) and cannot be cancelled again.

end_time

Timestamp

The time at which this operation failed or was completed successfully.

CreateInstanceRequest

The request for CreateInstance.

Fields
parent

string

Required. The name of the project in which to create the instance. Values are of the form projects/<project>.

Authorization requires the following IAM permission on the specified resource parent:

  • spanner.instances.create
instance_id

string

Required. The ID of the instance to create. Valid identifiers are of the form [a-z][-a-z0-9]*[a-z0-9] and must be between 2 and 64 characters in length.

instance

Instance

Required. The instance to create. The name may be omitted, but if specified must be <parent>/instances/<instance_id>.

DeleteInstanceRequest

The request for DeleteInstance.

Fields
name

string

Required. The name of the instance to be deleted. Values are of the form projects/<project>/instances/<instance>

Authorization requires the following IAM permission on the specified resource name:

  • spanner.instances.delete

FreeInstanceMetadata

Free instance specific metadata that is kept even after an instance has been upgraded for tracking purposes.

Fields
expire_time

Timestamp

Output only. Timestamp after which the instance will either be upgraded or scheduled for deletion after a grace period. ExpireBehavior is used to choose between upgrading or scheduling the free instance for deletion. This timestamp is set during the creation of a free instance.

upgrade_time

Timestamp

Output only. If present, the timestamp at which the free instance was upgraded to a provisioned instance.

expire_behavior

ExpireBehavior

Specifies the expiration behavior of a free instance. The default of ExpireBehavior is REMOVE_AFTER_GRACE_PERIOD. This can be modified during or after creation, and before expiration.

ExpireBehavior

Allows users to change behavior when a free instance expires.

Enums
EXPIRE_BEHAVIOR_UNSPECIFIED Not specified.
FREE_TO_PROVISIONED When the free instance expires, upgrade the instance to a provisioned instance.
REMOVE_AFTER_GRACE_PERIOD When the free instance expires, disable the instance, and delete it after the grace period passes if it has not been upgraded.

GetInstanceConfigRequest

The request for GetInstanceConfigRequest.

Fields
name

string

Required. The name of the requested instance configuration. Values are of the form projects/<project>/instanceConfigs/<config>.

Authorization requires the following IAM permission on the specified resource name:

  • spanner.instanceConfigs.get

GetInstanceRequest

The request for GetInstance.

Fields
name

string

Required. The name of the requested instance. Values are of the form projects/<project>/instances/<instance>.

Authorization requires the following IAM permission on the specified resource name:

  • spanner.instances.get
field_mask

FieldMask

If field_mask is present, specifies the subset of Instance fields that should be returned. If absent, all Instance fields are returned.

Instance

An isolated set of Cloud Spanner resources on which databases can be hosted.

Fields
name

string

Required. A unique identifier for the instance, which cannot be changed after the instance is created. Values are of the form projects/<project>/instances/[a-z][-a-z0-9]*[a-z0-9]. The final segment of the name must be between 2 and 64 characters in length.

config

string

Required. The name of the instance's configuration. Values are of the form projects/<project>/instanceConfigs/<configuration>. See also InstanceConfig and ListInstanceConfigs.

display_name

string

Required. The descriptive name for this instance as it appears in UIs. Must be unique per project and between 4 and 30 characters in length.

node_count

int32

The number of nodes allocated to this instance. At most one of either node_count or processing_units should be present in the message. This may be zero in API responses for instances that are not yet in state READY.

See the documentation for more information about nodes and processing units.

processing_units

int32

The number of processing units allocated to this instance. At most one of processing_units or node_count should be present in the message. This may be zero in API responses for instances that are not yet in state READY.

See the documentation for more information about nodes and processing units.

state

State

Output only. The current instance state. For CreateInstance, the state must be either omitted or set to CREATING. For UpdateInstance, the state must be either omitted or set to READY.

labels

map<string, string>

Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.).

  • Label keys must be between 1 and 63 characters long and must conform to the following regular expression: [a-z][a-z0-9_-]{0,62}.
  • Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}.
  • No more than 64 labels can be associated with a given resource.

See https://goo.gl/xmQnxf for more information on and examples of labels.

If you plan to use labels in your own code, please note that additional characters may be allowed in the future. And so you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.

instance_type

InstanceType

The InstanceType of the current instance.

endpoint_uris[]

string

Deprecated. This field is not populated.

create_time

Timestamp

Output only. The time at which the instance was created.

update_time

Timestamp

Output only. The time at which the instance was most recently updated.

free_instance_metadata

FreeInstanceMetadata

Free instance metadata. Only populated for free instances.

InstanceType

The type of this instance. The type can be used to distinguish product variants, that can affect aspects like: usage restrictions, quotas and billing. Currently this is used to distinguish FREE_INSTANCE vs PROVISIONED instances.

Enums
INSTANCE_TYPE_UNSPECIFIED Not specified.
PROVISIONED Provisioned instances have dedicated resources, standard usage limits and support.
FREE_INSTANCE Free instances provide no guarantee for dedicated resources, [node_count, processing_units] should be 0. They come with stricter usage limits and limited support.

State

Indicates the current state of the instance.

Enums
STATE_UNSPECIFIED Not specified.
CREATING The instance is still being created. Resources may not be available yet, and operations such as database creation may not work.
READY The instance is fully created and ready to do work such as creating databases.

InstanceConfig

A possible configuration for a Cloud Spanner instance. Configurations define the geographic placement of nodes and their replication.

Fields
name

string

A unique identifier for the instance configuration. Values are of the form projects/<project>/instanceConfigs/[a-z][-a-z0-9]*.

display_name

string

The name of this instance configuration as it appears in UIs.

replicas[]

ReplicaInfo

The geographic placement of nodes in this instance configuration and their replication properties.

leader_options[]

string

Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.

free_instance_availability

FreeInstanceAvailability

Output only. Describes whether free instances are available to be created in this instance config.

FreeInstanceAvailability

Describes the availability for free instances to be created in an instance config.

Enums
FREE_INSTANCE_AVAILABILITY_UNSPECIFIED Not specified.
AVAILABLE Indicates that free instances are available to be created in this instance config.
UNSUPPORTED Indicates that free instances are not supported in this instance config.
DISABLED Indicates that free instances are currently not available to be created in this instance config.
QUOTA_EXCEEDED Indicates that additional free instances cannot be created in this instance config because the project has reached its limit of free instances.

ListInstanceConfigsRequest

The request for ListInstanceConfigs.

Fields
parent

string

Required. The name of the project for which a list of supported instance configurations is requested. Values are of the form projects/<project>.

Authorization requires the following IAM permission on the specified resource parent:

  • spanner.instanceConfigs.list
page_size

int32

Number of instance configurations to be returned in the response. If 0 or less, defaults to the server's maximum allowed page size.

page_token

string

If non-empty, page_token should contain a next_page_token from a previous ListInstanceConfigsResponse.

ListInstanceConfigsResponse

The response for ListInstanceConfigs.

Fields
instance_configs[]

InstanceConfig

The list of requested instance configurations.

next_page_token

string

next_page_token can be sent in a subsequent ListInstanceConfigs call to fetch more of the matching instance configurations.

ListInstancesRequest

The request for ListInstances.

Fields
parent

string

Required. The name of the project for which a list of instances is requested. Values are of the form projects/<project>.

Authorization requires the following IAM permission on the specified resource parent:

  • spanner.instances.list
page_size

int32

Number of instances to be returned in the response. If 0 or less, defaults to the server's maximum allowed page size.

page_token

string

If non-empty, page_token should contain a next_page_token from a previous ListInstancesResponse.

filter

string

An expression for filtering the results of the request. Filter rules are case insensitive. The fields eligible for filtering are:

  • name
  • display_name
  • labels.key where key is the name of a label

Some examples of using filters are:

  • name:* --> The instance has a name.
  • name:Howl --> The instance's name contains the string "howl".
  • name:HOWL --> Equivalent to above.
  • NAME:howl --> Equivalent to above.
  • labels.env:* --> The instance has the label "env".
  • labels.env:dev --> The instance has the label "env" and the value of the label contains the string "dev".
  • name:howl labels.env:dev --> The instance's name contains "howl" and it has the label "env" with its value containing "dev".
instance_deadline

Timestamp

Deadline used while retrieving metadata for instances. Instances whose metadata cannot be retrieved within this deadline will be added to unreachable in ListInstancesResponse.

ListInstancesResponse

The response for ListInstances.

Fields
instances[]

Instance

The list of requested instances.

next_page_token

string

next_page_token can be sent in a subsequent ListInstances call to fetch more of the matching instances.

unreachable[]

string

The list of unreachable instances. It includes the names of instances whose metadata could not be retrieved within instance_deadline.

ReplicaInfo

Fields
location

string

The location of the serving resources, e.g. "us-central1".

type

ReplicaType

The type of replica.

default_leader_location

bool

If true, this location is designated as the default leader location where leader replicas are placed. See the region types documentation for more details.

ReplicaType

Indicates the type of replica. See the replica types documentation for more details.

Enums
TYPE_UNSPECIFIED Not specified.
READ_WRITE

Read-write replicas support both reads and writes. These replicas:

  • Maintain a full copy of your data.
  • Serve reads.
  • Can vote whether to commit a write.
  • Participate in leadership election.
  • Are eligible to become a leader.
READ_ONLY

Read-only replicas only support reads (not writes). Read-only replicas:

  • Maintain a full copy of your data.
  • Serve reads.
  • Do not participate in voting to commit writes.
  • Are not eligible to become a leader.
WITNESS

Witness replicas don't support reads but do participate in voting to commit writes. Witness replicas:

  • Do not maintain a full copy of data.
  • Do not serve reads.
  • Vote whether to commit writes.
  • Participate in leader election but are not eligible to become leader.

UpdateInstanceMetadata

Metadata type for the operation returned by UpdateInstance.

Fields
instance

Instance

The desired end state of the update.

start_time

Timestamp

The time at which UpdateInstance request was received.

cancel_time

Timestamp

The time at which this operation was cancelled. If set, this operation is in the process of undoing itself (which is guaranteed to succeed) and cannot be cancelled again.

end_time

Timestamp

The time at which this operation failed or was completed successfully.

UpdateInstanceRequest

The request for UpdateInstance.

Fields
instance

Instance

Required. The instance to update, which must always include the instance name. Otherwise, only fields mentioned in field_mask need be included.

Authorization requires the following IAM permission on the specified resource instance:

  • spanner.instances.update
field_mask

FieldMask

Required. A mask specifying which fields in Instance should be updated. The field mask must always be specified; this prevents any future fields in Instance from being erased accidentally by clients that do not know about them.