blob: 56642c1fba51e6293a251f041b06929a82ab4b81 [file] [log] [blame]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: file_names
// ignore_for_file: library_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_expression_function_bodies
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_string_interpolations
/// Cloud Firestore API - v1
///
/// Accesses the NoSQL document database built for automatic scaling, high
/// performance, and ease of application development.
///
/// For more information, see <https://cloud.google.com/firestore>
///
/// Create an instance of [FirestoreApi] to access these resources:
///
/// - [ProjectsResource]
/// - [ProjectsDatabasesResource]
/// - [ProjectsDatabasesCollectionGroupsResource]
/// - [ProjectsDatabasesCollectionGroupsFieldsResource]
/// - [ProjectsDatabasesCollectionGroupsIndexesResource]
/// - [ProjectsDatabasesDocumentsResource]
/// - [ProjectsDatabasesOperationsResource]
/// - [ProjectsLocationsResource]
library firestore.v1;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'dart:core' as core;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
import '../src/user_agent.dart';
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
/// Accesses the NoSQL document database built for automatic scaling, high
/// performance, and ease of application development.
class FirestoreApi {
/// See, edit, configure, and delete your Google Cloud Platform data
static const cloudPlatformScope =
'https://www.googleapis.com/auth/cloud-platform';
/// View and manage your Google Cloud Datastore data
static const datastoreScope = 'https://www.googleapis.com/auth/datastore';
final commons.ApiRequester _requester;
ProjectsResource get projects => ProjectsResource(_requester);
FirestoreApi(http.Client client,
{core.String rootUrl = 'https://firestore.googleapis.com/',
core.String servicePath = ''})
: _requester =
commons.ApiRequester(client, rootUrl, servicePath, requestHeaders);
}
class ProjectsResource {
final commons.ApiRequester _requester;
ProjectsDatabasesResource get databases =>
ProjectsDatabasesResource(_requester);
ProjectsLocationsResource get locations =>
ProjectsLocationsResource(_requester);
ProjectsResource(commons.ApiRequester client) : _requester = client;
}
class ProjectsDatabasesResource {
final commons.ApiRequester _requester;
ProjectsDatabasesCollectionGroupsResource get collectionGroups =>
ProjectsDatabasesCollectionGroupsResource(_requester);
ProjectsDatabasesDocumentsResource get documents =>
ProjectsDatabasesDocumentsResource(_requester);
ProjectsDatabasesOperationsResource get operations =>
ProjectsDatabasesOperationsResource(_requester);
ProjectsDatabasesResource(commons.ApiRequester client) : _requester = client;
/// Exports a copy of all or a subset of documents from Google Cloud Firestore
/// to another storage system, such as Google Cloud Storage.
///
/// Recent updates to documents may not be reflected in the export. The export
/// occurs in the background and its progress can be monitored and managed via
/// the Operation resource that is created. The output of an export may only
/// be used once the associated operation is done. If an export operation is
/// cancelled before completion it may leave partial data behind in Google
/// Cloud Storage. For more details on export behavior and output format,
/// refer to:
/// https://cloud.google.com/firestore/docs/manage-data/export-import
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. Database to export. Should be of the form:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningOperation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningOperation> exportDocuments(
GoogleFirestoreAdminV1ExportDocumentsRequest request,
core.String name, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name') + ':exportDocuments';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return GoogleLongrunningOperation.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Imports documents into Google Cloud Firestore.
///
/// Existing documents with the same name are overwritten. The import occurs
/// in the background and its progress can be monitored and managed via the
/// Operation resource that is created. If an ImportDocuments operation is
/// cancelled, it is possible that a subset of the data has already been
/// imported to Cloud Firestore.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. Database to import into. Should be of the form:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningOperation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningOperation> importDocuments(
GoogleFirestoreAdminV1ImportDocumentsRequest request,
core.String name, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name') + ':importDocuments';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return GoogleLongrunningOperation.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
class ProjectsDatabasesCollectionGroupsResource {
final commons.ApiRequester _requester;
ProjectsDatabasesCollectionGroupsFieldsResource get fields =>
ProjectsDatabasesCollectionGroupsFieldsResource(_requester);
ProjectsDatabasesCollectionGroupsIndexesResource get indexes =>
ProjectsDatabasesCollectionGroupsIndexesResource(_requester);
ProjectsDatabasesCollectionGroupsResource(commons.ApiRequester client)
: _requester = client;
}
class ProjectsDatabasesCollectionGroupsFieldsResource {
final commons.ApiRequester _requester;
ProjectsDatabasesCollectionGroupsFieldsResource(commons.ApiRequester client)
: _requester = client;
/// Gets the metadata and configuration for a Field.
///
/// Request parameters:
///
/// [name] - Required. A name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+/fields/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleFirestoreAdminV1Field].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleFirestoreAdminV1Field> get(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleFirestoreAdminV1Field.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Lists the field configuration and metadata for this database.
///
/// Currently, FirestoreAdmin.ListFields only supports listing fields that
/// have been explicitly overridden. To issue this query, call
/// FirestoreAdmin.ListFields with the filter set to
/// `indexConfig.usesAncestorConfig:false` .
///
/// Request parameters:
///
/// [parent] - Required. A parent name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+$`.
///
/// [filter] - The filter to apply to list results. Currently,
/// FirestoreAdmin.ListFields only supports listing fields that have been
/// explicitly overridden. To issue this query, call FirestoreAdmin.ListFields
/// with a filter that includes `indexConfig.usesAncestorConfig:false` .
///
/// [pageSize] - The number of results to return.
///
/// [pageToken] - A page token, returned from a previous call to
/// FirestoreAdmin.ListFields, that may be used to get the next page of
/// results.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleFirestoreAdminV1ListFieldsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleFirestoreAdminV1ListFieldsResponse> list(
core.String parent, {
core.String? filter,
core.int? pageSize,
core.String? pageToken,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (filter != null) 'filter': [filter],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/fields';
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleFirestoreAdminV1ListFieldsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Updates a field configuration.
///
/// Currently, field updates apply only to single field index configuration.
/// However, calls to FirestoreAdmin.UpdateField should provide a field mask
/// to avoid changing any configuration that the caller isn't aware of. The
/// field mask should be specified as: `{ paths: "index_config" }`. This call
/// returns a google.longrunning.Operation which may be used to track the
/// status of the field update. The metadata for the operation will be the
/// type FieldOperationMetadata. To configure the default field settings for
/// the database, use the special `Field` with resource name:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields
/// / * `.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - Required. A field name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}`
/// A field path may be a simple field name, e.g. `address` or a path to
/// fields within map_value , e.g. `address.city`, or a special field path.
/// The only valid special field is `*`, which represents any field. Field
/// paths may be quoted using ` (backtick). The only character that needs to
/// be escaped within a quoted field path is the backtick character itself,
/// escaped using a backslash. Special characters in field paths that must be
/// quoted include: `*`, `.`, ``` (backtick), `[`, `]`, as well as any ascii
/// symbolic characters. Examples: (Note: Comments here are written in
/// markdown syntax, so there is an additional layer of backticks to represent
/// a code block) `\`address.city\`` represents a field named `address.city`,
/// not the map key `city` in the field `address`. `\`*\`` represents a field
/// named `*`, not any field. A special `Field` contains the default indexing
/// settings for all fields. This field's resource name is:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields
/// / * ` Indexes defined on this `Field` will be applied to all fields which
/// do not have their own `Field` index configuration.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+/fields/\[^/\]+$`.
///
/// [updateMask] - A mask, relative to the field. If specified, only
/// configuration specified by this field_mask will be updated in the field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningOperation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningOperation> patch(
GoogleFirestoreAdminV1Field request,
core.String name, {
core.String? updateMask,
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if (updateMask != null) 'updateMask': [updateMask],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'PATCH',
body: _body,
queryParams: _queryParams,
);
return GoogleLongrunningOperation.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
class ProjectsDatabasesCollectionGroupsIndexesResource {
final commons.ApiRequester _requester;
ProjectsDatabasesCollectionGroupsIndexesResource(commons.ApiRequester client)
: _requester = client;
/// Creates a composite index.
///
/// This returns a google.longrunning.Operation which may be used to track the
/// status of the creation. The metadata for the operation will be the type
/// IndexOperationMetadata.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. A parent name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningOperation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningOperation> create(
GoogleFirestoreAdminV1Index request,
core.String parent, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/indexes';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return GoogleLongrunningOperation.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Deletes a composite index.
///
/// Request parameters:
///
/// [name] - Required. A name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+/indexes/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'DELETE',
queryParams: _queryParams,
);
return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Gets a composite index.
///
/// Request parameters:
///
/// [name] - Required. A name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+/indexes/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleFirestoreAdminV1Index].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleFirestoreAdminV1Index> get(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleFirestoreAdminV1Index.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Lists composite indexes.
///
/// Request parameters:
///
/// [parent] - Required. A parent name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/collectionGroups/\[^/\]+$`.
///
/// [filter] - The filter to apply to list results.
///
/// [pageSize] - The number of results to return.
///
/// [pageToken] - A page token, returned from a previous call to
/// FirestoreAdmin.ListIndexes, that may be used to get the next page of
/// results.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleFirestoreAdminV1ListIndexesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleFirestoreAdminV1ListIndexesResponse> list(
core.String parent, {
core.String? filter,
core.int? pageSize,
core.String? pageToken,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (filter != null) 'filter': [filter],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + '/indexes';
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleFirestoreAdminV1ListIndexesResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
class ProjectsDatabasesDocumentsResource {
final commons.ApiRequester _requester;
ProjectsDatabasesDocumentsResource(commons.ApiRequester client)
: _requester = client;
/// Gets multiple documents.
///
/// Documents returned by this method are not guaranteed to be returned in the
/// same order that they were requested.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [BatchGetDocumentsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<BatchGetDocumentsResponse> batchGet(
BatchGetDocumentsRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url =
'v1/' + core.Uri.encodeFull('$database') + '/documents:batchGet';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return BatchGetDocumentsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Applies a batch of write operations.
///
/// The BatchWrite method does not apply the write operations atomically and
/// can apply them out of order. Method does not allow more than one write per
/// document. Each write succeeds or fails independently. See the
/// BatchWriteResponse for the success status of each write. If you require an
/// atomically applied set of writes, use Commit instead.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [BatchWriteResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<BatchWriteResponse> batchWrite(
BatchWriteRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url =
'v1/' + core.Uri.encodeFull('$database') + '/documents:batchWrite';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return BatchWriteResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Starts a new transaction.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [BeginTransactionResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<BeginTransactionResponse> beginTransaction(
BeginTransactionRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' +
core.Uri.encodeFull('$database') +
'/documents:beginTransaction';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return BeginTransactionResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Commits a transaction, while optionally updating documents.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [CommitResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<CommitResponse> commit(
CommitRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$database') + '/documents:commit';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return CommitResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Creates a new document.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. The parent resource. For example:
/// `projects/{project_id}/databases/{database_id}/documents` or
/// `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/.*$`.
///
/// [collectionId] - Required. The collection ID, relative to `parent`, to
/// list. For example: `chatrooms`.
///
/// [documentId] - The client-assigned document ID to use for this document.
/// Optional. If not specified, an ID will be assigned by the service.
///
/// [mask_fieldPaths] - The list of field paths in the mask. See
/// Document.fields for a field path syntax reference.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Document].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Document> createDocument(
Document request,
core.String parent,
core.String collectionId, {
core.String? documentId,
core.List<core.String>? mask_fieldPaths,
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if (documentId != null) 'documentId': [documentId],
if (mask_fieldPaths != null) 'mask.fieldPaths': mask_fieldPaths,
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' +
core.Uri.encodeFull('$parent') +
'/' +
commons.escapeVariable('$collectionId');
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return Document.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Deletes a document.
///
/// Request parameters:
///
/// [name] - Required. The resource name of the Document to delete. In the
/// format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [currentDocument_exists] - When set to `true`, the target document must
/// exist. When set to `false`, the target document must not exist.
///
/// [currentDocument_updateTime] - When set, the target document must exist
/// and have been last updated at that time.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String name, {
core.bool? currentDocument_exists,
core.String? currentDocument_updateTime,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (currentDocument_exists != null)
'currentDocument.exists': ['${currentDocument_exists}'],
if (currentDocument_updateTime != null)
'currentDocument.updateTime': [currentDocument_updateTime],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'DELETE',
queryParams: _queryParams,
);
return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Gets a single document.
///
/// Request parameters:
///
/// [name] - Required. The resource name of the Document to get. In the
/// format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [mask_fieldPaths] - The list of field paths in the mask. See
/// Document.fields for a field path syntax reference.
///
/// [readTime] - Reads the version of the document at the given time. This may
/// not be older than 270 seconds.
///
/// [transaction] - Reads the document in a transaction.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Document].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Document> get(
core.String name, {
core.List<core.String>? mask_fieldPaths,
core.String? readTime,
core.String? transaction,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (mask_fieldPaths != null) 'mask.fieldPaths': mask_fieldPaths,
if (readTime != null) 'readTime': [readTime],
if (transaction != null) 'transaction': [transaction],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return Document.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Lists documents.
///
/// Request parameters:
///
/// [parent] - Required. The parent resource name. In the format:
/// `projects/{project_id}/databases/{database_id}/documents` or
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// For example: `projects/my-project/databases/my-database/documents` or
/// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [collectionId] - Required. The collection ID, relative to `parent`, to
/// list. For example: `chatrooms` or `messages`.
///
/// [mask_fieldPaths] - The list of field paths in the mask. See
/// Document.fields for a field path syntax reference.
///
/// [orderBy] - The order to sort results by. For example: `priority desc,
/// name`.
///
/// [pageSize] - The maximum number of documents to return.
///
/// [pageToken] - The `next_page_token` value returned from a previous List
/// request, if any.
///
/// [readTime] - Reads documents as they were at the given time. This may not
/// be older than 270 seconds.
///
/// [showMissing] - If the list should show missing documents. A missing
/// document is a document that does not exist but has sub-documents. These
/// documents will be returned with a key but will not have fields,
/// Document.create_time, or Document.update_time set. Requests with
/// `show_missing` may not specify `where` or `order_by`.
///
/// [transaction] - Reads documents in a transaction.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListDocumentsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListDocumentsResponse> list(
core.String parent,
core.String collectionId, {
core.List<core.String>? mask_fieldPaths,
core.String? orderBy,
core.int? pageSize,
core.String? pageToken,
core.String? readTime,
core.bool? showMissing,
core.String? transaction,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (mask_fieldPaths != null) 'mask.fieldPaths': mask_fieldPaths,
if (orderBy != null) 'orderBy': [orderBy],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if (readTime != null) 'readTime': [readTime],
if (showMissing != null) 'showMissing': ['${showMissing}'],
if (transaction != null) 'transaction': [transaction],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' +
core.Uri.encodeFull('$parent') +
'/' +
commons.escapeVariable('$collectionId');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return ListDocumentsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Lists all the collection IDs underneath a document.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. The parent document. In the format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// For example:
/// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListCollectionIdsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListCollectionIdsResponse> listCollectionIds(
ListCollectionIdsRequest request,
core.String parent, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + ':listCollectionIds';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return ListCollectionIdsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Listens to changes.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListenResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListenResponse> listen(
ListenRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$database') + '/documents:listen';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return ListenResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Partitions a query by returning partition cursors that can be used to run
/// the query in parallel.
///
/// The returned partition cursors are split points that can be used by
/// RunQuery as starting/end points for the query results.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. The parent resource name. In the format:
/// `projects/{project_id}/databases/{database_id}/documents`. Document
/// resource names are not supported; only database resource names can be
/// specified.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [PartitionQueryResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<PartitionQueryResponse> partitionQuery(
PartitionQueryRequest request,
core.String parent, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + ':partitionQuery';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return PartitionQueryResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Updates or inserts a document.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The resource name of the document, for example
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [currentDocument_exists] - When set to `true`, the target document must
/// exist. When set to `false`, the target document must not exist.
///
/// [currentDocument_updateTime] - When set, the target document must exist
/// and have been last updated at that time.
///
/// [mask_fieldPaths] - The list of field paths in the mask. See
/// Document.fields for a field path syntax reference.
///
/// [updateMask_fieldPaths] - The list of field paths in the mask. See
/// Document.fields for a field path syntax reference.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Document].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Document> patch(
Document request,
core.String name, {
core.bool? currentDocument_exists,
core.String? currentDocument_updateTime,
core.List<core.String>? mask_fieldPaths,
core.List<core.String>? updateMask_fieldPaths,
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if (currentDocument_exists != null)
'currentDocument.exists': ['${currentDocument_exists}'],
if (currentDocument_updateTime != null)
'currentDocument.updateTime': [currentDocument_updateTime],
if (mask_fieldPaths != null) 'mask.fieldPaths': mask_fieldPaths,
if (updateMask_fieldPaths != null)
'updateMask.fieldPaths': updateMask_fieldPaths,
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'PATCH',
body: _body,
queryParams: _queryParams,
);
return Document.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Rolls back a transaction.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> rollback(
RollbackRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url =
'v1/' + core.Uri.encodeFull('$database') + '/documents:rollback';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Runs a query.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - Required. The parent resource name. In the format:
/// `projects/{project_id}/databases/{database_id}/documents` or
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// For example: `projects/my-project/databases/my-database/documents` or
/// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/documents/\[^/\]+/.*$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [RunQueryResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<RunQueryResponse> runQuery(
RunQueryRequest request,
core.String parent, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$parent') + ':runQuery';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return RunQueryResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Streams batches of document updates and deletes, in order.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [database] - Required. The database name. In the format:
/// `projects/{project_id}/databases/{database_id}`. This is only required in
/// the first message.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [WriteResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<WriteResponse> write(
WriteRequest request,
core.String database, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$database') + '/documents:write';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return WriteResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
class ProjectsDatabasesOperationsResource {
final commons.ApiRequester _requester;
ProjectsDatabasesOperationsResource(commons.ApiRequester client)
: _requester = client;
/// Starts asynchronous cancellation on a long-running operation.
///
/// The server makes a best effort to cancel the operation, but success is not
/// guaranteed. If the server doesn't support this method, it returns
/// `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation
/// or other methods to check whether the cancellation succeeded or whether
/// the operation completed despite cancellation. On successful cancellation,
/// the operation is not deleted; instead, it becomes an operation with an
/// Operation.error value with a google.rpc.Status.code of 1, corresponding to
/// `Code.CANCELLED`.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name of the operation resource to be cancelled.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/operations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> cancel(
GoogleLongrunningCancelOperationRequest request,
core.String name, {
core.String? $fields,
}) async {
final _body = convert.json.encode(request.toJson());
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
final _response = await _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
);
return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Deletes a long-running operation.
///
/// This method indicates that the client is no longer interested in the
/// operation result. It does not cancel the operation. If the server doesn't
/// support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.
///
/// Request parameters:
///
/// [name] - The name of the operation resource to be deleted.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/operations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> delete(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'DELETE',
queryParams: _queryParams,
);
return Empty.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Gets the latest state of a long-running operation.
///
/// Clients can use this method to poll the operation result at intervals as
/// recommended by the API service.
///
/// Request parameters:
///
/// [name] - The name of the operation resource.
/// Value must have pattern
/// `^projects/\[^/\]+/databases/\[^/\]+/operations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningOperation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningOperation> get(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleLongrunningOperation.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
/// Lists operations that match the specified filter in the request.
///
/// If the server doesn't support this method, it returns `UNIMPLEMENTED`.
/// NOTE: the `name` binding allows API services to override the binding to
/// use different resource name schemes, such as `users / * /operations`. To
/// override the binding, API services can add a binding such as
/// `"/v1/{name=users / * }/operations"` to their service configuration. For
/// backwards compatibility, the default name includes the operations
/// collection id, however overriding users must ensure the name binding is
/// the parent resource, without the operations collection id.
///
/// Request parameters:
///
/// [name] - The name of the operation's parent resource.
/// Value must have pattern `^projects/\[^/\]+/databases/\[^/\]+$`.
///
/// [filter] - The standard list filter.
///
/// [pageSize] - The standard list page size.
///
/// [pageToken] - The standard list page token.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GoogleLongrunningListOperationsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GoogleLongrunningListOperationsResponse> list(
core.String name, {
core.String? filter,
core.int? pageSize,
core.String? pageToken,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (filter != null) 'filter': [filter],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name') + '/operations';
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return GoogleLongrunningListOperationsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
class ProjectsLocationsResource {
final commons.ApiRequester _requester;
ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
/// Gets information about a location.
///
/// Request parameters:
///
/// [name] - Resource name for the location.
/// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Location].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Location> get(
core.String name, {
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name');
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return Location.fromJson(_response as core.Map<core.String, core.dynamic>);
}
/// Lists information about the supported locations for this service.
///
/// Request parameters:
///
/// [name] - The resource that owns the locations collection, if applicable.
/// Value must have pattern `^projects/\[^/\]+$`.
///
/// [filter] - A filter to narrow down results to a preferred subset. The
/// filtering language accepts strings like "displayName=tokyo", and is
/// documented in more detail in \[AIP-160\](https://google.aip.dev/160).
///
/// [pageSize] - The maximum number of results to return. If not set, the
/// service selects a default.
///
/// [pageToken] - A page token received from the `next_page_token` field in
/// the response. Send that page token to receive the subsequent page.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListLocationsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListLocationsResponse> list(
core.String name, {
core.String? filter,
core.int? pageSize,
core.String? pageToken,
core.String? $fields,
}) async {
final _queryParams = <core.String, core.List<core.String>>{
if (filter != null) 'filter': [filter],
if (pageSize != null) 'pageSize': ['${pageSize}'],
if (pageToken != null) 'pageToken': [pageToken],
if ($fields != null) 'fields': [$fields],
};
final _url = 'v1/' + core.Uri.encodeFull('$name') + '/locations';
final _response = await _requester.request(
_url,
'GET',
queryParams: _queryParams,
);
return ListLocationsResponse.fromJson(
_response as core.Map<core.String, core.dynamic>);
}
}
/// An array value.
class ArrayValue {
/// Values in the array.
core.List<Value>? values;
ArrayValue();
ArrayValue.fromJson(core.Map _json) {
if (_json.containsKey('values')) {
values = (_json['values'] as core.List)
.map<Value>((value) =>
Value.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (values != null)
'values': values!.map((value) => value.toJson()).toList(),
};
}
/// The request for Firestore.BatchGetDocuments.
class BatchGetDocumentsRequest {
/// The names of the documents to retrieve.
///
/// In the format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// The request will fail if any of the document is not a child resource of
/// the given `database`. Duplicate names will be elided.
core.List<core.String>? documents;
/// The fields to return.
///
/// If not set, returns all fields. If a document has a field that is not
/// present in this mask, that field will not be returned in the response.
DocumentMask? mask;
/// Starts a new transaction and reads the documents.
///
/// Defaults to a read-only transaction. The new transaction ID will be
/// returned as the first response in the stream.
TransactionOptions? newTransaction;
/// Reads documents as they were at the given time.
///
/// This may not be older than 270 seconds.
core.String? readTime;
/// Reads documents in a transaction.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
BatchGetDocumentsRequest();
BatchGetDocumentsRequest.fromJson(core.Map _json) {
if (_json.containsKey('documents')) {
documents = (_json['documents'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('mask')) {
mask = DocumentMask.fromJson(
_json['mask'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('newTransaction')) {
newTransaction = TransactionOptions.fromJson(
_json['newTransaction'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (documents != null) 'documents': documents!,
if (mask != null) 'mask': mask!.toJson(),
if (newTransaction != null) 'newTransaction': newTransaction!.toJson(),
if (readTime != null) 'readTime': readTime!,
if (transaction != null) 'transaction': transaction!,
};
}
/// The streamed response for Firestore.BatchGetDocuments.
class BatchGetDocumentsResponse {
/// A document that was requested.
Document? found;
/// A document name that was requested but does not exist.
///
/// In the format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
core.String? missing;
/// The time at which the document was read.
///
/// This may be monotically increasing, in this case the previous documents in
/// the result stream are guaranteed not to have changed between their
/// read_time and this one.
core.String? readTime;
/// The transaction that was started as part of this request.
///
/// Will only be set in the first response, and only if
/// BatchGetDocumentsRequest.new_transaction was set in the request.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
BatchGetDocumentsResponse();
BatchGetDocumentsResponse.fromJson(core.Map _json) {
if (_json.containsKey('found')) {
found = Document.fromJson(
_json['found'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('missing')) {
missing = _json['missing'] as core.String;
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (found != null) 'found': found!.toJson(),
if (missing != null) 'missing': missing!,
if (readTime != null) 'readTime': readTime!,
if (transaction != null) 'transaction': transaction!,
};
}
/// The request for Firestore.BatchWrite.
class BatchWriteRequest {
/// Labels associated with this batch write.
core.Map<core.String, core.String>? labels;
/// The writes to apply.
///
/// Method does not apply writes atomically and does not guarantee ordering.
/// Each write succeeds or fails independently. You cannot write to the same
/// document more than once per request.
core.List<Write>? writes;
BatchWriteRequest();
BatchWriteRequest.fromJson(core.Map _json) {
if (_json.containsKey('labels')) {
labels = (_json['labels'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('writes')) {
writes = (_json['writes'] as core.List)
.map<Write>((value) =>
Write.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (labels != null) 'labels': labels!,
if (writes != null)
'writes': writes!.map((value) => value.toJson()).toList(),
};
}
/// The response from Firestore.BatchWrite.
class BatchWriteResponse {
/// The status of applying the writes.
///
/// This i-th write status corresponds to the i-th write in the request.
core.List<Status>? status;
/// The result of applying the writes.
///
/// This i-th write result corresponds to the i-th write in the request.
core.List<WriteResult>? writeResults;
BatchWriteResponse();
BatchWriteResponse.fromJson(core.Map _json) {
if (_json.containsKey('status')) {
status = (_json['status'] as core.List)
.map<Status>((value) =>
Status.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('writeResults')) {
writeResults = (_json['writeResults'] as core.List)
.map<WriteResult>((value) => WriteResult.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (status != null)
'status': status!.map((value) => value.toJson()).toList(),
if (writeResults != null)
'writeResults': writeResults!.map((value) => value.toJson()).toList(),
};
}
/// The request for Firestore.BeginTransaction.
class BeginTransactionRequest {
/// The options for the transaction.
///
/// Defaults to a read-write transaction.
TransactionOptions? options;
BeginTransactionRequest();
BeginTransactionRequest.fromJson(core.Map _json) {
if (_json.containsKey('options')) {
options = TransactionOptions.fromJson(
_json['options'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (options != null) 'options': options!.toJson(),
};
}
/// The response for Firestore.BeginTransaction.
class BeginTransactionResponse {
/// The transaction that was started.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
BeginTransactionResponse();
BeginTransactionResponse.fromJson(core.Map _json) {
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (transaction != null) 'transaction': transaction!,
};
}
/// A selection of a collection, such as `messages as m1`.
class CollectionSelector {
/// When false, selects only collections that are immediate children of the
/// `parent` specified in the containing `RunQueryRequest`.
///
/// When true, selects all descendant collections.
core.bool? allDescendants;
/// The collection ID.
///
/// When set, selects only collections with this ID.
core.String? collectionId;
CollectionSelector();
CollectionSelector.fromJson(core.Map _json) {
if (_json.containsKey('allDescendants')) {
allDescendants = _json['allDescendants'] as core.bool;
}
if (_json.containsKey('collectionId')) {
collectionId = _json['collectionId'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (allDescendants != null) 'allDescendants': allDescendants!,
if (collectionId != null) 'collectionId': collectionId!,
};
}
/// The request for Firestore.Commit.
class CommitRequest {
/// If set, applies all writes in this transaction, and commits it.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// The writes to apply.
///
/// Always executed atomically and in order.
core.List<Write>? writes;
CommitRequest();
CommitRequest.fromJson(core.Map _json) {
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
if (_json.containsKey('writes')) {
writes = (_json['writes'] as core.List)
.map<Write>((value) =>
Write.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (transaction != null) 'transaction': transaction!,
if (writes != null)
'writes': writes!.map((value) => value.toJson()).toList(),
};
}
/// The response for Firestore.Commit.
class CommitResponse {
/// The time at which the commit occurred.
///
/// Any read with an equal or greater `read_time` is guaranteed to see the
/// effects of the commit.
core.String? commitTime;
/// The result of applying the writes.
///
/// This i-th write result corresponds to the i-th write in the request.
core.List<WriteResult>? writeResults;
CommitResponse();
CommitResponse.fromJson(core.Map _json) {
if (_json.containsKey('commitTime')) {
commitTime = _json['commitTime'] as core.String;
}
if (_json.containsKey('writeResults')) {
writeResults = (_json['writeResults'] as core.List)
.map<WriteResult>((value) => WriteResult.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (commitTime != null) 'commitTime': commitTime!,
if (writeResults != null)
'writeResults': writeResults!.map((value) => value.toJson()).toList(),
};
}
/// A filter that merges multiple other filters using the given operator.
class CompositeFilter {
/// The list of filters to combine.
///
/// Must contain at least one filter.
core.List<Filter>? filters;
/// The operator for combining multiple filters.
/// Possible string values are:
/// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
/// - "AND" : The results are required to satisfy each of the combined
/// filters.
core.String? op;
CompositeFilter();
CompositeFilter.fromJson(core.Map _json) {
if (_json.containsKey('filters')) {
filters = (_json['filters'] as core.List)
.map<Filter>((value) =>
Filter.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('op')) {
op = _json['op'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (filters != null)
'filters': filters!.map((value) => value.toJson()).toList(),
if (op != null) 'op': op!,
};
}
/// A position in a query result set.
class Cursor {
/// If the position is just before or just after the given values, relative to
/// the sort order defined by the query.
core.bool? before;
/// The values that represent a position, in the order they appear in the
/// order by clause of a query.
///
/// Can contain fewer values than specified in the order by clause.
core.List<Value>? values;
Cursor();
Cursor.fromJson(core.Map _json) {
if (_json.containsKey('before')) {
before = _json['before'] as core.bool;
}
if (_json.containsKey('values')) {
values = (_json['values'] as core.List)
.map<Value>((value) =>
Value.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (before != null) 'before': before!,
if (values != null)
'values': values!.map((value) => value.toJson()).toList(),
};
}
/// A Firestore document.
///
/// Must not exceed 1 MiB - 4 bytes.
class Document {
/// The time at which the document was created.
///
/// This value increases monotonically when a document is deleted then
/// recreated. It can also be compared to values from other documents and the
/// `read_time` of a query.
///
/// Output only.
core.String? createTime;
/// The document's fields.
///
/// The map keys represent field names. A simple field name contains only
/// characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start
/// with `0` to `9`. For example, `foo_bar_17`. Field names matching the
/// regular expression `__.*__` are reserved. Reserved field names are
/// forbidden except in certain documented contexts. The map keys, represented
/// as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may
/// be used in other contexts to refer to structured fields defined here. For
/// `map_value`, the field path is represented by the simple or quoted field
/// names of the containing fields, delimited by `.`. For example, the
/// structured field `"foo" : { map_value: { "x&y" : { string_value: "hello"
/// }}}` would be represented by the field path `foo.x&y`. Within a field
/// path, a quoted field name starts and ends with `` ` `` and may contain any
/// character. Some characters, including `` ` ``, must be escaped using a
/// `\`. For example, `` `x&y` `` represents `x&y` and `` `bak\`tik` ``
/// represents `` bak`tik ``.
core.Map<core.String, Value>? fields;
/// The resource name of the document, for example
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
core.String? name;
/// The time at which the document was last changed.
///
/// This value is initially set to the `create_time` then increases
/// monotonically with each change to the document. It can also be compared to
/// values from other documents and the `read_time` of a query.
///
/// Output only.
core.String? updateTime;
Document();
Document.fromJson(core.Map _json) {
if (_json.containsKey('createTime')) {
createTime = _json['createTime'] as core.String;
}
if (_json.containsKey('fields')) {
fields = (_json['fields'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
Value.fromJson(item as core.Map<core.String, core.dynamic>),
),
);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('updateTime')) {
updateTime = _json['updateTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (createTime != null) 'createTime': createTime!,
if (fields != null)
'fields':
fields!.map((key, item) => core.MapEntry(key, item.toJson())),
if (name != null) 'name': name!,
if (updateTime != null) 'updateTime': updateTime!,
};
}
/// A Document has changed.
///
/// May be the result of multiple writes, including deletes, that ultimately
/// resulted in a new value for the Document. Multiple DocumentChange messages
/// may be returned for the same logical change, if multiple targets are
/// affected.
class DocumentChange {
/// The new state of the Document.
///
/// If `mask` is set, contains only fields that were updated or added.
Document? document;
/// A set of target IDs for targets that no longer match this document.
core.List<core.int>? removedTargetIds;
/// A set of target IDs of targets that match this document.
core.List<core.int>? targetIds;
DocumentChange();
DocumentChange.fromJson(core.Map _json) {
if (_json.containsKey('document')) {
document = Document.fromJson(
_json['document'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('removedTargetIds')) {
removedTargetIds = (_json['removedTargetIds'] as core.List)
.map<core.int>((value) => value as core.int)
.toList();
}
if (_json.containsKey('targetIds')) {
targetIds = (_json['targetIds'] as core.List)
.map<core.int>((value) => value as core.int)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (document != null) 'document': document!.toJson(),
if (removedTargetIds != null) 'removedTargetIds': removedTargetIds!,
if (targetIds != null) 'targetIds': targetIds!,
};
}
/// A Document has been deleted.
///
/// May be the result of multiple writes, including updates, the last of which
/// deleted the Document. Multiple DocumentDelete messages may be returned for
/// the same logical delete, if multiple targets are affected.
class DocumentDelete {
/// The resource name of the Document that was deleted.
core.String? document;
/// The read timestamp at which the delete was observed.
///
/// Greater or equal to the `commit_time` of the delete.
core.String? readTime;
/// A set of target IDs for targets that previously matched this entity.
core.List<core.int>? removedTargetIds;
DocumentDelete();
DocumentDelete.fromJson(core.Map _json) {
if (_json.containsKey('document')) {
document = _json['document'] as core.String;
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('removedTargetIds')) {
removedTargetIds = (_json['removedTargetIds'] as core.List)
.map<core.int>((value) => value as core.int)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (document != null) 'document': document!,
if (readTime != null) 'readTime': readTime!,
if (removedTargetIds != null) 'removedTargetIds': removedTargetIds!,
};
}
/// A set of field paths on a document.
///
/// Used to restrict a get or update operation on a document to a subset of its
/// fields. This is different from standard field masks, as this is always
/// scoped to a Document, and takes in account the dynamic nature of Value.
class DocumentMask {
/// The list of field paths in the mask.
///
/// See Document.fields for a field path syntax reference.
core.List<core.String>? fieldPaths;
DocumentMask();
DocumentMask.fromJson(core.Map _json) {
if (_json.containsKey('fieldPaths')) {
fieldPaths = (_json['fieldPaths'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fieldPaths != null) 'fieldPaths': fieldPaths!,
};
}
/// A Document has been removed from the view of the targets.
///
/// Sent if the document is no longer relevant to a target and is out of view.
/// Can be sent instead of a DocumentDelete or a DocumentChange if the server
/// can not send the new value of the document. Multiple DocumentRemove messages
/// may be returned for the same logical write or delete, if multiple targets
/// are affected.
class DocumentRemove {
/// The resource name of the Document that has gone out of view.
core.String? document;
/// The read timestamp at which the remove was observed.
///
/// Greater or equal to the `commit_time` of the change/delete/remove.
core.String? readTime;
/// A set of target IDs for targets that previously matched this document.
core.List<core.int>? removedTargetIds;
DocumentRemove();
DocumentRemove.fromJson(core.Map _json) {
if (_json.containsKey('document')) {
document = _json['document'] as core.String;
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('removedTargetIds')) {
removedTargetIds = (_json['removedTargetIds'] as core.List)
.map<core.int>((value) => value as core.int)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (document != null) 'document': document!,
if (readTime != null) 'readTime': readTime!,
if (removedTargetIds != null) 'removedTargetIds': removedTargetIds!,
};
}
/// A transformation of a document.
class DocumentTransform {
/// The name of the document to transform.
core.String? document;
/// The list of transformations to apply to the fields of the document, in
/// order.
///
/// This must not be empty.
core.List<FieldTransform>? fieldTransforms;
DocumentTransform();
DocumentTransform.fromJson(core.Map _json) {
if (_json.containsKey('document')) {
document = _json['document'] as core.String;
}
if (_json.containsKey('fieldTransforms')) {
fieldTransforms = (_json['fieldTransforms'] as core.List)
.map<FieldTransform>((value) => FieldTransform.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (document != null) 'document': document!,
if (fieldTransforms != null)
'fieldTransforms':
fieldTransforms!.map((value) => value.toJson()).toList(),
};
}
/// A target specified by a set of documents names.
class DocumentsTarget {
/// The names of the documents to retrieve.
///
/// In the format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// The request will fail if any of the document is not a child resource of
/// the given `database`. Duplicate names will be elided.
core.List<core.String>? documents;
DocumentsTarget();
DocumentsTarget.fromJson(core.Map _json) {
if (_json.containsKey('documents')) {
documents = (_json['documents'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (documents != null) 'documents': documents!,
};
}
/// A generic empty message that you can re-use to avoid defining duplicated
/// empty messages in your APIs.
///
/// A typical example is to use it as the request or the response type of an API
/// method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns
/// (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON
/// object `{}`.
class Empty {
Empty();
Empty.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.dynamic> toJson() => {};
}
/// A digest of all the documents that match a given target.
class ExistenceFilter {
/// The total count of documents that match target_id.
///
/// If different from the count of documents in the client that match, the
/// client must manually determine which documents no longer match the target.
core.int? count;
/// The target ID to which this filter applies.
core.int? targetId;
ExistenceFilter();
ExistenceFilter.fromJson(core.Map _json) {
if (_json.containsKey('count')) {
count = _json['count'] as core.int;
}
if (_json.containsKey('targetId')) {
targetId = _json['targetId'] as core.int;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (count != null) 'count': count!,
if (targetId != null) 'targetId': targetId!,
};
}
/// A filter on a specific field.
class FieldFilter {
/// The field to filter by.
FieldReference? field;
/// The operator to filter by.
/// Possible string values are:
/// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
/// - "LESS_THAN" : The given `field` is less than the given `value`.
/// Requires: * That `field` come first in `order_by`.
/// - "LESS_THAN_OR_EQUAL" : The given `field` is less than or equal to the
/// given `value`. Requires: * That `field` come first in `order_by`.
/// - "GREATER_THAN" : The given `field` is greater than the given `value`.
/// Requires: * That `field` come first in `order_by`.
/// - "GREATER_THAN_OR_EQUAL" : The given `field` is greater than or equal to
/// the given `value`. Requires: * That `field` come first in `order_by`.
/// - "EQUAL" : The given `field` is equal to the given `value`.
/// - "NOT_EQUAL" : The given `field` is not equal to the given `value`.
/// Requires: * No other `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or
/// `IS_NOT_NAN`. * That `field` comes first in the `order_by`.
/// - "ARRAY_CONTAINS" : The given `field` is an array that contains the given
/// `value`.
/// - "IN" : The given `field` is equal to at least one value in the given
/// array. Requires: * That `value` is a non-empty `ArrayValue` with at most
/// 10 values. * No other `IN` or `ARRAY_CONTAINS_ANY` or `NOT_IN`.
/// - "ARRAY_CONTAINS_ANY" : The given `field` is an array that contains any
/// of the values in the given array. Requires: * That `value` is a non-empty
/// `ArrayValue` with at most 10 values. * No other `IN` or
/// `ARRAY_CONTAINS_ANY` or `NOT_IN`.
/// - "NOT_IN" : The value of the `field` is not in the given array. Requires:
/// * That `value` is a non-empty `ArrayValue` with at most 10 values. * No
/// other `IN`, `ARRAY_CONTAINS_ANY`, `NOT_IN`, `NOT_EQUAL`, `IS_NOT_NULL`, or
/// `IS_NOT_NAN`. * That `field` comes first in the `order_by`.
core.String? op;
/// The value to compare to.
Value? value;
FieldFilter();
FieldFilter.fromJson(core.Map _json) {
if (_json.containsKey('field')) {
field = FieldReference.fromJson(
_json['field'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('op')) {
op = _json['op'] as core.String;
}
if (_json.containsKey('value')) {
value =
Value.fromJson(_json['value'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (field != null) 'field': field!.toJson(),
if (op != null) 'op': op!,
if (value != null) 'value': value!.toJson(),
};
}
/// A reference to a field, such as `max(messages.time) as max_time`.
class FieldReference {
core.String? fieldPath;
FieldReference();
FieldReference.fromJson(core.Map _json) {
if (_json.containsKey('fieldPath')) {
fieldPath = _json['fieldPath'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fieldPath != null) 'fieldPath': fieldPath!,
};
}
/// A transformation of a field of the document.
class FieldTransform {
/// Append the given elements in order if they are not already present in the
/// current field value.
///
/// If the field is not an array, or if the field does not yet exist, it is
/// first set to the empty array. Equivalent numbers of different types (e.g.
/// 3L and 3.0) are considered equal when checking if a value is missing. NaN
/// is equal to NaN, and Null is equal to Null. If the input contains multiple
/// equivalent values, only the first will be considered. The corresponding
/// transform_result will be the null value.
ArrayValue? appendMissingElements;
/// The path of the field.
///
/// See Document.fields for the field path syntax reference.
core.String? fieldPath;
/// Adds the given value to the field's current value.
///
/// This must be an integer or a double value. If the field is not an integer
/// or double, or if the field does not yet exist, the transformation will set
/// the field to the given value. If either of the given value or the current
/// field value are doubles, both values will be interpreted as doubles.
/// Double arithmetic and representation of double values follow IEEE 754
/// semantics. If there is positive/negative integer overflow, the field is
/// resolved to the largest magnitude positive/negative integer.
Value? increment;
/// Sets the field to the maximum of its current value and the given value.
///
/// This must be an integer or a double value. If the field is not an integer
/// or double, or if the field does not yet exist, the transformation will set
/// the field to the given value. If a maximum operation is applied where the
/// field and the input value are of mixed types (that is - one is an integer
/// and one is a double) the field takes on the type of the larger operand. If
/// the operands are equivalent (e.g. 3 and 3.0), the field does not change.
/// 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero
/// input value is always the stored value. The maximum of any numeric value x
/// and NaN is NaN.
Value? maximum;
/// Sets the field to the minimum of its current value and the given value.
///
/// This must be an integer or a double value. If the field is not an integer
/// or double, or if the field does not yet exist, the transformation will set
/// the field to the input value. If a minimum operation is applied where the
/// field and the input value are of mixed types (that is - one is an integer
/// and one is a double) the field takes on the type of the smaller operand.
/// If the operands are equivalent (e.g. 3 and 3.0), the field does not
/// change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value
/// and zero input value is always the stored value. The minimum of any
/// numeric value x and NaN is NaN.
Value? minimum;
/// Remove all of the given elements from the array in the field.
///
/// If the field is not an array, or if the field does not yet exist, it is
/// set to the empty array. Equivalent numbers of the different types (e.g. 3L
/// and 3.0) are considered equal when deciding whether an element should be
/// removed. NaN is equal to NaN, and Null is equal to Null. This will remove
/// all equivalent values if there are duplicates. The corresponding
/// transform_result will be the null value.
ArrayValue? removeAllFromArray;
/// Sets the field to the given server value.
/// Possible string values are:
/// - "SERVER_VALUE_UNSPECIFIED" : Unspecified. This value must not be used.
/// - "REQUEST_TIME" : The time at which the server processed the request,
/// with millisecond precision. If used on multiple fields (same or different
/// documents) in a transaction, all the fields will get the same server
/// timestamp.
core.String? setToServerValue;
FieldTransform();
FieldTransform.fromJson(core.Map _json) {
if (_json.containsKey('appendMissingElements')) {
appendMissingElements = ArrayValue.fromJson(_json['appendMissingElements']
as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('fieldPath')) {
fieldPath = _json['fieldPath'] as core.String;
}
if (_json.containsKey('increment')) {
increment = Value.fromJson(
_json['increment'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('maximum')) {
maximum = Value.fromJson(
_json['maximum'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('minimum')) {
minimum = Value.fromJson(
_json['minimum'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('removeAllFromArray')) {
removeAllFromArray = ArrayValue.fromJson(
_json['removeAllFromArray'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('setToServerValue')) {
setToServerValue = _json['setToServerValue'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (appendMissingElements != null)
'appendMissingElements': appendMissingElements!.toJson(),
if (fieldPath != null) 'fieldPath': fieldPath!,
if (increment != null) 'increment': increment!.toJson(),
if (maximum != null) 'maximum': maximum!.toJson(),
if (minimum != null) 'minimum': minimum!.toJson(),
if (removeAllFromArray != null)
'removeAllFromArray': removeAllFromArray!.toJson(),
if (setToServerValue != null) 'setToServerValue': setToServerValue!,
};
}
/// A filter.
class Filter {
/// A composite filter.
CompositeFilter? compositeFilter;
/// A filter on a document field.
FieldFilter? fieldFilter;
/// A filter that takes exactly one argument.
UnaryFilter? unaryFilter;
Filter();
Filter.fromJson(core.Map _json) {
if (_json.containsKey('compositeFilter')) {
compositeFilter = CompositeFilter.fromJson(
_json['compositeFilter'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('fieldFilter')) {
fieldFilter = FieldFilter.fromJson(
_json['fieldFilter'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('unaryFilter')) {
unaryFilter = UnaryFilter.fromJson(
_json['unaryFilter'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (compositeFilter != null)
'compositeFilter': compositeFilter!.toJson(),
if (fieldFilter != null) 'fieldFilter': fieldFilter!.toJson(),
if (unaryFilter != null) 'unaryFilter': unaryFilter!.toJson(),
};
}
/// Metadata for google.longrunning.Operation results from
/// FirestoreAdmin.ExportDocuments.
class GoogleFirestoreAdminV1ExportDocumentsMetadata {
/// Which collection ids are being exported.
core.List<core.String>? collectionIds;
/// The time this operation completed.
///
/// Will be unset if operation still in progress.
core.String? endTime;
/// The state of the export operation.
/// Possible string values are:
/// - "OPERATION_STATE_UNSPECIFIED" : Unspecified.
/// - "INITIALIZING" : Request is being prepared for processing.
/// - "PROCESSING" : Request is actively being processed.
/// - "CANCELLING" : Request is in the process of being cancelled after user
/// called google.longrunning.Operations.CancelOperation on the operation.
/// - "FINALIZING" : Request has been processed and is in its finalization
/// stage.
/// - "SUCCESSFUL" : Request has completed successfully.
/// - "FAILED" : Request has finished being processed, but encountered an
/// error.
/// - "CANCELLED" : Request has finished being cancelled after user called
/// google.longrunning.Operations.CancelOperation.
core.String? operationState;
/// Where the entities are being exported to.
core.String? outputUriPrefix;
/// The progress, in bytes, of this operation.
GoogleFirestoreAdminV1Progress? progressBytes;
/// The progress, in documents, of this operation.
GoogleFirestoreAdminV1Progress? progressDocuments;
/// The time this operation started.
core.String? startTime;
GoogleFirestoreAdminV1ExportDocumentsMetadata();
GoogleFirestoreAdminV1ExportDocumentsMetadata.fromJson(core.Map _json) {
if (_json.containsKey('collectionIds')) {
collectionIds = (_json['collectionIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('endTime')) {
endTime = _json['endTime'] as core.String;
}
if (_json.containsKey('operationState')) {
operationState = _json['operationState'] as core.String;
}
if (_json.containsKey('outputUriPrefix')) {
outputUriPrefix = _json['outputUriPrefix'] as core.String;
}
if (_json.containsKey('progressBytes')) {
progressBytes = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressBytes'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('progressDocuments')) {
progressDocuments = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressDocuments'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startTime')) {
startTime = _json['startTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (collectionIds != null) 'collectionIds': collectionIds!,
if (endTime != null) 'endTime': endTime!,
if (operationState != null) 'operationState': operationState!,
if (outputUriPrefix != null) 'outputUriPrefix': outputUriPrefix!,
if (progressBytes != null) 'progressBytes': progressBytes!.toJson(),
if (progressDocuments != null)
'progressDocuments': progressDocuments!.toJson(),
if (startTime != null) 'startTime': startTime!,
};
}
/// The request for FirestoreAdmin.ExportDocuments.
class GoogleFirestoreAdminV1ExportDocumentsRequest {
/// Which collection ids to export.
///
/// Unspecified means all collections.
core.List<core.String>? collectionIds;
/// The output URI.
///
/// Currently only supports Google Cloud Storage URIs of the form:
/// `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the name of
/// the Google Cloud Storage bucket and `NAMESPACE_PATH` is an optional Google
/// Cloud Storage namespace path. When choosing a name, be sure to consider
/// Google Cloud Storage naming guidelines:
/// https://cloud.google.com/storage/docs/naming. If the URI is a bucket
/// (without a namespace path), a prefix will be generated based on the start
/// time.
core.String? outputUriPrefix;
GoogleFirestoreAdminV1ExportDocumentsRequest();
GoogleFirestoreAdminV1ExportDocumentsRequest.fromJson(core.Map _json) {
if (_json.containsKey('collectionIds')) {
collectionIds = (_json['collectionIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('outputUriPrefix')) {
outputUriPrefix = _json['outputUriPrefix'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (collectionIds != null) 'collectionIds': collectionIds!,
if (outputUriPrefix != null) 'outputUriPrefix': outputUriPrefix!,
};
}
/// Returned in the google.longrunning.Operation response field.
class GoogleFirestoreAdminV1ExportDocumentsResponse {
/// Location of the output files.
///
/// This can be used to begin an import into Cloud Firestore (this project or
/// another project) after the operation completes successfully.
core.String? outputUriPrefix;
GoogleFirestoreAdminV1ExportDocumentsResponse();
GoogleFirestoreAdminV1ExportDocumentsResponse.fromJson(core.Map _json) {
if (_json.containsKey('outputUriPrefix')) {
outputUriPrefix = _json['outputUriPrefix'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (outputUriPrefix != null) 'outputUriPrefix': outputUriPrefix!,
};
}
/// Represents a single field in the database.
///
/// Fields are grouped by their "Collection Group", which represent all
/// collections in the database with the same id.
class GoogleFirestoreAdminV1Field {
/// The index configuration for this field.
///
/// If unset, field indexing will revert to the configuration defined by the
/// `ancestor_field`. To explicitly remove all indexes for this field, specify
/// an index config with an empty list of indexes.
GoogleFirestoreAdminV1IndexConfig? indexConfig;
/// A field name of the form
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}`
/// A field path may be a simple field name, e.g. `address` or a path to
/// fields within map_value , e.g. `address.city`, or a special field path.
///
/// The only valid special field is `*`, which represents any field. Field
/// paths may be quoted using ` (backtick). The only character that needs to
/// be escaped within a quoted field path is the backtick character itself,
/// escaped using a backslash. Special characters in field paths that must be
/// quoted include: `*`, `.`, ``` (backtick), `[`, `]`, as well as any ascii
/// symbolic characters. Examples: (Note: Comments here are written in
/// markdown syntax, so there is an additional layer of backticks to represent
/// a code block) `\`address.city\`` represents a field named `address.city`,
/// not the map key `city` in the field `address`. `\`*\`` represents a field
/// named `*`, not any field. A special `Field` contains the default indexing
/// settings for all fields. This field's resource name is:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields
/// / * ` Indexes defined on this `Field` will be applied to all fields which
/// do not have their own `Field` index configuration.
///
/// Required.
core.String? name;
GoogleFirestoreAdminV1Field();
GoogleFirestoreAdminV1Field.fromJson(core.Map _json) {
if (_json.containsKey('indexConfig')) {
indexConfig = GoogleFirestoreAdminV1IndexConfig.fromJson(
_json['indexConfig'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (indexConfig != null) 'indexConfig': indexConfig!.toJson(),
if (name != null) 'name': name!,
};
}
/// Metadata for google.longrunning.Operation results from
/// FirestoreAdmin.UpdateField.
class GoogleFirestoreAdminV1FieldOperationMetadata {
/// The time this operation completed.
///
/// Will be unset if operation still in progress.
core.String? endTime;
/// The field resource that this operation is acting on.
///
/// For example:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}`
core.String? field;
/// A list of IndexConfigDelta, which describe the intent of this operation.
core.List<GoogleFirestoreAdminV1IndexConfigDelta>? indexConfigDeltas;
/// The progress, in bytes, of this operation.
GoogleFirestoreAdminV1Progress? progressBytes;
/// The progress, in documents, of this operation.
GoogleFirestoreAdminV1Progress? progressDocuments;
/// The time this operation started.
core.String? startTime;
/// The state of the operation.
/// Possible string values are:
/// - "OPERATION_STATE_UNSPECIFIED" : Unspecified.
/// - "INITIALIZING" : Request is being prepared for processing.
/// - "PROCESSING" : Request is actively being processed.
/// - "CANCELLING" : Request is in the process of being cancelled after user
/// called google.longrunning.Operations.CancelOperation on the operation.
/// - "FINALIZING" : Request has been processed and is in its finalization
/// stage.
/// - "SUCCESSFUL" : Request has completed successfully.
/// - "FAILED" : Request has finished being processed, but encountered an
/// error.
/// - "CANCELLED" : Request has finished being cancelled after user called
/// google.longrunning.Operations.CancelOperation.
core.String? state;
GoogleFirestoreAdminV1FieldOperationMetadata();
GoogleFirestoreAdminV1FieldOperationMetadata.fromJson(core.Map _json) {
if (_json.containsKey('endTime')) {
endTime = _json['endTime'] as core.String;
}
if (_json.containsKey('field')) {
field = _json['field'] as core.String;
}
if (_json.containsKey('indexConfigDeltas')) {
indexConfigDeltas = (_json['indexConfigDeltas'] as core.List)
.map<GoogleFirestoreAdminV1IndexConfigDelta>((value) =>
GoogleFirestoreAdminV1IndexConfigDelta.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('progressBytes')) {
progressBytes = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressBytes'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('progressDocuments')) {
progressDocuments = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressDocuments'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startTime')) {
startTime = _json['startTime'] as core.String;
}
if (_json.containsKey('state')) {
state = _json['state'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (endTime != null) 'endTime': endTime!,
if (field != null) 'field': field!,
if (indexConfigDeltas != null)
'indexConfigDeltas':
indexConfigDeltas!.map((value) => value.toJson()).toList(),
if (progressBytes != null) 'progressBytes': progressBytes!.toJson(),
if (progressDocuments != null)
'progressDocuments': progressDocuments!.toJson(),
if (startTime != null) 'startTime': startTime!,
if (state != null) 'state': state!,
};
}
/// Metadata for google.longrunning.Operation results from
/// FirestoreAdmin.ImportDocuments.
class GoogleFirestoreAdminV1ImportDocumentsMetadata {
/// Which collection ids are being imported.
core.List<core.String>? collectionIds;
/// The time this operation completed.
///
/// Will be unset if operation still in progress.
core.String? endTime;
/// The location of the documents being imported.
core.String? inputUriPrefix;
/// The state of the import operation.
/// Possible string values are:
/// - "OPERATION_STATE_UNSPECIFIED" : Unspecified.
/// - "INITIALIZING" : Request is being prepared for processing.
/// - "PROCESSING" : Request is actively being processed.
/// - "CANCELLING" : Request is in the process of being cancelled after user
/// called google.longrunning.Operations.CancelOperation on the operation.
/// - "FINALIZING" : Request has been processed and is in its finalization
/// stage.
/// - "SUCCESSFUL" : Request has completed successfully.
/// - "FAILED" : Request has finished being processed, but encountered an
/// error.
/// - "CANCELLED" : Request has finished being cancelled after user called
/// google.longrunning.Operations.CancelOperation.
core.String? operationState;
/// The progress, in bytes, of this operation.
GoogleFirestoreAdminV1Progress? progressBytes;
/// The progress, in documents, of this operation.
GoogleFirestoreAdminV1Progress? progressDocuments;
/// The time this operation started.
core.String? startTime;
GoogleFirestoreAdminV1ImportDocumentsMetadata();
GoogleFirestoreAdminV1ImportDocumentsMetadata.fromJson(core.Map _json) {
if (_json.containsKey('collectionIds')) {
collectionIds = (_json['collectionIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('endTime')) {
endTime = _json['endTime'] as core.String;
}
if (_json.containsKey('inputUriPrefix')) {
inputUriPrefix = _json['inputUriPrefix'] as core.String;
}
if (_json.containsKey('operationState')) {
operationState = _json['operationState'] as core.String;
}
if (_json.containsKey('progressBytes')) {
progressBytes = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressBytes'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('progressDocuments')) {
progressDocuments = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressDocuments'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startTime')) {
startTime = _json['startTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (collectionIds != null) 'collectionIds': collectionIds!,
if (endTime != null) 'endTime': endTime!,
if (inputUriPrefix != null) 'inputUriPrefix': inputUriPrefix!,
if (operationState != null) 'operationState': operationState!,
if (progressBytes != null) 'progressBytes': progressBytes!.toJson(),
if (progressDocuments != null)
'progressDocuments': progressDocuments!.toJson(),
if (startTime != null) 'startTime': startTime!,
};
}
/// The request for FirestoreAdmin.ImportDocuments.
class GoogleFirestoreAdminV1ImportDocumentsRequest {
/// Which collection ids to import.
///
/// Unspecified means all collections included in the import.
core.List<core.String>? collectionIds;
/// Location of the exported files.
///
/// This must match the output_uri_prefix of an ExportDocumentsResponse from
/// an export that has completed successfully. See:
/// google.firestore.admin.v1.ExportDocumentsResponse.output_uri_prefix.
core.String? inputUriPrefix;
GoogleFirestoreAdminV1ImportDocumentsRequest();
GoogleFirestoreAdminV1ImportDocumentsRequest.fromJson(core.Map _json) {
if (_json.containsKey('collectionIds')) {
collectionIds = (_json['collectionIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('inputUriPrefix')) {
inputUriPrefix = _json['inputUriPrefix'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (collectionIds != null) 'collectionIds': collectionIds!,
if (inputUriPrefix != null) 'inputUriPrefix': inputUriPrefix!,
};
}
/// Cloud Firestore indexes enable simple and complex queries against documents
/// in a database.
class GoogleFirestoreAdminV1Index {
/// The fields supported by this index.
///
/// For composite indexes, this is always 2 or more fields. The last field
/// entry is always for the field path `__name__`. If, on creation, `__name__`
/// was not specified as the last field, it will be added automatically with
/// the same direction as that of the last field defined. If the final field
/// in a composite index is not directional, the `__name__` will be ordered
/// ASCENDING (unless explicitly specified). For single field indexes, this
/// will always be exactly one entry with a field path equal to the field path
/// of the associated field.
core.List<GoogleFirestoreAdminV1IndexField>? fields;
/// A server defined name for this index.
///
/// The form of this name for composite indexes will be:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}`
/// For single field indexes, this field will be empty.
///
/// Output only.
core.String? name;
/// Indexes with a collection query scope specified allow queries against a
/// collection that is the child of a specific document, specified at query
/// time, and that has the same collection id.
///
/// Indexes with a collection group query scope specified allow queries
/// against all collections descended from a specific document, specified at
/// query time, and that have the same collection id as this index.
/// Possible string values are:
/// - "QUERY_SCOPE_UNSPECIFIED" : The query scope is unspecified. Not a valid
/// option.
/// - "COLLECTION" : Indexes with a collection query scope specified allow
/// queries against a collection that is the child of a specific document,
/// specified at query time, and that has the collection id specified by the
/// index.
/// - "COLLECTION_GROUP" : Indexes with a collection group query scope
/// specified allow queries against all collections that has the collection id
/// specified by the index.
core.String? queryScope;
/// The serving state of the index.
///
/// Output only.
/// Possible string values are:
/// - "STATE_UNSPECIFIED" : The state is unspecified.
/// - "CREATING" : The index is being created. There is an active long-running
/// operation for the index. The index is updated when writing a document.
/// Some index data may exist.
/// - "READY" : The index is ready to be used. The index is updated when
/// writing a document. The index is fully populated from all stored documents
/// it applies to.
/// - "NEEDS_REPAIR" : The index was being created, but something went wrong.
/// There is no active long-running operation for the index, and the most
/// recently finished long-running operation failed. The index is not updated
/// when writing a document. Some index data may exist. Use the
/// google.longrunning.Operations API to determine why the operation that last
/// attempted to create this index failed, then re-create the index.
core.String? state;
GoogleFirestoreAdminV1Index();
GoogleFirestoreAdminV1Index.fromJson(core.Map _json) {
if (_json.containsKey('fields')) {
fields = (_json['fields'] as core.List)
.map<GoogleFirestoreAdminV1IndexField>((value) =>
GoogleFirestoreAdminV1IndexField.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('queryScope')) {
queryScope = _json['queryScope'] as core.String;
}
if (_json.containsKey('state')) {
state = _json['state'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fields != null)
'fields': fields!.map((value) => value.toJson()).toList(),
if (name != null) 'name': name!,
if (queryScope != null) 'queryScope': queryScope!,
if (state != null) 'state': state!,
};
}
/// The index configuration for this field.
class GoogleFirestoreAdminV1IndexConfig {
/// Specifies the resource name of the `Field` from which this field's index
/// configuration is set (when `uses_ancestor_config` is true), or from which
/// it *would* be set if this field had no index configuration (when
/// `uses_ancestor_config` is false).
///
/// Output only.
core.String? ancestorField;
/// The indexes supported for this field.
core.List<GoogleFirestoreAdminV1Index>? indexes;
/// Output only When true, the `Field`'s index configuration is in the process
/// of being reverted.
///
/// Once complete, the index config will transition to the same state as the
/// field specified by `ancestor_field`, at which point `uses_ancestor_config`
/// will be `true` and `reverting` will be `false`.
core.bool? reverting;
/// When true, the `Field`'s index configuration is set from the configuration
/// specified by the `ancestor_field`.
///
/// When false, the `Field`'s index configuration is defined explicitly.
///
/// Output only.
core.bool? usesAncestorConfig;
GoogleFirestoreAdminV1IndexConfig();
GoogleFirestoreAdminV1IndexConfig.fromJson(core.Map _json) {
if (_json.containsKey('ancestorField')) {
ancestorField = _json['ancestorField'] as core.String;
}
if (_json.containsKey('indexes')) {
indexes = (_json['indexes'] as core.List)
.map<GoogleFirestoreAdminV1Index>((value) =>
GoogleFirestoreAdminV1Index.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('reverting')) {
reverting = _json['reverting'] as core.bool;
}
if (_json.containsKey('usesAncestorConfig')) {
usesAncestorConfig = _json['usesAncestorConfig'] as core.bool;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (ancestorField != null) 'ancestorField': ancestorField!,
if (indexes != null)
'indexes': indexes!.map((value) => value.toJson()).toList(),
if (reverting != null) 'reverting': reverting!,
if (usesAncestorConfig != null)
'usesAncestorConfig': usesAncestorConfig!,
};
}
/// Information about an index configuration change.
class GoogleFirestoreAdminV1IndexConfigDelta {
/// Specifies how the index is changing.
/// Possible string values are:
/// - "CHANGE_TYPE_UNSPECIFIED" : The type of change is not specified or
/// known.
/// - "ADD" : The single field index is being added.
/// - "REMOVE" : The single field index is being removed.
core.String? changeType;
/// The index being changed.
GoogleFirestoreAdminV1Index? index;
GoogleFirestoreAdminV1IndexConfigDelta();
GoogleFirestoreAdminV1IndexConfigDelta.fromJson(core.Map _json) {
if (_json.containsKey('changeType')) {
changeType = _json['changeType'] as core.String;
}
if (_json.containsKey('index')) {
index = GoogleFirestoreAdminV1Index.fromJson(
_json['index'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (changeType != null) 'changeType': changeType!,
if (index != null) 'index': index!.toJson(),
};
}
/// A field in an index.
///
/// The field_path describes which field is indexed, the value_mode describes
/// how the field value is indexed.
class GoogleFirestoreAdminV1IndexField {
/// Indicates that this field supports operations on `array_value`s.
/// Possible string values are:
/// - "ARRAY_CONFIG_UNSPECIFIED" : The index does not support additional array
/// queries.
/// - "CONTAINS" : The index supports array containment queries.
core.String? arrayConfig;
/// Can be __name__.
///
/// For single field indexes, this must match the name of the field or may be
/// omitted.
core.String? fieldPath;
/// Indicates that this field supports ordering by the specified order or
/// comparing using =, !=, <, <=, >, >=.
/// Possible string values are:
/// - "ORDER_UNSPECIFIED" : The ordering is unspecified. Not a valid option.
/// - "ASCENDING" : The field is ordered by ascending field value.
/// - "DESCENDING" : The field is ordered by descending field value.
core.String? order;
GoogleFirestoreAdminV1IndexField();
GoogleFirestoreAdminV1IndexField.fromJson(core.Map _json) {
if (_json.containsKey('arrayConfig')) {
arrayConfig = _json['arrayConfig'] as core.String;
}
if (_json.containsKey('fieldPath')) {
fieldPath = _json['fieldPath'] as core.String;
}
if (_json.containsKey('order')) {
order = _json['order'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (arrayConfig != null) 'arrayConfig': arrayConfig!,
if (fieldPath != null) 'fieldPath': fieldPath!,
if (order != null) 'order': order!,
};
}
/// Metadata for google.longrunning.Operation results from
/// FirestoreAdmin.CreateIndex.
class GoogleFirestoreAdminV1IndexOperationMetadata {
/// The time this operation completed.
///
/// Will be unset if operation still in progress.
core.String? endTime;
/// The index resource that this operation is acting on.
///
/// For example:
/// `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
core.String? index;
/// The progress, in bytes, of this operation.
GoogleFirestoreAdminV1Progress? progressBytes;
/// The progress, in documents, of this operation.
GoogleFirestoreAdminV1Progress? progressDocuments;
/// The time this operation started.
core.String? startTime;
/// The state of the operation.
/// Possible string values are:
/// - "OPERATION_STATE_UNSPECIFIED" : Unspecified.
/// - "INITIALIZING" : Request is being prepared for processing.
/// - "PROCESSING" : Request is actively being processed.
/// - "CANCELLING" : Request is in the process of being cancelled after user
/// called google.longrunning.Operations.CancelOperation on the operation.
/// - "FINALIZING" : Request has been processed and is in its finalization
/// stage.
/// - "SUCCESSFUL" : Request has completed successfully.
/// - "FAILED" : Request has finished being processed, but encountered an
/// error.
/// - "CANCELLED" : Request has finished being cancelled after user called
/// google.longrunning.Operations.CancelOperation.
core.String? state;
GoogleFirestoreAdminV1IndexOperationMetadata();
GoogleFirestoreAdminV1IndexOperationMetadata.fromJson(core.Map _json) {
if (_json.containsKey('endTime')) {
endTime = _json['endTime'] as core.String;
}
if (_json.containsKey('index')) {
index = _json['index'] as core.String;
}
if (_json.containsKey('progressBytes')) {
progressBytes = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressBytes'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('progressDocuments')) {
progressDocuments = GoogleFirestoreAdminV1Progress.fromJson(
_json['progressDocuments'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startTime')) {
startTime = _json['startTime'] as core.String;
}
if (_json.containsKey('state')) {
state = _json['state'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (endTime != null) 'endTime': endTime!,
if (index != null) 'index': index!,
if (progressBytes != null) 'progressBytes': progressBytes!.toJson(),
if (progressDocuments != null)
'progressDocuments': progressDocuments!.toJson(),
if (startTime != null) 'startTime': startTime!,
if (state != null) 'state': state!,
};
}
/// The response for FirestoreAdmin.ListFields.
class GoogleFirestoreAdminV1ListFieldsResponse {
/// The requested fields.
core.List<GoogleFirestoreAdminV1Field>? fields;
/// A page token that may be used to request another page of results.
///
/// If blank, this is the last page.
core.String? nextPageToken;
GoogleFirestoreAdminV1ListFieldsResponse();
GoogleFirestoreAdminV1ListFieldsResponse.fromJson(core.Map _json) {
if (_json.containsKey('fields')) {
fields = (_json['fields'] as core.List)
.map<GoogleFirestoreAdminV1Field>((value) =>
GoogleFirestoreAdminV1Field.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fields != null)
'fields': fields!.map((value) => value.toJson()).toList(),
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
};
}
/// The response for FirestoreAdmin.ListIndexes.
class GoogleFirestoreAdminV1ListIndexesResponse {
/// The requested indexes.
core.List<GoogleFirestoreAdminV1Index>? indexes;
/// A page token that may be used to request another page of results.
///
/// If blank, this is the last page.
core.String? nextPageToken;
GoogleFirestoreAdminV1ListIndexesResponse();
GoogleFirestoreAdminV1ListIndexesResponse.fromJson(core.Map _json) {
if (_json.containsKey('indexes')) {
indexes = (_json['indexes'] as core.List)
.map<GoogleFirestoreAdminV1Index>((value) =>
GoogleFirestoreAdminV1Index.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (indexes != null)
'indexes': indexes!.map((value) => value.toJson()).toList(),
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
};
}
/// The metadata message for google.cloud.location.Location.metadata.
class GoogleFirestoreAdminV1LocationMetadata {
GoogleFirestoreAdminV1LocationMetadata();
GoogleFirestoreAdminV1LocationMetadata.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.dynamic> toJson() => {};
}
/// Describes the progress of the operation.
///
/// Unit of work is generic and must be interpreted based on where Progress is
/// used.
class GoogleFirestoreAdminV1Progress {
/// The amount of work completed.
core.String? completedWork;
/// The amount of work estimated.
core.String? estimatedWork;
GoogleFirestoreAdminV1Progress();
GoogleFirestoreAdminV1Progress.fromJson(core.Map _json) {
if (_json.containsKey('completedWork')) {
completedWork = _json['completedWork'] as core.String;
}
if (_json.containsKey('estimatedWork')) {
estimatedWork = _json['estimatedWork'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (completedWork != null) 'completedWork': completedWork!,
if (estimatedWork != null) 'estimatedWork': estimatedWork!,
};
}
/// The request message for Operations.CancelOperation.
class GoogleLongrunningCancelOperationRequest {
GoogleLongrunningCancelOperationRequest();
GoogleLongrunningCancelOperationRequest.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.dynamic> toJson() => {};
}
/// The response message for Operations.ListOperations.
class GoogleLongrunningListOperationsResponse {
/// The standard List next-page token.
core.String? nextPageToken;
/// A list of operations that matches the specified filter in the request.
core.List<GoogleLongrunningOperation>? operations;
GoogleLongrunningListOperationsResponse();
GoogleLongrunningListOperationsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('operations')) {
operations = (_json['operations'] as core.List)
.map<GoogleLongrunningOperation>((value) =>
GoogleLongrunningOperation.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
if (operations != null)
'operations': operations!.map((value) => value.toJson()).toList(),
};
}
/// This resource represents a long-running operation that is the result of a
/// network API call.
class GoogleLongrunningOperation {
/// If the value is `false`, it means the operation is still in progress.
///
/// If `true`, the operation is completed, and either `error` or `response` is
/// available.
core.bool? done;
/// The error result of the operation in case of failure or cancellation.
Status? error;
/// Service-specific metadata associated with the operation.
///
/// It typically contains progress information and common metadata such as
/// create time. Some services might not provide such metadata. Any method
/// that returns a long-running operation should document the metadata type,
/// if any.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object>? metadata;
/// The server-assigned name, which is only unique within the same service
/// that originally returns it.
///
/// If you use the default HTTP mapping, the `name` should be a resource name
/// ending with `operations/{unique_id}`.
core.String? name;
/// The normal response of the operation in case of success.
///
/// If the original method returns no data on success, such as `Delete`, the
/// response is `google.protobuf.Empty`. If the original method is standard
/// `Get`/`Create`/`Update`, the response should be the resource. For other
/// methods, the response should have the type `XxxResponse`, where `Xxx` is
/// the original method name. For example, if the original method name is
/// `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object>? response;
GoogleLongrunningOperation();
GoogleLongrunningOperation.fromJson(core.Map _json) {
if (_json.containsKey('done')) {
done = _json['done'] as core.bool;
}
if (_json.containsKey('error')) {
error = Status.fromJson(
_json['error'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('metadata')) {
metadata = (_json['metadata'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('response')) {
response = (_json['response'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (done != null) 'done': done!,
if (error != null) 'error': error!.toJson(),
if (metadata != null) 'metadata': metadata!,
if (name != null) 'name': name!,
if (response != null) 'response': response!,
};
}
/// An object that represents a latitude/longitude pair.
///
/// This is expressed as a pair of doubles to represent degrees latitude and
/// degrees longitude. Unless specified otherwise, this object must conform to
/// the WGS84 standard. Values must be within normalized ranges.
class LatLng {
/// The latitude in degrees.
///
/// It must be in the range \[-90.0, +90.0\].
core.double? latitude;
/// The longitude in degrees.
///
/// It must be in the range \[-180.0, +180.0\].
core.double? longitude;
LatLng();
LatLng.fromJson(core.Map _json) {
if (_json.containsKey('latitude')) {
latitude = (_json['latitude'] as core.num).toDouble();
}
if (_json.containsKey('longitude')) {
longitude = (_json['longitude'] as core.num).toDouble();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (latitude != null) 'latitude': latitude!,
if (longitude != null) 'longitude': longitude!,
};
}
/// The request for Firestore.ListCollectionIds.
class ListCollectionIdsRequest {
/// The maximum number of results to return.
core.int? pageSize;
/// A page token.
///
/// Must be a value from ListCollectionIdsResponse.
core.String? pageToken;
ListCollectionIdsRequest();
ListCollectionIdsRequest.fromJson(core.Map _json) {
if (_json.containsKey('pageSize')) {
pageSize = _json['pageSize'] as core.int;
}
if (_json.containsKey('pageToken')) {
pageToken = _json['pageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (pageSize != null) 'pageSize': pageSize!,
if (pageToken != null) 'pageToken': pageToken!,
};
}
/// The response from Firestore.ListCollectionIds.
class ListCollectionIdsResponse {
/// The collection ids.
core.List<core.String>? collectionIds;
/// A page token that may be used to continue the list.
core.String? nextPageToken;
ListCollectionIdsResponse();
ListCollectionIdsResponse.fromJson(core.Map _json) {
if (_json.containsKey('collectionIds')) {
collectionIds = (_json['collectionIds'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (collectionIds != null) 'collectionIds': collectionIds!,
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
};
}
/// The response for Firestore.ListDocuments.
class ListDocumentsResponse {
/// The Documents found.
core.List<Document>? documents;
/// The next page token.
core.String? nextPageToken;
ListDocumentsResponse();
ListDocumentsResponse.fromJson(core.Map _json) {
if (_json.containsKey('documents')) {
documents = (_json['documents'] as core.List)
.map<Document>((value) =>
Document.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (documents != null)
'documents': documents!.map((value) => value.toJson()).toList(),
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
};
}
/// The response message for Locations.ListLocations.
class ListLocationsResponse {
/// A list of locations that matches the specified filter in the request.
core.List<Location>? locations;
/// The standard List next-page token.
core.String? nextPageToken;
ListLocationsResponse();
ListLocationsResponse.fromJson(core.Map _json) {
if (_json.containsKey('locations')) {
locations = (_json['locations'] as core.List)
.map<Location>((value) =>
Location.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (locations != null)
'locations': locations!.map((value) => value.toJson()).toList(),
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
};
}
/// A request for Firestore.Listen
class ListenRequest {
/// A target to add to this stream.
Target? addTarget;
/// Labels associated with this target change.
core.Map<core.String, core.String>? labels;
/// The ID of a target to remove from this stream.
core.int? removeTarget;
ListenRequest();
ListenRequest.fromJson(core.Map _json) {
if (_json.containsKey('addTarget')) {
addTarget = Target.fromJson(
_json['addTarget'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('labels')) {
labels = (_json['labels'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('removeTarget')) {
removeTarget = _json['removeTarget'] as core.int;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (addTarget != null) 'addTarget': addTarget!.toJson(),
if (labels != null) 'labels': labels!,
if (removeTarget != null) 'removeTarget': removeTarget!,
};
}
/// The response for Firestore.Listen.
class ListenResponse {
/// A Document has changed.
DocumentChange? documentChange;
/// A Document has been deleted.
DocumentDelete? documentDelete;
/// A Document has been removed from a target (because it is no longer
/// relevant to that target).
DocumentRemove? documentRemove;
/// A filter to apply to the set of documents previously returned for the
/// given target.
///
/// Returned when documents may have been removed from the given target, but
/// the exact documents are unknown.
ExistenceFilter? filter;
/// Targets have changed.
TargetChange? targetChange;
ListenResponse();
ListenResponse.fromJson(core.Map _json) {
if (_json.containsKey('documentChange')) {
documentChange = DocumentChange.fromJson(
_json['documentChange'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('documentDelete')) {
documentDelete = DocumentDelete.fromJson(
_json['documentDelete'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('documentRemove')) {
documentRemove = DocumentRemove.fromJson(
_json['documentRemove'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('filter')) {
filter = ExistenceFilter.fromJson(
_json['filter'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('targetChange')) {
targetChange = TargetChange.fromJson(
_json['targetChange'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (documentChange != null) 'documentChange': documentChange!.toJson(),
if (documentDelete != null) 'documentDelete': documentDelete!.toJson(),
if (documentRemove != null) 'documentRemove': documentRemove!.toJson(),
if (filter != null) 'filter': filter!.toJson(),
if (targetChange != null) 'targetChange': targetChange!.toJson(),
};
}
/// A resource that represents Google Cloud Platform location.
class Location {
/// The friendly name for this location, typically a nearby city name.
///
/// For example, "Tokyo".
core.String? displayName;
/// Cross-service attributes for the location.
///
/// For example {"cloud.googleapis.com/region": "us-east1"}
core.Map<core.String, core.String>? labels;
/// The canonical id for this location.
///
/// For example: `"us-east1"`.
core.String? locationId;
/// Service-specific metadata.
///
/// For example the available capacity at the given location.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object>? metadata;
/// Resource name for the location, which may vary between implementations.
///
/// For example: `"projects/example-project/locations/us-east1"`
core.String? name;
Location();
Location.fromJson(core.Map _json) {
if (_json.containsKey('displayName')) {
displayName = _json['displayName'] as core.String;
}
if (_json.containsKey('labels')) {
labels = (_json['labels'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('locationId')) {
locationId = _json['locationId'] as core.String;
}
if (_json.containsKey('metadata')) {
metadata = (_json['metadata'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (displayName != null) 'displayName': displayName!,
if (labels != null) 'labels': labels!,
if (locationId != null) 'locationId': locationId!,
if (metadata != null) 'metadata': metadata!,
if (name != null) 'name': name!,
};
}
/// A map value.
class MapValue {
/// The map's fields.
///
/// The map keys represent field names. Field names matching the regular
/// expression `__.*__` are reserved. Reserved field names are forbidden
/// except in certain documented contexts. The map keys, represented as UTF-8,
/// must not exceed 1,500 bytes and cannot be empty.
core.Map<core.String, Value>? fields;
MapValue();
MapValue.fromJson(core.Map _json) {
if (_json.containsKey('fields')) {
fields = (_json['fields'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
Value.fromJson(item as core.Map<core.String, core.dynamic>),
),
);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fields != null)
'fields':
fields!.map((key, item) => core.MapEntry(key, item.toJson())),
};
}
/// An order on a field.
class Order {
/// The direction to order by.
///
/// Defaults to `ASCENDING`.
/// Possible string values are:
/// - "DIRECTION_UNSPECIFIED" : Unspecified.
/// - "ASCENDING" : Ascending.
/// - "DESCENDING" : Descending.
core.String? direction;
/// The field to order by.
FieldReference? field;
Order();
Order.fromJson(core.Map _json) {
if (_json.containsKey('direction')) {
direction = _json['direction'] as core.String;
}
if (_json.containsKey('field')) {
field = FieldReference.fromJson(
_json['field'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (direction != null) 'direction': direction!,
if (field != null) 'field': field!.toJson(),
};
}
/// The request for Firestore.PartitionQuery.
class PartitionQueryRequest {
/// The maximum number of partitions to return in this call, subject to
/// `partition_count`.
///
/// For example, if `partition_count` = 10 and `page_size` = 8, the first call
/// to PartitionQuery will return up to 8 partitions and a `next_page_token`
/// if more results exist. A second call to PartitionQuery will return up to 2
/// partitions, to complete the total of 10 specified in `partition_count`.
core.int? pageSize;
/// The `next_page_token` value returned from a previous call to
/// PartitionQuery that may be used to get an additional set of results.
///
/// There are no ordering guarantees between sets of results. Thus, using
/// multiple sets of results will require merging the different result sets.
/// For example, two subsequent calls using a page_token may return: * cursor
/// B, cursor M, cursor Q * cursor A, cursor U, cursor W To obtain a complete
/// result set ordered with respect to the results of the query supplied to
/// PartitionQuery, the results sets should be merged: cursor A, cursor B,
/// cursor M, cursor Q, cursor U, cursor W
core.String? pageToken;
/// The desired maximum number of partition points.
///
/// The partitions may be returned across multiple pages of results. The
/// number must be positive. The actual number of partitions returned may be
/// fewer. For example, this may be set to one fewer than the number of
/// parallel queries to be run, or in running a data pipeline job, one fewer
/// than the number of workers or compute instances available.
core.String? partitionCount;
/// A structured query.
///
/// Query must specify collection with all descendants and be ordered by name
/// ascending. Other filters, order bys, limits, offsets, and start/end
/// cursors are not supported.
StructuredQuery? structuredQuery;
PartitionQueryRequest();
PartitionQueryRequest.fromJson(core.Map _json) {
if (_json.containsKey('pageSize')) {
pageSize = _json['pageSize'] as core.int;
}
if (_json.containsKey('pageToken')) {
pageToken = _json['pageToken'] as core.String;
}
if (_json.containsKey('partitionCount')) {
partitionCount = _json['partitionCount'] as core.String;
}
if (_json.containsKey('structuredQuery')) {
structuredQuery = StructuredQuery.fromJson(
_json['structuredQuery'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (pageSize != null) 'pageSize': pageSize!,
if (pageToken != null) 'pageToken': pageToken!,
if (partitionCount != null) 'partitionCount': partitionCount!,
if (structuredQuery != null)
'structuredQuery': structuredQuery!.toJson(),
};
}
/// The response for Firestore.PartitionQuery.
class PartitionQueryResponse {
/// A page token that may be used to request an additional set of results, up
/// to the number specified by `partition_count` in the PartitionQuery
/// request.
///
/// If blank, there are no more results.
core.String? nextPageToken;
/// Partition results.
///
/// Each partition is a split point that can be used by RunQuery as a starting
/// or end point for the query results. The RunQuery requests must be made
/// with the same query supplied to this PartitionQuery request. The partition
/// cursors will be ordered according to same ordering as the results of the
/// query supplied to PartitionQuery. For example, if a PartitionQuery request
/// returns partition cursors A and B, running the following three queries
/// will return the entire result set of the original query: * query, end_at A
/// * query, start_at A, end_at B * query, start_at B An empty result may
/// indicate that the query has too few results to be partitioned.
core.List<Cursor>? partitions;
PartitionQueryResponse();
PartitionQueryResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('partitions')) {
partitions = (_json['partitions'] as core.List)
.map<Cursor>((value) =>
Cursor.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (nextPageToken != null) 'nextPageToken': nextPageToken!,
if (partitions != null)
'partitions': partitions!.map((value) => value.toJson()).toList(),
};
}
/// A precondition on a document, used for conditional operations.
class Precondition {
/// When set to `true`, the target document must exist.
///
/// When set to `false`, the target document must not exist.
core.bool? exists;
/// When set, the target document must exist and have been last updated at
/// that time.
core.String? updateTime;
Precondition();
Precondition.fromJson(core.Map _json) {
if (_json.containsKey('exists')) {
exists = _json['exists'] as core.bool;
}
if (_json.containsKey('updateTime')) {
updateTime = _json['updateTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (exists != null) 'exists': exists!,
if (updateTime != null) 'updateTime': updateTime!,
};
}
/// The projection of document's fields to return.
class Projection {
/// The fields to return.
///
/// If empty, all fields are returned. To only return the name of the
/// document, use `['__name__']`.
core.List<FieldReference>? fields;
Projection();
Projection.fromJson(core.Map _json) {
if (_json.containsKey('fields')) {
fields = (_json['fields'] as core.List)
.map<FieldReference>((value) => FieldReference.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (fields != null)
'fields': fields!.map((value) => value.toJson()).toList(),
};
}
/// A target specified by a query.
class QueryTarget {
/// The parent resource name.
///
/// In the format: `projects/{project_id}/databases/{database_id}/documents`
/// or
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
/// For example: `projects/my-project/databases/my-database/documents` or
/// `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
core.String? parent;
/// A structured query.
StructuredQuery? structuredQuery;
QueryTarget();
QueryTarget.fromJson(core.Map _json) {
if (_json.containsKey('parent')) {
parent = _json['parent'] as core.String;
}
if (_json.containsKey('structuredQuery')) {
structuredQuery = StructuredQuery.fromJson(
_json['structuredQuery'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (parent != null) 'parent': parent!,
if (structuredQuery != null)
'structuredQuery': structuredQuery!.toJson(),
};
}
/// Options for a transaction that can only be used to read documents.
class ReadOnly {
/// Reads documents at the given time.
///
/// This may not be older than 60 seconds.
core.String? readTime;
ReadOnly();
ReadOnly.fromJson(core.Map _json) {
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (readTime != null) 'readTime': readTime!,
};
}
/// Options for a transaction that can be used to read and write documents.
class ReadWrite {
/// An optional transaction to retry.
core.String? retryTransaction;
core.List<core.int> get retryTransactionAsBytes =>
convert.base64.decode(retryTransaction!);
set retryTransactionAsBytes(core.List<core.int> _bytes) {
retryTransaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
ReadWrite();
ReadWrite.fromJson(core.Map _json) {
if (_json.containsKey('retryTransaction')) {
retryTransaction = _json['retryTransaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (retryTransaction != null) 'retryTransaction': retryTransaction!,
};
}
/// The request for Firestore.Rollback.
class RollbackRequest {
/// The transaction to roll back.
///
/// Required.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
RollbackRequest();
RollbackRequest.fromJson(core.Map _json) {
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (transaction != null) 'transaction': transaction!,
};
}
/// The request for Firestore.RunQuery.
class RunQueryRequest {
/// Starts a new transaction and reads the documents.
///
/// Defaults to a read-only transaction. The new transaction ID will be
/// returned as the first response in the stream.
TransactionOptions? newTransaction;
/// Reads documents as they were at the given time.
///
/// This may not be older than 270 seconds.
core.String? readTime;
/// A structured query.
StructuredQuery? structuredQuery;
/// Reads documents in a transaction.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
RunQueryRequest();
RunQueryRequest.fromJson(core.Map _json) {
if (_json.containsKey('newTransaction')) {
newTransaction = TransactionOptions.fromJson(
_json['newTransaction'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('structuredQuery')) {
structuredQuery = StructuredQuery.fromJson(
_json['structuredQuery'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (newTransaction != null) 'newTransaction': newTransaction!.toJson(),
if (readTime != null) 'readTime': readTime!,
if (structuredQuery != null)
'structuredQuery': structuredQuery!.toJson(),
if (transaction != null) 'transaction': transaction!,
};
}
/// The response for Firestore.RunQuery.
class RunQueryResponse {
/// A query result.
///
/// Not set when reporting partial progress.
Document? document;
/// The time at which the document was read.
///
/// This may be monotonically increasing; in this case, the previous documents
/// in the result stream are guaranteed not to have changed between their
/// `read_time` and this one. If the query returns no results, a response with
/// `read_time` and no `document` will be sent, and this represents the time
/// at which the query was run.
core.String? readTime;
/// The number of results that have been skipped due to an offset between the
/// last response and the current response.
core.int? skippedResults;
/// The transaction that was started as part of this request.
///
/// Can only be set in the first response, and only if
/// RunQueryRequest.new_transaction was set in the request. If set, no other
/// fields will be set in this response.
core.String? transaction;
core.List<core.int> get transactionAsBytes =>
convert.base64.decode(transaction!);
set transactionAsBytes(core.List<core.int> _bytes) {
transaction =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
RunQueryResponse();
RunQueryResponse.fromJson(core.Map _json) {
if (_json.containsKey('document')) {
document = Document.fromJson(
_json['document'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('skippedResults')) {
skippedResults = _json['skippedResults'] as core.int;
}
if (_json.containsKey('transaction')) {
transaction = _json['transaction'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (document != null) 'document': document!.toJson(),
if (readTime != null) 'readTime': readTime!,
if (skippedResults != null) 'skippedResults': skippedResults!,
if (transaction != null) 'transaction': transaction!,
};
}
/// The `Status` type defines a logical error model that is suitable for
/// different programming environments, including REST APIs and RPC APIs.
///
/// It is used by [gRPC](https://github.com/grpc). Each `Status` message
/// contains three pieces of data: error code, error message, and error details.
/// You can find out more about this error model and how to work with it in the
/// [API Design Guide](https://cloud.google.com/apis/design/errors).
class Status {
/// The status code, which should be an enum value of google.rpc.Code.
core.int? code;
/// A list of messages that carry the error details.
///
/// There is a common set of message types for APIs to use.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.List<core.Map<core.String, core.Object>>? details;
/// A developer-facing error message, which should be in English.
///
/// Any user-facing error message should be localized and sent in the
/// google.rpc.Status.details field, or localized by the client.
core.String? message;
Status();
Status.fromJson(core.Map _json) {
if (_json.containsKey('code')) {
code = _json['code'] as core.int;
}
if (_json.containsKey('details')) {
details = (_json['details'] as core.List)
.map<core.Map<core.String, core.Object>>(
(value) => (value as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
))
.toList();
}
if (_json.containsKey('message')) {
message = _json['message'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (code != null) 'code': code!,
if (details != null) 'details': details!,
if (message != null) 'message': message!,
};
}
/// A Firestore query.
class StructuredQuery {
/// A end point for the query results.
Cursor? endAt;
/// The collections to query.
core.List<CollectionSelector>? from;
/// The maximum number of results to return.
///
/// Applies after all other constraints. Must be >= 0 if specified.
core.int? limit;
/// The number of results to skip.
///
/// Applies before limit, but after all other constraints. Must be >= 0 if
/// specified.
core.int? offset;
/// The order to apply to the query results.
///
/// Firestore guarantees a stable ordering through the following rules: * Any
/// field required to appear in `order_by`, that is not already specified in
/// `order_by`, is appended to the order in field name order by default. * If
/// an order on `__name__` is not specified, it is appended by default. Fields
/// are appended with the same sort direction as the last order specified, or
/// 'ASCENDING' if no order was specified. For example: * `SELECT * FROM Foo
/// ORDER BY A` becomes `SELECT * FROM Foo ORDER BY A, __name__` * `SELECT *
/// FROM Foo ORDER BY A DESC` becomes `SELECT * FROM Foo ORDER BY A DESC,
/// __name__ DESC` * `SELECT * FROM Foo WHERE A > 1` becomes `SELECT * FROM
/// Foo WHERE A > 1 ORDER BY A, __name__`
core.List<Order>? orderBy;
/// The projection to return.
Projection? select;
/// A starting point for the query results.
Cursor? startAt;
/// The filter to apply.
Filter? where;
StructuredQuery();
StructuredQuery.fromJson(core.Map _json) {
if (_json.containsKey('endAt')) {
endAt = Cursor.fromJson(
_json['endAt'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('from')) {
from = (_json['from'] as core.List)
.map<CollectionSelector>((value) => CollectionSelector.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('limit')) {
limit = _json['limit'] as core.int;
}
if (_json.containsKey('offset')) {
offset = _json['offset'] as core.int;
}
if (_json.containsKey('orderBy')) {
orderBy = (_json['orderBy'] as core.List)
.map<Order>((value) =>
Order.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('select')) {
select = Projection.fromJson(
_json['select'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startAt')) {
startAt = Cursor.fromJson(
_json['startAt'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('where')) {
where = Filter.fromJson(
_json['where'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (endAt != null) 'endAt': endAt!.toJson(),
if (from != null) 'from': from!.map((value) => value.toJson()).toList(),
if (limit != null) 'limit': limit!,
if (offset != null) 'offset': offset!,
if (orderBy != null)
'orderBy': orderBy!.map((value) => value.toJson()).toList(),
if (select != null) 'select': select!.toJson(),
if (startAt != null) 'startAt': startAt!.toJson(),
if (where != null) 'where': where!.toJson(),
};
}
/// A specification of a set of documents to listen to.
class Target {
/// A target specified by a set of document names.
DocumentsTarget? documents;
/// If the target should be removed once it is current and consistent.
core.bool? once;
/// A target specified by a query.
QueryTarget? query;
/// Start listening after a specific `read_time`.
///
/// The client must know the state of matching documents at this time.
core.String? readTime;
/// A resume token from a prior TargetChange for an identical target.
///
/// Using a resume token with a different target is unsupported and may fail.
core.String? resumeToken;
core.List<core.int> get resumeTokenAsBytes =>
convert.base64.decode(resumeToken!);
set resumeTokenAsBytes(core.List<core.int> _bytes) {
resumeToken =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// The target ID that identifies the target on the stream.
///
/// Must be a positive number and non-zero.
core.int? targetId;
Target();
Target.fromJson(core.Map _json) {
if (_json.containsKey('documents')) {
documents = DocumentsTarget.fromJson(
_json['documents'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('once')) {
once = _json['once'] as core.bool;
}
if (_json.containsKey('query')) {
query = QueryTarget.fromJson(
_json['query'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('resumeToken')) {
resumeToken = _json['resumeToken'] as core.String;
}
if (_json.containsKey('targetId')) {
targetId = _json['targetId'] as core.int;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (documents != null) 'documents': documents!.toJson(),
if (once != null) 'once': once!,
if (query != null) 'query': query!.toJson(),
if (readTime != null) 'readTime': readTime!,
if (resumeToken != null) 'resumeToken': resumeToken!,
if (targetId != null) 'targetId': targetId!,
};
}
/// Targets being watched have changed.
class TargetChange {
/// The error that resulted in this change, if applicable.
Status? cause;
/// The consistent `read_time` for the given `target_ids` (omitted when the
/// target_ids are not at a consistent snapshot).
///
/// The stream is guaranteed to send a `read_time` with `target_ids` empty
/// whenever the entire stream reaches a new consistent snapshot. ADD,
/// CURRENT, and RESET messages are guaranteed to (eventually) result in a new
/// consistent snapshot (while NO_CHANGE and REMOVE messages are not). For a
/// given stream, `read_time` is guaranteed to be monotonically increasing.
core.String? readTime;
/// A token that can be used to resume the stream for the given `target_ids`,
/// or all targets if `target_ids` is empty.
///
/// Not set on every target change.
core.String? resumeToken;
core.List<core.int> get resumeTokenAsBytes =>
convert.base64.decode(resumeToken!);
set resumeTokenAsBytes(core.List<core.int> _bytes) {
resumeToken =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// The type of change that occurred.
/// Possible string values are:
/// - "NO_CHANGE" : No change has occurred. Used only to send an updated
/// `resume_token`.
/// - "ADD" : The targets have been added.
/// - "REMOVE" : The targets have been removed.
/// - "CURRENT" : The targets reflect all changes committed before the targets
/// were added to the stream. This will be sent after or with a `read_time`
/// that is greater than or equal to the time at which the targets were added.
/// Listeners can wait for this change if read-after-write semantics are
/// desired.
/// - "RESET" : The targets have been reset, and a new initial state for the
/// targets will be returned in subsequent changes. After the initial state is
/// complete, `CURRENT` will be returned even if the target was previously
/// indicated to be `CURRENT`.
core.String? targetChangeType;
/// The target IDs of targets that have changed.
///
/// If empty, the change applies to all targets. The order of the target IDs
/// is not defined.
core.List<core.int>? targetIds;
TargetChange();
TargetChange.fromJson(core.Map _json) {
if (_json.containsKey('cause')) {
cause = Status.fromJson(
_json['cause'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readTime')) {
readTime = _json['readTime'] as core.String;
}
if (_json.containsKey('resumeToken')) {
resumeToken = _json['resumeToken'] as core.String;
}
if (_json.containsKey('targetChangeType')) {
targetChangeType = _json['targetChangeType'] as core.String;
}
if (_json.containsKey('targetIds')) {
targetIds = (_json['targetIds'] as core.List)
.map<core.int>((value) => value as core.int)
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (cause != null) 'cause': cause!.toJson(),
if (readTime != null) 'readTime': readTime!,
if (resumeToken != null) 'resumeToken': resumeToken!,
if (targetChangeType != null) 'targetChangeType': targetChangeType!,
if (targetIds != null) 'targetIds': targetIds!,
};
}
/// Options for creating a new transaction.
class TransactionOptions {
/// The transaction can only be used for read operations.
ReadOnly? readOnly;
/// The transaction can be used for both read and write operations.
ReadWrite? readWrite;
TransactionOptions();
TransactionOptions.fromJson(core.Map _json) {
if (_json.containsKey('readOnly')) {
readOnly = ReadOnly.fromJson(
_json['readOnly'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('readWrite')) {
readWrite = ReadWrite.fromJson(
_json['readWrite'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (readOnly != null) 'readOnly': readOnly!.toJson(),
if (readWrite != null) 'readWrite': readWrite!.toJson(),
};
}
/// A filter with a single operand.
class UnaryFilter {
/// The field to which to apply the operator.
FieldReference? field;
/// The unary operator to apply.
/// Possible string values are:
/// - "OPERATOR_UNSPECIFIED" : Unspecified. This value must not be used.
/// - "IS_NAN" : The given `field` is equal to `NaN`.
/// - "IS_NULL" : The given `field` is equal to `NULL`.
/// - "IS_NOT_NAN" : The given `field` is not equal to `NaN`. Requires: * No
/// other `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or `IS_NOT_NAN`. * That
/// `field` comes first in the `order_by`.
/// - "IS_NOT_NULL" : The given `field` is not equal to `NULL`. Requires: * A
/// single `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or `IS_NOT_NAN`. * That
/// `field` comes first in the `order_by`.
core.String? op;
UnaryFilter();
UnaryFilter.fromJson(core.Map _json) {
if (_json.containsKey('field')) {
field = FieldReference.fromJson(
_json['field'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('op')) {
op = _json['op'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (field != null) 'field': field!.toJson(),
if (op != null) 'op': op!,
};
}
/// A message that can hold any of the supported value types.
class Value {
/// An array value.
///
/// Cannot directly contain another array value, though can contain an map
/// which contains another array.
ArrayValue? arrayValue;
/// A boolean value.
core.bool? booleanValue;
/// A bytes value.
///
/// Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are
/// considered by queries.
core.String? bytesValue;
core.List<core.int> get bytesValueAsBytes =>
convert.base64.decode(bytesValue!);
set bytesValueAsBytes(core.List<core.int> _bytes) {
bytesValue =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// A double value.
core.double? doubleValue;
/// A geo point value representing a point on the surface of Earth.
LatLng? geoPointValue;
/// An integer value.
core.String? integerValue;
/// A map value.
MapValue? mapValue;
/// A null value.
/// Possible string values are:
/// - "NULL_VALUE" : Null value.
core.String? nullValue;
/// A reference to a document.
///
/// For example:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
core.String? referenceValue;
/// A string value.
///
/// The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only
/// the first 1,500 bytes of the UTF-8 representation are considered by
/// queries.
core.String? stringValue;
/// A timestamp value.
///
/// Precise only to microseconds. When stored, any additional precision is
/// rounded down.
core.String? timestampValue;
Value();
Value.fromJson(core.Map _json) {
if (_json.containsKey('arrayValue')) {
arrayValue = ArrayValue.fromJson(
_json['arrayValue'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('booleanValue')) {
booleanValue = _json['booleanValue'] as core.bool;
}
if (_json.containsKey('bytesValue')) {
bytesValue = _json['bytesValue'] as core.String;
}
if (_json.containsKey('doubleValue')) {
doubleValue = (_json['doubleValue'] as core.num).toDouble();
}
if (_json.containsKey('geoPointValue')) {
geoPointValue = LatLng.fromJson(
_json['geoPointValue'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('integerValue')) {
integerValue = _json['integerValue'] as core.String;
}
if (_json.containsKey('mapValue')) {
mapValue = MapValue.fromJson(
_json['mapValue'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('nullValue')) {
nullValue = _json['nullValue'] as core.String;
}
if (_json.containsKey('referenceValue')) {
referenceValue = _json['referenceValue'] as core.String;
}
if (_json.containsKey('stringValue')) {
stringValue = _json['stringValue'] as core.String;
}
if (_json.containsKey('timestampValue')) {
timestampValue = _json['timestampValue'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (arrayValue != null) 'arrayValue': arrayValue!.toJson(),
if (booleanValue != null) 'booleanValue': booleanValue!,
if (bytesValue != null) 'bytesValue': bytesValue!,
if (doubleValue != null) 'doubleValue': doubleValue!,
if (geoPointValue != null) 'geoPointValue': geoPointValue!.toJson(),
if (integerValue != null) 'integerValue': integerValue!,
if (mapValue != null) 'mapValue': mapValue!.toJson(),
if (nullValue != null) 'nullValue': nullValue!,
if (referenceValue != null) 'referenceValue': referenceValue!,
if (stringValue != null) 'stringValue': stringValue!,
if (timestampValue != null) 'timestampValue': timestampValue!,
};
}
/// A write on a document.
class Write {
/// An optional precondition on the document.
///
/// The write will fail if this is set and not met by the target document.
Precondition? currentDocument;
/// A document name to delete.
///
/// In the format:
/// `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
core.String? delete;
/// Applies a transformation to a document.
DocumentTransform? transform;
/// A document to write.
Document? update;
/// The fields to update in this write.
///
/// This field can be set only when the operation is `update`. If the mask is
/// not set for an `update` and the document exists, any existing data will be
/// overwritten. If the mask is set and the document on the server has fields
/// not covered by the mask, they are left unchanged. Fields referenced in the
/// mask, but not present in the input document, are deleted from the document
/// on the server. The field paths in this mask must not contain a reserved
/// field name.
DocumentMask? updateMask;
/// The transforms to perform after update.
///
/// This field can be set only when the operation is `update`. If present,
/// this write is equivalent to performing `update` and `transform` to the
/// same document atomically and in order.
core.List<FieldTransform>? updateTransforms;
Write();
Write.fromJson(core.Map _json) {
if (_json.containsKey('currentDocument')) {
currentDocument = Precondition.fromJson(
_json['currentDocument'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('delete')) {
delete = _json['delete'] as core.String;
}
if (_json.containsKey('transform')) {
transform = DocumentTransform.fromJson(
_json['transform'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('update')) {
update = Document.fromJson(
_json['update'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('updateMask')) {
updateMask = DocumentMask.fromJson(
_json['updateMask'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('updateTransforms')) {
updateTransforms = (_json['updateTransforms'] as core.List)
.map<FieldTransform>((value) => FieldTransform.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (currentDocument != null)
'currentDocument': currentDocument!.toJson(),
if (delete != null) 'delete': delete!,
if (transform != null) 'transform': transform!.toJson(),
if (update != null) 'update': update!.toJson(),
if (updateMask != null) 'updateMask': updateMask!.toJson(),
if (updateTransforms != null)
'updateTransforms':
updateTransforms!.map((value) => value.toJson()).toList(),
};
}
/// The request for Firestore.Write.
///
/// The first request creates a stream, or resumes an existing one from a token.
/// When creating a new stream, the server replies with a response containing
/// only an ID and a token, to use in the next request. When resuming a stream,
/// the server first streams any responses later than the given token, then a
/// response containing only an up-to-date token, to use in the next request.
class WriteRequest {
/// Labels associated with this write request.
core.Map<core.String, core.String>? labels;
/// The ID of the write stream to resume.
///
/// This may only be set in the first message. When left empty, a new write
/// stream will be created.
core.String? streamId;
/// A stream token that was previously sent by the server.
///
/// The client should set this field to the token from the most recent
/// WriteResponse it has received. This acknowledges that the client has
/// received responses up to this token. After sending this token, earlier
/// tokens may not be used anymore. The server may close the stream if there
/// are too many unacknowledged responses. Leave this field unset when
/// creating a new stream. To resume a stream at a specific point, set this
/// field and the `stream_id` field. Leave this field unset when creating a
/// new stream.
core.String? streamToken;
core.List<core.int> get streamTokenAsBytes =>
convert.base64.decode(streamToken!);
set streamTokenAsBytes(core.List<core.int> _bytes) {
streamToken =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// The writes to apply.
///
/// Always executed atomically and in order. This must be empty on the first
/// request. This may be empty on the last request. This must not be empty on
/// all other requests.
core.List<Write>? writes;
WriteRequest();
WriteRequest.fromJson(core.Map _json) {
if (_json.containsKey('labels')) {
labels = (_json['labels'] as core.Map<core.String, core.dynamic>).map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('streamId')) {
streamId = _json['streamId'] as core.String;
}
if (_json.containsKey('streamToken')) {
streamToken = _json['streamToken'] as core.String;
}
if (_json.containsKey('writes')) {
writes = (_json['writes'] as core.List)
.map<Write>((value) =>
Write.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (labels != null) 'labels': labels!,
if (streamId != null) 'streamId': streamId!,
if (streamToken != null) 'streamToken': streamToken!,
if (writes != null)
'writes': writes!.map((value) => value.toJson()).toList(),
};
}
/// The response for Firestore.Write.
class WriteResponse {
/// The time at which the commit occurred.
///
/// Any read with an equal or greater `read_time` is guaranteed to see the
/// effects of the write.
core.String? commitTime;
/// The ID of the stream.
///
/// Only set on the first message, when a new stream was created.
core.String? streamId;
/// A token that represents the position of this response in the stream.
///
/// This can be used by a client to resume the stream at this point. This
/// field is always set.
core.String? streamToken;
core.List<core.int> get streamTokenAsBytes =>
convert.base64.decode(streamToken!);
set streamTokenAsBytes(core.List<core.int> _bytes) {
streamToken =
convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-');
}
/// The result of applying the writes.
///
/// This i-th write result corresponds to the i-th write in the request.
core.List<WriteResult>? writeResults;
WriteResponse();
WriteResponse.fromJson(core.Map _json) {
if (_json.containsKey('commitTime')) {
commitTime = _json['commitTime'] as core.String;
}
if (_json.containsKey('streamId')) {
streamId = _json['streamId'] as core.String;
}
if (_json.containsKey('streamToken')) {
streamToken = _json['streamToken'] as core.String;
}
if (_json.containsKey('writeResults')) {
writeResults = (_json['writeResults'] as core.List)
.map<WriteResult>((value) => WriteResult.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (commitTime != null) 'commitTime': commitTime!,
if (streamId != null) 'streamId': streamId!,
if (streamToken != null) 'streamToken': streamToken!,
if (writeResults != null)
'writeResults': writeResults!.map((value) => value.toJson()).toList(),
};
}
/// The result of applying a write.
class WriteResult {
/// The results of applying each DocumentTransform.FieldTransform, in the same
/// order.
core.List<Value>? transformResults;
/// The last update time of the document after applying the write.
///
/// Not set after a `delete`. If the write did not actually change the
/// document, this will be the previous update_time.
core.String? updateTime;
WriteResult();
WriteResult.fromJson(core.Map _json) {
if (_json.containsKey('transformResults')) {
transformResults = (_json['transformResults'] as core.List)
.map<Value>((value) =>
Value.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('updateTime')) {
updateTime = _json['updateTime'] as core.String;
}
}
core.Map<core.String, core.dynamic> toJson() => {
if (transformResults != null)
'transformResults':
transformResults!.map((value) => value.toJson()).toList(),
if (updateTime != null) 'updateTime': updateTime!,
};
}