Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Certificate changed, valid to 2026-12-21
Authorization not required, issuer https://accounts.google.com
Changed the definition of "create_table", "get_table" and "list_tables"
before
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"}Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Certificate changed, valid to 2026-12-11
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Certificate changed, valid to 2026-12-03
Authorization not required, issuer https://accounts.google.com
Certificate changed, valid to 2026-11-27
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Authorization not required, issuer https://accounts.google.com
Certificate recorded, valid to 2026-11-02
Authorization not required, issuer https://accounts.google.com
First tool surface recorded: 14 tools (server version ESF)
Showing the latest 27 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
after
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"disabled":{"description":"Optional. If `true`, automated backups are explicitly disabled on this table. This allows users to opt out of default enablement.","type":"boolean"},"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"keepHotDuration":{"description":"Optional. The amount of time that the automated backups remain hot. If specified, the backups created by this policy are `HOT` backups. If not specified, the backups are `STANDARD` backups. The value must be at least 24 hours and at most 10 days, and can't exceed the policy's `retention_period`. Only SSD instances support `HOT` automated backups.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"effectiveAutomatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"Output only. The effective automated backup policy applied to the table. This represents the policy actually in effect, which may be a system-default policy if the user has not explicitly configured one. Views: `SCHEMA_VIEW`, `FULL`.","readOnly":true},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"}before
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"}after
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"disabled":{"description":"Optional. If `true`, automated backups are explicitly disabled on this table. This allows users to opt out of default enablement.","type":"boolean"},"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"keepHotDuration":{"description":"Optional. The amount of time that the automated backups remain hot. If specified, the backups created by this policy are `HOT` backups. If not specified, the backups are `STANDARD` backups. The value must be at least 24 hours and at most 10 days, and can't exceed the policy's `retention_period`. Only SSD instances support `HOT` automated backups.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"effectiveAutomatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"Output only. The effective automated backup policy applied to the table. This represents the policy actually in effect, which may be a system-default policy if the user has not explicitly configured one. Views: `SCHEMA_VIEW`, `FULL`.","readOnly":true},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"}before
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"Table":{"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"description":"Response message for google.bigtable.admin.v2.BigtableTableAdmin.ListTables","properties":{"nextPageToken":{"description":"Set if not all tables could be returned in a single response. Pass this value to `page_token` in another request to get the next page of results.","type":"string"},"tables":{"description":"The tables present in the requested instance.","items":{"$ref":"#/$defs/Table"},"type":"array"}},"type":"object"}after
{"$defs":{"AutomatedBackupPolicy":{"description":"Defines an automated backup policy for a table","properties":{"disabled":{"description":"Optional. If `true`, automated backups are explicitly disabled on this table. This allows users to opt out of default enablement.","type":"boolean"},"frequency":{"description":"How frequently automated backups should occur. The only supported value at this time is 24 hours. An undefined frequency is treated as 24 hours.","format":"google-duration","type":"string"},"keepHotDuration":{"description":"Optional. The amount of time that the automated backups remain hot. If specified, the backups created by this policy are `HOT` backups. If not specified, the backups are `STANDARD` backups. The value must be at least 24 hours and at most 10 days, and can't exceed the policy's `retention_period`. Only SSD instances support `HOT` automated backups.","format":"google-duration","type":"string"},"locations":{"description":"Optional. A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format `projects/{project}/locations/{zone}`. You can set this field only for tables in Enterprise Plus instances.","items":{"type":"string"},"type":"array"},"retentionPeriod":{"description":"Required. How long the automated backups should be retained. Values must be at least 3 days and at most 90 days.","format":"google-duration","type":"string"}},"type":"object"},"BackupInfo":{"description":"Information about a backup.","properties":{"backup":{"description":"Output only. Name of the backup.","readOnly":true,"type":"string"},"endTime":{"description":"Output only. This time that the backup was finished. Row data in the backup will be no newer than this timestamp.","format":"date-time","readOnly":true,"type":"string"},"sourceBackup":{"description":"Output only. Name of the backup from which this backup was copied. If a backup is not created by copying a backup, this field will be empty. Values are of the form: projects//instances//clusters//backups/","readOnly":true,"type":"string"},"sourceTable":{"description":"Output only. Name of the table the backup was created from.","readOnly":true,"type":"string"},"startTime":{"description":"Output only. The time that the backup was started. Row data in the backup will be no older than this timestamp.","format":"date-time","readOnly":true,"type":"string"}},"type":"object"},"ChangeStreamConfig":{"description":"Change stream configuration.","properties":{"retentionPeriod":{"description":"How long the change stream should be retained. Change stream data older than the retention period will not be returned when reading the change stream from the table. Values must be at least 1 day and at most 7 days, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"}},"type":"object"},"ClusterState":{"description":"The state of a table's data in a particular cluster.","properties":{"encryptionInfo":{"description":"Output only. The encryption information for the table in this cluster. If the encryption key protecting this resource is customer managed, then its version can be rotated in Cloud Key Management Service (Cloud KMS). The primary version of the key and its status will be reflected here when changes propagate from Cloud KMS.","items":{"$ref":"#/$defs/EncryptionInfo"},"readOnly":true,"type":"array"},"replicationState":{"description":"Output only. The state of replication for the table in this cluster.","enum":["STATE_NOT_KNOWN","INITIALIZING","PLANNED_MAINTENANCE","UNPLANNED_MAINTENANCE","READY","READY_OPTIMIZING"],"readOnly":true,"type":"string","x-google-enum-descriptions":["The replication state of the table is unknown in this cluster.","The cluster was recently created, and the table must finish copying over pre-existing data from other clusters before it can begin receiving live replication updates and serving Data API requests.","The table is temporarily unable to serve Data API requests from this cluster due to planned internal maintenance.","The table is temporarily unable to serve Data API requests from this cluster due to unplanned or emergency maintenance.","The table can serve Data API requests from this cluster. Depending on replication delay, reads may not immediately reflect the state of the table in other clusters.","The table is fully created and ready for use after a restore, and is being optimized for performance. When optimizations are complete, the table will transition to `READY` state."]}},"type":"object"},"ColumnFamily":{"description":"A set of columns within a table which share a common configuration.","properties":{"gcRule":{"$ref":"#/$defs/GcRule","description":"Garbage collection rule specified as a protobuf. Must serialize to at most 500 bytes. NOTE: Garbage collection executes opportunistically in the background, and so it's possible for reads to return a cell even if it matches the active GC expression for its family."},"stats":{"$ref":"#/$defs/ColumnFamilyStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about column family contents. For statistics over an entire table, see TableStats above.","readOnly":true},"valueType":{"$ref":"#/$defs/Type","description":"The type of data stored in each of this family's cell values, including its full encoding. If omitted, the family only serves raw untyped bytes. For now, only the `Aggregate` type is supported. `Aggregate` can only be set at family creation and is immutable afterwards. This field is mutually exclusive with `sql_type`. If `value_type` is `Aggregate`, written data must be compatible with: * `value_type.input_type` for `AddInput` mutations"}},"type":"object"},"ColumnFamilyStats":{"description":"Approximate statistics related to a single column family within a table. This information may change rapidly, interpreting these values at a point in time may already preset out-of-date information. Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column qualifier in this column family, averaged over all rows containing any column in the column family. e.g. For column family \"family\" in a table with 3 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (3 cells / 1 column in \"family\") * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (8 cells / 2 columns in \"family\") * A row with 3 cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (3 + 8 + 0)/(1 + 2 + 0) = 3.66 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many column qualifiers are present in this column family, averaged over all rows in the table. e.g. For column family \"family\" in a table with 3 rows: * A row with cells in \"family:col\" and \"other:col\" (1 column in \"family\") * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (2 columns in \"family\") * A row with cells in \"other:col\" (0 columns in \"family\", \"family\" not present) would report (1 + 2 + 0)/3 = 1.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"How much space the data in the column family occupies. This is roughly how many bytes would be needed to read the contents of the entire column family (e.g. by streaming all contents out).","format":"int64","type":"string"},"logicalDataHddBytes":{"description":"Output only. The logical data bytes of the column family stored on HDD.","format":"int64","readOnly":true,"type":"string"},"logicalDataSsdBytes":{"description":"Output only. The logical data bytes of the column family stored on SSD.","format":"int64","readOnly":true,"type":"string"}},"type":"object"},"EncryptionInfo":{"description":"Encryption information for a given resource. If this resource is protected with customer managed encryption, the in-use Cloud Key Management Service (Cloud KMS) key version is specified along with its status.","properties":{"encryptionStatus":{"$ref":"#/$defs/Status","description":"Output only. The status of encrypt/decrypt calls on underlying data for this resource. Regardless of status, the existing data is always encrypted at rest.","readOnly":true},"encryptionType":{"description":"Output only. The type of encryption used to protect this resource.","enum":["ENCRYPTION_TYPE_UNSPECIFIED","GOOGLE_DEFAULT_ENCRYPTION","CUSTOMER_MANAGED_ENCRYPTION"],"readOnly":true,"type":"string","x-google-enum-descriptions":["Encryption type was not specified, though data at rest remains encrypted.","The data backing this resource is encrypted at rest with a key that is fully managed by Google. No key version or status will be populated. This is the default state.","The data backing this resource is encrypted at rest with a key that is managed by the customer. The in-use version of the key and its status are populated for CMEK-protected tables. CMEK-protected backups are pinned to the key version that was in use at the time the backup was taken. This key version is populated but its status is not tracked and is reported as `UNKNOWN`."]},"kmsKeyVersion":{"description":"Output only. The version of the Cloud KMS key specified in the parent cluster that is in use for the data underlying this table.","readOnly":true,"type":"string"}},"type":"object"},"GcRule":{"description":"Rule for determining which cells to delete during garbage collection.","properties":{"intersection":{"$ref":"#/$defs/Intersection","description":"Delete cells that would be deleted by every nested rule."},"maxAge":{"description":"Delete cells in a column older than the given age. Values must be at least one millisecond, and will be truncated to microsecond granularity.","format":"google-duration","type":"string"},"maxNumVersions":{"description":"Delete all cells in a column except the most recent N.","format":"int32","type":"integer"},"union":{"$ref":"#/$defs/Union","description":"Delete cells that would be deleted by any nested rule."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregate":{"description":"A value that combines incremental updates into a summarized value. Data is never directly written or read using type `Aggregate`. Writes provide either the `input_type` or `state_type`, and reads always return the `state_type` .","properties":{"hllppUniqueCount":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount","description":"HyperLogLogPlusPlusUniqueCount aggregator."},"inputType":{"$ref":"#/$defs/Type","description":"Type of the inputs that are accumulated by this `Aggregate`. Use `AddInput` mutations to accumulate new inputs."},"max":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMax","description":"Max aggregator."},"min":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateMin","description":"Min aggregator."},"stateType":{"$ref":"#/$defs/Type","description":"Output only. Type that holds the internal accumulator state for the `Aggregate`. This is a function of the `input_type` and `aggregator` chosen.","readOnly":true},"sum":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregateSum","description":"Sum aggregator."}},"type":"object"},"GoogleBigtableAdminV2TypeAggregateHyperLogLogPlusPlusUniqueCount":{"description":"Computes an approximate unique count over the input values. When using raw data as input, be careful to use a consistent encoding. Otherwise the same value encoded differently could count more than once, or two distinct values could count as identical. Input: Any, or omit for Raw State: TBD Special state conversions: `Int64` (the unique count estimate)","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMax":{"description":"Computes the max of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateMin":{"description":"Computes the min of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeAggregateSum":{"description":"Computes the sum of the input values. Allowed input: `Int64` State: same as input","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeArray":{"description":"An ordered list of elements of a given type. Values of type `Array` are stored in `Value.array_value`.","properties":{"elementType":{"$ref":"#/$defs/Type","description":"The type of the elements in the array. This must not be `Array`."}},"type":"object"},"GoogleBigtableAdminV2TypeBool":{"description":"bool Values of type `Bool` are stored in `Value.bool_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBoolEncoding","description":"Specifies the encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBoolEncoding":{"description":"Defines rules used to convert to or from lower level types.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeBytes":{"description":"Bytes Values of type `Bytes` are stored in `Value.bytes_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytesEncodingRaw","description":"Use `Raw` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeBytesEncodingRaw":{"description":"Leaves the value as-is. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{"escapeNulls":{"description":"If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value which only contains the null byte `0x00`, has one more null byte appended.","type":"boolean"}},"type":"object"},"GoogleBigtableAdminV2TypeDate":{"description":"Date Values of type `Date` are stored in `Value.date_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeEnum":{"description":"A protobuf enum type. Values of type `Enum` are stored in `Value.int_value`.","properties":{"enumName":{"description":"The fully qualified name of the protobuf enum message, including package. In the format of \"foo.bar.EnumMessage\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this enum is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeFloat32":{"description":"Float32 Values of type `Float32` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeFloat64":{"description":"Float64 Values of type `Float64` are stored in `Value.float_value`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeGeography":{"description":"A geography type, representing a point or region on Earth. The value is stored in `Value.bytes_value` as Well-Known Binary (WKB) bytes.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32":{"description":"Int32 Values of type `Int32` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingBigEndianBytes":{"description":"Encodes the value as a 4-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putInt()` with `ByteOrder.BIG_ENDIAN`","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt32EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 5 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeInt64":{"description":"Int64 Values of type `Int64` are stored in `Value.int_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64Encoding":{"description":"Rules used to convert to or from lower level types.","properties":{"bigEndianBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes","description":"Use `BigEndianBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes","description":"Use `OrderedCodeBytes` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingBigEndianBytes":{"description":"Encodes the value as an 8-byte big-endian two's complement value. Sorted mode: non-negative values are supported. Distinct mode: all values are supported. Compatible with: - BigQuery `BINARY` encoding - HBase `Bytes.toBytes` - Java `ByteBuffer.putLong()` with `ByteOrder.BIG_ENDIAN`","properties":{"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","deprecated":true,"description":"Deprecated: ignored if set."}},"type":"object"},"GoogleBigtableAdminV2TypeInt64EncodingOrderedCodeBytes":{"description":"Encodes the value in a variable length binary format of up to 10 bytes. Values that are closer to zero use fewer bytes. Sorted mode: all values are supported. Distinct mode: all values are supported.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeMap":{"description":"A mapping of keys to values of a given type. Values of type `Map` are stored in a `Value.array_value` where each entry is another `Value.array_value` with two elements (the key and the value, in that order). Normally encoded Map values won't have repeated keys, however, clients are expected to handle the case in which they do. If the same key appears multiple times, the _last_ value takes precedence.","properties":{"keyType":{"$ref":"#/$defs/Type","description":"The type of a map key. Only `Bytes`, `String`, and `Int64` are allowed as key types."},"valueType":{"$ref":"#/$defs/Type","description":"The type of the values in a map."}},"type":"object"},"GoogleBigtableAdminV2TypeProto":{"description":"A protobuf message type. Values of type `Proto` are stored in `Value.bytes_value`.","properties":{"messageName":{"description":"The fully qualified name of the protobuf message, including package. In the format of \"foo.bar.Message\".","type":"string"},"schemaBundleId":{"description":"The ID of the schema bundle that this proto is defined in.","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeString":{"description":"String Values of type `String` are stored in `Value.string_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"utf8Bytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes","description":"Use `Utf8Bytes` encoding."},"utf8Raw":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStringEncodingUtf8Raw","deprecated":true,"description":"Deprecated: if set, converts to an empty `utf8_bytes`."}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Bytes":{"description":"UTF-8 encoding. Sorted mode: - All values are supported. - Code point order is preserved. Distinct mode: all values are supported. Compatible with: - BigQuery `TEXT` encoding - HBase `Bytes.toBytes` - Java `String#getBytes(StandardCharsets.UTF_8)`","properties":{"nullEscapeChar":{"description":"Single-character escape sequence used to support NULL values. If set, allows NULL values to be encoded as the empty string \"\". The actual empty string, or any value where every character equals `null_escape_char`, has one more `null_escape_char` appended. If `null_escape_char` is set and does not equal the ASCII null character `0x00`, then the encoding will not support sorted mode. .","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStringEncodingUtf8Raw":{"description":"Deprecated: prefer the equivalent `Utf8Bytes`.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStruct":{"description":"A structured data value, consisting of fields which map to dynamically typed values. Values of type `Struct` are stored in `Value.array_value` where entries are in the same order and number as `field_types`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncoding","description":"The encoding to use when converting to or from lower level types."},"fields":{"description":"The names and types of the fields in this struct.","items":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructField"},"type":"array"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"delimitedBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes","description":"Use `DelimitedBytes` encoding."},"orderedCodeBytes":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes","description":"User `OrderedCodeBytes` encoding."},"singleton":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStructEncodingSingleton","description":"Use `Singleton` encoding."}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingDelimitedBytes":{"description":"Fields are encoded independently and concatenated with a configurable `delimiter` in between. A struct with no fields defined is encoded as a single `delimiter`. Sorted mode: - Fields are encoded in sorted mode. - Encoded field values must not contain any bytes <= `delimiter[0]` - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. - This encoding does not support `DESC` field ordering. Distinct mode: - Fields are encoded in distinct mode. - Encoded field values must not contain `delimiter[0]`.","properties":{"delimiter":{"description":"Byte sequence used to delimit concatenated fields. The delimiter must contain at least 1 character and at most 50 characters.","format":"byte","type":"string"}},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingOrderedCodeBytes":{"description":"Fields are encoded independently, then escaped and delimited by appling the following rules in order: - While the last remaining field is `ASC` or `UNSPECIFIED`, and encodes to the empty string \"\", remove it. - In each remaining field, replace all null bytes `0x00` with the fixed byte pair `{0x00, 0xFF}`. - If any remaining field encodes to the empty string \"\", replace it with the fixed byte pair `{0x00, 0x00}`. - Append the fixed byte pair `{0x00, 0x01}` to each remaining field, except for the last remaining field if it is `ASC`. - Bitwise negate all `DESC` fields. - Concatenate the results, or emit the fixed byte pair `{0x00, 0x00}` if there are no remaining fields to concatenate. Examples: ``` - STRUCT() -> \"\\00\\00\" - STRUCT(\"\") -> \"\\00\\00\" - STRUCT(\"\", \"\") -> \"\\00\\00\" - STRUCT(\"\", \"B\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\") -> \"A\" - STRUCT(\"\", \"B\", \"\") -> \"\\00\\00\" + \"\\00\\01\" + \"B\" - STRUCT(\"A\", \"\", \"C\") -> \"A\" + \"\\00\\01\" + \"\\00\\00\" + \"\\00\\01\" + \"C\" ``` Examples for struct with `DESC` fields: ``` - STRUCT(\"\" DESC) -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"\", \"\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\" DESC, \"A\") -> \"\\xFF\\xFF\" + \"\\xFF\\xFE\" + \"A\" - STRUCT(\"A\", \"\" DESC, \"\") -> \"A\" + \"\\00\\01\" + \"\\xFF\\xFF\" + \"\\xFF\\xFE\" - STRUCT(\"\", \"A\" DESC) -> \"\\x00\\x00\" + \"\\x00\\x01\" + \"\\xBE\" + \"\\xFF\\xFE\" ``` Since null bytes are always escaped, this encoding can cause size blowup for encodings like `Int64.BigEndianBytes` that are likely to produce many such bytes. Sorted mode: - Fields are encoded in sorted mode. - All values supported by the field encodings are allowed. - Fields with unset or `UNSPECIFIED` order are treated as `ASC`. - Element-wise order is preserved: `A < B` if `A[0] < B[0]`, or if `A[0] == B[0] && A[1] < B[1]`, etc. Strict prefixes sort first. Distinct mode: - Fields are encoded in distinct mode. - All values supported by the field encodings are allowed.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructEncodingSingleton":{"description":"Uses the encoding of `fields[0].type` as-is. Only valid if `fields.size == 1`. This encoding does not support `DESC` field ordering.","properties":{},"type":"object"},"GoogleBigtableAdminV2TypeStructField":{"description":"A struct field and its type.","properties":{"fieldName":{"description":"The field name (optional). Fields without a `field_name` are considered anonymous and cannot be referenced by name.","type":"string"},"type":{"$ref":"#/$defs/Type","description":"The type of values in this field."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestamp":{"description":"Timestamp Values of type `Timestamp` are stored in `Value.timestamp_value`.","properties":{"encoding":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestampEncoding","description":"The encoding to use when converting to or from lower level types."}},"type":"object"},"GoogleBigtableAdminV2TypeTimestampEncoding":{"description":"Rules used to convert to or from lower level types.","properties":{"unixMicrosInt64":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64Encoding","description":"Encodes the number of microseconds since the Unix epoch using the given `Int64` encoding. Values must be microsecond-aligned. Compatible with: - Java `Instant.truncatedTo()` with `ChronoUnit.MICROS`"}},"type":"object"},"Intersection":{"description":"A GcRule which deletes cells matching all of the given rules.","properties":{"rules":{"description":"Only delete cells which would be deleted by every element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"},"RestoreInfo":{"description":"Information about a table restore.","properties":{"backupInfo":{"$ref":"#/$defs/BackupInfo","description":"Information about the backup used to restore the table. The backup may no longer exist."},"sourceType":{"description":"The type of the restore source.","enum":["RESTORE_SOURCE_TYPE_UNSPECIFIED","BACKUP"],"type":"string","x-google-enum-descriptions":["No restore associated.","A backup was used as the source of the restore."]}},"type":"object"},"Status":{"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","properties":{"code":{"description":"The status code, which should be an enum value of google.rpc.Code.","format":"int32","type":"integer"},"details":{"description":"A list of messages that carry the error details. There is a common set of message types for APIs to use.","items":{"additionalProperties":{"description":"Properties of the object. Contains field @type with type URL."},"type":"object"},"type":"array"},"message":{"description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.","type":"string"}},"type":"object"},"Table":{"description":"A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.","properties":{"automatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"If specified, automated backups are enabled for this table. Otherwise, automated backups are disabled."},"changeStreamConfig":{"$ref":"#/$defs/ChangeStreamConfig","description":"If specified, enable the change stream on this table. Otherwise, the change stream is disabled and the change stream is not retained."},"clusterStates":{"additionalProperties":{"$ref":"#/$defs/ClusterState"},"description":"Output only. Map from cluster ID to per-cluster table state. If it could not be determined whether or not the table has data in a particular cluster (for example, if its zone is unavailable), then there will be an entry for the cluster with UNKNOWN `replication_status`. Views: `REPLICATION_VIEW`, `ENCRYPTION_VIEW`, `FULL`","readOnly":true,"type":"object"},"columnFamilies":{"additionalProperties":{"$ref":"#/$defs/ColumnFamily"},"description":"The column families configured for this table, mapped by column family ID. Views: `SCHEMA_VIEW`, `STATS_VIEW`, `FULL`","type":"object"},"deletionProtection":{"description":"Set to true to make the table protected against data loss. i.e. deleting the following resources through Admin APIs are prohibited: * The table. * The column families in the table. * The instance containing the table. Note one can still delete the data stored in the table through Data APIs.","type":"boolean"},"effectiveAutomatedBackupPolicy":{"$ref":"#/$defs/AutomatedBackupPolicy","description":"Output only. The effective automated backup policy applied to the table. This represents the policy actually in effect, which may be a system-default policy if the user has not explicitly configured one. Views: `SCHEMA_VIEW`, `FULL`.","readOnly":true},"granularity":{"description":"Immutable. The granularity at which timestamps are stored in this table. Timestamps not matching the granularity will be rejected. If unspecified at creation time, the value will be set to `MILLIS`. Views: `SCHEMA_VIEW`, `FULL`.","enum":["TIMESTAMP_GRANULARITY_UNSPECIFIED","MILLIS","MICROS"],"type":"string","x-google-enum-descriptions":["The user did not specify a granularity. Should not be returned. When specified during table creation, MILLIS will be used.","The table keeps data versioned at a granularity of 1ms.","The table keeps data versioned at a granularity of 1us."],"x-google-immutable":true},"name":{"description":"The unique name of the table. Values are of the form `projects/{project}/instances/{instance}/tables/_a-zA-Z0-9*`. Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `STATS_VIEW`, `FULL`","type":"string"},"restoreInfo":{"$ref":"#/$defs/RestoreInfo","description":"Output only. If this table was restored from another data source (e.g. a backup), this field will be populated with information about the restore.","readOnly":true},"rowKeySchema":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"The row key schema for this table. The schema is used to decode the raw row key bytes into a structured format. The order of field declarations in this schema is important, as it reflects how the raw row key bytes are structured. Currently, this only affects how the key is read via a GoogleSQL query from the ExecuteQuery API. For a SQL query, the _key column is still read as raw bytes. But queries can reference the key fields by name, which will be decoded from _key using provided type and encoding. Queries that reference key fields will fail if they encounter an invalid row key. For example, if _key = \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" with the following schema: { fields { field_name: \"id\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"date\" type { string { encoding: utf8_bytes {} } } } fields { field_name: \"product_code\" type { int64 { encoding: big_endian_bytes {} } } } encoding { delimited_bytes { delimiter: \"#\" } } } The decoded key parts would be: id = \"some_id\", date = \"2024-04-30\", product_code = 1245427 The query \"SELECT _key, product_code FROM table\" will return two columns: /------------------------------------------------------\\ | _key | product_code | | --------------------------------------|--------------| | \"some_id#2024-04-30#\\x00\\x13\\x00\\xf3\" | 1245427 | \\------------------------------------------------------/ The schema has the following invariants: (1) The decoded field values are order-preserved. For read, the field values will be decoded in sorted mode from the raw bytes. (2) Every field in the schema must specify a non-empty name. (3) Every field must specify a type with an associated encoding. The type is limited to scalar types only: Array, Map, Aggregate, and Struct are not allowed. (4) The field names must not collide with existing column family names and reserved keywords \"_key\" and \"_timestamp\". The following update operations are allowed for row_key_schema: - Update from an empty schema to a new schema. - Remove the existing schema. This operation requires setting the `ignore_warnings` flag to `true`, since it might be a backward incompatible change. Without the flag, the update request will fail with an INVALID_ARGUMENT error. Any other row key schema update operation (e.g. update existing schema columns names or types) is currently unsupported."},"stats":{"$ref":"#/$defs/TableStats","description":"Output only. Only available with STATS_VIEW, this includes summary statistics about the entire table contents. For statistics about a specific column family, see ColumnFamilyStats in the mapped ColumnFamily collection above.","readOnly":true},"tieredStorageConfig":{"$ref":"#/$defs/TieredStorageConfig","description":"Rules to specify what data is stored in each storage tier. Different tiers store data differently, providing different trade-offs between cost and performance. Different parts of a table can be stored separately on different tiers. If a config is specified, tiered storage is enabled for this table. Otherwise, tiered storage is disabled. Only SSD instances can configure tiered storage."}},"type":"object"},"TableStats":{"description":"Approximate statistics related to a table. These statistics are calculated infrequently, while simultaneously, data in the table can change rapidly. Thus the values reported here (e.g. row count) are very likely out-of date, even the instant they are received in this API. Thus, only treat these values as approximate. IMPORTANT: Everything below is approximate, unless otherwise specified.","properties":{"averageCellsPerColumn":{"description":"How many cells are present per column (column family, column qualifier) combinations, averaged over all columns in all rows in the table. e.g. A table with 2 rows: * A row with 3 cells in \"family:col\" and 1 cell in \"other:col\" (4 cells / 2 columns) * A row with 1 cell in \"family:col\", 7 cells in \"family:other_col\", and 7 cells in \"other:data\" (15 cells / 3 columns) would report (4 + 15)/(2 + 3) = 3.8 in this field.","format":"double","type":"number"},"averageColumnsPerRow":{"description":"How many (column family, column qualifier) combinations are present per row in the table, averaged over all rows in the table. e.g. A table with 2 rows: * A row with cells in \"family:col\" and \"other:col\" (2 distinct columns) * A row with cells in \"family:col\", \"family:other_col\", and \"other:data\" (3 distinct columns) would report (2 + 3)/2 = 2.5 in this field.","format":"double","type":"number"},"logicalDataBytes":{"description":"This is roughly how many bytes would be needed to read the entire table (e.g. by streaming all contents out).","format":"int64","type":"string"},"rowCount":{"description":"How many rows are in the table.","format":"int64","type":"string"}},"type":"object"},"TieredStorageConfig":{"description":"Config for tiered storage. A valid config must have a valid TieredStorageRule. Otherwise the whole TieredStorageConfig must be unset. By default all data is stored in the SSD tier (only SSD instances can configure tiered storage).","properties":{"infrequentAccess":{"$ref":"#/$defs/TieredStorageRule","description":"Rule to specify what data is stored in the infrequent access(IA) tier. The IA tier allows storing more data per node with reduced performance."}},"type":"object"},"TieredStorageRule":{"description":"Rule to specify what data is stored in a storage tier.","properties":{"includeIfOlderThan":{"description":"Include cells older than the given age. For the infrequent access tier, this value must be at least 30 days.","format":"google-duration","type":"string"}},"type":"object"},"Type":{"description":"`Type` represents the type of data that is written to, read from, or stored in Bigtable. It is heavily based on the GoogleSQL standard to help maintain familiarity and consistency across products and features. For compatibility with Bigtable's existing untyped APIs, each `Type` includes an `Encoding` which describes how to convert to or from the underlying data. Each encoding can operate in one of two modes: - Sorted: In this mode, Bigtable guarantees that `Encode(X) <= Encode(Y)` if and only if `X <= Y`. This is useful anywhere sort order is important, for example when encoding keys. - Distinct: In this mode, Bigtable guarantees that if `X != Y` then `Encode(X) != Encode(Y)`. However, the converse is not guaranteed. For example, both `{'foo': '1', 'bar': '2'}` and `{'bar': '2', 'foo': '1'}` are valid encodings of the same JSON value. The API clearly documents which mode is used wherever an encoding can be configured. Each encoding also documents which values are supported in which modes. For example, when encoding INT64 as a numeric STRING, negative numbers cannot be encoded in sorted mode. This is because `INT64(1) > INT64(-1)`, but `STRING(\"-00001\") > STRING(\"00001\")`.","properties":{"aggregateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeAggregate","description":"Aggregate"},"arrayType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeArray","description":"Array"},"boolType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBool","description":"Bool"},"bytesType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeBytes","description":"Bytes"},"dateType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeDate","description":"Date"},"enumType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeEnum","description":"Enum"},"float32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat32","description":"Float32"},"float64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeFloat64","description":"Float64"},"geographyType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeGeography","description":"Geography"},"int32Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt32","description":"Int32"},"int64Type":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeInt64","description":"Int64"},"mapType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeMap","description":"Map"},"protoType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeProto","description":"Proto"},"stringType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeString","description":"String"},"structType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeStruct","description":"Struct"},"timestampType":{"$ref":"#/$defs/GoogleBigtableAdminV2TypeTimestamp","description":"Timestamp"}},"type":"object"},"Union":{"description":"A GcRule which deletes cells matching any of the given rules.","properties":{"rules":{"description":"Delete cells which would be deleted by any element of `rules`.","items":{"$ref":"#/$defs/GcRule"},"type":"array"}},"type":"object"}},"descri…