Socket
Socket
Sign inDemoInstall

@google-cloud/firestore

Package Overview
Dependencies
Maintainers
1
Versions
145
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@google-cloud/firestore - npm Package Compare versions

Comparing version 7.9.0 to 7.10.0

build/src/telemetry/disabled-trace-util.d.ts

2

build/protos/admin_v1.json

@@ -1,1 +0,1 @@

{"nested":{"google":{"nested":{"firestore":{"nested":{"admin":{"nested":{"v1":{"options":{"csharp_namespace":"Google.Cloud.Firestore.Admin.V1","go_package":"cloud.google.com/go/firestore/apiv1/admin/adminpb;adminpb","java_multiple_files":true,"java_outer_classname":"LocationProto","java_package":"com.google.firestore.admin.v1","objc_class_prefix":"GCFS","php_namespace":"Google\\Cloud\\Firestore\\Admin\\V1","ruby_package":"Google::Cloud::Firestore::Admin::V1","(google.api.resource_definition).type":"firestore.googleapis.com/CollectionGroup","(google.api.resource_definition).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}"},"nested":{"Backup":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Backup","(google.api.resource).pattern":"projects/{project}/locations/{location}/backups/{backup}"},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"database":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"databaseUid":{"type":"string","id":7,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"snapshotTime":{"type":"google.protobuf.Timestamp","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"expireTime":{"type":"google.protobuf.Timestamp","id":4,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"stats":{"type":"Stats","id":6,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"state":{"type":"State","id":8,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}},"nested":{"Stats":{"fields":{"sizeBytes":{"type":"int64","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"documentCount":{"type":"int64","id":2,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"indexCount":{"type":"int64","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}}},"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"READY":2,"NOT_AVAILABLE":3}}}},"Database":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Database","(google.api.resource).pattern":"projects/{project}/databases/{database}","(google.api.resource).style":"DECLARATIVE_FRIENDLY"},"fields":{"name":{"type":"string","id":1},"uid":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"createTime":{"type":"google.protobuf.Timestamp","id":5,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"updateTime":{"type":"google.protobuf.Timestamp","id":6,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"locationId":{"type":"string","id":9},"type":{"type":"DatabaseType","id":10},"concurrencyMode":{"type":"ConcurrencyMode","id":15},"versionRetentionPeriod":{"type":"google.protobuf.Duration","id":17,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"earliestVersionTime":{"type":"google.protobuf.Timestamp","id":18,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"pointInTimeRecoveryEnablement":{"type":"PointInTimeRecoveryEnablement","id":21},"appEngineIntegrationMode":{"type":"AppEngineIntegrationMode","id":19},"keyPrefix":{"type":"string","id":20,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"deleteProtectionState":{"type":"DeleteProtectionState","id":22},"etag":{"type":"string","id":99}},"nested":{"DatabaseType":{"values":{"DATABASE_TYPE_UNSPECIFIED":0,"FIRESTORE_NATIVE":1,"DATASTORE_MODE":2}},"ConcurrencyMode":{"values":{"CONCURRENCY_MODE_UNSPECIFIED":0,"OPTIMISTIC":1,"PESSIMISTIC":2,"OPTIMISTIC_WITH_ENTITY_GROUPS":3}},"PointInTimeRecoveryEnablement":{"values":{"POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED":0,"POINT_IN_TIME_RECOVERY_ENABLED":1,"POINT_IN_TIME_RECOVERY_DISABLED":2}},"AppEngineIntegrationMode":{"values":{"APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED":0,"ENABLED":1,"DISABLED":2}},"DeleteProtectionState":{"values":{"DELETE_PROTECTION_STATE_UNSPECIFIED":0,"DELETE_PROTECTION_DISABLED":1,"DELETE_PROTECTION_ENABLED":2}}}},"Field":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Field","(google.api.resource).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}/fields/{field}"},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"indexConfig":{"type":"IndexConfig","id":2},"ttlConfig":{"type":"TtlConfig","id":3}},"nested":{"IndexConfig":{"fields":{"indexes":{"rule":"repeated","type":"Index","id":1},"usesAncestorConfig":{"type":"bool","id":2},"ancestorField":{"type":"string","id":3},"reverting":{"type":"bool","id":4}}},"TtlConfig":{"fields":{"state":{"type":"State","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}},"nested":{"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"ACTIVE":2,"NEEDS_REPAIR":3}}}}}},"Index":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Index","(google.api.resource).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}/indexes/{index}"},"fields":{"name":{"type":"string","id":1},"queryScope":{"type":"QueryScope","id":2},"apiScope":{"type":"ApiScope","id":5},"fields":{"rule":"repeated","type":"IndexField","id":3},"state":{"type":"State","id":4}},"nested":{"QueryScope":{"values":{"QUERY_SCOPE_UNSPECIFIED":0,"COLLECTION":1,"COLLECTION_GROUP":2,"COLLECTION_RECURSIVE":3}},"ApiScope":{"values":{"ANY_API":0,"DATASTORE_MODE_API":1}},"IndexField":{"oneofs":{"valueMode":{"oneof":["order","arrayConfig","vectorConfig"]}},"fields":{"fieldPath":{"type":"string","id":1},"order":{"type":"Order","id":2},"arrayConfig":{"type":"ArrayConfig","id":3},"vectorConfig":{"type":"VectorConfig","id":4}},"nested":{"Order":{"values":{"ORDER_UNSPECIFIED":0,"ASCENDING":1,"DESCENDING":2}},"ArrayConfig":{"values":{"ARRAY_CONFIG_UNSPECIFIED":0,"CONTAINS":1}},"VectorConfig":{"oneofs":{"type":{"oneof":["flat"]}},"fields":{"dimension":{"type":"int32","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"flat":{"type":"FlatIndex","id":2}},"nested":{"FlatIndex":{"fields":{}}}}}},"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"READY":2,"NEEDS_REPAIR":3}}}},"FirestoreAdmin":{"options":{"(google.api.default_host)":"firestore.googleapis.com","(google.api.oauth_scopes)":"https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore"},"methods":{"CreateIndex":{"requestType":"CreateIndexRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","(google.api.http).body":"index","(google.api.method_signature)":"parent,index","(google.longrunning.operation_info).response_type":"Index","(google.longrunning.operation_info).metadata_type":"IndexOperationMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","body":"index"}},{"(google.api.method_signature)":"parent,index"},{"(google.longrunning.operation_info)":{"response_type":"Index","metadata_type":"IndexOperationMetadata"}}]},"ListIndexes":{"requestType":"ListIndexesRequest","responseType":"ListIndexesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes"}},{"(google.api.method_signature)":"parent"}]},"GetIndex":{"requestType":"GetIndexRequest","responseType":"Index","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}"}},{"(google.api.method_signature)":"name"}]},"DeleteIndex":{"requestType":"DeleteIndexRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}"}},{"(google.api.method_signature)":"name"}]},"GetField":{"requestType":"GetFieldRequest","responseType":"Field","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/collectionGroups/*/fields/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/collectionGroups/*/fields/*}"}},{"(google.api.method_signature)":"name"}]},"UpdateField":{"requestType":"UpdateFieldRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).patch":"/v1/{field.name=projects/*/databases/*/collectionGroups/*/fields/*}","(google.api.http).body":"field","(google.api.method_signature)":"field","(google.longrunning.operation_info).response_type":"Field","(google.longrunning.operation_info).metadata_type":"FieldOperationMetadata"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{field.name=projects/*/databases/*/collectionGroups/*/fields/*}","body":"field"}},{"(google.api.method_signature)":"field"},{"(google.longrunning.operation_info)":{"response_type":"Field","metadata_type":"FieldOperationMetadata"}}]},"ListFields":{"requestType":"ListFieldsRequest","responseType":"ListFieldsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/fields","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/fields"}},{"(google.api.method_signature)":"parent"}]},"ExportDocuments":{"requestType":"ExportDocumentsRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{name=projects/*/databases/*}:exportDocuments","(google.api.http).body":"*","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"ExportDocumentsResponse","(google.longrunning.operation_info).metadata_type":"ExportDocumentsMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=projects/*/databases/*}:exportDocuments","body":"*"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"ExportDocumentsResponse","metadata_type":"ExportDocumentsMetadata"}}]},"ImportDocuments":{"requestType":"ImportDocumentsRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{name=projects/*/databases/*}:importDocuments","(google.api.http).body":"*","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"google.protobuf.Empty","(google.longrunning.operation_info).metadata_type":"ImportDocumentsMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=projects/*/databases/*}:importDocuments","body":"*"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"google.protobuf.Empty","metadata_type":"ImportDocumentsMetadata"}}]},"CreateDatabase":{"requestType":"CreateDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*}/databases","(google.api.http).body":"database","(google.api.method_signature)":"parent,database,database_id","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"CreateDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*}/databases","body":"database"}},{"(google.api.method_signature)":"parent,database,database_id"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"CreateDatabaseMetadata"}}]},"GetDatabase":{"requestType":"GetDatabaseRequest","responseType":"Database","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*}"}},{"(google.api.method_signature)":"name"}]},"ListDatabases":{"requestType":"ListDatabasesRequest","responseType":"ListDatabasesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*}/databases","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*}/databases"}},{"(google.api.method_signature)":"parent"}]},"UpdateDatabase":{"requestType":"UpdateDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).patch":"/v1/{database.name=projects/*/databases/*}","(google.api.http).body":"database","(google.api.method_signature)":"database,update_mask","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"UpdateDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{database.name=projects/*/databases/*}","body":"database"}},{"(google.api.method_signature)":"database,update_mask"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"UpdateDatabaseMetadata"}}]},"DeleteDatabase":{"requestType":"DeleteDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*}","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"DeleteDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*}"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"DeleteDatabaseMetadata"}}]},"GetBackup":{"requestType":"GetBackupRequest","responseType":"Backup","options":{"(google.api.http).get":"/v1/{name=projects/*/locations/*/backups/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/locations/*/backups/*}"}},{"(google.api.method_signature)":"name"}]},"ListBackups":{"requestType":"ListBackupsRequest","responseType":"ListBackupsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/locations/*}/backups","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/locations/*}/backups"}},{"(google.api.method_signature)":"parent"}]},"DeleteBackup":{"requestType":"DeleteBackupRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/locations/*/backups/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/locations/*/backups/*}"}},{"(google.api.method_signature)":"name"}]},"RestoreDatabase":{"requestType":"RestoreDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*}/databases:restore","(google.api.http).body":"*","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"RestoreDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*}/databases:restore","body":"*"}},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"RestoreDatabaseMetadata"}}]},"CreateBackupSchedule":{"requestType":"CreateBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*}/backupSchedules","(google.api.http).body":"backup_schedule","(google.api.method_signature)":"parent,backup_schedule"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*}/backupSchedules","body":"backup_schedule"}},{"(google.api.method_signature)":"parent,backup_schedule"}]},"GetBackupSchedule":{"requestType":"GetBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/backupSchedules/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/backupSchedules/*}"}},{"(google.api.method_signature)":"name"}]},"ListBackupSchedules":{"requestType":"ListBackupSchedulesRequest","responseType":"ListBackupSchedulesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*}/backupSchedules","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*}/backupSchedules"}},{"(google.api.method_signature)":"parent"}]},"UpdateBackupSchedule":{"requestType":"UpdateBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).patch":"/v1/{backup_schedule.name=projects/*/databases/*/backupSchedules/*}","(google.api.http).body":"backup_schedule","(google.api.method_signature)":"backup_schedule,update_mask"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{backup_schedule.name=projects/*/databases/*/backupSchedules/*}","body":"backup_schedule"}},{"(google.api.method_signature)":"backup_schedule,update_mask"}]},"DeleteBackupSchedule":{"requestType":"DeleteBackupScheduleRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/backupSchedules/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/backupSchedules/*}"}},{"(google.api.method_signature)":"name"}]}}},"ListDatabasesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}}}},"CreateDatabaseRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}},"database":{"type":"Database","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"databaseId":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"CreateDatabaseMetadata":{"fields":{}},"ListDatabasesResponse":{"fields":{"databases":{"rule":"repeated","type":"Database","id":1},"unreachable":{"rule":"repeated","type":"string","id":3}}},"GetDatabaseRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}}}},"UpdateDatabaseRequest":{"fields":{"database":{"type":"Database","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"UpdateDatabaseMetadata":{"fields":{}},"DeleteDatabaseRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"etag":{"type":"string","id":3}}},"DeleteDatabaseMetadata":{"fields":{}},"CreateBackupScheduleRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"backupSchedule":{"type":"BackupSchedule","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"GetBackupScheduleRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/BackupSchedule"}}}},"UpdateBackupScheduleRequest":{"fields":{"backupSchedule":{"type":"BackupSchedule","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"ListBackupSchedulesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}}}},"ListBackupSchedulesResponse":{"fields":{"backupSchedules":{"rule":"repeated","type":"BackupSchedule","id":1}}},"DeleteBackupScheduleRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/BackupSchedule"}}}},"CreateIndexRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"index":{"type":"Index","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"ListIndexesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"filter":{"type":"string","id":2},"pageSize":{"type":"int32","id":3},"pageToken":{"type":"string","id":4}}},"ListIndexesResponse":{"fields":{"indexes":{"rule":"repeated","type":"Index","id":1},"nextPageToken":{"type":"string","id":2}}},"GetIndexRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Index"}}}},"DeleteIndexRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Index"}}}},"UpdateFieldRequest":{"fields":{"field":{"type":"Field","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"GetFieldRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Field"}}}},"ListFieldsRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"filter":{"type":"string","id":2},"pageSize":{"type":"int32","id":3},"pageToken":{"type":"string","id":4}}},"ListFieldsResponse":{"fields":{"fields":{"rule":"repeated","type":"Field","id":1},"nextPageToken":{"type":"string","id":2}}},"ExportDocumentsRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"collectionIds":{"rule":"repeated","type":"string","id":2},"outputUriPrefix":{"type":"string","id":3},"namespaceIds":{"rule":"repeated","type":"string","id":4},"snapshotTime":{"type":"google.protobuf.Timestamp","id":5}}},"ImportDocumentsRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"collectionIds":{"rule":"repeated","type":"string","id":2},"inputUriPrefix":{"type":"string","id":3},"namespaceIds":{"rule":"repeated","type":"string","id":4}}},"GetBackupRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"ListBackupsRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Location"}}}},"ListBackupsResponse":{"fields":{"backups":{"rule":"repeated","type":"Backup","id":1},"unreachable":{"rule":"repeated","type":"string","id":3}}},"DeleteBackupRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"RestoreDatabaseRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}},"databaseId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"backup":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"IndexOperationMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"index":{"type":"string","id":3},"state":{"type":"OperationState","id":4},"progressDocuments":{"type":"Progress","id":5},"progressBytes":{"type":"Progress","id":6}}},"FieldOperationMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"field":{"type":"string","id":3},"indexConfigDeltas":{"rule":"repeated","type":"IndexConfigDelta","id":4},"state":{"type":"OperationState","id":5},"progressDocuments":{"type":"Progress","id":6},"progressBytes":{"type":"Progress","id":7},"ttlConfigDelta":{"type":"TtlConfigDelta","id":8}},"nested":{"IndexConfigDelta":{"fields":{"changeType":{"type":"ChangeType","id":1},"index":{"type":"Index","id":2}},"nested":{"ChangeType":{"values":{"CHANGE_TYPE_UNSPECIFIED":0,"ADD":1,"REMOVE":2}}}},"TtlConfigDelta":{"fields":{"changeType":{"type":"ChangeType","id":1}},"nested":{"ChangeType":{"values":{"CHANGE_TYPE_UNSPECIFIED":0,"ADD":1,"REMOVE":2}}}}}},"ExportDocumentsMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"progressDocuments":{"type":"Progress","id":4},"progressBytes":{"type":"Progress","id":5},"collectionIds":{"rule":"repeated","type":"string","id":6},"outputUriPrefix":{"type":"string","id":7},"namespaceIds":{"rule":"repeated","type":"string","id":8},"snapshotTime":{"type":"google.protobuf.Timestamp","id":9}}},"ImportDocumentsMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"progressDocuments":{"type":"Progress","id":4},"progressBytes":{"type":"Progress","id":5},"collectionIds":{"rule":"repeated","type":"string","id":6},"inputUriPrefix":{"type":"string","id":7},"namespaceIds":{"rule":"repeated","type":"string","id":8}}},"ExportDocumentsResponse":{"fields":{"outputUriPrefix":{"type":"string","id":1}}},"RestoreDatabaseMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"database":{"type":"string","id":4,"options":{"(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"backup":{"type":"string","id":5,"options":{"(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}},"progressPercentage":{"type":"Progress","id":8}}},"Progress":{"fields":{"estimatedWork":{"type":"int64","id":1},"completedWork":{"type":"int64","id":2}}},"OperationState":{"values":{"OPERATION_STATE_UNSPECIFIED":0,"INITIALIZING":1,"PROCESSING":2,"CANCELLING":3,"FINALIZING":4,"SUCCESSFUL":5,"FAILED":6,"CANCELLED":7}},"BackupSchedule":{"options":{"(google.api.resource).type":"firestore.googleapis.com/BackupSchedule","(google.api.resource).pattern":"projects/{project}/databases/{database}/backupSchedules/{backup_schedule}"},"oneofs":{"recurrence":{"oneof":["dailyRecurrence","weeklyRecurrence"]}},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"createTime":{"type":"google.protobuf.Timestamp","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"updateTime":{"type":"google.protobuf.Timestamp","id":10,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"retention":{"type":"google.protobuf.Duration","id":6},"dailyRecurrence":{"type":"DailyRecurrence","id":7},"weeklyRecurrence":{"type":"WeeklyRecurrence","id":8}}},"DailyRecurrence":{"fields":{}},"WeeklyRecurrence":{"fields":{"day":{"type":"google.type.DayOfWeek","id":2}}},"LocationMetadata":{"fields":{}}}}}}}},"api":{"options":{"go_package":"google.golang.org/genproto/googleapis/api;api","java_multiple_files":true,"java_outer_classname":"LaunchStageProto","java_package":"com.google.api","objc_class_prefix":"GAPI","cc_enable_arenas":true},"nested":{"fieldBehavior":{"rule":"repeated","type":"google.api.FieldBehavior","id":1052,"extend":"google.protobuf.FieldOptions","options":{"packed":false}},"FieldBehavior":{"values":{"FIELD_BEHAVIOR_UNSPECIFIED":0,"OPTIONAL":1,"REQUIRED":2,"OUTPUT_ONLY":3,"INPUT_ONLY":4,"IMMUTABLE":5,"UNORDERED_LIST":6,"NON_EMPTY_DEFAULT":7,"IDENTIFIER":8}},"resourceReference":{"type":"google.api.ResourceReference","id":1055,"extend":"google.protobuf.FieldOptions"},"resourceDefinition":{"rule":"repeated","type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.FileOptions"},"resource":{"type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.MessageOptions"},"ResourceDescriptor":{"fields":{"type":{"type":"string","id":1},"pattern":{"rule":"repeated","type":"string","id":2},"nameField":{"type":"string","id":3},"history":{"type":"History","id":4},"plural":{"type":"string","id":5},"singular":{"type":"string","id":6},"style":{"rule":"repeated","type":"Style","id":10}},"nested":{"History":{"values":{"HISTORY_UNSPECIFIED":0,"ORIGINALLY_SINGLE_PATTERN":1,"FUTURE_MULTI_PATTERN":2}},"Style":{"values":{"STYLE_UNSPECIFIED":0,"DECLARATIVE_FRIENDLY":1}}}},"ResourceReference":{"fields":{"type":{"type":"string","id":1},"childType":{"type":"string","id":2}}},"http":{"type":"HttpRule","id":72295728,"extend":"google.protobuf.MethodOptions"},"Http":{"fields":{"rules":{"rule":"repeated","type":"HttpRule","id":1},"fullyDecodeReservedExpansion":{"type":"bool","id":2}}},"HttpRule":{"oneofs":{"pattern":{"oneof":["get","put","post","delete","patch","custom"]}},"fields":{"selector":{"type":"string","id":1},"get":{"type":"string","id":2},"put":{"type":"string","id":3},"post":{"type":"string","id":4},"delete":{"type":"string","id":5},"patch":{"type":"string","id":6},"custom":{"type":"CustomHttpPattern","id":8},"body":{"type":"string","id":7},"responseBody":{"type":"string","id":12},"additionalBindings":{"rule":"repeated","type":"HttpRule","id":11}}},"CustomHttpPattern":{"fields":{"kind":{"type":"string","id":1},"path":{"type":"string","id":2}}},"methodSignature":{"rule":"repeated","type":"string","id":1051,"extend":"google.protobuf.MethodOptions"},"defaultHost":{"type":"string","id":1049,"extend":"google.protobuf.ServiceOptions"},"oauthScopes":{"type":"string","id":1050,"extend":"google.protobuf.ServiceOptions"},"apiVersion":{"type":"string","id":525000001,"extend":"google.protobuf.ServiceOptions"},"CommonLanguageSettings":{"fields":{"referenceDocsUri":{"type":"string","id":1,"options":{"deprecated":true}},"destinations":{"rule":"repeated","type":"ClientLibraryDestination","id":2}}},"ClientLibrarySettings":{"fields":{"version":{"type":"string","id":1},"launchStage":{"type":"LaunchStage","id":2},"restNumericEnums":{"type":"bool","id":3},"javaSettings":{"type":"JavaSettings","id":21},"cppSettings":{"type":"CppSettings","id":22},"phpSettings":{"type":"PhpSettings","id":23},"pythonSettings":{"type":"PythonSettings","id":24},"nodeSettings":{"type":"NodeSettings","id":25},"dotnetSettings":{"type":"DotnetSettings","id":26},"rubySettings":{"type":"RubySettings","id":27},"goSettings":{"type":"GoSettings","id":28}}},"Publishing":{"fields":{"methodSettings":{"rule":"repeated","type":"MethodSettings","id":2},"newIssueUri":{"type":"string","id":101},"documentationUri":{"type":"string","id":102},"apiShortName":{"type":"string","id":103},"githubLabel":{"type":"string","id":104},"codeownerGithubTeams":{"rule":"repeated","type":"string","id":105},"docTagPrefix":{"type":"string","id":106},"organization":{"type":"ClientLibraryOrganization","id":107},"librarySettings":{"rule":"repeated","type":"ClientLibrarySettings","id":109},"protoReferenceDocumentationUri":{"type":"string","id":110},"restReferenceDocumentationUri":{"type":"string","id":111}}},"JavaSettings":{"fields":{"libraryPackage":{"type":"string","id":1},"serviceClassNames":{"keyType":"string","type":"string","id":2},"common":{"type":"CommonLanguageSettings","id":3}}},"CppSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PhpSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PythonSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"NodeSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"DotnetSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1},"renamedServices":{"keyType":"string","type":"string","id":2},"renamedResources":{"keyType":"string","type":"string","id":3},"ignoredResources":{"rule":"repeated","type":"string","id":4},"forcedNamespaceAliases":{"rule":"repeated","type":"string","id":5},"handwrittenSignatures":{"rule":"repeated","type":"string","id":6}}},"RubySettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"GoSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"MethodSettings":{"fields":{"selector":{"type":"string","id":1},"longRunning":{"type":"LongRunning","id":2},"autoPopulatedFields":{"rule":"repeated","type":"string","id":3}},"nested":{"LongRunning":{"fields":{"initialPollDelay":{"type":"google.protobuf.Duration","id":1},"pollDelayMultiplier":{"type":"float","id":2},"maxPollDelay":{"type":"google.protobuf.Duration","id":3},"totalPollTimeout":{"type":"google.protobuf.Duration","id":4}}}}},"ClientLibraryOrganization":{"values":{"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":0,"CLOUD":1,"ADS":2,"PHOTOS":3,"STREET_VIEW":4,"SHOPPING":5,"GEO":6,"GENERATIVE_AI":7}},"ClientLibraryDestination":{"values":{"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":0,"GITHUB":10,"PACKAGE_MANAGER":20}},"LaunchStage":{"values":{"LAUNCH_STAGE_UNSPECIFIED":0,"UNIMPLEMENTED":6,"PRELAUNCH":7,"EARLY_ACCESS":1,"ALPHA":2,"BETA":3,"GA":4,"DEPRECATED":5}}}},"protobuf":{"options":{"go_package":"google.golang.org/protobuf/types/descriptorpb","java_package":"com.google.protobuf","java_outer_classname":"DescriptorProtos","csharp_namespace":"Google.Protobuf.Reflection","objc_class_prefix":"GPB","cc_enable_arenas":true,"optimize_for":"SPEED"},"nested":{"FileDescriptorSet":{"fields":{"file":{"rule":"repeated","type":"FileDescriptorProto","id":1}}},"Edition":{"values":{"EDITION_UNKNOWN":0,"EDITION_PROTO2":998,"EDITION_PROTO3":999,"EDITION_2023":1e3,"EDITION_2024":1001,"EDITION_1_TEST_ONLY":1,"EDITION_2_TEST_ONLY":2,"EDITION_99997_TEST_ONLY":99997,"EDITION_99998_TEST_ONLY":99998,"EDITION_99999_TEST_ONLY":99999,"EDITION_MAX":2147483647}},"FileDescriptorProto":{"fields":{"name":{"type":"string","id":1},"package":{"type":"string","id":2},"dependency":{"rule":"repeated","type":"string","id":3},"publicDependency":{"rule":"repeated","type":"int32","id":10,"options":{"packed":false}},"weakDependency":{"rule":"repeated","type":"int32","id":11,"options":{"packed":false}},"messageType":{"rule":"repeated","type":"DescriptorProto","id":4},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":5},"service":{"rule":"repeated","type":"ServiceDescriptorProto","id":6},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":7},"options":{"type":"FileOptions","id":8},"sourceCodeInfo":{"type":"SourceCodeInfo","id":9},"syntax":{"type":"string","id":12},"edition":{"type":"Edition","id":14}}},"DescriptorProto":{"fields":{"name":{"type":"string","id":1},"field":{"rule":"repeated","type":"FieldDescriptorProto","id":2},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":6},"nestedType":{"rule":"repeated","type":"DescriptorProto","id":3},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":4},"extensionRange":{"rule":"repeated","type":"ExtensionRange","id":5},"oneofDecl":{"rule":"repeated","type":"OneofDescriptorProto","id":8},"options":{"type":"MessageOptions","id":7},"reservedRange":{"rule":"repeated","type":"ReservedRange","id":9},"reservedName":{"rule":"repeated","type":"string","id":10}},"nested":{"ExtensionRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2},"options":{"type":"ExtensionRangeOptions","id":3}}},"ReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"ExtensionRangeOptions":{"fields":{"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999},"declaration":{"rule":"repeated","type":"Declaration","id":2,"options":{"retention":"RETENTION_SOURCE"}},"features":{"type":"FeatureSet","id":50},"verification":{"type":"VerificationState","id":3,"options":{"default":"UNVERIFIED","retention":"RETENTION_SOURCE"}}},"extensions":[[1e3,536870911]],"nested":{"Declaration":{"fields":{"number":{"type":"int32","id":1},"fullName":{"type":"string","id":2},"type":{"type":"string","id":3},"reserved":{"type":"bool","id":5},"repeated":{"type":"bool","id":6}},"reserved":[[4,4]]},"VerificationState":{"values":{"DECLARATION":0,"UNVERIFIED":1}}}},"FieldDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":3},"label":{"type":"Label","id":4},"type":{"type":"Type","id":5},"typeName":{"type":"string","id":6},"extendee":{"type":"string","id":2},"defaultValue":{"type":"string","id":7},"oneofIndex":{"type":"int32","id":9},"jsonName":{"type":"string","id":10},"options":{"type":"FieldOptions","id":8},"proto3Optional":{"type":"bool","id":17}},"nested":{"Type":{"values":{"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Label":{"values":{"LABEL_OPTIONAL":1,"LABEL_REPEATED":3,"LABEL_REQUIRED":2}}}},"OneofDescriptorProto":{"fields":{"name":{"type":"string","id":1},"options":{"type":"OneofOptions","id":2}}},"EnumDescriptorProto":{"fields":{"name":{"type":"string","id":1},"value":{"rule":"repeated","type":"EnumValueDescriptorProto","id":2},"options":{"type":"EnumOptions","id":3},"reservedRange":{"rule":"repeated","type":"EnumReservedRange","id":4},"reservedName":{"rule":"repeated","type":"string","id":5}},"nested":{"EnumReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"EnumValueDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"type":"EnumValueOptions","id":3}}},"ServiceDescriptorProto":{"fields":{"name":{"type":"string","id":1},"method":{"rule":"repeated","type":"MethodDescriptorProto","id":2},"options":{"type":"ServiceOptions","id":3}}},"MethodDescriptorProto":{"fields":{"name":{"type":"string","id":1},"inputType":{"type":"string","id":2},"outputType":{"type":"string","id":3},"options":{"type":"MethodOptions","id":4},"clientStreaming":{"type":"bool","id":5,"options":{"default":false}},"serverStreaming":{"type":"bool","id":6,"options":{"default":false}}}},"FileOptions":{"fields":{"javaPackage":{"type":"string","id":1},"javaOuterClassname":{"type":"string","id":8},"javaMultipleFiles":{"type":"bool","id":10,"options":{"default":false}},"javaGenerateEqualsAndHash":{"type":"bool","id":20,"options":{"deprecated":true}},"javaStringCheckUtf8":{"type":"bool","id":27,"options":{"default":false}},"optimizeFor":{"type":"OptimizeMode","id":9,"options":{"default":"SPEED"}},"goPackage":{"type":"string","id":11},"ccGenericServices":{"type":"bool","id":16,"options":{"default":false}},"javaGenericServices":{"type":"bool","id":17,"options":{"default":false}},"pyGenericServices":{"type":"bool","id":18,"options":{"default":false}},"deprecated":{"type":"bool","id":23,"options":{"default":false}},"ccEnableArenas":{"type":"bool","id":31,"options":{"default":true}},"objcClassPrefix":{"type":"string","id":36},"csharpNamespace":{"type":"string","id":37},"swiftPrefix":{"type":"string","id":39},"phpClassPrefix":{"type":"string","id":40},"phpNamespace":{"type":"string","id":41},"phpMetadataNamespace":{"type":"string","id":44},"rubyPackage":{"type":"string","id":45},"features":{"type":"FeatureSet","id":50},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[42,42],[38,38]],"nested":{"OptimizeMode":{"values":{"SPEED":1,"CODE_SIZE":2,"LITE_RUNTIME":3}}}},"MessageOptions":{"fields":{"messageSetWireFormat":{"type":"bool","id":1,"options":{"default":false}},"noStandardDescriptorAccessor":{"type":"bool","id":2,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"mapEntry":{"type":"bool","id":7},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":11,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":12},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[5,5],[6,6],[8,8],[9,9]]},"FieldOptions":{"fields":{"ctype":{"type":"CType","id":1,"options":{"default":"STRING"}},"packed":{"type":"bool","id":2},"jstype":{"type":"JSType","id":6,"options":{"default":"JS_NORMAL"}},"lazy":{"type":"bool","id":5,"options":{"default":false}},"unverifiedLazy":{"type":"bool","id":15,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"weak":{"type":"bool","id":10,"options":{"default":false}},"debugRedact":{"type":"bool","id":16,"options":{"default":false}},"retention":{"type":"OptionRetention","id":17},"targets":{"rule":"repeated","type":"OptionTargetType","id":19,"options":{"packed":false}},"editionDefaults":{"rule":"repeated","type":"EditionDefault","id":20},"features":{"type":"FeatureSet","id":21},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[18,18]],"nested":{"CType":{"values":{"STRING":0,"CORD":1,"STRING_PIECE":2}},"JSType":{"values":{"JS_NORMAL":0,"JS_STRING":1,"JS_NUMBER":2}},"OptionRetention":{"values":{"RETENTION_UNKNOWN":0,"RETENTION_RUNTIME":1,"RETENTION_SOURCE":2}},"OptionTargetType":{"values":{"TARGET_TYPE_UNKNOWN":0,"TARGET_TYPE_FILE":1,"TARGET_TYPE_EXTENSION_RANGE":2,"TARGET_TYPE_MESSAGE":3,"TARGET_TYPE_FIELD":4,"TARGET_TYPE_ONEOF":5,"TARGET_TYPE_ENUM":6,"TARGET_TYPE_ENUM_ENTRY":7,"TARGET_TYPE_SERVICE":8,"TARGET_TYPE_METHOD":9}},"EditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"value":{"type":"string","id":2}}}}},"OneofOptions":{"fields":{"features":{"type":"FeatureSet","id":1},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"EnumOptions":{"fields":{"allowAlias":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":6,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":7},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[5,5]]},"EnumValueOptions":{"fields":{"deprecated":{"type":"bool","id":1,"options":{"default":false}},"features":{"type":"FeatureSet","id":2},"debugRedact":{"type":"bool","id":3,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"ServiceOptions":{"fields":{"features":{"type":"FeatureSet","id":34},"deprecated":{"type":"bool","id":33,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"MethodOptions":{"fields":{"deprecated":{"type":"bool","id":33,"options":{"default":false}},"idempotencyLevel":{"type":"IdempotencyLevel","id":34,"options":{"default":"IDEMPOTENCY_UNKNOWN"}},"features":{"type":"FeatureSet","id":35},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"nested":{"IdempotencyLevel":{"values":{"IDEMPOTENCY_UNKNOWN":0,"NO_SIDE_EFFECTS":1,"IDEMPOTENT":2}}}},"UninterpretedOption":{"fields":{"name":{"rule":"repeated","type":"NamePart","id":2},"identifierValue":{"type":"string","id":3},"positiveIntValue":{"type":"uint64","id":4},"negativeIntValue":{"type":"int64","id":5},"doubleValue":{"type":"double","id":6},"stringValue":{"type":"bytes","id":7},"aggregateValue":{"type":"string","id":8}},"nested":{"NamePart":{"fields":{"namePart":{"rule":"required","type":"string","id":1},"isExtension":{"rule":"required","type":"bool","id":2}}}}},"FeatureSet":{"fields":{"fieldPresence":{"type":"FieldPresence","id":1,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_2023","edition_defaults.value":"EXPLICIT"}},"enumType":{"type":"EnumType","id":2,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"OPEN"}},"repeatedFieldEncoding":{"type":"RepeatedFieldEncoding","id":3,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"PACKED"}},"utf8Validation":{"type":"Utf8Validation","id":4,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"VERIFY"}},"messageEncoding":{"type":"MessageEncoding","id":5,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO2","edition_defaults.value":"LENGTH_PREFIXED"}},"jsonFormat":{"type":"JsonFormat","id":6,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"ALLOW"}}},"extensions":[[1e3,1e3],[1001,1001],[1002,1002],[9995,9999],[1e4,1e4]],"reserved":[[999,999]],"nested":{"FieldPresence":{"values":{"FIELD_PRESENCE_UNKNOWN":0,"EXPLICIT":1,"IMPLICIT":2,"LEGACY_REQUIRED":3}},"EnumType":{"values":{"ENUM_TYPE_UNKNOWN":0,"OPEN":1,"CLOSED":2}},"RepeatedFieldEncoding":{"values":{"REPEATED_FIELD_ENCODING_UNKNOWN":0,"PACKED":1,"EXPANDED":2}},"Utf8Validation":{"values":{"UTF8_VALIDATION_UNKNOWN":0,"VERIFY":2,"NONE":3}},"MessageEncoding":{"values":{"MESSAGE_ENCODING_UNKNOWN":0,"LENGTH_PREFIXED":1,"DELIMITED":2}},"JsonFormat":{"values":{"JSON_FORMAT_UNKNOWN":0,"ALLOW":1,"LEGACY_BEST_EFFORT":2}}}},"FeatureSetDefaults":{"fields":{"defaults":{"rule":"repeated","type":"FeatureSetEditionDefault","id":1},"minimumEdition":{"type":"Edition","id":4},"maximumEdition":{"type":"Edition","id":5}},"nested":{"FeatureSetEditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"features":{"type":"FeatureSet","id":2}}}}},"SourceCodeInfo":{"fields":{"location":{"rule":"repeated","type":"Location","id":1}},"nested":{"Location":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"span":{"rule":"repeated","type":"int32","id":2},"leadingComments":{"type":"string","id":3},"trailingComments":{"type":"string","id":4},"leadingDetachedComments":{"rule":"repeated","type":"string","id":6}}}}},"GeneratedCodeInfo":{"fields":{"annotation":{"rule":"repeated","type":"Annotation","id":1}},"nested":{"Annotation":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"sourceFile":{"type":"string","id":2},"begin":{"type":"int32","id":3},"end":{"type":"int32","id":4},"semantic":{"type":"Semantic","id":5}},"nested":{"Semantic":{"values":{"NONE":0,"SET":1,"ALIAS":2}}}}}},"Timestamp":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"Duration":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"Any":{"fields":{"type_url":{"type":"string","id":1},"value":{"type":"bytes","id":2}}},"Empty":{"fields":{}},"FieldMask":{"fields":{"paths":{"rule":"repeated","type":"string","id":1}}},"Struct":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"Value":{"oneofs":{"kind":{"oneof":["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},"fields":{"nullValue":{"type":"NullValue","id":1},"numberValue":{"type":"double","id":2},"stringValue":{"type":"string","id":3},"boolValue":{"type":"bool","id":4},"structValue":{"type":"Struct","id":5},"listValue":{"type":"ListValue","id":6}}},"NullValue":{"values":{"NULL_VALUE":0}},"ListValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"DoubleValue":{"fields":{"value":{"type":"double","id":1}}},"FloatValue":{"fields":{"value":{"type":"float","id":1}}},"Int64Value":{"fields":{"value":{"type":"int64","id":1}}},"UInt64Value":{"fields":{"value":{"type":"uint64","id":1}}},"Int32Value":{"fields":{"value":{"type":"int32","id":1}}},"UInt32Value":{"fields":{"value":{"type":"uint32","id":1}}},"BoolValue":{"fields":{"value":{"type":"bool","id":1}}},"StringValue":{"fields":{"value":{"type":"string","id":1}}},"BytesValue":{"fields":{"value":{"type":"bytes","id":1}}}}},"type":{"options":{"go_package":"google.golang.org/genproto/googleapis/type/latlng;latlng","java_multiple_files":true,"java_outer_classname":"LatLngProto","java_package":"com.google.type","objc_class_prefix":"GTP","cc_enable_arenas":true},"nested":{"DayOfWeek":{"values":{"DAY_OF_WEEK_UNSPECIFIED":0,"MONDAY":1,"TUESDAY":2,"WEDNESDAY":3,"THURSDAY":4,"FRIDAY":5,"SATURDAY":6,"SUNDAY":7}},"LatLng":{"fields":{"latitude":{"type":"double","id":1},"longitude":{"type":"double","id":2}}}}},"longrunning":{"options":{"cc_enable_arenas":true,"csharp_namespace":"Google.LongRunning","go_package":"cloud.google.com/go/longrunning/autogen/longrunningpb;longrunningpb","java_multiple_files":true,"java_outer_classname":"OperationsProto","java_package":"com.google.longrunning","php_namespace":"Google\\LongRunning"},"nested":{"operationInfo":{"type":"google.longrunning.OperationInfo","id":1049,"extend":"google.protobuf.MethodOptions"},"Operations":{"options":{"(google.api.default_host)":"longrunning.googleapis.com"},"methods":{"ListOperations":{"requestType":"ListOperationsRequest","responseType":"ListOperationsResponse","options":{"(google.api.http).get":"/v1/{name=operations}","(google.api.method_signature)":"name,filter"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=operations}"}},{"(google.api.method_signature)":"name,filter"}]},"GetOperation":{"requestType":"GetOperationRequest","responseType":"Operation","options":{"(google.api.http).get":"/v1/{name=operations/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=operations/**}"}},{"(google.api.method_signature)":"name"}]},"DeleteOperation":{"requestType":"DeleteOperationRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=operations/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=operations/**}"}},{"(google.api.method_signature)":"name"}]},"CancelOperation":{"requestType":"CancelOperationRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).post":"/v1/{name=operations/**}:cancel","(google.api.http).body":"*","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=operations/**}:cancel","body":"*"}},{"(google.api.method_signature)":"name"}]},"WaitOperation":{"requestType":"WaitOperationRequest","responseType":"Operation"}}},"Operation":{"oneofs":{"result":{"oneof":["error","response"]}},"fields":{"name":{"type":"string","id":1},"metadata":{"type":"google.protobuf.Any","id":2},"done":{"type":"bool","id":3},"error":{"type":"google.rpc.Status","id":4},"response":{"type":"google.protobuf.Any","id":5}}},"GetOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"ListOperationsRequest":{"fields":{"name":{"type":"string","id":4},"filter":{"type":"string","id":1},"pageSize":{"type":"int32","id":2},"pageToken":{"type":"string","id":3}}},"ListOperationsResponse":{"fields":{"operations":{"rule":"repeated","type":"Operation","id":1},"nextPageToken":{"type":"string","id":2}}},"CancelOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"DeleteOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"WaitOperationRequest":{"fields":{"name":{"type":"string","id":1},"timeout":{"type":"google.protobuf.Duration","id":2}}},"OperationInfo":{"fields":{"responseType":{"type":"string","id":1},"metadataType":{"type":"string","id":2}}}}},"rpc":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/rpc/status;status","java_multiple_files":true,"java_outer_classname":"StatusProto","java_package":"com.google.rpc","objc_class_prefix":"RPC"},"nested":{"Status":{"fields":{"code":{"type":"int32","id":1},"message":{"type":"string","id":2},"details":{"rule":"repeated","type":"google.protobuf.Any","id":3}}}}}}}}}
{"nested":{"google":{"nested":{"firestore":{"nested":{"admin":{"nested":{"v1":{"options":{"csharp_namespace":"Google.Cloud.Firestore.Admin.V1","go_package":"cloud.google.com/go/firestore/apiv1/admin/adminpb;adminpb","java_multiple_files":true,"java_outer_classname":"LocationProto","java_package":"com.google.firestore.admin.v1","objc_class_prefix":"GCFS","php_namespace":"Google\\Cloud\\Firestore\\Admin\\V1","ruby_package":"Google::Cloud::Firestore::Admin::V1","(google.api.resource_definition).type":"firestore.googleapis.com/CollectionGroup","(google.api.resource_definition).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}"},"nested":{"Backup":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Backup","(google.api.resource).pattern":"projects/{project}/locations/{location}/backups/{backup}"},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"database":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"databaseUid":{"type":"string","id":7,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"snapshotTime":{"type":"google.protobuf.Timestamp","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"expireTime":{"type":"google.protobuf.Timestamp","id":4,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"stats":{"type":"Stats","id":6,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"state":{"type":"State","id":8,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}},"nested":{"Stats":{"fields":{"sizeBytes":{"type":"int64","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"documentCount":{"type":"int64","id":2,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"indexCount":{"type":"int64","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}}},"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"READY":2,"NOT_AVAILABLE":3}}}},"Database":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Database","(google.api.resource).pattern":"projects/{project}/databases/{database}","(google.api.resource).style":"DECLARATIVE_FRIENDLY"},"fields":{"name":{"type":"string","id":1},"uid":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"createTime":{"type":"google.protobuf.Timestamp","id":5,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"updateTime":{"type":"google.protobuf.Timestamp","id":6,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"locationId":{"type":"string","id":9},"type":{"type":"DatabaseType","id":10},"concurrencyMode":{"type":"ConcurrencyMode","id":15},"versionRetentionPeriod":{"type":"google.protobuf.Duration","id":17,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"earliestVersionTime":{"type":"google.protobuf.Timestamp","id":18,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"pointInTimeRecoveryEnablement":{"type":"PointInTimeRecoveryEnablement","id":21},"appEngineIntegrationMode":{"type":"AppEngineIntegrationMode","id":19},"keyPrefix":{"type":"string","id":20,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"deleteProtectionState":{"type":"DeleteProtectionState","id":22},"etag":{"type":"string","id":99}},"nested":{"DatabaseType":{"values":{"DATABASE_TYPE_UNSPECIFIED":0,"FIRESTORE_NATIVE":1,"DATASTORE_MODE":2}},"ConcurrencyMode":{"values":{"CONCURRENCY_MODE_UNSPECIFIED":0,"OPTIMISTIC":1,"PESSIMISTIC":2,"OPTIMISTIC_WITH_ENTITY_GROUPS":3}},"PointInTimeRecoveryEnablement":{"values":{"POINT_IN_TIME_RECOVERY_ENABLEMENT_UNSPECIFIED":0,"POINT_IN_TIME_RECOVERY_ENABLED":1,"POINT_IN_TIME_RECOVERY_DISABLED":2}},"AppEngineIntegrationMode":{"values":{"APP_ENGINE_INTEGRATION_MODE_UNSPECIFIED":0,"ENABLED":1,"DISABLED":2}},"DeleteProtectionState":{"values":{"DELETE_PROTECTION_STATE_UNSPECIFIED":0,"DELETE_PROTECTION_DISABLED":1,"DELETE_PROTECTION_ENABLED":2}}}},"Field":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Field","(google.api.resource).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}/fields/{field}"},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"indexConfig":{"type":"IndexConfig","id":2},"ttlConfig":{"type":"TtlConfig","id":3}},"nested":{"IndexConfig":{"fields":{"indexes":{"rule":"repeated","type":"Index","id":1},"usesAncestorConfig":{"type":"bool","id":2},"ancestorField":{"type":"string","id":3},"reverting":{"type":"bool","id":4}}},"TtlConfig":{"fields":{"state":{"type":"State","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}}},"nested":{"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"ACTIVE":2,"NEEDS_REPAIR":3}}}}}},"Index":{"options":{"(google.api.resource).type":"firestore.googleapis.com/Index","(google.api.resource).pattern":"projects/{project}/databases/{database}/collectionGroups/{collection}/indexes/{index}"},"fields":{"name":{"type":"string","id":1},"queryScope":{"type":"QueryScope","id":2},"apiScope":{"type":"ApiScope","id":5},"fields":{"rule":"repeated","type":"IndexField","id":3},"state":{"type":"State","id":4}},"nested":{"QueryScope":{"values":{"QUERY_SCOPE_UNSPECIFIED":0,"COLLECTION":1,"COLLECTION_GROUP":2,"COLLECTION_RECURSIVE":3}},"ApiScope":{"values":{"ANY_API":0,"DATASTORE_MODE_API":1}},"IndexField":{"oneofs":{"valueMode":{"oneof":["order","arrayConfig","vectorConfig"]}},"fields":{"fieldPath":{"type":"string","id":1},"order":{"type":"Order","id":2},"arrayConfig":{"type":"ArrayConfig","id":3},"vectorConfig":{"type":"VectorConfig","id":4}},"nested":{"Order":{"values":{"ORDER_UNSPECIFIED":0,"ASCENDING":1,"DESCENDING":2}},"ArrayConfig":{"values":{"ARRAY_CONFIG_UNSPECIFIED":0,"CONTAINS":1}},"VectorConfig":{"oneofs":{"type":{"oneof":["flat"]}},"fields":{"dimension":{"type":"int32","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"flat":{"type":"FlatIndex","id":2}},"nested":{"FlatIndex":{"fields":{}}}}}},"State":{"values":{"STATE_UNSPECIFIED":0,"CREATING":1,"READY":2,"NEEDS_REPAIR":3}}}},"FirestoreAdmin":{"options":{"(google.api.default_host)":"firestore.googleapis.com","(google.api.oauth_scopes)":"https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore"},"methods":{"CreateIndex":{"requestType":"CreateIndexRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","(google.api.http).body":"index","(google.api.method_signature)":"parent,index","(google.longrunning.operation_info).response_type":"Index","(google.longrunning.operation_info).metadata_type":"IndexOperationMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","body":"index"}},{"(google.api.method_signature)":"parent,index"},{"(google.longrunning.operation_info)":{"response_type":"Index","metadata_type":"IndexOperationMetadata"}}]},"ListIndexes":{"requestType":"ListIndexesRequest","responseType":"ListIndexesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/indexes"}},{"(google.api.method_signature)":"parent"}]},"GetIndex":{"requestType":"GetIndexRequest","responseType":"Index","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}"}},{"(google.api.method_signature)":"name"}]},"DeleteIndex":{"requestType":"DeleteIndexRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/collectionGroups/*/indexes/*}"}},{"(google.api.method_signature)":"name"}]},"GetField":{"requestType":"GetFieldRequest","responseType":"Field","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/collectionGroups/*/fields/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/collectionGroups/*/fields/*}"}},{"(google.api.method_signature)":"name"}]},"UpdateField":{"requestType":"UpdateFieldRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).patch":"/v1/{field.name=projects/*/databases/*/collectionGroups/*/fields/*}","(google.api.http).body":"field","(google.api.method_signature)":"field","(google.longrunning.operation_info).response_type":"Field","(google.longrunning.operation_info).metadata_type":"FieldOperationMetadata"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{field.name=projects/*/databases/*/collectionGroups/*/fields/*}","body":"field"}},{"(google.api.method_signature)":"field"},{"(google.longrunning.operation_info)":{"response_type":"Field","metadata_type":"FieldOperationMetadata"}}]},"ListFields":{"requestType":"ListFieldsRequest","responseType":"ListFieldsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/fields","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/collectionGroups/*}/fields"}},{"(google.api.method_signature)":"parent"}]},"ExportDocuments":{"requestType":"ExportDocumentsRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{name=projects/*/databases/*}:exportDocuments","(google.api.http).body":"*","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"ExportDocumentsResponse","(google.longrunning.operation_info).metadata_type":"ExportDocumentsMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=projects/*/databases/*}:exportDocuments","body":"*"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"ExportDocumentsResponse","metadata_type":"ExportDocumentsMetadata"}}]},"ImportDocuments":{"requestType":"ImportDocumentsRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{name=projects/*/databases/*}:importDocuments","(google.api.http).body":"*","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"google.protobuf.Empty","(google.longrunning.operation_info).metadata_type":"ImportDocumentsMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=projects/*/databases/*}:importDocuments","body":"*"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"google.protobuf.Empty","metadata_type":"ImportDocumentsMetadata"}}]},"BulkDeleteDocuments":{"requestType":"BulkDeleteDocumentsRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{name=projects/*/databases/*}:bulkDeleteDocuments","(google.api.http).body":"*","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"BulkDeleteDocumentsResponse","(google.longrunning.operation_info).metadata_type":"BulkDeleteDocumentsMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=projects/*/databases/*}:bulkDeleteDocuments","body":"*"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"BulkDeleteDocumentsResponse","metadata_type":"BulkDeleteDocumentsMetadata"}}]},"CreateDatabase":{"requestType":"CreateDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*}/databases","(google.api.http).body":"database","(google.api.method_signature)":"parent,database,database_id","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"CreateDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*}/databases","body":"database"}},{"(google.api.method_signature)":"parent,database,database_id"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"CreateDatabaseMetadata"}}]},"GetDatabase":{"requestType":"GetDatabaseRequest","responseType":"Database","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*}"}},{"(google.api.method_signature)":"name"}]},"ListDatabases":{"requestType":"ListDatabasesRequest","responseType":"ListDatabasesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*}/databases","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*}/databases"}},{"(google.api.method_signature)":"parent"}]},"UpdateDatabase":{"requestType":"UpdateDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).patch":"/v1/{database.name=projects/*/databases/*}","(google.api.http).body":"database","(google.api.method_signature)":"database,update_mask","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"UpdateDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{database.name=projects/*/databases/*}","body":"database"}},{"(google.api.method_signature)":"database,update_mask"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"UpdateDatabaseMetadata"}}]},"DeleteDatabase":{"requestType":"DeleteDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*}","(google.api.method_signature)":"name","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"DeleteDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*}"}},{"(google.api.method_signature)":"name"},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"DeleteDatabaseMetadata"}}]},"GetBackup":{"requestType":"GetBackupRequest","responseType":"Backup","options":{"(google.api.http).get":"/v1/{name=projects/*/locations/*/backups/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/locations/*/backups/*}"}},{"(google.api.method_signature)":"name"}]},"ListBackups":{"requestType":"ListBackupsRequest","responseType":"ListBackupsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/locations/*}/backups","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/locations/*}/backups"}},{"(google.api.method_signature)":"parent"}]},"DeleteBackup":{"requestType":"DeleteBackupRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/locations/*/backups/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/locations/*/backups/*}"}},{"(google.api.method_signature)":"name"}]},"RestoreDatabase":{"requestType":"RestoreDatabaseRequest","responseType":"google.longrunning.Operation","options":{"(google.api.http).post":"/v1/{parent=projects/*}/databases:restore","(google.api.http).body":"*","(google.longrunning.operation_info).response_type":"Database","(google.longrunning.operation_info).metadata_type":"RestoreDatabaseMetadata"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*}/databases:restore","body":"*"}},{"(google.longrunning.operation_info)":{"response_type":"Database","metadata_type":"RestoreDatabaseMetadata"}}]},"CreateBackupSchedule":{"requestType":"CreateBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*}/backupSchedules","(google.api.http).body":"backup_schedule","(google.api.method_signature)":"parent,backup_schedule"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*}/backupSchedules","body":"backup_schedule"}},{"(google.api.method_signature)":"parent,backup_schedule"}]},"GetBackupSchedule":{"requestType":"GetBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/backupSchedules/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/backupSchedules/*}"}},{"(google.api.method_signature)":"name"}]},"ListBackupSchedules":{"requestType":"ListBackupSchedulesRequest","responseType":"ListBackupSchedulesResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*}/backupSchedules","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*}/backupSchedules"}},{"(google.api.method_signature)":"parent"}]},"UpdateBackupSchedule":{"requestType":"UpdateBackupScheduleRequest","responseType":"BackupSchedule","options":{"(google.api.http).patch":"/v1/{backup_schedule.name=projects/*/databases/*/backupSchedules/*}","(google.api.http).body":"backup_schedule","(google.api.method_signature)":"backup_schedule,update_mask"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{backup_schedule.name=projects/*/databases/*/backupSchedules/*}","body":"backup_schedule"}},{"(google.api.method_signature)":"backup_schedule,update_mask"}]},"DeleteBackupSchedule":{"requestType":"DeleteBackupScheduleRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/backupSchedules/*}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/backupSchedules/*}"}},{"(google.api.method_signature)":"name"}]}}},"ListDatabasesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}},"showDeleted":{"type":"bool","id":4}}},"CreateDatabaseRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}},"database":{"type":"Database","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"databaseId":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"CreateDatabaseMetadata":{"fields":{}},"ListDatabasesResponse":{"fields":{"databases":{"rule":"repeated","type":"Database","id":1},"unreachable":{"rule":"repeated","type":"string","id":3}}},"GetDatabaseRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}}}},"UpdateDatabaseRequest":{"fields":{"database":{"type":"Database","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"UpdateDatabaseMetadata":{"fields":{}},"DeleteDatabaseRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"etag":{"type":"string","id":3}}},"DeleteDatabaseMetadata":{"fields":{}},"CreateBackupScheduleRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"backupSchedule":{"type":"BackupSchedule","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"GetBackupScheduleRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/BackupSchedule"}}}},"UpdateBackupScheduleRequest":{"fields":{"backupSchedule":{"type":"BackupSchedule","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"ListBackupSchedulesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}}}},"ListBackupSchedulesResponse":{"fields":{"backupSchedules":{"rule":"repeated","type":"BackupSchedule","id":1}}},"DeleteBackupScheduleRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/BackupSchedule"}}}},"CreateIndexRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"index":{"type":"Index","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"ListIndexesRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"filter":{"type":"string","id":2},"pageSize":{"type":"int32","id":3},"pageToken":{"type":"string","id":4}}},"ListIndexesResponse":{"fields":{"indexes":{"rule":"repeated","type":"Index","id":1},"nextPageToken":{"type":"string","id":2}}},"GetIndexRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Index"}}}},"DeleteIndexRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Index"}}}},"UpdateFieldRequest":{"fields":{"field":{"type":"Field","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"google.protobuf.FieldMask","id":2}}},"GetFieldRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Field"}}}},"ListFieldsRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/CollectionGroup"}},"filter":{"type":"string","id":2},"pageSize":{"type":"int32","id":3},"pageToken":{"type":"string","id":4}}},"ListFieldsResponse":{"fields":{"fields":{"rule":"repeated","type":"Field","id":1},"nextPageToken":{"type":"string","id":2}}},"ExportDocumentsRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"collectionIds":{"rule":"repeated","type":"string","id":2},"outputUriPrefix":{"type":"string","id":3},"namespaceIds":{"rule":"repeated","type":"string","id":4},"snapshotTime":{"type":"google.protobuf.Timestamp","id":5}}},"ImportDocumentsRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"collectionIds":{"rule":"repeated","type":"string","id":2},"inputUriPrefix":{"type":"string","id":3},"namespaceIds":{"rule":"repeated","type":"string","id":4}}},"BulkDeleteDocumentsRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"collectionIds":{"rule":"repeated","type":"string","id":2,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"namespaceIds":{"rule":"repeated","type":"string","id":3,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"BulkDeleteDocumentsResponse":{"fields":{}},"GetBackupRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"ListBackupsRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Location"}}}},"ListBackupsResponse":{"fields":{"backups":{"rule":"repeated","type":"Backup","id":1},"unreachable":{"rule":"repeated","type":"string","id":3}}},"DeleteBackupRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"RestoreDatabaseRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).child_type":"firestore.googleapis.com/Database"}},"databaseId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"backup":{"type":"string","id":3,"options":{"(google.api.field_behavior)":"REQUIRED","(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}}}},"IndexOperationMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"index":{"type":"string","id":3},"state":{"type":"OperationState","id":4},"progressDocuments":{"type":"Progress","id":5},"progressBytes":{"type":"Progress","id":6}}},"FieldOperationMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"field":{"type":"string","id":3},"indexConfigDeltas":{"rule":"repeated","type":"IndexConfigDelta","id":4},"state":{"type":"OperationState","id":5},"progressDocuments":{"type":"Progress","id":6},"progressBytes":{"type":"Progress","id":7},"ttlConfigDelta":{"type":"TtlConfigDelta","id":8}},"nested":{"IndexConfigDelta":{"fields":{"changeType":{"type":"ChangeType","id":1},"index":{"type":"Index","id":2}},"nested":{"ChangeType":{"values":{"CHANGE_TYPE_UNSPECIFIED":0,"ADD":1,"REMOVE":2}}}},"TtlConfigDelta":{"fields":{"changeType":{"type":"ChangeType","id":1}},"nested":{"ChangeType":{"values":{"CHANGE_TYPE_UNSPECIFIED":0,"ADD":1,"REMOVE":2}}}}}},"ExportDocumentsMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"progressDocuments":{"type":"Progress","id":4},"progressBytes":{"type":"Progress","id":5},"collectionIds":{"rule":"repeated","type":"string","id":6},"outputUriPrefix":{"type":"string","id":7},"namespaceIds":{"rule":"repeated","type":"string","id":8},"snapshotTime":{"type":"google.protobuf.Timestamp","id":9}}},"ImportDocumentsMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"progressDocuments":{"type":"Progress","id":4},"progressBytes":{"type":"Progress","id":5},"collectionIds":{"rule":"repeated","type":"string","id":6},"inputUriPrefix":{"type":"string","id":7},"namespaceIds":{"rule":"repeated","type":"string","id":8}}},"BulkDeleteDocumentsMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"progressDocuments":{"type":"Progress","id":4},"progressBytes":{"type":"Progress","id":5},"collectionIds":{"rule":"repeated","type":"string","id":6},"namespaceIds":{"rule":"repeated","type":"string","id":7},"snapshotTime":{"type":"google.protobuf.Timestamp","id":8}}},"ExportDocumentsResponse":{"fields":{"outputUriPrefix":{"type":"string","id":1}}},"RestoreDatabaseMetadata":{"fields":{"startTime":{"type":"google.protobuf.Timestamp","id":1},"endTime":{"type":"google.protobuf.Timestamp","id":2},"operationState":{"type":"OperationState","id":3},"database":{"type":"string","id":4,"options":{"(google.api.resource_reference).type":"firestore.googleapis.com/Database"}},"backup":{"type":"string","id":5,"options":{"(google.api.resource_reference).type":"firestore.googleapis.com/Backup"}},"progressPercentage":{"type":"Progress","id":8}}},"Progress":{"fields":{"estimatedWork":{"type":"int64","id":1},"completedWork":{"type":"int64","id":2}}},"OperationState":{"values":{"OPERATION_STATE_UNSPECIFIED":0,"INITIALIZING":1,"PROCESSING":2,"CANCELLING":3,"FINALIZING":4,"SUCCESSFUL":5,"FAILED":6,"CANCELLED":7}},"BackupSchedule":{"options":{"(google.api.resource).type":"firestore.googleapis.com/BackupSchedule","(google.api.resource).pattern":"projects/{project}/databases/{database}/backupSchedules/{backup_schedule}"},"oneofs":{"recurrence":{"oneof":["dailyRecurrence","weeklyRecurrence"]}},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"createTime":{"type":"google.protobuf.Timestamp","id":3,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"updateTime":{"type":"google.protobuf.Timestamp","id":10,"options":{"(google.api.field_behavior)":"OUTPUT_ONLY"}},"retention":{"type":"google.protobuf.Duration","id":6},"dailyRecurrence":{"type":"DailyRecurrence","id":7},"weeklyRecurrence":{"type":"WeeklyRecurrence","id":8}}},"DailyRecurrence":{"fields":{}},"WeeklyRecurrence":{"fields":{"day":{"type":"google.type.DayOfWeek","id":2}}},"LocationMetadata":{"fields":{}}}}}}}},"api":{"options":{"go_package":"google.golang.org/genproto/googleapis/api;api","java_multiple_files":true,"java_outer_classname":"LaunchStageProto","java_package":"com.google.api","objc_class_prefix":"GAPI","cc_enable_arenas":true},"nested":{"fieldBehavior":{"rule":"repeated","type":"google.api.FieldBehavior","id":1052,"extend":"google.protobuf.FieldOptions","options":{"packed":false}},"FieldBehavior":{"values":{"FIELD_BEHAVIOR_UNSPECIFIED":0,"OPTIONAL":1,"REQUIRED":2,"OUTPUT_ONLY":3,"INPUT_ONLY":4,"IMMUTABLE":5,"UNORDERED_LIST":6,"NON_EMPTY_DEFAULT":7,"IDENTIFIER":8}},"resourceReference":{"type":"google.api.ResourceReference","id":1055,"extend":"google.protobuf.FieldOptions"},"resourceDefinition":{"rule":"repeated","type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.FileOptions"},"resource":{"type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.MessageOptions"},"ResourceDescriptor":{"fields":{"type":{"type":"string","id":1},"pattern":{"rule":"repeated","type":"string","id":2},"nameField":{"type":"string","id":3},"history":{"type":"History","id":4},"plural":{"type":"string","id":5},"singular":{"type":"string","id":6},"style":{"rule":"repeated","type":"Style","id":10}},"nested":{"History":{"values":{"HISTORY_UNSPECIFIED":0,"ORIGINALLY_SINGLE_PATTERN":1,"FUTURE_MULTI_PATTERN":2}},"Style":{"values":{"STYLE_UNSPECIFIED":0,"DECLARATIVE_FRIENDLY":1}}}},"ResourceReference":{"fields":{"type":{"type":"string","id":1},"childType":{"type":"string","id":2}}},"http":{"type":"HttpRule","id":72295728,"extend":"google.protobuf.MethodOptions"},"Http":{"fields":{"rules":{"rule":"repeated","type":"HttpRule","id":1},"fullyDecodeReservedExpansion":{"type":"bool","id":2}}},"HttpRule":{"oneofs":{"pattern":{"oneof":["get","put","post","delete","patch","custom"]}},"fields":{"selector":{"type":"string","id":1},"get":{"type":"string","id":2},"put":{"type":"string","id":3},"post":{"type":"string","id":4},"delete":{"type":"string","id":5},"patch":{"type":"string","id":6},"custom":{"type":"CustomHttpPattern","id":8},"body":{"type":"string","id":7},"responseBody":{"type":"string","id":12},"additionalBindings":{"rule":"repeated","type":"HttpRule","id":11}}},"CustomHttpPattern":{"fields":{"kind":{"type":"string","id":1},"path":{"type":"string","id":2}}},"methodSignature":{"rule":"repeated","type":"string","id":1051,"extend":"google.protobuf.MethodOptions"},"defaultHost":{"type":"string","id":1049,"extend":"google.protobuf.ServiceOptions"},"oauthScopes":{"type":"string","id":1050,"extend":"google.protobuf.ServiceOptions"},"apiVersion":{"type":"string","id":525000001,"extend":"google.protobuf.ServiceOptions"},"CommonLanguageSettings":{"fields":{"referenceDocsUri":{"type":"string","id":1,"options":{"deprecated":true}},"destinations":{"rule":"repeated","type":"ClientLibraryDestination","id":2}}},"ClientLibrarySettings":{"fields":{"version":{"type":"string","id":1},"launchStage":{"type":"LaunchStage","id":2},"restNumericEnums":{"type":"bool","id":3},"javaSettings":{"type":"JavaSettings","id":21},"cppSettings":{"type":"CppSettings","id":22},"phpSettings":{"type":"PhpSettings","id":23},"pythonSettings":{"type":"PythonSettings","id":24},"nodeSettings":{"type":"NodeSettings","id":25},"dotnetSettings":{"type":"DotnetSettings","id":26},"rubySettings":{"type":"RubySettings","id":27},"goSettings":{"type":"GoSettings","id":28}}},"Publishing":{"fields":{"methodSettings":{"rule":"repeated","type":"MethodSettings","id":2},"newIssueUri":{"type":"string","id":101},"documentationUri":{"type":"string","id":102},"apiShortName":{"type":"string","id":103},"githubLabel":{"type":"string","id":104},"codeownerGithubTeams":{"rule":"repeated","type":"string","id":105},"docTagPrefix":{"type":"string","id":106},"organization":{"type":"ClientLibraryOrganization","id":107},"librarySettings":{"rule":"repeated","type":"ClientLibrarySettings","id":109},"protoReferenceDocumentationUri":{"type":"string","id":110},"restReferenceDocumentationUri":{"type":"string","id":111}}},"JavaSettings":{"fields":{"libraryPackage":{"type":"string","id":1},"serviceClassNames":{"keyType":"string","type":"string","id":2},"common":{"type":"CommonLanguageSettings","id":3}}},"CppSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PhpSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PythonSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"NodeSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"DotnetSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1},"renamedServices":{"keyType":"string","type":"string","id":2},"renamedResources":{"keyType":"string","type":"string","id":3},"ignoredResources":{"rule":"repeated","type":"string","id":4},"forcedNamespaceAliases":{"rule":"repeated","type":"string","id":5},"handwrittenSignatures":{"rule":"repeated","type":"string","id":6}}},"RubySettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"GoSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"MethodSettings":{"fields":{"selector":{"type":"string","id":1},"longRunning":{"type":"LongRunning","id":2},"autoPopulatedFields":{"rule":"repeated","type":"string","id":3}},"nested":{"LongRunning":{"fields":{"initialPollDelay":{"type":"google.protobuf.Duration","id":1},"pollDelayMultiplier":{"type":"float","id":2},"maxPollDelay":{"type":"google.protobuf.Duration","id":3},"totalPollTimeout":{"type":"google.protobuf.Duration","id":4}}}}},"ClientLibraryOrganization":{"values":{"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":0,"CLOUD":1,"ADS":2,"PHOTOS":3,"STREET_VIEW":4,"SHOPPING":5,"GEO":6,"GENERATIVE_AI":7}},"ClientLibraryDestination":{"values":{"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":0,"GITHUB":10,"PACKAGE_MANAGER":20}},"LaunchStage":{"values":{"LAUNCH_STAGE_UNSPECIFIED":0,"UNIMPLEMENTED":6,"PRELAUNCH":7,"EARLY_ACCESS":1,"ALPHA":2,"BETA":3,"GA":4,"DEPRECATED":5}}}},"protobuf":{"options":{"go_package":"google.golang.org/protobuf/types/descriptorpb","java_package":"com.google.protobuf","java_outer_classname":"DescriptorProtos","csharp_namespace":"Google.Protobuf.Reflection","objc_class_prefix":"GPB","cc_enable_arenas":true,"optimize_for":"SPEED"},"nested":{"FileDescriptorSet":{"fields":{"file":{"rule":"repeated","type":"FileDescriptorProto","id":1}}},"Edition":{"values":{"EDITION_UNKNOWN":0,"EDITION_PROTO2":998,"EDITION_PROTO3":999,"EDITION_2023":1e3,"EDITION_2024":1001,"EDITION_1_TEST_ONLY":1,"EDITION_2_TEST_ONLY":2,"EDITION_99997_TEST_ONLY":99997,"EDITION_99998_TEST_ONLY":99998,"EDITION_99999_TEST_ONLY":99999,"EDITION_MAX":2147483647}},"FileDescriptorProto":{"fields":{"name":{"type":"string","id":1},"package":{"type":"string","id":2},"dependency":{"rule":"repeated","type":"string","id":3},"publicDependency":{"rule":"repeated","type":"int32","id":10,"options":{"packed":false}},"weakDependency":{"rule":"repeated","type":"int32","id":11,"options":{"packed":false}},"messageType":{"rule":"repeated","type":"DescriptorProto","id":4},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":5},"service":{"rule":"repeated","type":"ServiceDescriptorProto","id":6},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":7},"options":{"type":"FileOptions","id":8},"sourceCodeInfo":{"type":"SourceCodeInfo","id":9},"syntax":{"type":"string","id":12},"edition":{"type":"Edition","id":14}}},"DescriptorProto":{"fields":{"name":{"type":"string","id":1},"field":{"rule":"repeated","type":"FieldDescriptorProto","id":2},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":6},"nestedType":{"rule":"repeated","type":"DescriptorProto","id":3},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":4},"extensionRange":{"rule":"repeated","type":"ExtensionRange","id":5},"oneofDecl":{"rule":"repeated","type":"OneofDescriptorProto","id":8},"options":{"type":"MessageOptions","id":7},"reservedRange":{"rule":"repeated","type":"ReservedRange","id":9},"reservedName":{"rule":"repeated","type":"string","id":10}},"nested":{"ExtensionRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2},"options":{"type":"ExtensionRangeOptions","id":3}}},"ReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"ExtensionRangeOptions":{"fields":{"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999},"declaration":{"rule":"repeated","type":"Declaration","id":2,"options":{"retention":"RETENTION_SOURCE"}},"features":{"type":"FeatureSet","id":50},"verification":{"type":"VerificationState","id":3,"options":{"default":"UNVERIFIED","retention":"RETENTION_SOURCE"}}},"extensions":[[1e3,536870911]],"nested":{"Declaration":{"fields":{"number":{"type":"int32","id":1},"fullName":{"type":"string","id":2},"type":{"type":"string","id":3},"reserved":{"type":"bool","id":5},"repeated":{"type":"bool","id":6}},"reserved":[[4,4]]},"VerificationState":{"values":{"DECLARATION":0,"UNVERIFIED":1}}}},"FieldDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":3},"label":{"type":"Label","id":4},"type":{"type":"Type","id":5},"typeName":{"type":"string","id":6},"extendee":{"type":"string","id":2},"defaultValue":{"type":"string","id":7},"oneofIndex":{"type":"int32","id":9},"jsonName":{"type":"string","id":10},"options":{"type":"FieldOptions","id":8},"proto3Optional":{"type":"bool","id":17}},"nested":{"Type":{"values":{"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Label":{"values":{"LABEL_OPTIONAL":1,"LABEL_REPEATED":3,"LABEL_REQUIRED":2}}}},"OneofDescriptorProto":{"fields":{"name":{"type":"string","id":1},"options":{"type":"OneofOptions","id":2}}},"EnumDescriptorProto":{"fields":{"name":{"type":"string","id":1},"value":{"rule":"repeated","type":"EnumValueDescriptorProto","id":2},"options":{"type":"EnumOptions","id":3},"reservedRange":{"rule":"repeated","type":"EnumReservedRange","id":4},"reservedName":{"rule":"repeated","type":"string","id":5}},"nested":{"EnumReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"EnumValueDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"type":"EnumValueOptions","id":3}}},"ServiceDescriptorProto":{"fields":{"name":{"type":"string","id":1},"method":{"rule":"repeated","type":"MethodDescriptorProto","id":2},"options":{"type":"ServiceOptions","id":3}}},"MethodDescriptorProto":{"fields":{"name":{"type":"string","id":1},"inputType":{"type":"string","id":2},"outputType":{"type":"string","id":3},"options":{"type":"MethodOptions","id":4},"clientStreaming":{"type":"bool","id":5,"options":{"default":false}},"serverStreaming":{"type":"bool","id":6,"options":{"default":false}}}},"FileOptions":{"fields":{"javaPackage":{"type":"string","id":1},"javaOuterClassname":{"type":"string","id":8},"javaMultipleFiles":{"type":"bool","id":10,"options":{"default":false}},"javaGenerateEqualsAndHash":{"type":"bool","id":20,"options":{"deprecated":true}},"javaStringCheckUtf8":{"type":"bool","id":27,"options":{"default":false}},"optimizeFor":{"type":"OptimizeMode","id":9,"options":{"default":"SPEED"}},"goPackage":{"type":"string","id":11},"ccGenericServices":{"type":"bool","id":16,"options":{"default":false}},"javaGenericServices":{"type":"bool","id":17,"options":{"default":false}},"pyGenericServices":{"type":"bool","id":18,"options":{"default":false}},"deprecated":{"type":"bool","id":23,"options":{"default":false}},"ccEnableArenas":{"type":"bool","id":31,"options":{"default":true}},"objcClassPrefix":{"type":"string","id":36},"csharpNamespace":{"type":"string","id":37},"swiftPrefix":{"type":"string","id":39},"phpClassPrefix":{"type":"string","id":40},"phpNamespace":{"type":"string","id":41},"phpMetadataNamespace":{"type":"string","id":44},"rubyPackage":{"type":"string","id":45},"features":{"type":"FeatureSet","id":50},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[42,42],[38,38]],"nested":{"OptimizeMode":{"values":{"SPEED":1,"CODE_SIZE":2,"LITE_RUNTIME":3}}}},"MessageOptions":{"fields":{"messageSetWireFormat":{"type":"bool","id":1,"options":{"default":false}},"noStandardDescriptorAccessor":{"type":"bool","id":2,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"mapEntry":{"type":"bool","id":7},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":11,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":12},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[5,5],[6,6],[8,8],[9,9]]},"FieldOptions":{"fields":{"ctype":{"type":"CType","id":1,"options":{"default":"STRING"}},"packed":{"type":"bool","id":2},"jstype":{"type":"JSType","id":6,"options":{"default":"JS_NORMAL"}},"lazy":{"type":"bool","id":5,"options":{"default":false}},"unverifiedLazy":{"type":"bool","id":15,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"weak":{"type":"bool","id":10,"options":{"default":false}},"debugRedact":{"type":"bool","id":16,"options":{"default":false}},"retention":{"type":"OptionRetention","id":17},"targets":{"rule":"repeated","type":"OptionTargetType","id":19,"options":{"packed":false}},"editionDefaults":{"rule":"repeated","type":"EditionDefault","id":20},"features":{"type":"FeatureSet","id":21},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[18,18]],"nested":{"CType":{"values":{"STRING":0,"CORD":1,"STRING_PIECE":2}},"JSType":{"values":{"JS_NORMAL":0,"JS_STRING":1,"JS_NUMBER":2}},"OptionRetention":{"values":{"RETENTION_UNKNOWN":0,"RETENTION_RUNTIME":1,"RETENTION_SOURCE":2}},"OptionTargetType":{"values":{"TARGET_TYPE_UNKNOWN":0,"TARGET_TYPE_FILE":1,"TARGET_TYPE_EXTENSION_RANGE":2,"TARGET_TYPE_MESSAGE":3,"TARGET_TYPE_FIELD":4,"TARGET_TYPE_ONEOF":5,"TARGET_TYPE_ENUM":6,"TARGET_TYPE_ENUM_ENTRY":7,"TARGET_TYPE_SERVICE":8,"TARGET_TYPE_METHOD":9}},"EditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"value":{"type":"string","id":2}}}}},"OneofOptions":{"fields":{"features":{"type":"FeatureSet","id":1},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"EnumOptions":{"fields":{"allowAlias":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":6,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":7},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[5,5]]},"EnumValueOptions":{"fields":{"deprecated":{"type":"bool","id":1,"options":{"default":false}},"features":{"type":"FeatureSet","id":2},"debugRedact":{"type":"bool","id":3,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"ServiceOptions":{"fields":{"features":{"type":"FeatureSet","id":34},"deprecated":{"type":"bool","id":33,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"MethodOptions":{"fields":{"deprecated":{"type":"bool","id":33,"options":{"default":false}},"idempotencyLevel":{"type":"IdempotencyLevel","id":34,"options":{"default":"IDEMPOTENCY_UNKNOWN"}},"features":{"type":"FeatureSet","id":35},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"nested":{"IdempotencyLevel":{"values":{"IDEMPOTENCY_UNKNOWN":0,"NO_SIDE_EFFECTS":1,"IDEMPOTENT":2}}}},"UninterpretedOption":{"fields":{"name":{"rule":"repeated","type":"NamePart","id":2},"identifierValue":{"type":"string","id":3},"positiveIntValue":{"type":"uint64","id":4},"negativeIntValue":{"type":"int64","id":5},"doubleValue":{"type":"double","id":6},"stringValue":{"type":"bytes","id":7},"aggregateValue":{"type":"string","id":8}},"nested":{"NamePart":{"fields":{"namePart":{"rule":"required","type":"string","id":1},"isExtension":{"rule":"required","type":"bool","id":2}}}}},"FeatureSet":{"fields":{"fieldPresence":{"type":"FieldPresence","id":1,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_2023","edition_defaults.value":"EXPLICIT"}},"enumType":{"type":"EnumType","id":2,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"OPEN"}},"repeatedFieldEncoding":{"type":"RepeatedFieldEncoding","id":3,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"PACKED"}},"utf8Validation":{"type":"Utf8Validation","id":4,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"VERIFY"}},"messageEncoding":{"type":"MessageEncoding","id":5,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO2","edition_defaults.value":"LENGTH_PREFIXED"}},"jsonFormat":{"type":"JsonFormat","id":6,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"ALLOW"}}},"extensions":[[1e3,1e3],[1001,1001],[1002,1002],[9995,9999],[1e4,1e4]],"reserved":[[999,999]],"nested":{"FieldPresence":{"values":{"FIELD_PRESENCE_UNKNOWN":0,"EXPLICIT":1,"IMPLICIT":2,"LEGACY_REQUIRED":3}},"EnumType":{"values":{"ENUM_TYPE_UNKNOWN":0,"OPEN":1,"CLOSED":2}},"RepeatedFieldEncoding":{"values":{"REPEATED_FIELD_ENCODING_UNKNOWN":0,"PACKED":1,"EXPANDED":2}},"Utf8Validation":{"values":{"UTF8_VALIDATION_UNKNOWN":0,"VERIFY":2,"NONE":3}},"MessageEncoding":{"values":{"MESSAGE_ENCODING_UNKNOWN":0,"LENGTH_PREFIXED":1,"DELIMITED":2}},"JsonFormat":{"values":{"JSON_FORMAT_UNKNOWN":0,"ALLOW":1,"LEGACY_BEST_EFFORT":2}}}},"FeatureSetDefaults":{"fields":{"defaults":{"rule":"repeated","type":"FeatureSetEditionDefault","id":1},"minimumEdition":{"type":"Edition","id":4},"maximumEdition":{"type":"Edition","id":5}},"nested":{"FeatureSetEditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"features":{"type":"FeatureSet","id":2}}}}},"SourceCodeInfo":{"fields":{"location":{"rule":"repeated","type":"Location","id":1}},"nested":{"Location":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"span":{"rule":"repeated","type":"int32","id":2},"leadingComments":{"type":"string","id":3},"trailingComments":{"type":"string","id":4},"leadingDetachedComments":{"rule":"repeated","type":"string","id":6}}}}},"GeneratedCodeInfo":{"fields":{"annotation":{"rule":"repeated","type":"Annotation","id":1}},"nested":{"Annotation":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"sourceFile":{"type":"string","id":2},"begin":{"type":"int32","id":3},"end":{"type":"int32","id":4},"semantic":{"type":"Semantic","id":5}},"nested":{"Semantic":{"values":{"NONE":0,"SET":1,"ALIAS":2}}}}}},"Timestamp":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"Duration":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"Any":{"fields":{"type_url":{"type":"string","id":1},"value":{"type":"bytes","id":2}}},"Empty":{"fields":{}},"FieldMask":{"fields":{"paths":{"rule":"repeated","type":"string","id":1}}},"Struct":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"Value":{"oneofs":{"kind":{"oneof":["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},"fields":{"nullValue":{"type":"NullValue","id":1},"numberValue":{"type":"double","id":2},"stringValue":{"type":"string","id":3},"boolValue":{"type":"bool","id":4},"structValue":{"type":"Struct","id":5},"listValue":{"type":"ListValue","id":6}}},"NullValue":{"values":{"NULL_VALUE":0}},"ListValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"DoubleValue":{"fields":{"value":{"type":"double","id":1}}},"FloatValue":{"fields":{"value":{"type":"float","id":1}}},"Int64Value":{"fields":{"value":{"type":"int64","id":1}}},"UInt64Value":{"fields":{"value":{"type":"uint64","id":1}}},"Int32Value":{"fields":{"value":{"type":"int32","id":1}}},"UInt32Value":{"fields":{"value":{"type":"uint32","id":1}}},"BoolValue":{"fields":{"value":{"type":"bool","id":1}}},"StringValue":{"fields":{"value":{"type":"string","id":1}}},"BytesValue":{"fields":{"value":{"type":"bytes","id":1}}}}},"type":{"options":{"go_package":"google.golang.org/genproto/googleapis/type/latlng;latlng","java_multiple_files":true,"java_outer_classname":"LatLngProto","java_package":"com.google.type","objc_class_prefix":"GTP","cc_enable_arenas":true},"nested":{"DayOfWeek":{"values":{"DAY_OF_WEEK_UNSPECIFIED":0,"MONDAY":1,"TUESDAY":2,"WEDNESDAY":3,"THURSDAY":4,"FRIDAY":5,"SATURDAY":6,"SUNDAY":7}},"LatLng":{"fields":{"latitude":{"type":"double","id":1},"longitude":{"type":"double","id":2}}}}},"longrunning":{"options":{"cc_enable_arenas":true,"csharp_namespace":"Google.LongRunning","go_package":"cloud.google.com/go/longrunning/autogen/longrunningpb;longrunningpb","java_multiple_files":true,"java_outer_classname":"OperationsProto","java_package":"com.google.longrunning","php_namespace":"Google\\LongRunning"},"nested":{"operationInfo":{"type":"google.longrunning.OperationInfo","id":1049,"extend":"google.protobuf.MethodOptions"},"Operations":{"options":{"(google.api.default_host)":"longrunning.googleapis.com"},"methods":{"ListOperations":{"requestType":"ListOperationsRequest","responseType":"ListOperationsResponse","options":{"(google.api.http).get":"/v1/{name=operations}","(google.api.method_signature)":"name,filter"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=operations}"}},{"(google.api.method_signature)":"name,filter"}]},"GetOperation":{"requestType":"GetOperationRequest","responseType":"Operation","options":{"(google.api.http).get":"/v1/{name=operations/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=operations/**}"}},{"(google.api.method_signature)":"name"}]},"DeleteOperation":{"requestType":"DeleteOperationRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=operations/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=operations/**}"}},{"(google.api.method_signature)":"name"}]},"CancelOperation":{"requestType":"CancelOperationRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).post":"/v1/{name=operations/**}:cancel","(google.api.http).body":"*","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{name=operations/**}:cancel","body":"*"}},{"(google.api.method_signature)":"name"}]},"WaitOperation":{"requestType":"WaitOperationRequest","responseType":"Operation"}}},"Operation":{"oneofs":{"result":{"oneof":["error","response"]}},"fields":{"name":{"type":"string","id":1},"metadata":{"type":"google.protobuf.Any","id":2},"done":{"type":"bool","id":3},"error":{"type":"google.rpc.Status","id":4},"response":{"type":"google.protobuf.Any","id":5}}},"GetOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"ListOperationsRequest":{"fields":{"name":{"type":"string","id":4},"filter":{"type":"string","id":1},"pageSize":{"type":"int32","id":2},"pageToken":{"type":"string","id":3}}},"ListOperationsResponse":{"fields":{"operations":{"rule":"repeated","type":"Operation","id":1},"nextPageToken":{"type":"string","id":2}}},"CancelOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"DeleteOperationRequest":{"fields":{"name":{"type":"string","id":1}}},"WaitOperationRequest":{"fields":{"name":{"type":"string","id":1},"timeout":{"type":"google.protobuf.Duration","id":2}}},"OperationInfo":{"fields":{"responseType":{"type":"string","id":1},"metadataType":{"type":"string","id":2}}}}},"rpc":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/rpc/status;status","java_multiple_files":true,"java_outer_classname":"StatusProto","java_package":"com.google.rpc","objc_class_prefix":"RPC"},"nested":{"Status":{"fields":{"code":{"type":"int32","id":1},"message":{"type":"string","id":2},"details":{"rule":"repeated","type":"google.protobuf.Any","id":3}}}}}}}}}

@@ -1,1 +0,1 @@

{"nested":{"google":{"nested":{"protobuf":{"options":{"go_package":"google.golang.org/protobuf/types/descriptorpb","java_package":"com.google.protobuf","java_outer_classname":"DescriptorProtos","csharp_namespace":"Google.Protobuf.Reflection","objc_class_prefix":"GPB","cc_enable_arenas":true,"optimize_for":"SPEED"},"nested":{"Struct":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"Value":{"oneofs":{"kind":{"oneof":["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},"fields":{"nullValue":{"type":"NullValue","id":1},"numberValue":{"type":"double","id":2},"stringValue":{"type":"string","id":3},"boolValue":{"type":"bool","id":4},"structValue":{"type":"Struct","id":5},"listValue":{"type":"ListValue","id":6}}},"NullValue":{"values":{"NULL_VALUE":0}},"ListValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"Timestamp":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"FileDescriptorSet":{"fields":{"file":{"rule":"repeated","type":"FileDescriptorProto","id":1}}},"Edition":{"values":{"EDITION_UNKNOWN":0,"EDITION_PROTO2":998,"EDITION_PROTO3":999,"EDITION_2023":1e3,"EDITION_2024":1001,"EDITION_1_TEST_ONLY":1,"EDITION_2_TEST_ONLY":2,"EDITION_99997_TEST_ONLY":99997,"EDITION_99998_TEST_ONLY":99998,"EDITION_99999_TEST_ONLY":99999,"EDITION_MAX":2147483647}},"FileDescriptorProto":{"fields":{"name":{"type":"string","id":1},"package":{"type":"string","id":2},"dependency":{"rule":"repeated","type":"string","id":3},"publicDependency":{"rule":"repeated","type":"int32","id":10,"options":{"packed":false}},"weakDependency":{"rule":"repeated","type":"int32","id":11,"options":{"packed":false}},"messageType":{"rule":"repeated","type":"DescriptorProto","id":4},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":5},"service":{"rule":"repeated","type":"ServiceDescriptorProto","id":6},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":7},"options":{"type":"FileOptions","id":8},"sourceCodeInfo":{"type":"SourceCodeInfo","id":9},"syntax":{"type":"string","id":12},"edition":{"type":"Edition","id":14}}},"DescriptorProto":{"fields":{"name":{"type":"string","id":1},"field":{"rule":"repeated","type":"FieldDescriptorProto","id":2},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":6},"nestedType":{"rule":"repeated","type":"DescriptorProto","id":3},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":4},"extensionRange":{"rule":"repeated","type":"ExtensionRange","id":5},"oneofDecl":{"rule":"repeated","type":"OneofDescriptorProto","id":8},"options":{"type":"MessageOptions","id":7},"reservedRange":{"rule":"repeated","type":"ReservedRange","id":9},"reservedName":{"rule":"repeated","type":"string","id":10}},"nested":{"ExtensionRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2},"options":{"type":"ExtensionRangeOptions","id":3}}},"ReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"ExtensionRangeOptions":{"fields":{"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999},"declaration":{"rule":"repeated","type":"Declaration","id":2,"options":{"retention":"RETENTION_SOURCE"}},"features":{"type":"FeatureSet","id":50},"verification":{"type":"VerificationState","id":3,"options":{"default":"UNVERIFIED","retention":"RETENTION_SOURCE"}}},"extensions":[[1e3,536870911]],"nested":{"Declaration":{"fields":{"number":{"type":"int32","id":1},"fullName":{"type":"string","id":2},"type":{"type":"string","id":3},"reserved":{"type":"bool","id":5},"repeated":{"type":"bool","id":6}},"reserved":[[4,4]]},"VerificationState":{"values":{"DECLARATION":0,"UNVERIFIED":1}}}},"FieldDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":3},"label":{"type":"Label","id":4},"type":{"type":"Type","id":5},"typeName":{"type":"string","id":6},"extendee":{"type":"string","id":2},"defaultValue":{"type":"string","id":7},"oneofIndex":{"type":"int32","id":9},"jsonName":{"type":"string","id":10},"options":{"type":"FieldOptions","id":8},"proto3Optional":{"type":"bool","id":17}},"nested":{"Type":{"values":{"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Label":{"values":{"LABEL_OPTIONAL":1,"LABEL_REPEATED":3,"LABEL_REQUIRED":2}}}},"OneofDescriptorProto":{"fields":{"name":{"type":"string","id":1},"options":{"type":"OneofOptions","id":2}}},"EnumDescriptorProto":{"fields":{"name":{"type":"string","id":1},"value":{"rule":"repeated","type":"EnumValueDescriptorProto","id":2},"options":{"type":"EnumOptions","id":3},"reservedRange":{"rule":"repeated","type":"EnumReservedRange","id":4},"reservedName":{"rule":"repeated","type":"string","id":5}},"nested":{"EnumReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"EnumValueDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"type":"EnumValueOptions","id":3}}},"ServiceDescriptorProto":{"fields":{"name":{"type":"string","id":1},"method":{"rule":"repeated","type":"MethodDescriptorProto","id":2},"options":{"type":"ServiceOptions","id":3}}},"MethodDescriptorProto":{"fields":{"name":{"type":"string","id":1},"inputType":{"type":"string","id":2},"outputType":{"type":"string","id":3},"options":{"type":"MethodOptions","id":4},"clientStreaming":{"type":"bool","id":5,"options":{"default":false}},"serverStreaming":{"type":"bool","id":6,"options":{"default":false}}}},"FileOptions":{"fields":{"javaPackage":{"type":"string","id":1},"javaOuterClassname":{"type":"string","id":8},"javaMultipleFiles":{"type":"bool","id":10,"options":{"default":false}},"javaGenerateEqualsAndHash":{"type":"bool","id":20,"options":{"deprecated":true}},"javaStringCheckUtf8":{"type":"bool","id":27,"options":{"default":false}},"optimizeFor":{"type":"OptimizeMode","id":9,"options":{"default":"SPEED"}},"goPackage":{"type":"string","id":11},"ccGenericServices":{"type":"bool","id":16,"options":{"default":false}},"javaGenericServices":{"type":"bool","id":17,"options":{"default":false}},"pyGenericServices":{"type":"bool","id":18,"options":{"default":false}},"deprecated":{"type":"bool","id":23,"options":{"default":false}},"ccEnableArenas":{"type":"bool","id":31,"options":{"default":true}},"objcClassPrefix":{"type":"string","id":36},"csharpNamespace":{"type":"string","id":37},"swiftPrefix":{"type":"string","id":39},"phpClassPrefix":{"type":"string","id":40},"phpNamespace":{"type":"string","id":41},"phpMetadataNamespace":{"type":"string","id":44},"rubyPackage":{"type":"string","id":45},"features":{"type":"FeatureSet","id":50},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[42,42],[38,38]],"nested":{"OptimizeMode":{"values":{"SPEED":1,"CODE_SIZE":2,"LITE_RUNTIME":3}}}},"MessageOptions":{"fields":{"messageSetWireFormat":{"type":"bool","id":1,"options":{"default":false}},"noStandardDescriptorAccessor":{"type":"bool","id":2,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"mapEntry":{"type":"bool","id":7},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":11,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":12},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[5,5],[6,6],[8,8],[9,9]]},"FieldOptions":{"fields":{"ctype":{"type":"CType","id":1,"options":{"default":"STRING"}},"packed":{"type":"bool","id":2},"jstype":{"type":"JSType","id":6,"options":{"default":"JS_NORMAL"}},"lazy":{"type":"bool","id":5,"options":{"default":false}},"unverifiedLazy":{"type":"bool","id":15,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"weak":{"type":"bool","id":10,"options":{"default":false}},"debugRedact":{"type":"bool","id":16,"options":{"default":false}},"retention":{"type":"OptionRetention","id":17},"targets":{"rule":"repeated","type":"OptionTargetType","id":19,"options":{"packed":false}},"editionDefaults":{"rule":"repeated","type":"EditionDefault","id":20},"features":{"type":"FeatureSet","id":21},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[18,18]],"nested":{"CType":{"values":{"STRING":0,"CORD":1,"STRING_PIECE":2}},"JSType":{"values":{"JS_NORMAL":0,"JS_STRING":1,"JS_NUMBER":2}},"OptionRetention":{"values":{"RETENTION_UNKNOWN":0,"RETENTION_RUNTIME":1,"RETENTION_SOURCE":2}},"OptionTargetType":{"values":{"TARGET_TYPE_UNKNOWN":0,"TARGET_TYPE_FILE":1,"TARGET_TYPE_EXTENSION_RANGE":2,"TARGET_TYPE_MESSAGE":3,"TARGET_TYPE_FIELD":4,"TARGET_TYPE_ONEOF":5,"TARGET_TYPE_ENUM":6,"TARGET_TYPE_ENUM_ENTRY":7,"TARGET_TYPE_SERVICE":8,"TARGET_TYPE_METHOD":9}},"EditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"value":{"type":"string","id":2}}}}},"OneofOptions":{"fields":{"features":{"type":"FeatureSet","id":1},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"EnumOptions":{"fields":{"allowAlias":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":6,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":7},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[5,5]]},"EnumValueOptions":{"fields":{"deprecated":{"type":"bool","id":1,"options":{"default":false}},"features":{"type":"FeatureSet","id":2},"debugRedact":{"type":"bool","id":3,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"ServiceOptions":{"fields":{"features":{"type":"FeatureSet","id":34},"deprecated":{"type":"bool","id":33,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"MethodOptions":{"fields":{"deprecated":{"type":"bool","id":33,"options":{"default":false}},"idempotencyLevel":{"type":"IdempotencyLevel","id":34,"options":{"default":"IDEMPOTENCY_UNKNOWN"}},"features":{"type":"FeatureSet","id":35},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"nested":{"IdempotencyLevel":{"values":{"IDEMPOTENCY_UNKNOWN":0,"NO_SIDE_EFFECTS":1,"IDEMPOTENT":2}}}},"UninterpretedOption":{"fields":{"name":{"rule":"repeated","type":"NamePart","id":2},"identifierValue":{"type":"string","id":3},"positiveIntValue":{"type":"uint64","id":4},"negativeIntValue":{"type":"int64","id":5},"doubleValue":{"type":"double","id":6},"stringValue":{"type":"bytes","id":7},"aggregateValue":{"type":"string","id":8}},"nested":{"NamePart":{"fields":{"namePart":{"rule":"required","type":"string","id":1},"isExtension":{"rule":"required","type":"bool","id":2}}}}},"FeatureSet":{"fields":{"fieldPresence":{"type":"FieldPresence","id":1,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_2023","edition_defaults.value":"EXPLICIT"}},"enumType":{"type":"EnumType","id":2,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"OPEN"}},"repeatedFieldEncoding":{"type":"RepeatedFieldEncoding","id":3,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"PACKED"}},"utf8Validation":{"type":"Utf8Validation","id":4,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"VERIFY"}},"messageEncoding":{"type":"MessageEncoding","id":5,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO2","edition_defaults.value":"LENGTH_PREFIXED"}},"jsonFormat":{"type":"JsonFormat","id":6,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"ALLOW"}}},"extensions":[[1e3,1e3],[1001,1001],[1002,1002],[9995,9999],[1e4,1e4]],"reserved":[[999,999]],"nested":{"FieldPresence":{"values":{"FIELD_PRESENCE_UNKNOWN":0,"EXPLICIT":1,"IMPLICIT":2,"LEGACY_REQUIRED":3}},"EnumType":{"values":{"ENUM_TYPE_UNKNOWN":0,"OPEN":1,"CLOSED":2}},"RepeatedFieldEncoding":{"values":{"REPEATED_FIELD_ENCODING_UNKNOWN":0,"PACKED":1,"EXPANDED":2}},"Utf8Validation":{"values":{"UTF8_VALIDATION_UNKNOWN":0,"VERIFY":2,"NONE":3}},"MessageEncoding":{"values":{"MESSAGE_ENCODING_UNKNOWN":0,"LENGTH_PREFIXED":1,"DELIMITED":2}},"JsonFormat":{"values":{"JSON_FORMAT_UNKNOWN":0,"ALLOW":1,"LEGACY_BEST_EFFORT":2}}}},"FeatureSetDefaults":{"fields":{"defaults":{"rule":"repeated","type":"FeatureSetEditionDefault","id":1},"minimumEdition":{"type":"Edition","id":4},"maximumEdition":{"type":"Edition","id":5}},"nested":{"FeatureSetEditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"features":{"type":"FeatureSet","id":2}}}}},"SourceCodeInfo":{"fields":{"location":{"rule":"repeated","type":"Location","id":1}},"nested":{"Location":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"span":{"rule":"repeated","type":"int32","id":2},"leadingComments":{"type":"string","id":3},"trailingComments":{"type":"string","id":4},"leadingDetachedComments":{"rule":"repeated","type":"string","id":6}}}}},"GeneratedCodeInfo":{"fields":{"annotation":{"rule":"repeated","type":"Annotation","id":1}},"nested":{"Annotation":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"sourceFile":{"type":"string","id":2},"begin":{"type":"int32","id":3},"end":{"type":"int32","id":4},"semantic":{"type":"Semantic","id":5}},"nested":{"Semantic":{"values":{"NONE":0,"SET":1,"ALIAS":2}}}}}},"Duration":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"DoubleValue":{"fields":{"value":{"type":"double","id":1}}},"FloatValue":{"fields":{"value":{"type":"float","id":1}}},"Int64Value":{"fields":{"value":{"type":"int64","id":1}}},"UInt64Value":{"fields":{"value":{"type":"uint64","id":1}}},"Int32Value":{"fields":{"value":{"type":"int32","id":1}}},"UInt32Value":{"fields":{"value":{"type":"uint32","id":1}}},"BoolValue":{"fields":{"value":{"type":"bool","id":1}}},"StringValue":{"fields":{"value":{"type":"string","id":1}}},"BytesValue":{"fields":{"value":{"type":"bytes","id":1}}},"Empty":{"fields":{}},"Any":{"fields":{"type_url":{"type":"string","id":1},"value":{"type":"bytes","id":2}}},"FieldMask":{"fields":{"paths":{"rule":"repeated","type":"string","id":1}}}}},"firestore":{"nested":{"v1":{"options":{"csharp_namespace":"Google.Cloud.Firestore.V1","go_package":"cloud.google.com/go/firestore/apiv1/firestorepb;firestorepb","java_multiple_files":true,"java_outer_classname":"WriteProto","java_package":"com.google.firestore.v1","objc_class_prefix":"GCFS","php_namespace":"Google\\Cloud\\Firestore\\V1","ruby_package":"Google::Cloud::Firestore::V1"},"nested":{"AggregationResult":{"fields":{"aggregateFields":{"keyType":"string","type":"Value","id":2}}},"Document":{"fields":{"name":{"type":"string","id":1},"fields":{"keyType":"string","type":"Value","id":2},"createTime":{"type":"google.protobuf.Timestamp","id":3},"updateTime":{"type":"google.protobuf.Timestamp","id":4}}},"Value":{"oneofs":{"valueType":{"oneof":["nullValue","booleanValue","integerValue","doubleValue","timestampValue","stringValue","bytesValue","referenceValue","geoPointValue","arrayValue","mapValue"]}},"fields":{"nullValue":{"type":"google.protobuf.NullValue","id":11},"booleanValue":{"type":"bool","id":1},"integerValue":{"type":"int64","id":2},"doubleValue":{"type":"double","id":3},"timestampValue":{"type":"google.protobuf.Timestamp","id":10},"stringValue":{"type":"string","id":17},"bytesValue":{"type":"bytes","id":18},"referenceValue":{"type":"string","id":5},"geoPointValue":{"type":"google.type.LatLng","id":8},"arrayValue":{"type":"ArrayValue","id":9},"mapValue":{"type":"MapValue","id":6}}},"ArrayValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"MapValue":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"BitSequence":{"fields":{"bitmap":{"type":"bytes","id":1},"padding":{"type":"int32","id":2}}},"BloomFilter":{"fields":{"bits":{"type":"BitSequence","id":1},"hashCount":{"type":"int32","id":2}}},"DocumentMask":{"fields":{"fieldPaths":{"rule":"repeated","type":"string","id":1}}},"Precondition":{"oneofs":{"conditionType":{"oneof":["exists","updateTime"]}},"fields":{"exists":{"type":"bool","id":1},"updateTime":{"type":"google.protobuf.Timestamp","id":2}}},"TransactionOptions":{"oneofs":{"mode":{"oneof":["readOnly","readWrite"]}},"fields":{"readOnly":{"type":"ReadOnly","id":2},"readWrite":{"type":"ReadWrite","id":3}},"nested":{"ReadWrite":{"fields":{"retryTransaction":{"type":"bytes","id":1}}},"ReadOnly":{"oneofs":{"consistencySelector":{"oneof":["readTime"]}},"fields":{"readTime":{"type":"google.protobuf.Timestamp","id":2}}}}},"Firestore":{"options":{"(google.api.default_host)":"firestore.googleapis.com","(google.api.oauth_scopes)":"https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore"},"methods":{"GetDocument":{"requestType":"GetDocumentRequest","responseType":"Document","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/documents/*/**}"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/documents/*/**}"}}]},"ListDocuments":{"requestType":"ListDocumentsRequest","responseType":"ListDocumentsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}","(google.api.http).additional_bindings.get":"/v1/{parent=projects/*/databases/*/documents}/{collection_id}"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}","additional_bindings":{"get":"/v1/{parent=projects/*/databases/*/documents}/{collection_id}"}}}]},"UpdateDocument":{"requestType":"UpdateDocumentRequest","responseType":"Document","options":{"(google.api.http).patch":"/v1/{document.name=projects/*/databases/*/documents/*/**}","(google.api.http).body":"document","(google.api.method_signature)":"document,update_mask"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{document.name=projects/*/databases/*/documents/*/**}","body":"document"}},{"(google.api.method_signature)":"document,update_mask"}]},"DeleteDocument":{"requestType":"DeleteDocumentRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/documents/*/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/documents/*/**}"}},{"(google.api.method_signature)":"name"}]},"BatchGetDocuments":{"requestType":"BatchGetDocumentsRequest","responseType":"BatchGetDocumentsResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:batchGet","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:batchGet","body":"*"}}]},"BeginTransaction":{"requestType":"BeginTransactionRequest","responseType":"BeginTransactionResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:beginTransaction","(google.api.http).body":"*","(google.api.method_signature)":"database"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:beginTransaction","body":"*"}},{"(google.api.method_signature)":"database"}]},"Commit":{"requestType":"CommitRequest","responseType":"CommitResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:commit","(google.api.http).body":"*","(google.api.method_signature)":"database,writes"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:commit","body":"*"}},{"(google.api.method_signature)":"database,writes"}]},"Rollback":{"requestType":"RollbackRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:rollback","(google.api.http).body":"*","(google.api.method_signature)":"database,transaction"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:rollback","body":"*"}},{"(google.api.method_signature)":"database,transaction"}]},"RunQuery":{"requestType":"RunQueryRequest","responseType":"RunQueryResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:runQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:runQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runQuery","body":"*"}}}]},"RunAggregationQuery":{"requestType":"RunAggregationQueryRequest","responseType":"RunAggregationQueryResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runAggregationQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runAggregationQuery","body":"*"}}}]},"PartitionQuery":{"requestType":"PartitionQueryRequest","responseType":"PartitionQueryResponse","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:partitionQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:partitionQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:partitionQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:partitionQuery","body":"*"}}}]},"Write":{"requestType":"WriteRequest","requestStream":true,"responseType":"WriteResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:write","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:write","body":"*"}}]},"Listen":{"requestType":"ListenRequest","requestStream":true,"responseType":"ListenResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:listen","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:listen","body":"*"}}]},"ListCollectionIds":{"requestType":"ListCollectionIdsRequest","responseType":"ListCollectionIdsResponse","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:listCollectionIds","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:listCollectionIds","(google.api.http).additional_bindings.body":"*","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:listCollectionIds","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:listCollectionIds","body":"*"}}},{"(google.api.method_signature)":"parent"}]},"BatchWrite":{"requestType":"BatchWriteRequest","responseType":"BatchWriteResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:batchWrite","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:batchWrite","body":"*"}}]},"CreateDocument":{"requestType":"CreateDocumentRequest","responseType":"Document","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents/**}/{collection_id}","(google.api.http).body":"document"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents/**}/{collection_id}","body":"document"}}]}}},"GetDocumentRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","readTime"]}},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"mask":{"type":"DocumentMask","id":2},"transaction":{"type":"bytes","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":5}}},"ListDocumentsRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"collectionId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"pageSize":{"type":"int32","id":3,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"pageToken":{"type":"string","id":4,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"orderBy":{"type":"string","id":6,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"mask":{"type":"DocumentMask","id":7,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"transaction":{"type":"bytes","id":8},"readTime":{"type":"google.protobuf.Timestamp","id":10},"showMissing":{"type":"bool","id":12}}},"ListDocumentsResponse":{"fields":{"documents":{"rule":"repeated","type":"Document","id":1},"nextPageToken":{"type":"string","id":2}}},"CreateDocumentRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"collectionId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"documentId":{"type":"string","id":3},"document":{"type":"Document","id":4,"options":{"(google.api.field_behavior)":"REQUIRED"}},"mask":{"type":"DocumentMask","id":5}}},"UpdateDocumentRequest":{"fields":{"document":{"type":"Document","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"DocumentMask","id":2},"mask":{"type":"DocumentMask","id":3},"currentDocument":{"type":"Precondition","id":4}}},"DeleteDocumentRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"currentDocument":{"type":"Precondition","id":2}}},"BatchGetDocumentsRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"documents":{"rule":"repeated","type":"string","id":2},"mask":{"type":"DocumentMask","id":3},"transaction":{"type":"bytes","id":4},"newTransaction":{"type":"TransactionOptions","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":7}}},"BatchGetDocumentsResponse":{"oneofs":{"result":{"oneof":["found","missing"]}},"fields":{"found":{"type":"Document","id":1},"missing":{"type":"string","id":2},"transaction":{"type":"bytes","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"BeginTransactionRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"options":{"type":"TransactionOptions","id":2}}},"BeginTransactionResponse":{"fields":{"transaction":{"type":"bytes","id":1}}},"CommitRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"writes":{"rule":"repeated","type":"Write","id":2},"transaction":{"type":"bytes","id":3}}},"CommitResponse":{"fields":{"writeResults":{"rule":"repeated","type":"WriteResult","id":1},"commitTime":{"type":"google.protobuf.Timestamp","id":2}}},"RollbackRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"transaction":{"type":"bytes","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"RunQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredQuery"]},"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredQuery":{"type":"StructuredQuery","id":2},"transaction":{"type":"bytes","id":5},"newTransaction":{"type":"TransactionOptions","id":6},"readTime":{"type":"google.protobuf.Timestamp","id":7},"explainOptions":{"type":"ExplainOptions","id":10,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"RunQueryResponse":{"oneofs":{"continuationSelector":{"oneof":["done"]}},"fields":{"transaction":{"type":"bytes","id":2},"document":{"type":"Document","id":1},"readTime":{"type":"google.protobuf.Timestamp","id":3},"skippedResults":{"type":"int32","id":4},"done":{"type":"bool","id":6},"explainMetrics":{"type":"ExplainMetrics","id":11}}},"RunAggregationQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredAggregationQuery"]},"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredAggregationQuery":{"type":"StructuredAggregationQuery","id":2},"transaction":{"type":"bytes","id":4},"newTransaction":{"type":"TransactionOptions","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":6},"explainOptions":{"type":"ExplainOptions","id":8,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"RunAggregationQueryResponse":{"fields":{"result":{"type":"AggregationResult","id":1},"transaction":{"type":"bytes","id":2},"readTime":{"type":"google.protobuf.Timestamp","id":3},"explainMetrics":{"type":"ExplainMetrics","id":10}}},"PartitionQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredQuery"]},"consistencySelector":{"oneof":["readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredQuery":{"type":"StructuredQuery","id":2},"partitionCount":{"type":"int64","id":3},"pageToken":{"type":"string","id":4},"pageSize":{"type":"int32","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":6}}},"PartitionQueryResponse":{"fields":{"partitions":{"rule":"repeated","type":"Cursor","id":1},"nextPageToken":{"type":"string","id":2}}},"WriteRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"streamId":{"type":"string","id":2},"writes":{"rule":"repeated","type":"Write","id":3},"streamToken":{"type":"bytes","id":4},"labels":{"keyType":"string","type":"string","id":5}}},"WriteResponse":{"fields":{"streamId":{"type":"string","id":1},"streamToken":{"type":"bytes","id":2},"writeResults":{"rule":"repeated","type":"WriteResult","id":3},"commitTime":{"type":"google.protobuf.Timestamp","id":4}}},"ListenRequest":{"oneofs":{"targetChange":{"oneof":["addTarget","removeTarget"]}},"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"addTarget":{"type":"Target","id":2},"removeTarget":{"type":"int32","id":3},"labels":{"keyType":"string","type":"string","id":4}}},"ListenResponse":{"oneofs":{"responseType":{"oneof":["targetChange","documentChange","documentDelete","documentRemove","filter"]}},"fields":{"targetChange":{"type":"TargetChange","id":2},"documentChange":{"type":"DocumentChange","id":3},"documentDelete":{"type":"DocumentDelete","id":4},"documentRemove":{"type":"DocumentRemove","id":6},"filter":{"type":"ExistenceFilter","id":5}}},"Target":{"oneofs":{"targetType":{"oneof":["query","documents"]},"resumeType":{"oneof":["resumeToken","readTime"]}},"fields":{"query":{"type":"QueryTarget","id":2},"documents":{"type":"DocumentsTarget","id":3},"resumeToken":{"type":"bytes","id":4},"readTime":{"type":"google.protobuf.Timestamp","id":11},"targetId":{"type":"int32","id":5},"once":{"type":"bool","id":6},"expectedCount":{"type":"google.protobuf.Int32Value","id":12}},"nested":{"DocumentsTarget":{"fields":{"documents":{"rule":"repeated","type":"string","id":2}}},"QueryTarget":{"oneofs":{"queryType":{"oneof":["structuredQuery"]}},"fields":{"parent":{"type":"string","id":1},"structuredQuery":{"type":"StructuredQuery","id":2}}}}},"TargetChange":{"fields":{"targetChangeType":{"type":"TargetChangeType","id":1},"targetIds":{"rule":"repeated","type":"int32","id":2},"cause":{"type":"google.rpc.Status","id":3},"resumeToken":{"type":"bytes","id":4},"readTime":{"type":"google.protobuf.Timestamp","id":6}},"nested":{"TargetChangeType":{"values":{"NO_CHANGE":0,"ADD":1,"REMOVE":2,"CURRENT":3,"RESET":4}}}},"ListCollectionIdsRequest":{"oneofs":{"consistencySelector":{"oneof":["readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"pageSize":{"type":"int32","id":2},"pageToken":{"type":"string","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"ListCollectionIdsResponse":{"fields":{"collectionIds":{"rule":"repeated","type":"string","id":1},"nextPageToken":{"type":"string","id":2}}},"BatchWriteRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"writes":{"rule":"repeated","type":"Write","id":2},"labels":{"keyType":"string","type":"string","id":3}}},"BatchWriteResponse":{"fields":{"writeResults":{"rule":"repeated","type":"WriteResult","id":1},"status":{"rule":"repeated","type":"google.rpc.Status","id":2}}},"StructuredQuery":{"fields":{"select":{"type":"Projection","id":1},"from":{"rule":"repeated","type":"CollectionSelector","id":2},"where":{"type":"Filter","id":3},"orderBy":{"rule":"repeated","type":"Order","id":4},"startAt":{"type":"Cursor","id":7},"endAt":{"type":"Cursor","id":8},"offset":{"type":"int32","id":6},"limit":{"type":"google.protobuf.Int32Value","id":5},"findNearest":{"type":"FindNearest","id":9,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"CollectionSelector":{"fields":{"collectionId":{"type":"string","id":2},"allDescendants":{"type":"bool","id":3}}},"Filter":{"oneofs":{"filterType":{"oneof":["compositeFilter","fieldFilter","unaryFilter"]}},"fields":{"compositeFilter":{"type":"CompositeFilter","id":1},"fieldFilter":{"type":"FieldFilter","id":2},"unaryFilter":{"type":"UnaryFilter","id":3}}},"CompositeFilter":{"fields":{"op":{"type":"Operator","id":1},"filters":{"rule":"repeated","type":"Filter","id":2}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"AND":1,"OR":2}}}},"FieldFilter":{"fields":{"field":{"type":"FieldReference","id":1},"op":{"type":"Operator","id":2},"value":{"type":"Value","id":3}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"LESS_THAN":1,"LESS_THAN_OR_EQUAL":2,"GREATER_THAN":3,"GREATER_THAN_OR_EQUAL":4,"EQUAL":5,"NOT_EQUAL":6,"ARRAY_CONTAINS":7,"IN":8,"ARRAY_CONTAINS_ANY":9,"NOT_IN":10}}}},"UnaryFilter":{"oneofs":{"operandType":{"oneof":["field"]}},"fields":{"op":{"type":"Operator","id":1},"field":{"type":"FieldReference","id":2}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"IS_NAN":2,"IS_NULL":3,"IS_NOT_NAN":4,"IS_NOT_NULL":5}}}},"Order":{"fields":{"field":{"type":"FieldReference","id":1},"direction":{"type":"Direction","id":2}}},"Direction":{"values":{"DIRECTION_UNSPECIFIED":0,"ASCENDING":1,"DESCENDING":2}},"FieldReference":{"fields":{"fieldPath":{"type":"string","id":2}}},"Projection":{"fields":{"fields":{"rule":"repeated","type":"FieldReference","id":2}}},"FindNearest":{"fields":{"vectorField":{"type":"FieldReference","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"queryVector":{"type":"Value","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"distanceMeasure":{"type":"DistanceMeasure","id":3,"options":{"(google.api.field_behavior)":"REQUIRED"}},"limit":{"type":"google.protobuf.Int32Value","id":4,"options":{"(google.api.field_behavior)":"REQUIRED"}}},"nested":{"DistanceMeasure":{"values":{"DISTANCE_MEASURE_UNSPECIFIED":0,"EUCLIDEAN":1,"COSINE":2,"DOT_PRODUCT":3}}}}}},"StructuredAggregationQuery":{"oneofs":{"queryType":{"oneof":["structuredQuery"]}},"fields":{"structuredQuery":{"type":"StructuredQuery","id":1},"aggregations":{"rule":"repeated","type":"Aggregation","id":3,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"Aggregation":{"oneofs":{"operator":{"oneof":["count","sum","avg"]}},"fields":{"count":{"type":"Count","id":1},"sum":{"type":"Sum","id":2},"avg":{"type":"Avg","id":3},"alias":{"type":"string","id":7,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"Count":{"fields":{"upTo":{"type":"google.protobuf.Int64Value","id":1,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"Sum":{"fields":{"field":{"type":"StructuredQuery.FieldReference","id":1}}},"Avg":{"fields":{"field":{"type":"StructuredQuery.FieldReference","id":1}}}}}}},"Cursor":{"fields":{"values":{"rule":"repeated","type":"Value","id":1},"before":{"type":"bool","id":2}}},"ExplainOptions":{"fields":{"analyze":{"type":"bool","id":1,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"ExplainMetrics":{"fields":{"planSummary":{"type":"PlanSummary","id":1},"executionStats":{"type":"ExecutionStats","id":2}}},"PlanSummary":{"fields":{"indexesUsed":{"rule":"repeated","type":"google.protobuf.Struct","id":1}}},"ExecutionStats":{"fields":{"resultsReturned":{"type":"int64","id":1},"executionDuration":{"type":"google.protobuf.Duration","id":3},"readOperations":{"type":"int64","id":4},"debugStats":{"type":"google.protobuf.Struct","id":5}}},"Write":{"oneofs":{"operation":{"oneof":["update","delete","transform"]}},"fields":{"update":{"type":"Document","id":1},"delete":{"type":"string","id":2},"transform":{"type":"DocumentTransform","id":6},"updateMask":{"type":"DocumentMask","id":3},"updateTransforms":{"rule":"repeated","type":"DocumentTransform.FieldTransform","id":7},"currentDocument":{"type":"Precondition","id":4}}},"DocumentTransform":{"fields":{"document":{"type":"string","id":1},"fieldTransforms":{"rule":"repeated","type":"FieldTransform","id":2}},"nested":{"FieldTransform":{"oneofs":{"transformType":{"oneof":["setToServerValue","increment","maximum","minimum","appendMissingElements","removeAllFromArray"]}},"fields":{"fieldPath":{"type":"string","id":1},"setToServerValue":{"type":"ServerValue","id":2},"increment":{"type":"Value","id":3},"maximum":{"type":"Value","id":4},"minimum":{"type":"Value","id":5},"appendMissingElements":{"type":"ArrayValue","id":6},"removeAllFromArray":{"type":"ArrayValue","id":7}},"nested":{"ServerValue":{"values":{"SERVER_VALUE_UNSPECIFIED":0,"REQUEST_TIME":1}}}}}},"WriteResult":{"fields":{"updateTime":{"type":"google.protobuf.Timestamp","id":1},"transformResults":{"rule":"repeated","type":"Value","id":2}}},"DocumentChange":{"fields":{"document":{"type":"Document","id":1},"targetIds":{"rule":"repeated","type":"int32","id":5},"removedTargetIds":{"rule":"repeated","type":"int32","id":6}}},"DocumentDelete":{"fields":{"document":{"type":"string","id":1},"removedTargetIds":{"rule":"repeated","type":"int32","id":6},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"DocumentRemove":{"fields":{"document":{"type":"string","id":1},"removedTargetIds":{"rule":"repeated","type":"int32","id":2},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"ExistenceFilter":{"fields":{"targetId":{"type":"int32","id":1},"count":{"type":"int32","id":2},"unchangedNames":{"type":"BloomFilter","id":3}}}}}}},"type":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/type/dayofweek;dayofweek","java_multiple_files":true,"java_outer_classname":"DayOfWeekProto","java_package":"com.google.type","objc_class_prefix":"GTP"},"nested":{"LatLng":{"fields":{"latitude":{"type":"double","id":1},"longitude":{"type":"double","id":2}}},"DayOfWeek":{"values":{"DAY_OF_WEEK_UNSPECIFIED":0,"MONDAY":1,"TUESDAY":2,"WEDNESDAY":3,"THURSDAY":4,"FRIDAY":5,"SATURDAY":6,"SUNDAY":7}}}},"api":{"options":{"go_package":"google.golang.org/genproto/googleapis/api/annotations;annotations","java_multiple_files":true,"java_outer_classname":"ResourceProto","java_package":"com.google.api","objc_class_prefix":"GAPI","cc_enable_arenas":true},"nested":{"http":{"type":"HttpRule","id":72295728,"extend":"google.protobuf.MethodOptions"},"Http":{"fields":{"rules":{"rule":"repeated","type":"HttpRule","id":1},"fullyDecodeReservedExpansion":{"type":"bool","id":2}}},"HttpRule":{"oneofs":{"pattern":{"oneof":["get","put","post","delete","patch","custom"]}},"fields":{"selector":{"type":"string","id":1},"get":{"type":"string","id":2},"put":{"type":"string","id":3},"post":{"type":"string","id":4},"delete":{"type":"string","id":5},"patch":{"type":"string","id":6},"custom":{"type":"CustomHttpPattern","id":8},"body":{"type":"string","id":7},"responseBody":{"type":"string","id":12},"additionalBindings":{"rule":"repeated","type":"HttpRule","id":11}}},"CustomHttpPattern":{"fields":{"kind":{"type":"string","id":1},"path":{"type":"string","id":2}}},"methodSignature":{"rule":"repeated","type":"string","id":1051,"extend":"google.protobuf.MethodOptions"},"defaultHost":{"type":"string","id":1049,"extend":"google.protobuf.ServiceOptions"},"oauthScopes":{"type":"string","id":1050,"extend":"google.protobuf.ServiceOptions"},"apiVersion":{"type":"string","id":525000001,"extend":"google.protobuf.ServiceOptions"},"CommonLanguageSettings":{"fields":{"referenceDocsUri":{"type":"string","id":1,"options":{"deprecated":true}},"destinations":{"rule":"repeated","type":"ClientLibraryDestination","id":2}}},"ClientLibrarySettings":{"fields":{"version":{"type":"string","id":1},"launchStage":{"type":"LaunchStage","id":2},"restNumericEnums":{"type":"bool","id":3},"javaSettings":{"type":"JavaSettings","id":21},"cppSettings":{"type":"CppSettings","id":22},"phpSettings":{"type":"PhpSettings","id":23},"pythonSettings":{"type":"PythonSettings","id":24},"nodeSettings":{"type":"NodeSettings","id":25},"dotnetSettings":{"type":"DotnetSettings","id":26},"rubySettings":{"type":"RubySettings","id":27},"goSettings":{"type":"GoSettings","id":28}}},"Publishing":{"fields":{"methodSettings":{"rule":"repeated","type":"MethodSettings","id":2},"newIssueUri":{"type":"string","id":101},"documentationUri":{"type":"string","id":102},"apiShortName":{"type":"string","id":103},"githubLabel":{"type":"string","id":104},"codeownerGithubTeams":{"rule":"repeated","type":"string","id":105},"docTagPrefix":{"type":"string","id":106},"organization":{"type":"ClientLibraryOrganization","id":107},"librarySettings":{"rule":"repeated","type":"ClientLibrarySettings","id":109},"protoReferenceDocumentationUri":{"type":"string","id":110},"restReferenceDocumentationUri":{"type":"string","id":111}}},"JavaSettings":{"fields":{"libraryPackage":{"type":"string","id":1},"serviceClassNames":{"keyType":"string","type":"string","id":2},"common":{"type":"CommonLanguageSettings","id":3}}},"CppSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PhpSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PythonSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"NodeSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"DotnetSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1},"renamedServices":{"keyType":"string","type":"string","id":2},"renamedResources":{"keyType":"string","type":"string","id":3},"ignoredResources":{"rule":"repeated","type":"string","id":4},"forcedNamespaceAliases":{"rule":"repeated","type":"string","id":5},"handwrittenSignatures":{"rule":"repeated","type":"string","id":6}}},"RubySettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"GoSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"MethodSettings":{"fields":{"selector":{"type":"string","id":1},"longRunning":{"type":"LongRunning","id":2},"autoPopulatedFields":{"rule":"repeated","type":"string","id":3}},"nested":{"LongRunning":{"fields":{"initialPollDelay":{"type":"google.protobuf.Duration","id":1},"pollDelayMultiplier":{"type":"float","id":2},"maxPollDelay":{"type":"google.protobuf.Duration","id":3},"totalPollTimeout":{"type":"google.protobuf.Duration","id":4}}}}},"ClientLibraryOrganization":{"values":{"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":0,"CLOUD":1,"ADS":2,"PHOTOS":3,"STREET_VIEW":4,"SHOPPING":5,"GEO":6,"GENERATIVE_AI":7}},"ClientLibraryDestination":{"values":{"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":0,"GITHUB":10,"PACKAGE_MANAGER":20}},"LaunchStage":{"values":{"LAUNCH_STAGE_UNSPECIFIED":0,"UNIMPLEMENTED":6,"PRELAUNCH":7,"EARLY_ACCESS":1,"ALPHA":2,"BETA":3,"GA":4,"DEPRECATED":5}},"fieldBehavior":{"rule":"repeated","type":"google.api.FieldBehavior","id":1052,"extend":"google.protobuf.FieldOptions","options":{"packed":false}},"FieldBehavior":{"values":{"FIELD_BEHAVIOR_UNSPECIFIED":0,"OPTIONAL":1,"REQUIRED":2,"OUTPUT_ONLY":3,"INPUT_ONLY":4,"IMMUTABLE":5,"UNORDERED_LIST":6,"NON_EMPTY_DEFAULT":7,"IDENTIFIER":8}},"resourceReference":{"type":"google.api.ResourceReference","id":1055,"extend":"google.protobuf.FieldOptions"},"resourceDefinition":{"rule":"repeated","type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.FileOptions"},"resource":{"type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.MessageOptions"},"ResourceDescriptor":{"fields":{"type":{"type":"string","id":1},"pattern":{"rule":"repeated","type":"string","id":2},"nameField":{"type":"string","id":3},"history":{"type":"History","id":4},"plural":{"type":"string","id":5},"singular":{"type":"string","id":6},"style":{"rule":"repeated","type":"Style","id":10}},"nested":{"History":{"values":{"HISTORY_UNSPECIFIED":0,"ORIGINALLY_SINGLE_PATTERN":1,"FUTURE_MULTI_PATTERN":2}},"Style":{"values":{"STYLE_UNSPECIFIED":0,"DECLARATIVE_FRIENDLY":1}}}},"ResourceReference":{"fields":{"type":{"type":"string","id":1},"childType":{"type":"string","id":2}}}}},"rpc":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/rpc/status;status","java_multiple_files":true,"java_outer_classname":"StatusProto","java_package":"com.google.rpc","objc_class_prefix":"RPC"},"nested":{"Status":{"fields":{"code":{"type":"int32","id":1},"message":{"type":"string","id":2},"details":{"rule":"repeated","type":"google.protobuf.Any","id":3}}}}}}}}}
{"nested":{"google":{"nested":{"firestore":{"nested":{"v1":{"options":{"csharp_namespace":"Google.Cloud.Firestore.V1","go_package":"cloud.google.com/go/firestore/apiv1/firestorepb;firestorepb","java_multiple_files":true,"java_outer_classname":"WriteProto","java_package":"com.google.firestore.v1","objc_class_prefix":"GCFS","php_namespace":"Google\\Cloud\\Firestore\\V1","ruby_package":"Google::Cloud::Firestore::V1"},"nested":{"AggregationResult":{"fields":{"aggregateFields":{"keyType":"string","type":"Value","id":2}}},"Document":{"fields":{"name":{"type":"string","id":1},"fields":{"keyType":"string","type":"Value","id":2},"createTime":{"type":"google.protobuf.Timestamp","id":3},"updateTime":{"type":"google.protobuf.Timestamp","id":4}}},"Value":{"oneofs":{"valueType":{"oneof":["nullValue","booleanValue","integerValue","doubleValue","timestampValue","stringValue","bytesValue","referenceValue","geoPointValue","arrayValue","mapValue"]}},"fields":{"nullValue":{"type":"google.protobuf.NullValue","id":11},"booleanValue":{"type":"bool","id":1},"integerValue":{"type":"int64","id":2},"doubleValue":{"type":"double","id":3},"timestampValue":{"type":"google.protobuf.Timestamp","id":10},"stringValue":{"type":"string","id":17},"bytesValue":{"type":"bytes","id":18},"referenceValue":{"type":"string","id":5},"geoPointValue":{"type":"google.type.LatLng","id":8},"arrayValue":{"type":"ArrayValue","id":9},"mapValue":{"type":"MapValue","id":6}}},"ArrayValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"MapValue":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"BitSequence":{"fields":{"bitmap":{"type":"bytes","id":1},"padding":{"type":"int32","id":2}}},"BloomFilter":{"fields":{"bits":{"type":"BitSequence","id":1},"hashCount":{"type":"int32","id":2}}},"DocumentMask":{"fields":{"fieldPaths":{"rule":"repeated","type":"string","id":1}}},"Precondition":{"oneofs":{"conditionType":{"oneof":["exists","updateTime"]}},"fields":{"exists":{"type":"bool","id":1},"updateTime":{"type":"google.protobuf.Timestamp","id":2}}},"TransactionOptions":{"oneofs":{"mode":{"oneof":["readOnly","readWrite"]}},"fields":{"readOnly":{"type":"ReadOnly","id":2},"readWrite":{"type":"ReadWrite","id":3}},"nested":{"ReadWrite":{"fields":{"retryTransaction":{"type":"bytes","id":1}}},"ReadOnly":{"oneofs":{"consistencySelector":{"oneof":["readTime"]}},"fields":{"readTime":{"type":"google.protobuf.Timestamp","id":2}}}}},"Firestore":{"options":{"(google.api.default_host)":"firestore.googleapis.com","(google.api.oauth_scopes)":"https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/datastore"},"methods":{"GetDocument":{"requestType":"GetDocumentRequest","responseType":"Document","options":{"(google.api.http).get":"/v1/{name=projects/*/databases/*/documents/*/**}"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{name=projects/*/databases/*/documents/*/**}"}}]},"ListDocuments":{"requestType":"ListDocumentsRequest","responseType":"ListDocumentsResponse","options":{"(google.api.http).get":"/v1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}","(google.api.http).additional_bindings.get":"/v1/{parent=projects/*/databases/*/documents}/{collection_id}"},"parsedOptions":[{"(google.api.http)":{"get":"/v1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}","additional_bindings":{"get":"/v1/{parent=projects/*/databases/*/documents}/{collection_id}"}}}]},"UpdateDocument":{"requestType":"UpdateDocumentRequest","responseType":"Document","options":{"(google.api.http).patch":"/v1/{document.name=projects/*/databases/*/documents/*/**}","(google.api.http).body":"document","(google.api.method_signature)":"document,update_mask"},"parsedOptions":[{"(google.api.http)":{"patch":"/v1/{document.name=projects/*/databases/*/documents/*/**}","body":"document"}},{"(google.api.method_signature)":"document,update_mask"}]},"DeleteDocument":{"requestType":"DeleteDocumentRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).delete":"/v1/{name=projects/*/databases/*/documents/*/**}","(google.api.method_signature)":"name"},"parsedOptions":[{"(google.api.http)":{"delete":"/v1/{name=projects/*/databases/*/documents/*/**}"}},{"(google.api.method_signature)":"name"}]},"BatchGetDocuments":{"requestType":"BatchGetDocumentsRequest","responseType":"BatchGetDocumentsResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:batchGet","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:batchGet","body":"*"}}]},"BeginTransaction":{"requestType":"BeginTransactionRequest","responseType":"BeginTransactionResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:beginTransaction","(google.api.http).body":"*","(google.api.method_signature)":"database"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:beginTransaction","body":"*"}},{"(google.api.method_signature)":"database"}]},"Commit":{"requestType":"CommitRequest","responseType":"CommitResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:commit","(google.api.http).body":"*","(google.api.method_signature)":"database,writes"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:commit","body":"*"}},{"(google.api.method_signature)":"database,writes"}]},"Rollback":{"requestType":"RollbackRequest","responseType":"google.protobuf.Empty","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:rollback","(google.api.http).body":"*","(google.api.method_signature)":"database,transaction"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:rollback","body":"*"}},{"(google.api.method_signature)":"database,transaction"}]},"RunQuery":{"requestType":"RunQueryRequest","responseType":"RunQueryResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:runQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:runQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runQuery","body":"*"}}}]},"RunAggregationQuery":{"requestType":"RunAggregationQueryRequest","responseType":"RunAggregationQueryResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runAggregationQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:runAggregationQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:runAggregationQuery","body":"*"}}}]},"PartitionQuery":{"requestType":"PartitionQueryRequest","responseType":"PartitionQueryResponse","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:partitionQuery","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:partitionQuery","(google.api.http).additional_bindings.body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:partitionQuery","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:partitionQuery","body":"*"}}}]},"Write":{"requestType":"WriteRequest","requestStream":true,"responseType":"WriteResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:write","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:write","body":"*"}}]},"Listen":{"requestType":"ListenRequest","requestStream":true,"responseType":"ListenResponse","responseStream":true,"options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:listen","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:listen","body":"*"}}]},"ListCollectionIds":{"requestType":"ListCollectionIdsRequest","responseType":"ListCollectionIdsResponse","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents}:listCollectionIds","(google.api.http).body":"*","(google.api.http).additional_bindings.post":"/v1/{parent=projects/*/databases/*/documents/*/**}:listCollectionIds","(google.api.http).additional_bindings.body":"*","(google.api.method_signature)":"parent"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents}:listCollectionIds","body":"*","additional_bindings":{"post":"/v1/{parent=projects/*/databases/*/documents/*/**}:listCollectionIds","body":"*"}}},{"(google.api.method_signature)":"parent"}]},"BatchWrite":{"requestType":"BatchWriteRequest","responseType":"BatchWriteResponse","options":{"(google.api.http).post":"/v1/{database=projects/*/databases/*}/documents:batchWrite","(google.api.http).body":"*"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{database=projects/*/databases/*}/documents:batchWrite","body":"*"}}]},"CreateDocument":{"requestType":"CreateDocumentRequest","responseType":"Document","options":{"(google.api.http).post":"/v1/{parent=projects/*/databases/*/documents/**}/{collection_id}","(google.api.http).body":"document"},"parsedOptions":[{"(google.api.http)":{"post":"/v1/{parent=projects/*/databases/*/documents/**}/{collection_id}","body":"document"}}]}}},"GetDocumentRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","readTime"]}},"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"mask":{"type":"DocumentMask","id":2},"transaction":{"type":"bytes","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":5}}},"ListDocumentsRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"collectionId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"pageSize":{"type":"int32","id":3,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"pageToken":{"type":"string","id":4,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"orderBy":{"type":"string","id":6,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"mask":{"type":"DocumentMask","id":7,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"transaction":{"type":"bytes","id":8},"readTime":{"type":"google.protobuf.Timestamp","id":10},"showMissing":{"type":"bool","id":12}}},"ListDocumentsResponse":{"fields":{"documents":{"rule":"repeated","type":"Document","id":1},"nextPageToken":{"type":"string","id":2}}},"CreateDocumentRequest":{"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"collectionId":{"type":"string","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"documentId":{"type":"string","id":3},"document":{"type":"Document","id":4,"options":{"(google.api.field_behavior)":"REQUIRED"}},"mask":{"type":"DocumentMask","id":5}}},"UpdateDocumentRequest":{"fields":{"document":{"type":"Document","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"updateMask":{"type":"DocumentMask","id":2},"mask":{"type":"DocumentMask","id":3},"currentDocument":{"type":"Precondition","id":4}}},"DeleteDocumentRequest":{"fields":{"name":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"currentDocument":{"type":"Precondition","id":2}}},"BatchGetDocumentsRequest":{"oneofs":{"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"documents":{"rule":"repeated","type":"string","id":2},"mask":{"type":"DocumentMask","id":3},"transaction":{"type":"bytes","id":4},"newTransaction":{"type":"TransactionOptions","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":7}}},"BatchGetDocumentsResponse":{"oneofs":{"result":{"oneof":["found","missing"]}},"fields":{"found":{"type":"Document","id":1},"missing":{"type":"string","id":2},"transaction":{"type":"bytes","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"BeginTransactionRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"options":{"type":"TransactionOptions","id":2}}},"BeginTransactionResponse":{"fields":{"transaction":{"type":"bytes","id":1}}},"CommitRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"writes":{"rule":"repeated","type":"Write","id":2},"transaction":{"type":"bytes","id":3}}},"CommitResponse":{"fields":{"writeResults":{"rule":"repeated","type":"WriteResult","id":1},"commitTime":{"type":"google.protobuf.Timestamp","id":2}}},"RollbackRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"transaction":{"type":"bytes","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}}}},"RunQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredQuery"]},"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredQuery":{"type":"StructuredQuery","id":2},"transaction":{"type":"bytes","id":5},"newTransaction":{"type":"TransactionOptions","id":6},"readTime":{"type":"google.protobuf.Timestamp","id":7},"explainOptions":{"type":"ExplainOptions","id":10,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"RunQueryResponse":{"oneofs":{"continuationSelector":{"oneof":["done"]}},"fields":{"transaction":{"type":"bytes","id":2},"document":{"type":"Document","id":1},"readTime":{"type":"google.protobuf.Timestamp","id":3},"skippedResults":{"type":"int32","id":4},"done":{"type":"bool","id":6},"explainMetrics":{"type":"ExplainMetrics","id":11}}},"RunAggregationQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredAggregationQuery"]},"consistencySelector":{"oneof":["transaction","newTransaction","readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredAggregationQuery":{"type":"StructuredAggregationQuery","id":2},"transaction":{"type":"bytes","id":4},"newTransaction":{"type":"TransactionOptions","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":6},"explainOptions":{"type":"ExplainOptions","id":8,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"RunAggregationQueryResponse":{"fields":{"result":{"type":"AggregationResult","id":1},"transaction":{"type":"bytes","id":2},"readTime":{"type":"google.protobuf.Timestamp","id":3},"explainMetrics":{"type":"ExplainMetrics","id":10}}},"PartitionQueryRequest":{"oneofs":{"queryType":{"oneof":["structuredQuery"]},"consistencySelector":{"oneof":["readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"structuredQuery":{"type":"StructuredQuery","id":2},"partitionCount":{"type":"int64","id":3},"pageToken":{"type":"string","id":4},"pageSize":{"type":"int32","id":5},"readTime":{"type":"google.protobuf.Timestamp","id":6}}},"PartitionQueryResponse":{"fields":{"partitions":{"rule":"repeated","type":"Cursor","id":1},"nextPageToken":{"type":"string","id":2}}},"WriteRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"streamId":{"type":"string","id":2},"writes":{"rule":"repeated","type":"Write","id":3},"streamToken":{"type":"bytes","id":4},"labels":{"keyType":"string","type":"string","id":5}}},"WriteResponse":{"fields":{"streamId":{"type":"string","id":1},"streamToken":{"type":"bytes","id":2},"writeResults":{"rule":"repeated","type":"WriteResult","id":3},"commitTime":{"type":"google.protobuf.Timestamp","id":4}}},"ListenRequest":{"oneofs":{"targetChange":{"oneof":["addTarget","removeTarget"]}},"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"addTarget":{"type":"Target","id":2},"removeTarget":{"type":"int32","id":3},"labels":{"keyType":"string","type":"string","id":4}}},"ListenResponse":{"oneofs":{"responseType":{"oneof":["targetChange","documentChange","documentDelete","documentRemove","filter"]}},"fields":{"targetChange":{"type":"TargetChange","id":2},"documentChange":{"type":"DocumentChange","id":3},"documentDelete":{"type":"DocumentDelete","id":4},"documentRemove":{"type":"DocumentRemove","id":6},"filter":{"type":"ExistenceFilter","id":5}}},"Target":{"oneofs":{"targetType":{"oneof":["query","documents"]},"resumeType":{"oneof":["resumeToken","readTime"]}},"fields":{"query":{"type":"QueryTarget","id":2},"documents":{"type":"DocumentsTarget","id":3},"resumeToken":{"type":"bytes","id":4},"readTime":{"type":"google.protobuf.Timestamp","id":11},"targetId":{"type":"int32","id":5},"once":{"type":"bool","id":6},"expectedCount":{"type":"google.protobuf.Int32Value","id":12}},"nested":{"DocumentsTarget":{"fields":{"documents":{"rule":"repeated","type":"string","id":2}}},"QueryTarget":{"oneofs":{"queryType":{"oneof":["structuredQuery"]}},"fields":{"parent":{"type":"string","id":1},"structuredQuery":{"type":"StructuredQuery","id":2}}}}},"TargetChange":{"fields":{"targetChangeType":{"type":"TargetChangeType","id":1},"targetIds":{"rule":"repeated","type":"int32","id":2},"cause":{"type":"google.rpc.Status","id":3},"resumeToken":{"type":"bytes","id":4},"readTime":{"type":"google.protobuf.Timestamp","id":6}},"nested":{"TargetChangeType":{"values":{"NO_CHANGE":0,"ADD":1,"REMOVE":2,"CURRENT":3,"RESET":4}}}},"ListCollectionIdsRequest":{"oneofs":{"consistencySelector":{"oneof":["readTime"]}},"fields":{"parent":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"pageSize":{"type":"int32","id":2},"pageToken":{"type":"string","id":3},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"ListCollectionIdsResponse":{"fields":{"collectionIds":{"rule":"repeated","type":"string","id":1},"nextPageToken":{"type":"string","id":2}}},"BatchWriteRequest":{"fields":{"database":{"type":"string","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"writes":{"rule":"repeated","type":"Write","id":2},"labels":{"keyType":"string","type":"string","id":3}}},"BatchWriteResponse":{"fields":{"writeResults":{"rule":"repeated","type":"WriteResult","id":1},"status":{"rule":"repeated","type":"google.rpc.Status","id":2}}},"StructuredQuery":{"fields":{"select":{"type":"Projection","id":1},"from":{"rule":"repeated","type":"CollectionSelector","id":2},"where":{"type":"Filter","id":3},"orderBy":{"rule":"repeated","type":"Order","id":4},"startAt":{"type":"Cursor","id":7},"endAt":{"type":"Cursor","id":8},"offset":{"type":"int32","id":6},"limit":{"type":"google.protobuf.Int32Value","id":5},"findNearest":{"type":"FindNearest","id":9,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"CollectionSelector":{"fields":{"collectionId":{"type":"string","id":2},"allDescendants":{"type":"bool","id":3}}},"Filter":{"oneofs":{"filterType":{"oneof":["compositeFilter","fieldFilter","unaryFilter"]}},"fields":{"compositeFilter":{"type":"CompositeFilter","id":1},"fieldFilter":{"type":"FieldFilter","id":2},"unaryFilter":{"type":"UnaryFilter","id":3}}},"CompositeFilter":{"fields":{"op":{"type":"Operator","id":1},"filters":{"rule":"repeated","type":"Filter","id":2}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"AND":1,"OR":2}}}},"FieldFilter":{"fields":{"field":{"type":"FieldReference","id":1},"op":{"type":"Operator","id":2},"value":{"type":"Value","id":3}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"LESS_THAN":1,"LESS_THAN_OR_EQUAL":2,"GREATER_THAN":3,"GREATER_THAN_OR_EQUAL":4,"EQUAL":5,"NOT_EQUAL":6,"ARRAY_CONTAINS":7,"IN":8,"ARRAY_CONTAINS_ANY":9,"NOT_IN":10}}}},"UnaryFilter":{"oneofs":{"operandType":{"oneof":["field"]}},"fields":{"op":{"type":"Operator","id":1},"field":{"type":"FieldReference","id":2}},"nested":{"Operator":{"values":{"OPERATOR_UNSPECIFIED":0,"IS_NAN":2,"IS_NULL":3,"IS_NOT_NAN":4,"IS_NOT_NULL":5}}}},"Order":{"fields":{"field":{"type":"FieldReference","id":1},"direction":{"type":"Direction","id":2}}},"Direction":{"values":{"DIRECTION_UNSPECIFIED":0,"ASCENDING":1,"DESCENDING":2}},"FieldReference":{"fields":{"fieldPath":{"type":"string","id":2}}},"Projection":{"fields":{"fields":{"rule":"repeated","type":"FieldReference","id":2}}},"FindNearest":{"fields":{"vectorField":{"type":"FieldReference","id":1,"options":{"(google.api.field_behavior)":"REQUIRED"}},"queryVector":{"type":"Value","id":2,"options":{"(google.api.field_behavior)":"REQUIRED"}},"distanceMeasure":{"type":"DistanceMeasure","id":3,"options":{"(google.api.field_behavior)":"REQUIRED"}},"limit":{"type":"google.protobuf.Int32Value","id":4,"options":{"(google.api.field_behavior)":"REQUIRED"}},"distanceResultField":{"type":"string","id":5,"options":{"(google.api.field_behavior)":"OPTIONAL"}},"distanceThreshold":{"type":"google.protobuf.DoubleValue","id":6,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"DistanceMeasure":{"values":{"DISTANCE_MEASURE_UNSPECIFIED":0,"EUCLIDEAN":1,"COSINE":2,"DOT_PRODUCT":3}}}}}},"StructuredAggregationQuery":{"oneofs":{"queryType":{"oneof":["structuredQuery"]}},"fields":{"structuredQuery":{"type":"StructuredQuery","id":1},"aggregations":{"rule":"repeated","type":"Aggregation","id":3,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"Aggregation":{"oneofs":{"operator":{"oneof":["count","sum","avg"]}},"fields":{"count":{"type":"Count","id":1},"sum":{"type":"Sum","id":2},"avg":{"type":"Avg","id":3},"alias":{"type":"string","id":7,"options":{"(google.api.field_behavior)":"OPTIONAL"}}},"nested":{"Count":{"fields":{"upTo":{"type":"google.protobuf.Int64Value","id":1,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"Sum":{"fields":{"field":{"type":"StructuredQuery.FieldReference","id":1}}},"Avg":{"fields":{"field":{"type":"StructuredQuery.FieldReference","id":1}}}}}}},"Cursor":{"fields":{"values":{"rule":"repeated","type":"Value","id":1},"before":{"type":"bool","id":2}}},"ExplainOptions":{"fields":{"analyze":{"type":"bool","id":1,"options":{"(google.api.field_behavior)":"OPTIONAL"}}}},"ExplainMetrics":{"fields":{"planSummary":{"type":"PlanSummary","id":1},"executionStats":{"type":"ExecutionStats","id":2}}},"PlanSummary":{"fields":{"indexesUsed":{"rule":"repeated","type":"google.protobuf.Struct","id":1}}},"ExecutionStats":{"fields":{"resultsReturned":{"type":"int64","id":1},"executionDuration":{"type":"google.protobuf.Duration","id":3},"readOperations":{"type":"int64","id":4},"debugStats":{"type":"google.protobuf.Struct","id":5}}},"Write":{"oneofs":{"operation":{"oneof":["update","delete","transform"]}},"fields":{"update":{"type":"Document","id":1},"delete":{"type":"string","id":2},"transform":{"type":"DocumentTransform","id":6},"updateMask":{"type":"DocumentMask","id":3},"updateTransforms":{"rule":"repeated","type":"DocumentTransform.FieldTransform","id":7},"currentDocument":{"type":"Precondition","id":4}}},"DocumentTransform":{"fields":{"document":{"type":"string","id":1},"fieldTransforms":{"rule":"repeated","type":"FieldTransform","id":2}},"nested":{"FieldTransform":{"oneofs":{"transformType":{"oneof":["setToServerValue","increment","maximum","minimum","appendMissingElements","removeAllFromArray"]}},"fields":{"fieldPath":{"type":"string","id":1},"setToServerValue":{"type":"ServerValue","id":2},"increment":{"type":"Value","id":3},"maximum":{"type":"Value","id":4},"minimum":{"type":"Value","id":5},"appendMissingElements":{"type":"ArrayValue","id":6},"removeAllFromArray":{"type":"ArrayValue","id":7}},"nested":{"ServerValue":{"values":{"SERVER_VALUE_UNSPECIFIED":0,"REQUEST_TIME":1}}}}}},"WriteResult":{"fields":{"updateTime":{"type":"google.protobuf.Timestamp","id":1},"transformResults":{"rule":"repeated","type":"Value","id":2}}},"DocumentChange":{"fields":{"document":{"type":"Document","id":1},"targetIds":{"rule":"repeated","type":"int32","id":5},"removedTargetIds":{"rule":"repeated","type":"int32","id":6}}},"DocumentDelete":{"fields":{"document":{"type":"string","id":1},"removedTargetIds":{"rule":"repeated","type":"int32","id":6},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"DocumentRemove":{"fields":{"document":{"type":"string","id":1},"removedTargetIds":{"rule":"repeated","type":"int32","id":2},"readTime":{"type":"google.protobuf.Timestamp","id":4}}},"ExistenceFilter":{"fields":{"targetId":{"type":"int32","id":1},"count":{"type":"int32","id":2},"unchangedNames":{"type":"BloomFilter","id":3}}}}}}},"api":{"options":{"go_package":"google.golang.org/genproto/googleapis/api/annotations;annotations","java_multiple_files":true,"java_outer_classname":"ResourceProto","java_package":"com.google.api","objc_class_prefix":"GAPI","cc_enable_arenas":true},"nested":{"fieldBehavior":{"rule":"repeated","type":"google.api.FieldBehavior","id":1052,"extend":"google.protobuf.FieldOptions","options":{"packed":false}},"FieldBehavior":{"values":{"FIELD_BEHAVIOR_UNSPECIFIED":0,"OPTIONAL":1,"REQUIRED":2,"OUTPUT_ONLY":3,"INPUT_ONLY":4,"IMMUTABLE":5,"UNORDERED_LIST":6,"NON_EMPTY_DEFAULT":7,"IDENTIFIER":8}},"http":{"type":"HttpRule","id":72295728,"extend":"google.protobuf.MethodOptions"},"Http":{"fields":{"rules":{"rule":"repeated","type":"HttpRule","id":1},"fullyDecodeReservedExpansion":{"type":"bool","id":2}}},"HttpRule":{"oneofs":{"pattern":{"oneof":["get","put","post","delete","patch","custom"]}},"fields":{"selector":{"type":"string","id":1},"get":{"type":"string","id":2},"put":{"type":"string","id":3},"post":{"type":"string","id":4},"delete":{"type":"string","id":5},"patch":{"type":"string","id":6},"custom":{"type":"CustomHttpPattern","id":8},"body":{"type":"string","id":7},"responseBody":{"type":"string","id":12},"additionalBindings":{"rule":"repeated","type":"HttpRule","id":11}}},"CustomHttpPattern":{"fields":{"kind":{"type":"string","id":1},"path":{"type":"string","id":2}}},"methodSignature":{"rule":"repeated","type":"string","id":1051,"extend":"google.protobuf.MethodOptions"},"defaultHost":{"type":"string","id":1049,"extend":"google.protobuf.ServiceOptions"},"oauthScopes":{"type":"string","id":1050,"extend":"google.protobuf.ServiceOptions"},"apiVersion":{"type":"string","id":525000001,"extend":"google.protobuf.ServiceOptions"},"CommonLanguageSettings":{"fields":{"referenceDocsUri":{"type":"string","id":1,"options":{"deprecated":true}},"destinations":{"rule":"repeated","type":"ClientLibraryDestination","id":2}}},"ClientLibrarySettings":{"fields":{"version":{"type":"string","id":1},"launchStage":{"type":"LaunchStage","id":2},"restNumericEnums":{"type":"bool","id":3},"javaSettings":{"type":"JavaSettings","id":21},"cppSettings":{"type":"CppSettings","id":22},"phpSettings":{"type":"PhpSettings","id":23},"pythonSettings":{"type":"PythonSettings","id":24},"nodeSettings":{"type":"NodeSettings","id":25},"dotnetSettings":{"type":"DotnetSettings","id":26},"rubySettings":{"type":"RubySettings","id":27},"goSettings":{"type":"GoSettings","id":28}}},"Publishing":{"fields":{"methodSettings":{"rule":"repeated","type":"MethodSettings","id":2},"newIssueUri":{"type":"string","id":101},"documentationUri":{"type":"string","id":102},"apiShortName":{"type":"string","id":103},"githubLabel":{"type":"string","id":104},"codeownerGithubTeams":{"rule":"repeated","type":"string","id":105},"docTagPrefix":{"type":"string","id":106},"organization":{"type":"ClientLibraryOrganization","id":107},"librarySettings":{"rule":"repeated","type":"ClientLibrarySettings","id":109},"protoReferenceDocumentationUri":{"type":"string","id":110},"restReferenceDocumentationUri":{"type":"string","id":111}}},"JavaSettings":{"fields":{"libraryPackage":{"type":"string","id":1},"serviceClassNames":{"keyType":"string","type":"string","id":2},"common":{"type":"CommonLanguageSettings","id":3}}},"CppSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PhpSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"PythonSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"NodeSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"DotnetSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1},"renamedServices":{"keyType":"string","type":"string","id":2},"renamedResources":{"keyType":"string","type":"string","id":3},"ignoredResources":{"rule":"repeated","type":"string","id":4},"forcedNamespaceAliases":{"rule":"repeated","type":"string","id":5},"handwrittenSignatures":{"rule":"repeated","type":"string","id":6}}},"RubySettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"GoSettings":{"fields":{"common":{"type":"CommonLanguageSettings","id":1}}},"MethodSettings":{"fields":{"selector":{"type":"string","id":1},"longRunning":{"type":"LongRunning","id":2},"autoPopulatedFields":{"rule":"repeated","type":"string","id":3}},"nested":{"LongRunning":{"fields":{"initialPollDelay":{"type":"google.protobuf.Duration","id":1},"pollDelayMultiplier":{"type":"float","id":2},"maxPollDelay":{"type":"google.protobuf.Duration","id":3},"totalPollTimeout":{"type":"google.protobuf.Duration","id":4}}}}},"ClientLibraryOrganization":{"values":{"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED":0,"CLOUD":1,"ADS":2,"PHOTOS":3,"STREET_VIEW":4,"SHOPPING":5,"GEO":6,"GENERATIVE_AI":7}},"ClientLibraryDestination":{"values":{"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED":0,"GITHUB":10,"PACKAGE_MANAGER":20}},"LaunchStage":{"values":{"LAUNCH_STAGE_UNSPECIFIED":0,"UNIMPLEMENTED":6,"PRELAUNCH":7,"EARLY_ACCESS":1,"ALPHA":2,"BETA":3,"GA":4,"DEPRECATED":5}},"resourceReference":{"type":"google.api.ResourceReference","id":1055,"extend":"google.protobuf.FieldOptions"},"resourceDefinition":{"rule":"repeated","type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.FileOptions"},"resource":{"type":"google.api.ResourceDescriptor","id":1053,"extend":"google.protobuf.MessageOptions"},"ResourceDescriptor":{"fields":{"type":{"type":"string","id":1},"pattern":{"rule":"repeated","type":"string","id":2},"nameField":{"type":"string","id":3},"history":{"type":"History","id":4},"plural":{"type":"string","id":5},"singular":{"type":"string","id":6},"style":{"rule":"repeated","type":"Style","id":10}},"nested":{"History":{"values":{"HISTORY_UNSPECIFIED":0,"ORIGINALLY_SINGLE_PATTERN":1,"FUTURE_MULTI_PATTERN":2}},"Style":{"values":{"STYLE_UNSPECIFIED":0,"DECLARATIVE_FRIENDLY":1}}}},"ResourceReference":{"fields":{"type":{"type":"string","id":1},"childType":{"type":"string","id":2}}}}},"protobuf":{"options":{"go_package":"google.golang.org/protobuf/types/descriptorpb","java_package":"com.google.protobuf","java_outer_classname":"DescriptorProtos","csharp_namespace":"Google.Protobuf.Reflection","objc_class_prefix":"GPB","cc_enable_arenas":true,"optimize_for":"SPEED"},"nested":{"FileDescriptorSet":{"fields":{"file":{"rule":"repeated","type":"FileDescriptorProto","id":1}}},"Edition":{"values":{"EDITION_UNKNOWN":0,"EDITION_PROTO2":998,"EDITION_PROTO3":999,"EDITION_2023":1e3,"EDITION_2024":1001,"EDITION_1_TEST_ONLY":1,"EDITION_2_TEST_ONLY":2,"EDITION_99997_TEST_ONLY":99997,"EDITION_99998_TEST_ONLY":99998,"EDITION_99999_TEST_ONLY":99999,"EDITION_MAX":2147483647}},"FileDescriptorProto":{"fields":{"name":{"type":"string","id":1},"package":{"type":"string","id":2},"dependency":{"rule":"repeated","type":"string","id":3},"publicDependency":{"rule":"repeated","type":"int32","id":10,"options":{"packed":false}},"weakDependency":{"rule":"repeated","type":"int32","id":11,"options":{"packed":false}},"messageType":{"rule":"repeated","type":"DescriptorProto","id":4},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":5},"service":{"rule":"repeated","type":"ServiceDescriptorProto","id":6},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":7},"options":{"type":"FileOptions","id":8},"sourceCodeInfo":{"type":"SourceCodeInfo","id":9},"syntax":{"type":"string","id":12},"edition":{"type":"Edition","id":14}}},"DescriptorProto":{"fields":{"name":{"type":"string","id":1},"field":{"rule":"repeated","type":"FieldDescriptorProto","id":2},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":6},"nestedType":{"rule":"repeated","type":"DescriptorProto","id":3},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":4},"extensionRange":{"rule":"repeated","type":"ExtensionRange","id":5},"oneofDecl":{"rule":"repeated","type":"OneofDescriptorProto","id":8},"options":{"type":"MessageOptions","id":7},"reservedRange":{"rule":"repeated","type":"ReservedRange","id":9},"reservedName":{"rule":"repeated","type":"string","id":10}},"nested":{"ExtensionRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2},"options":{"type":"ExtensionRangeOptions","id":3}}},"ReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"ExtensionRangeOptions":{"fields":{"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999},"declaration":{"rule":"repeated","type":"Declaration","id":2,"options":{"retention":"RETENTION_SOURCE"}},"features":{"type":"FeatureSet","id":50},"verification":{"type":"VerificationState","id":3,"options":{"default":"UNVERIFIED","retention":"RETENTION_SOURCE"}}},"extensions":[[1e3,536870911]],"nested":{"Declaration":{"fields":{"number":{"type":"int32","id":1},"fullName":{"type":"string","id":2},"type":{"type":"string","id":3},"reserved":{"type":"bool","id":5},"repeated":{"type":"bool","id":6}},"reserved":[[4,4]]},"VerificationState":{"values":{"DECLARATION":0,"UNVERIFIED":1}}}},"FieldDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":3},"label":{"type":"Label","id":4},"type":{"type":"Type","id":5},"typeName":{"type":"string","id":6},"extendee":{"type":"string","id":2},"defaultValue":{"type":"string","id":7},"oneofIndex":{"type":"int32","id":9},"jsonName":{"type":"string","id":10},"options":{"type":"FieldOptions","id":8},"proto3Optional":{"type":"bool","id":17}},"nested":{"Type":{"values":{"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Label":{"values":{"LABEL_OPTIONAL":1,"LABEL_REPEATED":3,"LABEL_REQUIRED":2}}}},"OneofDescriptorProto":{"fields":{"name":{"type":"string","id":1},"options":{"type":"OneofOptions","id":2}}},"EnumDescriptorProto":{"fields":{"name":{"type":"string","id":1},"value":{"rule":"repeated","type":"EnumValueDescriptorProto","id":2},"options":{"type":"EnumOptions","id":3},"reservedRange":{"rule":"repeated","type":"EnumReservedRange","id":4},"reservedName":{"rule":"repeated","type":"string","id":5}},"nested":{"EnumReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"EnumValueDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"type":"EnumValueOptions","id":3}}},"ServiceDescriptorProto":{"fields":{"name":{"type":"string","id":1},"method":{"rule":"repeated","type":"MethodDescriptorProto","id":2},"options":{"type":"ServiceOptions","id":3}}},"MethodDescriptorProto":{"fields":{"name":{"type":"string","id":1},"inputType":{"type":"string","id":2},"outputType":{"type":"string","id":3},"options":{"type":"MethodOptions","id":4},"clientStreaming":{"type":"bool","id":5,"options":{"default":false}},"serverStreaming":{"type":"bool","id":6,"options":{"default":false}}}},"FileOptions":{"fields":{"javaPackage":{"type":"string","id":1},"javaOuterClassname":{"type":"string","id":8},"javaMultipleFiles":{"type":"bool","id":10,"options":{"default":false}},"javaGenerateEqualsAndHash":{"type":"bool","id":20,"options":{"deprecated":true}},"javaStringCheckUtf8":{"type":"bool","id":27,"options":{"default":false}},"optimizeFor":{"type":"OptimizeMode","id":9,"options":{"default":"SPEED"}},"goPackage":{"type":"string","id":11},"ccGenericServices":{"type":"bool","id":16,"options":{"default":false}},"javaGenericServices":{"type":"bool","id":17,"options":{"default":false}},"pyGenericServices":{"type":"bool","id":18,"options":{"default":false}},"deprecated":{"type":"bool","id":23,"options":{"default":false}},"ccEnableArenas":{"type":"bool","id":31,"options":{"default":true}},"objcClassPrefix":{"type":"string","id":36},"csharpNamespace":{"type":"string","id":37},"swiftPrefix":{"type":"string","id":39},"phpClassPrefix":{"type":"string","id":40},"phpNamespace":{"type":"string","id":41},"phpMetadataNamespace":{"type":"string","id":44},"rubyPackage":{"type":"string","id":45},"features":{"type":"FeatureSet","id":50},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[42,42],[38,38]],"nested":{"OptimizeMode":{"values":{"SPEED":1,"CODE_SIZE":2,"LITE_RUNTIME":3}}}},"MessageOptions":{"fields":{"messageSetWireFormat":{"type":"bool","id":1,"options":{"default":false}},"noStandardDescriptorAccessor":{"type":"bool","id":2,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"mapEntry":{"type":"bool","id":7},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":11,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":12},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[5,5],[6,6],[8,8],[9,9]]},"FieldOptions":{"fields":{"ctype":{"type":"CType","id":1,"options":{"default":"STRING"}},"packed":{"type":"bool","id":2},"jstype":{"type":"JSType","id":6,"options":{"default":"JS_NORMAL"}},"lazy":{"type":"bool","id":5,"options":{"default":false}},"unverifiedLazy":{"type":"bool","id":15,"options":{"default":false}},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"weak":{"type":"bool","id":10,"options":{"default":false}},"debugRedact":{"type":"bool","id":16,"options":{"default":false}},"retention":{"type":"OptionRetention","id":17},"targets":{"rule":"repeated","type":"OptionTargetType","id":19,"options":{"packed":false}},"editionDefaults":{"rule":"repeated","type":"EditionDefault","id":20},"features":{"type":"FeatureSet","id":21},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[4,4],[18,18]],"nested":{"CType":{"values":{"STRING":0,"CORD":1,"STRING_PIECE":2}},"JSType":{"values":{"JS_NORMAL":0,"JS_STRING":1,"JS_NUMBER":2}},"OptionRetention":{"values":{"RETENTION_UNKNOWN":0,"RETENTION_RUNTIME":1,"RETENTION_SOURCE":2}},"OptionTargetType":{"values":{"TARGET_TYPE_UNKNOWN":0,"TARGET_TYPE_FILE":1,"TARGET_TYPE_EXTENSION_RANGE":2,"TARGET_TYPE_MESSAGE":3,"TARGET_TYPE_FIELD":4,"TARGET_TYPE_ONEOF":5,"TARGET_TYPE_ENUM":6,"TARGET_TYPE_ENUM_ENTRY":7,"TARGET_TYPE_SERVICE":8,"TARGET_TYPE_METHOD":9}},"EditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"value":{"type":"string","id":2}}}}},"OneofOptions":{"fields":{"features":{"type":"FeatureSet","id":1},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"EnumOptions":{"fields":{"allowAlias":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3,"options":{"default":false}},"deprecatedLegacyJsonFieldConflicts":{"type":"bool","id":6,"options":{"deprecated":true}},"features":{"type":"FeatureSet","id":7},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"reserved":[[5,5]]},"EnumValueOptions":{"fields":{"deprecated":{"type":"bool","id":1,"options":{"default":false}},"features":{"type":"FeatureSet","id":2},"debugRedact":{"type":"bool","id":3,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"ServiceOptions":{"fields":{"features":{"type":"FeatureSet","id":34},"deprecated":{"type":"bool","id":33,"options":{"default":false}},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]]},"MethodOptions":{"fields":{"deprecated":{"type":"bool","id":33,"options":{"default":false}},"idempotencyLevel":{"type":"IdempotencyLevel","id":34,"options":{"default":"IDEMPOTENCY_UNKNOWN"}},"features":{"type":"FeatureSet","id":35},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1e3,536870911]],"nested":{"IdempotencyLevel":{"values":{"IDEMPOTENCY_UNKNOWN":0,"NO_SIDE_EFFECTS":1,"IDEMPOTENT":2}}}},"UninterpretedOption":{"fields":{"name":{"rule":"repeated","type":"NamePart","id":2},"identifierValue":{"type":"string","id":3},"positiveIntValue":{"type":"uint64","id":4},"negativeIntValue":{"type":"int64","id":5},"doubleValue":{"type":"double","id":6},"stringValue":{"type":"bytes","id":7},"aggregateValue":{"type":"string","id":8}},"nested":{"NamePart":{"fields":{"namePart":{"rule":"required","type":"string","id":1},"isExtension":{"rule":"required","type":"bool","id":2}}}}},"FeatureSet":{"fields":{"fieldPresence":{"type":"FieldPresence","id":1,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_2023","edition_defaults.value":"EXPLICIT"}},"enumType":{"type":"EnumType","id":2,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"OPEN"}},"repeatedFieldEncoding":{"type":"RepeatedFieldEncoding","id":3,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"PACKED"}},"utf8Validation":{"type":"Utf8Validation","id":4,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"VERIFY"}},"messageEncoding":{"type":"MessageEncoding","id":5,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO2","edition_defaults.value":"LENGTH_PREFIXED"}},"jsonFormat":{"type":"JsonFormat","id":6,"options":{"retention":"RETENTION_RUNTIME","targets":"TARGET_TYPE_FILE","edition_defaults.edition":"EDITION_PROTO3","edition_defaults.value":"ALLOW"}}},"extensions":[[1e3,1e3],[1001,1001],[1002,1002],[9995,9999],[1e4,1e4]],"reserved":[[999,999]],"nested":{"FieldPresence":{"values":{"FIELD_PRESENCE_UNKNOWN":0,"EXPLICIT":1,"IMPLICIT":2,"LEGACY_REQUIRED":3}},"EnumType":{"values":{"ENUM_TYPE_UNKNOWN":0,"OPEN":1,"CLOSED":2}},"RepeatedFieldEncoding":{"values":{"REPEATED_FIELD_ENCODING_UNKNOWN":0,"PACKED":1,"EXPANDED":2}},"Utf8Validation":{"values":{"UTF8_VALIDATION_UNKNOWN":0,"VERIFY":2,"NONE":3}},"MessageEncoding":{"values":{"MESSAGE_ENCODING_UNKNOWN":0,"LENGTH_PREFIXED":1,"DELIMITED":2}},"JsonFormat":{"values":{"JSON_FORMAT_UNKNOWN":0,"ALLOW":1,"LEGACY_BEST_EFFORT":2}}}},"FeatureSetDefaults":{"fields":{"defaults":{"rule":"repeated","type":"FeatureSetEditionDefault","id":1},"minimumEdition":{"type":"Edition","id":4},"maximumEdition":{"type":"Edition","id":5}},"nested":{"FeatureSetEditionDefault":{"fields":{"edition":{"type":"Edition","id":3},"features":{"type":"FeatureSet","id":2}}}}},"SourceCodeInfo":{"fields":{"location":{"rule":"repeated","type":"Location","id":1}},"nested":{"Location":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"span":{"rule":"repeated","type":"int32","id":2},"leadingComments":{"type":"string","id":3},"trailingComments":{"type":"string","id":4},"leadingDetachedComments":{"rule":"repeated","type":"string","id":6}}}}},"GeneratedCodeInfo":{"fields":{"annotation":{"rule":"repeated","type":"Annotation","id":1}},"nested":{"Annotation":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"sourceFile":{"type":"string","id":2},"begin":{"type":"int32","id":3},"end":{"type":"int32","id":4},"semantic":{"type":"Semantic","id":5}},"nested":{"Semantic":{"values":{"NONE":0,"SET":1,"ALIAS":2}}}}}},"Struct":{"fields":{"fields":{"keyType":"string","type":"Value","id":1}}},"Value":{"oneofs":{"kind":{"oneof":["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},"fields":{"nullValue":{"type":"NullValue","id":1},"numberValue":{"type":"double","id":2},"stringValue":{"type":"string","id":3},"boolValue":{"type":"bool","id":4},"structValue":{"type":"Struct","id":5},"listValue":{"type":"ListValue","id":6}}},"NullValue":{"values":{"NULL_VALUE":0}},"ListValue":{"fields":{"values":{"rule":"repeated","type":"Value","id":1}}},"Timestamp":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"Duration":{"fields":{"seconds":{"type":"int64","id":1},"nanos":{"type":"int32","id":2}}},"DoubleValue":{"fields":{"value":{"type":"double","id":1}}},"FloatValue":{"fields":{"value":{"type":"float","id":1}}},"Int64Value":{"fields":{"value":{"type":"int64","id":1}}},"UInt64Value":{"fields":{"value":{"type":"uint64","id":1}}},"Int32Value":{"fields":{"value":{"type":"int32","id":1}}},"UInt32Value":{"fields":{"value":{"type":"uint32","id":1}}},"BoolValue":{"fields":{"value":{"type":"bool","id":1}}},"StringValue":{"fields":{"value":{"type":"string","id":1}}},"BytesValue":{"fields":{"value":{"type":"bytes","id":1}}},"Empty":{"fields":{}},"Any":{"fields":{"type_url":{"type":"string","id":1},"value":{"type":"bytes","id":2}}},"FieldMask":{"fields":{"paths":{"rule":"repeated","type":"string","id":1}}}}},"type":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/type/dayofweek;dayofweek","java_multiple_files":true,"java_outer_classname":"DayOfWeekProto","java_package":"com.google.type","objc_class_prefix":"GTP"},"nested":{"LatLng":{"fields":{"latitude":{"type":"double","id":1},"longitude":{"type":"double","id":2}}},"DayOfWeek":{"values":{"DAY_OF_WEEK_UNSPECIFIED":0,"MONDAY":1,"TUESDAY":2,"WEDNESDAY":3,"THURSDAY":4,"FRIDAY":5,"SATURDAY":6,"SUNDAY":7}}}},"rpc":{"options":{"cc_enable_arenas":true,"go_package":"google.golang.org/genproto/googleapis/rpc/status;status","java_multiple_files":true,"java_outer_classname":"StatusProto","java_package":"com.google.rpc","objc_class_prefix":"RPC"},"nested":{"Status":{"fields":{"code":{"type":"int32","id":1},"message":{"type":"string","id":2},"details":{"rule":"repeated","type":"google.protobuf.Any","id":3}}}}}}}}}

@@ -12,2 +12,3 @@ "use strict";

const logger_1 = require("./logger");
const trace_util_1 = require("./telemetry/trace-util");
/*!

@@ -161,38 +162,42 @@ * The maximum number of writes that can be in a single batch.

async bulkCommit(options = {}) {
var _a;
const tag = (_a = options === null || options === void 0 ? void 0 : options.requestTag) !== null && _a !== void 0 ? _a : (0, util_1.requestTag)();
// Capture the error stack to preserve stack tracing across async calls.
const stack = Error().stack;
let response;
try {
(0, logger_1.logger)('BulkCommitBatch.bulkCommit', tag, `Sending next batch with ${this._opCount} writes`);
const retryCodes = (0, util_1.getRetryCodes)('batchWrite');
response = await this._commit({ retryCodes, methodName: 'batchWrite', requestTag: tag });
}
catch (err) {
// Map the failure to each individual write's result.
const ops = Array.from({ length: this.pendingOps.length });
response = {
writeResults: ops.map(() => {
return {};
}),
status: ops.map(() => err),
};
}
for (let i = 0; i < (response.writeResults || []).length; ++i) {
// Since delete operations currently do not have write times, use a
// sentinel Timestamp value.
// TODO(b/158502664): Use actual delete timestamp.
const DELETE_TIMESTAMP_SENTINEL = timestamp_1.Timestamp.fromMillis(0);
const status = (response.status || [])[i];
if (status.code === 0 /* StatusCode.OK */) {
const updateTime = timestamp_1.Timestamp.fromProto(response.writeResults[i].updateTime || DELETE_TIMESTAMP_SENTINEL);
this.pendingOps[i].onSuccess(new write_batch_1.WriteResult(updateTime));
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_BULK_WRITER_COMMIT, async () => {
var _a;
const tag = (_a = options === null || options === void 0 ? void 0 : options.requestTag) !== null && _a !== void 0 ? _a : (0, util_1.requestTag)();
// Capture the error stack to preserve stack tracing across async calls.
const stack = Error().stack;
let response;
try {
(0, logger_1.logger)('BulkCommitBatch.bulkCommit', tag, `Sending next batch with ${this._opCount} writes`);
const retryCodes = (0, util_1.getRetryCodes)('batchWrite');
response = await this._commit({ retryCodes, methodName: 'batchWrite', requestTag: tag });
}
else {
const error = new (require('google-gax/build/src/fallback').GoogleError)(status.message || undefined);
error.code = status.code;
this.pendingOps[i].onError((0, util_1.wrapError)(error, stack));
catch (err) {
// Map the failure to each individual write's result.
const ops = Array.from({ length: this.pendingOps.length });
response = {
writeResults: ops.map(() => {
return {};
}),
status: ops.map(() => err),
};
}
}
for (let i = 0; i < (response.writeResults || []).length; ++i) {
// Since delete operations currently do not have write times, use a
// sentinel Timestamp value.
// TODO(b/158502664): Use actual delete timestamp.
const DELETE_TIMESTAMP_SENTINEL = timestamp_1.Timestamp.fromMillis(0);
const status = (response.status || [])[i];
if (status.code === 0 /* StatusCode.OK */) {
const updateTime = timestamp_1.Timestamp.fromProto(response.writeResults[i].updateTime || DELETE_TIMESTAMP_SENTINEL);
this.pendingOps[i].onSuccess(new write_batch_1.WriteResult(updateTime));
}
else {
const error = new (require('google-gax/build/src/fallback').GoogleError)(status.message || undefined);
error.code = status.code;
this.pendingOps[i].onError((0, util_1.wrapError)(error, stack));
}
}
}, {
[trace_util_1.ATTRIBUTE_KEY_DOC_COUNT]: this._opCount,
});
}

@@ -199,0 +204,0 @@ /**

@@ -28,2 +28,3 @@ "use strict";

const order_1 = require("./order");
const trace_util_1 = require("./telemetry/trace-util");
/**

@@ -62,26 +63,28 @@ * A `CollectionGroup` refers to all documents that are contained in a

async *getPartitions(desiredPartitionCount) {
var _a;
(0, validate_1.validateInteger)('desiredPartitionCount', desiredPartitionCount, {
minValue: 1,
});
const tag = (0, util_1.requestTag)();
await this.firestore.initializeIfNeeded(tag);
const partitions = [];
if (desiredPartitionCount > 1) {
// Partition queries require explicit ordering by __name__.
const queryWithDefaultOrder = this.orderBy(path_1.FieldPath.documentId());
const request = queryWithDefaultOrder.toProto();
// Since we are always returning an extra partition (with an empty endBefore
// cursor), we reduce the desired partition count by one.
request.partitionCount = desiredPartitionCount - 1;
const stream = await this.firestore.requestStream('partitionQueryStream',
/* bidirectional= */ false, request, tag);
stream.resume();
for await (const currentCursor of stream) {
partitions.push((_a = currentCursor.values) !== null && _a !== void 0 ? _a : []);
await this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_PARTITION_QUERY, async () => {
var _a;
(0, validate_1.validateInteger)('desiredPartitionCount', desiredPartitionCount, {
minValue: 1,
});
const tag = (0, util_1.requestTag)();
await this.firestore.initializeIfNeeded(tag);
if (desiredPartitionCount > 1) {
// Partition queries require explicit ordering by __name__.
const queryWithDefaultOrder = this.orderBy(path_1.FieldPath.documentId());
const request = queryWithDefaultOrder.toProto();
// Since we are always returning an extra partition (with an empty endBefore
// cursor), we reduce the desired partition count by one.
request.partitionCount = desiredPartitionCount - 1;
const stream = await this.firestore.requestStream('partitionQueryStream',
/* bidirectional= */ false, request, tag);
stream.resume();
for await (const currentCursor of stream) {
partitions.push((_a = currentCursor.values) !== null && _a !== void 0 ? _a : []);
}
}
}
(0, logger_1.logger)('Firestore.getPartitions', tag, 'Received %d partitions', partitions.length);
// Sort the partitions as they may not be ordered if responses are paged.
partitions.sort((l, r) => (0, order_1.compareArrays)(l, r));
(0, logger_1.logger)('Firestore.getPartitions', tag, 'Received %d partitions', partitions.length);
// Sort the partitions as they may not be ordered if responses are paged.
partitions.sort((l, r) => (0, order_1.compareArrays)(l, r));
});
for (let i = 0; i < partitions.length; ++i) {

@@ -88,0 +91,0 @@ yield new query_partition_1.QueryPartition(this._firestore, this._queryOptions.collectionId, this._queryOptions.converter, i > 0 ? partitions[i - 1] : undefined, partitions[i]);

@@ -30,2 +30,3 @@ /*!

import { CollectionGroup } from './collection-group';
import { TraceUtil } from './telemetry/trace-util';
export { CollectionReference } from './reference/collection-reference';

@@ -39,2 +40,3 @@ export { DocumentReference } from './reference/document-reference';

export type { VectorQuerySnapshot } from './reference/vector-query-snapshot';
export type { VectorQueryOptions } from './reference/vector-query-options';
export { BulkWriter } from './bulk-writer';

@@ -330,2 +332,8 @@ export type { BulkWriterError } from './bulk-writer';

/**
* The OpenTelemetry tracing utility object.
* @private
* @internal
*/
_traceUtil: TraceUtil;
/**
* The project ID for this client.

@@ -438,2 +446,3 @@ *

private validateAndApplySettings;
private newTraceUtilInstance;
/**

@@ -440,0 +449,0 @@ * Returns the Project ID for this Firestore instance. Validates that

@@ -28,2 +28,3 @@ "use strict";

const stream_1 = require("stream");
const trace_util_1 = require("../telemetry/trace-util");
/**

@@ -68,4 +69,6 @@ * A query that calculates aggregations over an underlying query.

async get() {
const { result } = await this._get();
return result;
return this._query._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_AGGREGATION_QUERY_GET, async () => {
const { result } = await this._get();
return result;
});
}

@@ -180,2 +183,7 @@ /**

(0, logger_1.logger)('AggregateQuery._stream', tag, 'AggregateQuery failed with stream error:', err);
this._query._firestore._traceUtil
.currentSpan()
.addEvent(`${trace_util_1.SPAN_NAME_RUN_AGGREGATION_QUERY}: Error.`, {
'error.message': err.message,
});
stream.destroy(err);

@@ -182,0 +190,0 @@ });

@@ -26,2 +26,3 @@ "use strict";

const query_options_1 = require("./query-options");
const trace_util_1 = require("../telemetry/trace-util");
/**

@@ -137,23 +138,25 @@ * A CollectionReference object can be used for adding documents, getting

listDocuments() {
const tag = (0, util_1.requestTag)();
return this.firestore.initializeIfNeeded(tag).then(() => {
const parentPath = this._queryOptions.parentPath.toQualifiedResourcePath(this.firestore.projectId, this.firestore.databaseId);
const request = {
parent: parentPath.formattedName,
collectionId: this.id,
showMissing: true,
// Setting `pageSize` to an arbitrarily large value lets the backend cap
// the page size (currently to 300). Note that the backend rejects
// MAX_INT32 (b/146883794).
pageSize: Math.pow(2, 16) - 1,
mask: { fieldPaths: [] },
};
return this.firestore
.request('listDocuments', request, tag)
.then(documents => {
// Note that the backend already orders these documents by name,
// so we do not need to manually sort them.
return documents.map(doc => {
const path = path_1.QualifiedResourcePath.fromSlashSeparatedString(doc.name);
return this.doc(path.id);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_COL_REF_LIST_DOCUMENTS, () => {
const tag = (0, util_1.requestTag)();
return this.firestore.initializeIfNeeded(tag).then(() => {
const parentPath = this._queryOptions.parentPath.toQualifiedResourcePath(this.firestore.projectId, this.firestore.databaseId);
const request = {
parent: parentPath.formattedName,
collectionId: this.id,
showMissing: true,
// Setting `pageSize` to an arbitrarily large value lets the backend cap
// the page size (currently to 300). Note that the backend rejects
// MAX_INT32 (b/146883794).
pageSize: Math.pow(2, 16) - 1,
mask: { fieldPaths: [] },
};
return this.firestore
.request('listDocuments', request, tag)
.then(documents => {
// Note that the backend already orders these documents by name,
// so we do not need to manually sort them.
return documents.map(doc => {
const path = path_1.QualifiedResourcePath.fromSlashSeparatedString(doc.name);
return this.doc(path.id);
});
});

@@ -215,7 +218,9 @@ });

add(data) {
const firestoreData = this._queryOptions.converter.toFirestore(data);
(0, write_batch_1.validateDocumentData)('data', firestoreData,
/*allowDeletes=*/ false, this._allowUndefined);
const documentRef = this.doc();
return documentRef.create(data).then(() => documentRef);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_COL_REF_ADD, () => {
const firestoreData = this._queryOptions.converter.toFirestore(data);
(0, write_batch_1.validateDocumentData)('data', firestoreData,
/*allowDeletes=*/ false, this._allowUndefined);
const documentRef = this.doc();
return documentRef.create(data).then(() => documentRef);
});
}

@@ -222,0 +227,0 @@ /**

@@ -26,2 +26,3 @@ "use strict";

const document_1 = require("../document");
const trace_util_1 = require("../telemetry/trace-util");
/**

@@ -181,3 +182,5 @@ * A DocumentReference refers to a document location in a Firestore database

get() {
return this._firestore.getAll(this).then(([result]) => result);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_GET, () => {
return this._firestore.getAll(this).then(([result]) => result);
});
}

@@ -225,22 +228,24 @@ /**

listCollections() {
const tag = (0, util_1.requestTag)();
return this.firestore.initializeIfNeeded(tag).then(() => {
const request = {
parent: this.formattedName,
// Setting `pageSize` to an arbitrarily large value lets the backend cap
// the page size (currently to 300). Note that the backend rejects
// MAX_INT32 (b/146883794).
pageSize: Math.pow(2, 16) - 1,
};
return this._firestore
.request('listCollectionIds', request, tag)
.then(collectionIds => {
const collections = [];
// We can just sort this list using the default comparator since it
// will only contain collection ids.
collectionIds.sort();
for (const collectionId of collectionIds) {
collections.push(this.collection(collectionId));
}
return collections;
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_LIST_COLLECTIONS, () => {
const tag = (0, util_1.requestTag)();
return this.firestore.initializeIfNeeded(tag).then(() => {
const request = {
parent: this.formattedName,
// Setting `pageSize` to an arbitrarily large value lets the backend cap
// the page size (currently to 300). Note that the backend rejects
// MAX_INT32 (b/146883794).
pageSize: Math.pow(2, 16) - 1,
};
return this._firestore
.request('listCollectionIds', request, tag)
.then(collectionIds => {
const collections = [];
// We can just sort this list using the default comparator since it
// will only contain collection ids.
collectionIds.sort();
for (const collectionId of collectionIds) {
collections.push(this.collection(collectionId));
}
return collections;
});
});

@@ -271,7 +276,9 @@ });

create(data) {
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.create(this, data)
.commit()
.then(([writeResult]) => writeResult);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_CREATE, () => {
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.create(this, data)
.commit()
.then(([writeResult]) => writeResult);
});
}

@@ -304,7 +311,9 @@ /**

delete(precondition) {
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.delete(this, precondition)
.commit()
.then(([writeResult]) => writeResult);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_DELETE, () => {
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.delete(this, precondition)
.commit()
.then(([writeResult]) => writeResult);
});
}

@@ -342,10 +351,12 @@ /**

set(data, options) {
let writeBatch = new index_1.WriteBatch(this._firestore);
if (options) {
writeBatch = writeBatch.set(this, data, options);
}
else {
writeBatch = writeBatch.set(this, data);
}
return writeBatch.commit().then(([writeResult]) => writeResult);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_SET, () => {
let writeBatch = new index_1.WriteBatch(this._firestore);
if (options) {
writeBatch = writeBatch.set(this, data, options);
}
else {
writeBatch = writeBatch.set(this, data);
}
return writeBatch.commit().then(([writeResult]) => writeResult);
});
}

@@ -385,9 +396,11 @@ /**

update(dataOrField, ...preconditionOrValues) {
// eslint-disable-next-line prefer-rest-params
(0, validate_1.validateMinNumberOfArguments)('DocumentReference.update', arguments, 1);
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.update(this, dataOrField, ...preconditionOrValues)
.commit()
.then(([writeResult]) => writeResult);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_DOC_REF_UPDATE, () => {
// eslint-disable-next-line prefer-rest-params
(0, validate_1.validateMinNumberOfArguments)('DocumentReference.update', arguments, 1);
const writeBatch = new index_1.WriteBatch(this._firestore);
return writeBatch
.update(this, dataOrField, ...preconditionOrValues)
.commit()
.then(([writeResult]) => writeResult);
});
}

@@ -394,0 +407,0 @@ /**

@@ -28,2 +28,3 @@ "use strict";

const constants_1 = require("./constants");
const trace_util_1 = require("../telemetry/trace-util");
class QueryUtil {

@@ -172,2 +173,3 @@ constructor(

let request = query.toProto(transactionOrReadTime, explainOptions);
let isRetryRequestWithCursor = false;
let streamActive;

@@ -177,2 +179,8 @@ do {

const methodName = 'runQuery';
this._firestore._traceUtil
.currentSpan()
.addEvent(trace_util_1.SPAN_NAME_RUN_QUERY, {
[trace_util_1.ATTRIBUTE_KEY_IS_TRANSACTIONAL]: !!request.transaction,
[trace_util_1.ATTRIBUTE_KEY_IS_RETRY_WITH_CURSOR]: isRetryRequestWithCursor,
});
backendStream = await this._firestore.requestStream(methodName,

@@ -188,4 +196,9 @@ /* bidirectional= */ false, request, tag);

!transactionOrReadTime &&
!this._isPermanentRpcError(err, 'runQuery')) {
!this._isPermanentRpcError(err, methodName)) {
(0, logger_1.logger)('QueryUtil._stream', tag, 'Query failed with retryable stream error:', err);
this._firestore._traceUtil
.currentSpan()
.addEvent(`${trace_util_1.SPAN_NAME_RUN_QUERY}: Retryable Error.`, {
'error.message': err.message,
});
// Enqueue a "no-op" write into the stream and wait for it to be

@@ -204,2 +217,3 @@ // read by the downstream consumer. This ensures that all enqueued

'documents, so the stream is being retried.');
isRetryRequestWithCursor = true;
// Restart the query but use the last document we received as

@@ -231,2 +245,7 @@ // the query cursor. Note that we do not use backoff here. The

(0, logger_1.logger)('QueryUtil._stream', tag, 'Query failed with stream error:', err);
this._firestore._traceUtil
.currentSpan()
.addEvent(`${trace_util_1.SPAN_NAME_RUN_QUERY}: Error.`, {
'error.message': err.message,
});
stream.destroy(err);

@@ -233,0 +252,0 @@ streamActive.resolve(/* active= */ false);

@@ -26,2 +26,3 @@ /**

import { FieldFilterInternal } from './field-filter-internal';
import { VectorQueryOptions } from './vector-query-options';
import { QuerySnapshot } from './query-snapshot';

@@ -377,2 +378,5 @@ import { Serializer } from '../serializer';

* when performing the query.
*
* @deprecated Use the new {@link findNearest} implementation
* accepting a single `options` param.
*/

@@ -384,2 +388,32 @@ findNearest(vectorField: string | firestore.FieldPath, queryVector: firestore.VectorValue | Array<number>, options: {

/**
* Returns a query that can perform vector distance (similarity) search with given parameters.
*
* The returned query, when executed, performs a distance (similarity) search on the specified
* `vectorField` against the given `queryVector` and returns the top documents that are closest
* to the `queryVector`.
*
* Only documents whose `vectorField` field is a {@link VectorValue} of the same dimension as `queryVector`
* participate in the query, all other documents are ignored.
*
* @example
* ```
* // Returns the closest 10 documents whose Euclidean distance from their 'embedding' fields are closed to [41, 42].
* const vectorQuery = col.findNearest({
* vectorField: 'embedding',
* queryVector: [41, 42],
* limit: 10,
* distanceMeasure: 'EUCLIDEAN',
* distanceResultField: 'distance',
* distanceThreshold: 0.125
* });
*
* const querySnapshot = await aggregateQuery.get();
* querySnapshot.forEach(...);
* ```
* @param options - An argument specifying the behavior of the {@link VectorQuery} returned by this function.
* See {@link VectorQueryOptions}.
*/
findNearest(options: VectorQueryOptions): VectorQuery<AppModelType, DbModelType>;
_findNearest(options: VectorQueryOptions): VectorQuery<AppModelType, DbModelType>;
/**
* Returns true if this `Query` is equal to the provided value.

@@ -386,0 +420,0 @@ *

@@ -26,3 +26,2 @@ "use strict";

const constants_1 = require("./constants");
const vector_query_options_1 = require("./vector-query-options");
const document_reference_1 = require("./document-reference");

@@ -41,2 +40,3 @@ const query_snapshot_1 = require("./query-snapshot");

const types_2 = require("../types");
const trace_util_1 = require("../telemetry/trace-util");
/**

@@ -425,38 +425,28 @@ * A Query refers to a query which you can read or stream from. You can also

}
/**
* Returns a query that can perform vector distance (similarity) search with given parameters.
*
* The returned query, when executed, performs a distance (similarity) search on the specified
* `vectorField` against the given `queryVector` and returns the top documents that are closest
* to the `queryVector`.
*
* Only documents whose `vectorField` field is a {@link VectorValue} of the same dimension as `queryVector`
* participate in the query, all other documents are ignored.
*
* @example
* ```
* // Returns the closest 10 documents whose Euclidean distance from their 'embedding' fields are closed to [41, 42].
* const vectorQuery = col.findNearest('embedding', [41, 42], {limit: 10, distanceMeasure: 'EUCLIDEAN'});
*
* const querySnapshot = await aggregateQuery.get();
* querySnapshot.forEach(...);
* ```
*
* @param vectorField - A string or {@link FieldPath} specifying the vector field to search on.
* @param queryVector - The {@link VectorValue} used to measure the distance from `vectorField` values in the documents.
* @param options - Options control the vector query. `limit` specifies the upper bound of documents to return, must
* be a positive integer with a maximum value of 1000. `distanceMeasure` specifies what type of distance is calculated
* when performing the query.
*/
findNearest(vectorField, queryVector, options) {
(0, path_1.validateFieldPath)('vectorField', vectorField);
findNearest(vectorFieldOrOptions, queryVector, options) {
if (typeof vectorFieldOrOptions === 'string' ||
vectorFieldOrOptions instanceof index_1.FieldPath) {
const vqOptions = {
distanceMeasure: options.distanceMeasure,
limit: options.limit,
queryVector: queryVector,
vectorField: vectorFieldOrOptions,
};
return this._findNearest(vqOptions);
}
else {
return this._findNearest(vectorFieldOrOptions);
}
}
_findNearest(options) {
(0, path_1.validateFieldPath)('vectorField', options.vectorField);
if (options.limit <= 0) {
throw (0, validate_1.invalidArgumentMessage)('options.limit', 'positive limit number');
throw (0, validate_1.invalidArgumentMessage)('limit', 'positive limit number');
}
if ((Array.isArray(queryVector)
? queryVector.length
: queryVector.toArray().length) === 0) {
if ((Array.isArray(options.queryVector)
? options.queryVector.length
: options.queryVector.toArray().length) === 0) {
throw (0, validate_1.invalidArgumentMessage)('queryVector', 'vector size must be larger than 0');
}
return new vector_query_1.VectorQuery(this, vectorField, queryVector, new vector_query_options_1.VectorQueryOptions(options.limit, options.distanceMeasure));
return new vector_query_1.VectorQuery(this, options);
}

@@ -757,4 +747,6 @@ /**

async get() {
const { result } = await this._get();
return result;
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_QUERY_GET, async () => {
const { result } = await this._get();
return result;
});
}

@@ -761,0 +753,0 @@ /**

@@ -16,7 +16,40 @@ /**

*/
export declare class VectorQueryOptions {
readonly limit: number;
readonly distanceMeasure: 'EUCLIDEAN' | 'COSINE' | 'DOT_PRODUCT';
constructor(limit: number, distanceMeasure: 'EUCLIDEAN' | 'COSINE' | 'DOT_PRODUCT');
isEqual(other: VectorQueryOptions): boolean;
import * as firestore from '@google-cloud/firestore';
/**
* Specifies the behavior of the {@link VectorQuery} generated by a call to {@link Query.findNearest}.
*/
export interface VectorQueryOptions {
/**
* A string or {@link FieldPath} specifying the vector field to search on.
*/
vectorField: string | firestore.FieldPath;
/**
* The {@link VectorValue} used to measure the distance from `vectorField` values in the documents.
*/
queryVector: firestore.VectorValue | Array<number>;
/**
* Specifies the upper bound of documents to return, must be a positive integer with a maximum value of 1000.
*/
limit: number;
/**
* Specifies what type of distance is calculated when performing the query.
*/
distanceMeasure: 'EUCLIDEAN' | 'COSINE' | 'DOT_PRODUCT';
/**
* Optionally specifies the name of a field that will be set on each returned DocumentSnapshot,
* which will contain the computed distance for the document.
*/
distanceResultField?: string | firestore.FieldPath;
/**
* Specifies a threshold for which no less similar documents will be returned. The behavior
* of the specified `distanceMeasure` will affect the meaning of the distance threshold.
*
* - For `distanceMeasure: "EUCLIDEAN"`, the meaning of `distanceThreshold` is:
* SELECT docs WHERE euclidean_distance <= distanceThreshold
* - For `distanceMeasure: "COSINE"`, the meaning of `distanceThreshold` is:
* SELECT docs WHERE cosine_distance <= distanceThreshold
* - For `distanceMeasure: "DOT_PRODUCT"`, the meaning of `distanceThreshold` is:
* SELECT docs WHERE dot_product_distance >= distanceThreshold
*/
distanceThreshold?: number;
}

@@ -18,20 +18,2 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.VectorQueryOptions = void 0;
class VectorQueryOptions {
constructor(limit, distanceMeasure) {
this.limit = limit;
this.distanceMeasure = distanceMeasure;
}
isEqual(other) {
if (this === other) {
return true;
}
if (!(other instanceof VectorQueryOptions)) {
return false;
}
return (this.limit === other.limit &&
this.distanceMeasure === other.distanceMeasure);
}
}
exports.VectorQueryOptions = VectorQueryOptions;
//# sourceMappingURL=vector-query-options.js.map

@@ -34,5 +34,3 @@ /**

private readonly _query;
private readonly vectorField;
private readonly queryVector;
private readonly options;
private readonly _options;
/**

@@ -47,3 +45,3 @@ * @internal

*/
constructor(_query: Query<AppModelType, DbModelType>, vectorField: string | firestore.FieldPath, queryVector: firestore.VectorValue | Array<number>, options: VectorQueryOptions);
constructor(_query: Query<AppModelType, DbModelType>, _options: VectorQueryOptions);
/** The query whose results participants in the vector search. Filtering

@@ -62,2 +60,7 @@ * performed by the query will apply before the vector search.

*/
private get _rawDistanceResultField();
/**
* @private
* @internal
*/
private get _rawQueryVector();

@@ -90,3 +93,3 @@ /**

/**
* Internal method for serializing a query to its RunAggregationQuery proto
* Internal method for serializing a query to its proto
* representation with an optional transaction id.

@@ -93,0 +96,0 @@ *

@@ -34,7 +34,5 @@ "use strict";

*/
constructor(_query, vectorField, queryVector, options) {
constructor(_query, _options) {
this._query = _query;
this.vectorField = vectorField;
this.queryVector = queryVector;
this.options = options;
this._options = _options;
this._queryUtil = new query_util_1.QueryUtil(_query._firestore, _query._queryOptions, _query._serializer);

@@ -53,5 +51,5 @@ }

get _rawVectorField() {
return typeof this.vectorField === 'string'
? this.vectorField
: this.vectorField.toString();
return typeof this._options.vectorField === 'string'
? this._options.vectorField
: this._options.vectorField.toString();
}

@@ -62,6 +60,17 @@ /**

*/
get _rawDistanceResultField() {
if (typeof this._options.distanceResultField === 'undefined')
return;
return typeof this._options.distanceResultField === 'string'
? this._options.distanceResultField
: this._options.distanceResultField.toString();
}
/**
* @private
* @internal
*/
get _rawQueryVector() {
return Array.isArray(this.queryVector)
? this.queryVector
: this.queryVector.toArray();
return Array.isArray(this._options.queryVector)
? this._options.queryVector
: this._options.queryVector.toArray();
}

@@ -117,3 +126,3 @@ /**

/**
* Internal method for serializing a query to its RunAggregationQuery proto
* Internal method for serializing a query to its proto
* representation with an optional transaction id.

@@ -126,13 +135,22 @@ *

toProto(transactionOrReadTime, explainOptions) {
var _a, _b, _c;
const queryProto = this._query.toProto(transactionOrReadTime);
const queryVector = Array.isArray(this.queryVector)
? new field_value_1.VectorValue(this.queryVector)
: this.queryVector;
const queryVector = Array.isArray(this._options.queryVector)
? new field_value_1.VectorValue(this._options.queryVector)
: this._options.queryVector;
queryProto.structuredQuery.findNearest = {
limit: { value: this.options.limit },
distanceMeasure: this.options.distanceMeasure,
limit: { value: this._options.limit },
distanceMeasure: this._options.distanceMeasure,
vectorField: {
fieldPath: path_1.FieldPath.fromArgument(this.vectorField).formattedName,
fieldPath: path_1.FieldPath.fromArgument(this._options.vectorField)
.formattedName,
},
queryVector: queryVector._toProto(this._query._serializer),
distanceResultField: ((_a = this._options) === null || _a === void 0 ? void 0 : _a.distanceResultField)
? path_1.FieldPath.fromArgument(this._options.distanceResultField)
.formattedName
: undefined,
distanceThreshold: ((_b = this._options) === null || _b === void 0 ? void 0 : _b.distanceThreshold)
? { value: (_c = this._options) === null || _c === void 0 ? void 0 : _c.distanceThreshold }
: undefined,
};

@@ -190,3 +208,6 @@ if (explainOptions) {

(0, util_1.isPrimitiveArrayEqual)(this._rawQueryVector, other._rawQueryVector) &&
this.options.isEqual(other.options));
this._options.limit === other._options.limit &&
this._options.distanceMeasure === other._options.distanceMeasure &&
this._options.distanceThreshold === other._options.distanceThreshold &&
this._rawDistanceResultField === other._rawDistanceResultField);
}

@@ -193,0 +214,0 @@ }

@@ -31,2 +31,3 @@ "use strict";

const document_reader_1 = require("./document-reader");
const trace_util_1 = require("./telemetry/trace-util");
/*!

@@ -100,6 +101,12 @@ * Error message for transactional reads that were executed after performing

if (refOrQuery instanceof document_reference_1.DocumentReference) {
return this.withLazyStartedTransaction(refOrQuery, this.getSingleFn);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_TRANSACTION_GET_DOCUMENT, () => {
return this.withLazyStartedTransaction(refOrQuery, this.getSingleFn);
});
}
if (refOrQuery instanceof query_1.Query || refOrQuery instanceof aggregate_query_1.AggregateQuery) {
return this.withLazyStartedTransaction(refOrQuery, this.getQueryFn);
return this._firestore._traceUtil.startActiveSpan(refOrQuery instanceof query_1.Query
? trace_util_1.SPAN_NAME_TRANSACTION_GET_QUERY
: trace_util_1.SPAN_NAME_TRANSACTION_GET_AGGREGATION_QUERY, () => {
return this.withLazyStartedTransaction(refOrQuery, this.getQueryFn);
});
}

@@ -308,22 +315,28 @@ throw new Error('Value for argument "refOrQuery" must be a DocumentReference, Query, or AggregateQuery.');

async commit() {
if (!this._writeBatch) {
throw new Error(READ_ONLY_WRITE_ERROR_MSG);
}
// If we have not performed any reads in this particular attempt
// then the writes will be atomically committed without a transaction ID
let transactionId;
if (this._transactionIdPromise) {
transactionId = await this._transactionIdPromise;
}
else if (this._writeBatch.isEmpty) {
// If we have not started a transaction (no reads) and we have no writes
// then the commit is a no-op (success)
return;
}
await this._writeBatch._commit({
transactionId,
requestTag: this._requestTag,
var _a;
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_TRANSACTION_COMMIT, async () => {
if (!this._writeBatch) {
throw new Error(READ_ONLY_WRITE_ERROR_MSG);
}
// If we have not performed any reads in this particular attempt
// then the writes will be atomically committed without a transaction ID
let transactionId;
if (this._transactionIdPromise) {
transactionId = await this._transactionIdPromise;
}
else if (this._writeBatch.isEmpty) {
// If we have not started a transaction (no reads) and we have no writes
// then the commit is a no-op (success)
return;
}
await this._writeBatch._commit({
transactionId,
requestTag: this._requestTag,
});
this._transactionIdPromise = undefined;
this._prevTransactionId = transactionId;
}, {
[trace_util_1.ATTRIBUTE_KEY_IS_TRANSACTIONAL]: true,
[trace_util_1.ATTRIBUTE_KEY_DOC_COUNT]: (_a = this._writeBatch) === null || _a === void 0 ? void 0 : _a._opCount,
});
this._transactionIdPromise = undefined;
this._prevTransactionId = transactionId;
}

@@ -339,31 +352,33 @@ /**

async rollback() {
// No need to roll back if we have not lazily started the transaction
// or if we are read only
if (!this._transactionIdPromise || !this._writeBatch) {
return;
}
let transactionId;
try {
transactionId = await this._transactionIdPromise;
}
catch (_a) {
// This means the initial read operation rejected
// and we do not have a transaction ID to roll back
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_TRANSACTION_ROLLBACK, async () => {
// No need to roll back if we have not lazily started the transaction
// or if we are read only
if (!this._transactionIdPromise || !this._writeBatch) {
return;
}
let transactionId;
try {
transactionId = await this._transactionIdPromise;
}
catch (_a) {
// This means the initial read operation rejected
// and we do not have a transaction ID to roll back
this._transactionIdPromise = undefined;
return;
}
const request = {
database: this._firestore.formattedName,
transaction: transactionId,
};
this._transactionIdPromise = undefined;
return;
}
const request = {
database: this._firestore.formattedName,
transaction: transactionId,
};
this._transactionIdPromise = undefined;
this._prevTransactionId = transactionId;
// We don't need to wait for rollback to completed before continuing.
// If there are any locks held, then rollback will eventually release them.
// Rollback can be done concurrently thereby reducing latency caused by
// otherwise blocking.
this._firestore
.request('rollback', request, this._requestTag)
.catch(err => {
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Best effort to rollback failed with error:', err);
this._prevTransactionId = transactionId;
// We don't need to wait for rollback to completed before continuing.
// If there are any locks held, then rollback will eventually release them.
// Rollback can be done concurrently thereby reducing latency caused by
// otherwise blocking.
this._firestore
.request('rollback', request, this._requestTag)
.catch(err => {
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Best effort to rollback failed with error:', err);
});
});

@@ -380,25 +395,35 @@ }

async runTransaction(updateFunction) {
// No backoff is set for readonly transactions (i.e. attempts == 1)
if (!this._writeBatch) {
return this.runTransactionOnce(updateFunction);
}
let lastError = undefined;
for (let attempt = 0; attempt < this._maxAttempts; ++attempt) {
try {
if (lastError) {
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Retrying transaction after error:', lastError);
}
this._writeBatch._reset();
await maybeBackoff(this._backoff, lastError);
return await this.runTransactionOnce(updateFunction);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_TRANSACTION_RUN, async (span) => {
// No backoff is set for readonly transactions (i.e. attempts == 1)
if (!this._writeBatch) {
return this.runTransactionOnce(updateFunction);
}
catch (err) {
lastError = err;
if (!isRetryableTransactionError(err)) {
break;
let lastError = undefined;
for (let attempt = 0; attempt < this._maxAttempts; ++attempt) {
span.setAttributes({
[trace_util_1.ATTRIBUTE_KEY_TRANSACTION_TYPE]: this._writeBatch
? 'READ_WRITE'
: 'READ_ONLY',
[trace_util_1.ATTRIBUTE_KEY_ATTEMPTS_ALLOWED]: this._maxAttempts,
[trace_util_1.ATTRIBUTE_KEY_ATTEMPTS_REMAINING]: this._maxAttempts - attempt - 1,
});
try {
if (lastError) {
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Retrying transaction after error:', lastError);
span.addEvent('Initiate transaction retry');
}
this._writeBatch._reset();
await maybeBackoff(this._backoff, lastError);
return await this.runTransactionOnce(updateFunction);
}
catch (err) {
lastError = err;
if (!isRetryableTransactionError(err)) {
break;
}
}
}
}
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Transaction not eligible for retry, returning error: %s', lastError);
return Promise.reject(lastError);
(0, logger_1.logger)('Firestore.runTransaction', this._requestTag, 'Transaction not eligible for retry, returning error: %s', lastError);
return Promise.reject(lastError);
});
}

@@ -488,4 +513,6 @@ /**

async getBatchFn({ documents, fieldMask, }, opts) {
const documentReader = new document_reader_1.DocumentReader(this._firestore, documents, fieldMask, opts);
return documentReader._get(this._requestTag);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_TRANSACTION_GET_DOCUMENTS, async () => {
const documentReader = new document_reader_1.DocumentReader(this._firestore, documents, fieldMask, opts);
return documentReader._get(this._requestTag);
});
}

@@ -492,0 +519,0 @@ async getQueryFn(query, opts) {

@@ -73,2 +73,7 @@ {

},
"BulkDeleteDocuments": {
"timeout_millis": 60000,
"retry_codes_name": "non_idempotent",
"retry_params_name": "default"
},
"CreateDatabase": {

@@ -75,0 +80,0 @@ "retry_codes_name": "non_idempotent",

@@ -77,3 +77,3 @@ /*!

export declare class WriteBatch implements firestore.WriteBatch {
private readonly _firestore;
protected readonly _firestore: Firestore;
private readonly _serializer;

@@ -80,0 +80,0 @@ private readonly _allowUndefined;

@@ -30,2 +30,3 @@ "use strict";

const validate_1 = require("./validate");
const trace_util_1 = require("./telemetry/trace-util");
/**

@@ -436,12 +437,17 @@ * A WriteResult wraps the write time set by the Firestore servers on sets(),

commit() {
// Capture the error stack to preserve stack tracing across async calls.
const stack = Error().stack;
// Commits should also be retried when they fail with status code ABORTED.
const retryCodes = [10 /* StatusCode.ABORTED */, ...(0, util_1.getRetryCodes)('commit')];
return this._commit({ retryCodes })
.then(response => {
return (response.writeResults || []).map(writeResult => new WriteResult(timestamp_1.Timestamp.fromProto(writeResult.updateTime || response.commitTime)));
})
.catch(err => {
throw (0, util_1.wrapError)(err, stack);
return this._firestore._traceUtil.startActiveSpan(trace_util_1.SPAN_NAME_BATCH_COMMIT, async () => {
// Capture the error stack to preserve stack tracing across async calls.
const stack = Error().stack;
// Commits should also be retried when they fail with status code ABORTED.
const retryCodes = [10 /* StatusCode.ABORTED */, ...(0, util_1.getRetryCodes)('commit')];
return this._commit({ retryCodes })
.then(response => {
return (response.writeResults || []).map(writeResult => new WriteResult(timestamp_1.Timestamp.fromProto(writeResult.updateTime || response.commitTime)));
})
.catch(err => {
throw (0, util_1.wrapError)(err, stack);
});
}, {
[trace_util_1.ATTRIBUTE_KEY_IS_TRANSACTIONAL]: false,
[trace_util_1.ATTRIBUTE_KEY_DOC_COUNT]: this._opCount,
});

@@ -448,0 +454,0 @@ }

{
"name": "@google-cloud/firestore",
"description": "Firestore Client Library for Node.js",
"version": "7.9.0",
"version": "7.10.0",
"license": "Apache-2.0",

@@ -37,10 +37,10 @@ "author": "Google Inc.",

"docs": "jsdoc -c .jsdoc.js",
"system-test:rest": "FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 600000",
"system-test:named-db:rest": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 600000",
"system-test:grpc": "mocha build/system-test --timeout 600000",
"system-test:named-db:grpc": "FIRESTORE_NAMED_DATABASE=test-db mocha build/system-test --timeout 600000",
"system-test:emulator:rest": "FIRESTORE_EMULATOR_HOST=localhost:8080 FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 600000",
"system-test:named-db:emulator:rest": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_EMULATOR_HOST=localhost:8080 FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 600000",
"system-test:emulator:grpc": "FIRESTORE_EMULATOR_HOST=localhost:8080 mocha build/system-test --timeout 600000",
"system-test:named-db:emulator:grpc": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_EMULATOR_HOST=localhost:8080 mocha build/system-test --timeout 600000",
"system-test:rest": "FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 1200000",
"system-test:named-db:rest": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 1200000",
"system-test:grpc": "mocha build/system-test --timeout 1200000",
"system-test:named-db:grpc": "FIRESTORE_NAMED_DATABASE=test-db mocha build/system-test --timeout 1200000",
"system-test:emulator:rest": "FIRESTORE_EMULATOR_HOST=localhost:8080 FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 1200000",
"system-test:named-db:emulator:rest": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_EMULATOR_HOST=localhost:8080 FIRESTORE_PREFER_REST=true mocha build/system-test --timeout 1200000",
"system-test:emulator:grpc": "FIRESTORE_EMULATOR_HOST=localhost:8080 mocha build/system-test --timeout 1200000",
"system-test:named-db:emulator:grpc": "FIRESTORE_NAMED_DATABASE=test-db FIRESTORE_EMULATOR_HOST=localhost:8080 mocha build/system-test --timeout 1200000",
"system-test": "npm run system-test:grpc && npm run system-test:rest && npm run system-test:named-db:grpc && npm run system-test:named-db:rest",

@@ -67,2 +67,3 @@ "system-test:emulator": "npm run system-test:emulator:grpc && npm run system-test:emulator:rest && npm run system-test:named-db:emulator:grpc && npm run system-test:named-db:emulator:rest",

"dependencies": {
"@opentelemetry/api": "^1.3.0",
"fast-deep-equal": "^3.1.1",

@@ -74,3 +75,8 @@ "functional-red-black-tree": "^1.0.1",

"devDependencies": {
"@google-cloud/trace-agent": "^8.0.0",
"@googleapis/cloudtrace": "^1.1.2",
"@google-cloud/cloud-rad": "^0.4.0",
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.0.0",
"@opentelemetry/context-async-hooks": "^1.24.1",
"@opentelemetry/sdk-trace-node": "^1.24.1",
"@types/assert": "^1.4.0",

@@ -77,0 +83,0 @@ "@types/chai": "^4.2.7",

@@ -17,3 +17,2 @@ /*!

/// <reference types="node" />
import type * as gax from 'google-gax';

@@ -20,0 +19,0 @@ import type {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc