blob: 5b1293fc705dec84deaa8d85537bd34323f76c81 [file]
library googleapis_beta.datastore.v1beta2;
import "dart:core" as core;
import "dart:collection" as collection;
import "dart:async" as async;
import "dart:convert" as convert;
import "package:crypto/crypto.dart" as crypto;
import 'package:http/http.dart' as http;
import '../src/common_internal.dart' as common_internal;
import '../common/common.dart' as common;
export '../common/common.dart' show ApiRequestError;
export '../common/common.dart' show DetailedApiRequestError;
/** API for accessing Google Cloud Datastore. */
class DatastoreApi {
/** View and manage your Google Cloud Datastore data */
static const DatastoreScope = "https://www.googleapis.com/auth/datastore";
/** View your email address */
static const UserinfoEmailScope = "https://www.googleapis.com/auth/userinfo.email";
final common_internal.ApiRequester _requester;
DatasetsResourceApi get datasets => new DatasetsResourceApi(_requester);
DatastoreApi(http.Client client) :
_requester = new common_internal.ApiRequester(client, "https://www.googleapis.com/", "/datastore/v1beta2/datasets/");
}
/** Not documented yet. */
class DatasetsResourceApi {
final common_internal.ApiRequester _requester;
DatasetsResourceApi(common_internal.ApiRequester client) :
_requester = client;
/**
* Allocate IDs for incomplete keys (useful for referencing an entity before
* it is inserted).
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [AllocateIdsResponse].
*
* Completes with a [common.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<AllocateIdsResponse> allocateIds(AllocateIdsRequest request, core.String datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/allocateIds';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new AllocateIdsResponse.fromJson(data));
}
/**
* Begin a new transaction.
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [BeginTransactionResponse].
*
* Completes with a [common.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 datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/beginTransaction';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new BeginTransactionResponse.fromJson(data));
}
/**
* Commit a transaction, optionally creating, deleting or modifying some
* entities.
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [CommitResponse].
*
* Completes with a [common.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 datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/commit';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new CommitResponse.fromJson(data));
}
/**
* Look up some entities by key.
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [LookupResponse].
*
* Completes with a [common.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<LookupResponse> lookup(LookupRequest request, core.String datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/lookup';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new LookupResponse.fromJson(data));
}
/**
* Roll back a transaction.
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [RollbackResponse].
*
* Completes with a [common.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<RollbackResponse> rollback(RollbackRequest request, core.String datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/rollback';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new RollbackResponse.fromJson(data));
}
/**
* Query for entities.
*
* [request] - The metadata request object.
*
* Request parameters:
*
* [datasetId] - Identifies the dataset.
*
* Completes with a [RunQueryResponse].
*
* Completes with a [common.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 datasetId) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = common.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if (datasetId == null) {
throw new core.ArgumentError("Parameter datasetId is required.");
}
_url = common_internal.Escaper.ecapeVariable('$datasetId') + '/runQuery';
var _response = _requester.request(_url,
"POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new RunQueryResponse.fromJson(data));
}
}
/** Not documented yet. */
class AllocateIdsRequest {
/**
* A list of keys with incomplete key paths to allocate IDs for. No key may be
* reserved/read-only.
*/
core.List<Key> keys;
AllocateIdsRequest();
AllocateIdsRequest.fromJson(core.Map _json) {
if (_json.containsKey("keys")) {
keys = _json["keys"].map((value) => new Key.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (keys != null) {
_json["keys"] = keys.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/** Not documented yet. */
class AllocateIdsResponse {
/** Not documented yet. */
ResponseHeader header;
/**
* The keys specified in the request (in the same order), each with its key
* path completed with a newly allocated ID.
*/
core.List<Key> keys;
AllocateIdsResponse();
AllocateIdsResponse.fromJson(core.Map _json) {
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
if (_json.containsKey("keys")) {
keys = _json["keys"].map((value) => new Key.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (header != null) {
_json["header"] = (header).toJson();
}
if (keys != null) {
_json["keys"] = keys.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/** Not documented yet. */
class BeginTransactionRequest {
/**
* The transaction isolation level. Either snapshot or serializable. The
* default isolation level is snapshot isolation, which means that another
* transaction may not concurrently modify the data that is modified by this
* transaction. Optionally, a transaction can request to be made serializable
* which means that another transaction cannot concurrently modify the data
* that is read or modified by this transaction.
* Possible string values are:
* - "SERIALIZABLE"
* - "SNAPSHOT"
*/
core.String isolationLevel;
BeginTransactionRequest();
BeginTransactionRequest.fromJson(core.Map _json) {
if (_json.containsKey("isolationLevel")) {
isolationLevel = _json["isolationLevel"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (isolationLevel != null) {
_json["isolationLevel"] = isolationLevel;
}
return _json;
}
}
/** Not documented yet. */
class BeginTransactionResponse {
/** Not documented yet. */
ResponseHeader header;
/** The transaction identifier (always present). */
core.String transaction;
core.List<core.int> get transactionAsBytes {
return crypto.CryptoUtils.base64StringToBytes(transaction);
}
void set transactionAsBytes(core.List<core.int> _bytes) {
transaction = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
BeginTransactionResponse();
BeginTransactionResponse.fromJson(core.Map _json) {
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
if (_json.containsKey("transaction")) {
transaction = _json["transaction"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (header != null) {
_json["header"] = (header).toJson();
}
if (transaction != null) {
_json["transaction"] = transaction;
}
return _json;
}
}
/** Not documented yet. */
class CommitRequest {
/** Not documented yet. */
core.bool ignoreReadOnly;
/**
* The type of commit to perform. Either TRANSACTIONAL or NON_TRANSACTIONAL.
* Possible string values are:
* - "NON_TRANSACTIONAL"
* - "TRANSACTIONAL"
*/
core.String mode;
/** The mutation to perform. Optional. */
Mutation mutation;
/**
* The transaction identifier, returned by a call to beginTransaction. Must be
* set when mode is TRANSACTIONAL.
*/
core.String transaction;
core.List<core.int> get transactionAsBytes {
return crypto.CryptoUtils.base64StringToBytes(transaction);
}
void set transactionAsBytes(core.List<core.int> _bytes) {
transaction = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
CommitRequest();
CommitRequest.fromJson(core.Map _json) {
if (_json.containsKey("ignoreReadOnly")) {
ignoreReadOnly = _json["ignoreReadOnly"];
}
if (_json.containsKey("mode")) {
mode = _json["mode"];
}
if (_json.containsKey("mutation")) {
mutation = new Mutation.fromJson(_json["mutation"]);
}
if (_json.containsKey("transaction")) {
transaction = _json["transaction"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (ignoreReadOnly != null) {
_json["ignoreReadOnly"] = ignoreReadOnly;
}
if (mode != null) {
_json["mode"] = mode;
}
if (mutation != null) {
_json["mutation"] = (mutation).toJson();
}
if (transaction != null) {
_json["transaction"] = transaction;
}
return _json;
}
}
/** Not documented yet. */
class CommitResponse {
/** Not documented yet. */
ResponseHeader header;
/** The result of performing the mutation (if any). */
MutationResult mutationResult;
CommitResponse();
CommitResponse.fromJson(core.Map _json) {
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
if (_json.containsKey("mutationResult")) {
mutationResult = new MutationResult.fromJson(_json["mutationResult"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (header != null) {
_json["header"] = (header).toJson();
}
if (mutationResult != null) {
_json["mutationResult"] = (mutationResult).toJson();
}
return _json;
}
}
/** Not documented yet. */
class CompositeFilter {
/** The list of filters to combine. Must contain at least one filter. */
core.List<Filter> filters;
/**
* The operator for combining multiple filters. Only "and" is currently
* supported.
* Possible string values are:
* - "AND"
*/
core.String operator;
CompositeFilter();
CompositeFilter.fromJson(core.Map _json) {
if (_json.containsKey("filters")) {
filters = _json["filters"].map((value) => new Filter.fromJson(value)).toList();
}
if (_json.containsKey("operator")) {
operator = _json["operator"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (filters != null) {
_json["filters"] = filters.map((value) => (value).toJson()).toList();
}
if (operator != null) {
_json["operator"] = operator;
}
return _json;
}
}
/** Not documented yet. */
class Entity {
/**
* The entity's key.
*
* An entity must have a key, unless otherwise documented (for example, an
* entity in Value.entityValue may have no key). An entity's kind is its key's
* path's last element's kind, or null if it has no key.
*/
Key key;
/** The entity's properties. */
core.Map<core.String, Property> properties;
Entity();
Entity.fromJson(core.Map _json) {
if (_json.containsKey("key")) {
key = new Key.fromJson(_json["key"]);
}
if (_json.containsKey("properties")) {
properties = common_internal.mapMap(_json["properties"], (item) => new Property.fromJson(item));
}
}
core.Map toJson() {
var _json = new core.Map();
if (key != null) {
_json["key"] = (key).toJson();
}
if (properties != null) {
_json["properties"] = common_internal.mapMap(properties, (item) => (item).toJson());
}
return _json;
}
}
/** Not documented yet. */
class EntityResult {
/** The resulting entity. */
Entity entity;
EntityResult();
EntityResult.fromJson(core.Map _json) {
if (_json.containsKey("entity")) {
entity = new Entity.fromJson(_json["entity"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (entity != null) {
_json["entity"] = (entity).toJson();
}
return _json;
}
}
/** Not documented yet. */
class Filter {
/** A composite filter. */
CompositeFilter compositeFilter;
/** A filter on a property. */
PropertyFilter propertyFilter;
Filter();
Filter.fromJson(core.Map _json) {
if (_json.containsKey("compositeFilter")) {
compositeFilter = new CompositeFilter.fromJson(_json["compositeFilter"]);
}
if (_json.containsKey("propertyFilter")) {
propertyFilter = new PropertyFilter.fromJson(_json["propertyFilter"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (compositeFilter != null) {
_json["compositeFilter"] = (compositeFilter).toJson();
}
if (propertyFilter != null) {
_json["propertyFilter"] = (propertyFilter).toJson();
}
return _json;
}
}
/** Not documented yet. */
class GqlQuery {
/** When false, the query string must not contain a literal. */
core.bool allowLiteral;
/**
* A named argument must set field GqlQueryArg.name. No two named arguments
* may have the same name. For each non-reserved named binding site in the
* query string, there must be a named argument with that name, but not
* necessarily the inverse.
*/
core.List<GqlQueryArg> nameArgs;
/**
* Numbered binding site @1 references the first numbered argument,
* effectively using 1-based indexing, rather than the usual 0. A numbered
* argument must NOT set field GqlQueryArg.name. For each binding site
* numbered i in query_string, there must be an ith numbered argument. The
* inverse must also be true.
*/
core.List<GqlQueryArg> numberArgs;
/** Not documented yet. */
core.String queryString;
GqlQuery();
GqlQuery.fromJson(core.Map _json) {
if (_json.containsKey("allowLiteral")) {
allowLiteral = _json["allowLiteral"];
}
if (_json.containsKey("nameArgs")) {
nameArgs = _json["nameArgs"].map((value) => new GqlQueryArg.fromJson(value)).toList();
}
if (_json.containsKey("numberArgs")) {
numberArgs = _json["numberArgs"].map((value) => new GqlQueryArg.fromJson(value)).toList();
}
if (_json.containsKey("queryString")) {
queryString = _json["queryString"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (allowLiteral != null) {
_json["allowLiteral"] = allowLiteral;
}
if (nameArgs != null) {
_json["nameArgs"] = nameArgs.map((value) => (value).toJson()).toList();
}
if (numberArgs != null) {
_json["numberArgs"] = numberArgs.map((value) => (value).toJson()).toList();
}
if (queryString != null) {
_json["queryString"] = queryString;
}
return _json;
}
}
/** Not documented yet. */
class GqlQueryArg {
/** Not documented yet. */
core.String cursor;
core.List<core.int> get cursorAsBytes {
return crypto.CryptoUtils.base64StringToBytes(cursor);
}
void set cursorAsBytes(core.List<core.int> _bytes) {
cursor = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
/**
* Must match regex "[A-Za-z_$][A-Za-z_$0-9]*". Must not match regex "__.*__".
* Must not be "".
*/
core.String name;
/** Not documented yet. */
Value value;
GqlQueryArg();
GqlQueryArg.fromJson(core.Map _json) {
if (_json.containsKey("cursor")) {
cursor = _json["cursor"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
if (_json.containsKey("value")) {
value = new Value.fromJson(_json["value"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (cursor != null) {
_json["cursor"] = cursor;
}
if (name != null) {
_json["name"] = name;
}
if (value != null) {
_json["value"] = (value).toJson();
}
return _json;
}
}
/** Not documented yet. */
class Key {
/**
* Entities are partitioned into subsets, currently identified by a dataset
* (usually implicitly specified by the project) and namespace ID. Queries are
* scoped to a single partition.
*/
PartitionId partitionId;
/**
* The entity path. An entity path consists of one or more elements composed
* of a kind and a string or numerical identifier, which identify entities.
* The first element identifies a root entity, the second element identifies a
* child of the root entity, the third element a child of the second entity,
* and so forth. The entities identified by all prefixes of the path are
* called the element's ancestors. An entity path is always fully complete:
* ALL of the entity's ancestors are required to be in the path along with the
* entity identifier itself. The only exception is that in some documented
* cases, the identifier in the last path element (for the entity) itself may
* be omitted. A path can never be empty. The path can have at most 100
* elements.
*/
core.List<KeyPathElement> path;
Key();
Key.fromJson(core.Map _json) {
if (_json.containsKey("partitionId")) {
partitionId = new PartitionId.fromJson(_json["partitionId"]);
}
if (_json.containsKey("path")) {
path = _json["path"].map((value) => new KeyPathElement.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (partitionId != null) {
_json["partitionId"] = (partitionId).toJson();
}
if (path != null) {
_json["path"] = path.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/**
* A (kind, ID/name) pair used to construct a key path.
*
* At most one of name or ID may be set. If either is set, the element is
* complete. If neither is set, the element is incomplete.
*/
class KeyPathElement {
/**
* The ID of the entity. Never equal to zero. Values less than zero are
* discouraged and will not be supported in the future.
*/
core.String id;
/**
* The kind of the entity. A kind matching regex "__.*__" is
* reserved/read-only. A kind must not contain more than 500 characters.
* Cannot be "".
*/
core.String kind;
/**
* The name of the entity. A name matching regex "__.*__" is
* reserved/read-only. A name must not be more than 500 characters. Cannot be
* "".
*/
core.String name;
KeyPathElement();
KeyPathElement.fromJson(core.Map _json) {
if (_json.containsKey("id")) {
id = _json["id"];
}
if (_json.containsKey("kind")) {
kind = _json["kind"];
}
if (_json.containsKey("name")) {
name = _json["name"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (id != null) {
_json["id"] = id;
}
if (kind != null) {
_json["kind"] = kind;
}
if (name != null) {
_json["name"] = name;
}
return _json;
}
}
/** Not documented yet. */
class KindExpression {
/** The name of the kind. */
core.String name;
KindExpression();
KindExpression.fromJson(core.Map _json) {
if (_json.containsKey("name")) {
name = _json["name"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (name != null) {
_json["name"] = name;
}
return _json;
}
}
/** Not documented yet. */
class LookupRequest {
/** Keys of entities to look up from the datastore. */
core.List<Key> keys;
/** Options for this lookup request. Optional. */
ReadOptions readOptions;
LookupRequest();
LookupRequest.fromJson(core.Map _json) {
if (_json.containsKey("keys")) {
keys = _json["keys"].map((value) => new Key.fromJson(value)).toList();
}
if (_json.containsKey("readOptions")) {
readOptions = new ReadOptions.fromJson(_json["readOptions"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (keys != null) {
_json["keys"] = keys.map((value) => (value).toJson()).toList();
}
if (readOptions != null) {
_json["readOptions"] = (readOptions).toJson();
}
return _json;
}
}
/** Not documented yet. */
class LookupResponse {
/** A list of keys that were not looked up due to resource constraints. */
core.List<Key> deferred;
/** Entities found. */
core.List<EntityResult> found;
/** Not documented yet. */
ResponseHeader header;
/** Entities not found, with only the key populated. */
core.List<EntityResult> missing;
LookupResponse();
LookupResponse.fromJson(core.Map _json) {
if (_json.containsKey("deferred")) {
deferred = _json["deferred"].map((value) => new Key.fromJson(value)).toList();
}
if (_json.containsKey("found")) {
found = _json["found"].map((value) => new EntityResult.fromJson(value)).toList();
}
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
if (_json.containsKey("missing")) {
missing = _json["missing"].map((value) => new EntityResult.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (deferred != null) {
_json["deferred"] = deferred.map((value) => (value).toJson()).toList();
}
if (found != null) {
_json["found"] = found.map((value) => (value).toJson()).toList();
}
if (header != null) {
_json["header"] = (header).toJson();
}
if (missing != null) {
_json["missing"] = missing.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/** Not documented yet. */
class Mutation {
/**
* Keys of entities to delete. Each key must have a complete key path and must
* not be reserved/read-only.
*/
core.List<Key> delete;
/** Ignore a user specified read-only period. Optional. */
core.bool force;
/**
* Entities to insert. Each inserted entity's key must have a complete path
* and must not be reserved/read-only.
*/
core.List<Entity> insert;
/**
* Insert entities with a newly allocated ID. Each inserted entity's key must
* omit the final identifier in its path and must not be reserved/read-only.
*/
core.List<Entity> insertAutoId;
/**
* Entities to update. Each updated entity's key must have a complete path and
* must not be reserved/read-only.
*/
core.List<Entity> update;
/**
* Entities to upsert. Each upserted entity's key must have a complete path
* and must not be reserved/read-only.
*/
core.List<Entity> upsert;
Mutation();
Mutation.fromJson(core.Map _json) {
if (_json.containsKey("delete")) {
delete = _json["delete"].map((value) => new Key.fromJson(value)).toList();
}
if (_json.containsKey("force")) {
force = _json["force"];
}
if (_json.containsKey("insert")) {
insert = _json["insert"].map((value) => new Entity.fromJson(value)).toList();
}
if (_json.containsKey("insertAutoId")) {
insertAutoId = _json["insertAutoId"].map((value) => new Entity.fromJson(value)).toList();
}
if (_json.containsKey("update")) {
update = _json["update"].map((value) => new Entity.fromJson(value)).toList();
}
if (_json.containsKey("upsert")) {
upsert = _json["upsert"].map((value) => new Entity.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (delete != null) {
_json["delete"] = delete.map((value) => (value).toJson()).toList();
}
if (force != null) {
_json["force"] = force;
}
if (insert != null) {
_json["insert"] = insert.map((value) => (value).toJson()).toList();
}
if (insertAutoId != null) {
_json["insertAutoId"] = insertAutoId.map((value) => (value).toJson()).toList();
}
if (update != null) {
_json["update"] = update.map((value) => (value).toJson()).toList();
}
if (upsert != null) {
_json["upsert"] = upsert.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/** Not documented yet. */
class MutationResult {
/** Number of index writes. */
core.int indexUpdates;
/**
* Keys for insertAutoId entities. One per entity from the request, in the
* same order.
*/
core.List<Key> insertAutoIdKeys;
MutationResult();
MutationResult.fromJson(core.Map _json) {
if (_json.containsKey("indexUpdates")) {
indexUpdates = _json["indexUpdates"];
}
if (_json.containsKey("insertAutoIdKeys")) {
insertAutoIdKeys = _json["insertAutoIdKeys"].map((value) => new Key.fromJson(value)).toList();
}
}
core.Map toJson() {
var _json = new core.Map();
if (indexUpdates != null) {
_json["indexUpdates"] = indexUpdates;
}
if (insertAutoIdKeys != null) {
_json["insertAutoIdKeys"] = insertAutoIdKeys.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/** Not documented yet. */
class PartitionId {
/** The dataset ID. */
core.String datasetId;
/** The namespace. */
core.String namespace;
PartitionId();
PartitionId.fromJson(core.Map _json) {
if (_json.containsKey("datasetId")) {
datasetId = _json["datasetId"];
}
if (_json.containsKey("namespace")) {
namespace = _json["namespace"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (datasetId != null) {
_json["datasetId"] = datasetId;
}
if (namespace != null) {
_json["namespace"] = namespace;
}
return _json;
}
}
/** Not documented yet. */
class Property {
/** A blob key value. */
core.String blobKeyValue;
/** A blob value. May be a maximum of 1,000,000 bytes. */
core.String blobValue;
core.List<core.int> get blobValueAsBytes {
return crypto.CryptoUtils.base64StringToBytes(blobValue);
}
void set blobValueAsBytes(core.List<core.int> _bytes) {
blobValue = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
/** A boolean value. */
core.bool booleanValue;
/** A timestamp value. */
core.DateTime dateTimeValue;
/** A double value. */
core.double doubleValue;
/**
* An entity value. May have no key. May have a key with an incomplete key
* path. May have a reserved/read-only key.
*/
Entity entityValue;
/**
* If the value should be indexed.
*
* The indexed property may be set for a null value. When indexed is true,
* stringValue is limited to 500 characters and the blob value is limited to
* 500 bytes. Input values by default have indexed set to true; however, you
* can explicitly set indexed to true if you want. (An output value never has
* indexed explicitly set to true.) If a value is itself an entity, it cannot
* have indexed set to true.
*/
core.bool indexed;
/** An integer value. */
core.String integerValue;
/** A key value. */
Key keyValue;
/**
* A list value. Cannot contain another list value. Cannot also have a meaning
* and indexing set.
*/
core.List<Value> listValue;
/** The meaning field is reserved and should not be used. */
core.int meaning;
/** A UTF-8 encoded string value. */
core.String stringValue;
Property();
Property.fromJson(core.Map _json) {
if (_json.containsKey("blobKeyValue")) {
blobKeyValue = _json["blobKeyValue"];
}
if (_json.containsKey("blobValue")) {
blobValue = _json["blobValue"];
}
if (_json.containsKey("booleanValue")) {
booleanValue = _json["booleanValue"];
}
if (_json.containsKey("dateTimeValue")) {
dateTimeValue = core.DateTime.parse(_json["dateTimeValue"]);
}
if (_json.containsKey("doubleValue")) {
doubleValue = _json["doubleValue"];
}
if (_json.containsKey("entityValue")) {
entityValue = new Entity.fromJson(_json["entityValue"]);
}
if (_json.containsKey("indexed")) {
indexed = _json["indexed"];
}
if (_json.containsKey("integerValue")) {
integerValue = _json["integerValue"];
}
if (_json.containsKey("keyValue")) {
keyValue = new Key.fromJson(_json["keyValue"]);
}
if (_json.containsKey("listValue")) {
listValue = _json["listValue"].map((value) => new Value.fromJson(value)).toList();
}
if (_json.containsKey("meaning")) {
meaning = _json["meaning"];
}
if (_json.containsKey("stringValue")) {
stringValue = _json["stringValue"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (blobKeyValue != null) {
_json["blobKeyValue"] = blobKeyValue;
}
if (blobValue != null) {
_json["blobValue"] = blobValue;
}
if (booleanValue != null) {
_json["booleanValue"] = booleanValue;
}
if (dateTimeValue != null) {
_json["dateTimeValue"] = (dateTimeValue).toIso8601String();
}
if (doubleValue != null) {
_json["doubleValue"] = doubleValue;
}
if (entityValue != null) {
_json["entityValue"] = (entityValue).toJson();
}
if (indexed != null) {
_json["indexed"] = indexed;
}
if (integerValue != null) {
_json["integerValue"] = integerValue;
}
if (keyValue != null) {
_json["keyValue"] = (keyValue).toJson();
}
if (listValue != null) {
_json["listValue"] = listValue.map((value) => (value).toJson()).toList();
}
if (meaning != null) {
_json["meaning"] = meaning;
}
if (stringValue != null) {
_json["stringValue"] = stringValue;
}
return _json;
}
}
/** Not documented yet. */
class PropertyExpression {
/**
* The aggregation function to apply to the property. Optional. Can only be
* used when grouping by at least one property. Must then be set on all
* properties in the projection that are not being grouped by. Aggregation
* functions: first selects the first result as determined by the query's
* order.
* Possible string values are:
* - "FIRST"
*/
core.String aggregationFunction;
/** The property to project. */
PropertyReference property;
PropertyExpression();
PropertyExpression.fromJson(core.Map _json) {
if (_json.containsKey("aggregationFunction")) {
aggregationFunction = _json["aggregationFunction"];
}
if (_json.containsKey("property")) {
property = new PropertyReference.fromJson(_json["property"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (aggregationFunction != null) {
_json["aggregationFunction"] = aggregationFunction;
}
if (property != null) {
_json["property"] = (property).toJson();
}
return _json;
}
}
/** Not documented yet. */
class PropertyFilter {
/**
* The operator to filter by. One of lessThan, lessThanOrEqual, greaterThan,
* greaterThanOrEqual, equal, or hasAncestor.
* Possible string values are:
* - "EQUAL"
* - "GREATER_THAN"
* - "GREATER_THAN_OR_EQUAL"
* - "HAS_ANCESTOR"
* - "LESS_THAN"
* - "LESS_THAN_OR_EQUAL"
*/
core.String operator;
/** The property to filter by. */
PropertyReference property;
/** The value to compare the property to. */
Value value;
PropertyFilter();
PropertyFilter.fromJson(core.Map _json) {
if (_json.containsKey("operator")) {
operator = _json["operator"];
}
if (_json.containsKey("property")) {
property = new PropertyReference.fromJson(_json["property"]);
}
if (_json.containsKey("value")) {
value = new Value.fromJson(_json["value"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (operator != null) {
_json["operator"] = operator;
}
if (property != null) {
_json["property"] = (property).toJson();
}
if (value != null) {
_json["value"] = (value).toJson();
}
return _json;
}
}
/** Not documented yet. */
class PropertyOrder {
/**
* The direction to order by. One of ascending or descending. Optional,
* defaults to ascending.
* Possible string values are:
* - "ASCENDING"
* - "DESCENDING"
*/
core.String direction;
/** The property to order by. */
PropertyReference property;
PropertyOrder();
PropertyOrder.fromJson(core.Map _json) {
if (_json.containsKey("direction")) {
direction = _json["direction"];
}
if (_json.containsKey("property")) {
property = new PropertyReference.fromJson(_json["property"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (direction != null) {
_json["direction"] = direction;
}
if (property != null) {
_json["property"] = (property).toJson();
}
return _json;
}
}
/** Not documented yet. */
class PropertyReference {
/** The name of the property. */
core.String name;
PropertyReference();
PropertyReference.fromJson(core.Map _json) {
if (_json.containsKey("name")) {
name = _json["name"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (name != null) {
_json["name"] = name;
}
return _json;
}
}
/** Not documented yet. */
class Query {
/**
* An ending point for the query results. Optional. Query cursors are returned
* in query result batches.
*/
core.String endCursor;
core.List<core.int> get endCursorAsBytes {
return crypto.CryptoUtils.base64StringToBytes(endCursor);
}
void set endCursorAsBytes(core.List<core.int> _bytes) {
endCursor = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
/** The filter to apply (optional). */
Filter filter;
/**
* The properties to group by (if empty, no grouping is applied to the result
* set).
*/
core.List<PropertyReference> groupBy;
/** The kinds to query (if empty, returns entities from all kinds). */
core.List<KindExpression> kinds;
/**
* The maximum number of results to return. Applies after all other
* constraints. Optional.
*/
core.int limit;
/**
* The number of results to skip. Applies before limit, but after all other
* constraints (optional, defaults to 0).
*/
core.int offset;
/**
* The order to apply to the query results (if empty, order is unspecified).
*/
core.List<PropertyOrder> order;
/** The projection to return. If not set the entire entity is returned. */
core.List<PropertyExpression> projection;
/**
* A starting point for the query results. Optional. Query cursors are
* returned in query result batches.
*/
core.String startCursor;
core.List<core.int> get startCursorAsBytes {
return crypto.CryptoUtils.base64StringToBytes(startCursor);
}
void set startCursorAsBytes(core.List<core.int> _bytes) {
startCursor = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
Query();
Query.fromJson(core.Map _json) {
if (_json.containsKey("endCursor")) {
endCursor = _json["endCursor"];
}
if (_json.containsKey("filter")) {
filter = new Filter.fromJson(_json["filter"]);
}
if (_json.containsKey("groupBy")) {
groupBy = _json["groupBy"].map((value) => new PropertyReference.fromJson(value)).toList();
}
if (_json.containsKey("kinds")) {
kinds = _json["kinds"].map((value) => new KindExpression.fromJson(value)).toList();
}
if (_json.containsKey("limit")) {
limit = _json["limit"];
}
if (_json.containsKey("offset")) {
offset = _json["offset"];
}
if (_json.containsKey("order")) {
order = _json["order"].map((value) => new PropertyOrder.fromJson(value)).toList();
}
if (_json.containsKey("projection")) {
projection = _json["projection"].map((value) => new PropertyExpression.fromJson(value)).toList();
}
if (_json.containsKey("startCursor")) {
startCursor = _json["startCursor"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (endCursor != null) {
_json["endCursor"] = endCursor;
}
if (filter != null) {
_json["filter"] = (filter).toJson();
}
if (groupBy != null) {
_json["groupBy"] = groupBy.map((value) => (value).toJson()).toList();
}
if (kinds != null) {
_json["kinds"] = kinds.map((value) => (value).toJson()).toList();
}
if (limit != null) {
_json["limit"] = limit;
}
if (offset != null) {
_json["offset"] = offset;
}
if (order != null) {
_json["order"] = order.map((value) => (value).toJson()).toList();
}
if (projection != null) {
_json["projection"] = projection.map((value) => (value).toJson()).toList();
}
if (startCursor != null) {
_json["startCursor"] = startCursor;
}
return _json;
}
}
/** Not documented yet. */
class QueryResultBatch {
/**
* A cursor that points to the position after the last result in the batch.
* May be absent.
*/
core.String endCursor;
core.List<core.int> get endCursorAsBytes {
return crypto.CryptoUtils.base64StringToBytes(endCursor);
}
void set endCursorAsBytes(core.List<core.int> _bytes) {
endCursor = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
/**
* The result type for every entity in entityResults. full for full entities,
* projection for entities with only projected properties, keyOnly for
* entities with only a key.
* Possible string values are:
* - "FULL"
* - "KEY_ONLY"
* - "PROJECTION"
*/
core.String entityResultType;
/** The results for this batch. */
core.List<EntityResult> entityResults;
/**
* The state of the query after the current batch. One of notFinished,
* moreResultsAfterLimit, noMoreResults.
* Possible string values are:
* - "MORE_RESULTS_AFTER_LIMIT"
* - "NOT_FINISHED"
* - "NO_MORE_RESULTS"
*/
core.String moreResults;
/** The number of results skipped because of Query.offset. */
core.int skippedResults;
QueryResultBatch();
QueryResultBatch.fromJson(core.Map _json) {
if (_json.containsKey("endCursor")) {
endCursor = _json["endCursor"];
}
if (_json.containsKey("entityResultType")) {
entityResultType = _json["entityResultType"];
}
if (_json.containsKey("entityResults")) {
entityResults = _json["entityResults"].map((value) => new EntityResult.fromJson(value)).toList();
}
if (_json.containsKey("moreResults")) {
moreResults = _json["moreResults"];
}
if (_json.containsKey("skippedResults")) {
skippedResults = _json["skippedResults"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (endCursor != null) {
_json["endCursor"] = endCursor;
}
if (entityResultType != null) {
_json["entityResultType"] = entityResultType;
}
if (entityResults != null) {
_json["entityResults"] = entityResults.map((value) => (value).toJson()).toList();
}
if (moreResults != null) {
_json["moreResults"] = moreResults;
}
if (skippedResults != null) {
_json["skippedResults"] = skippedResults;
}
return _json;
}
}
/** Not documented yet. */
class ReadOptions {
/**
* The read consistency to use. One of default, strong, or eventual. Cannot be
* set when transaction is set. Lookup and ancestor queries default to strong,
* global queries default to eventual and cannot be set to strong. Optional.
* Default is default.
* Possible string values are:
* - "DEFAULT"
* - "EVENTUAL"
* - "STRONG"
*/
core.String readConsistency;
/** The transaction to use. Optional. */
core.String transaction;
core.List<core.int> get transactionAsBytes {
return crypto.CryptoUtils.base64StringToBytes(transaction);
}
void set transactionAsBytes(core.List<core.int> _bytes) {
transaction = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
ReadOptions();
ReadOptions.fromJson(core.Map _json) {
if (_json.containsKey("readConsistency")) {
readConsistency = _json["readConsistency"];
}
if (_json.containsKey("transaction")) {
transaction = _json["transaction"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (readConsistency != null) {
_json["readConsistency"] = readConsistency;
}
if (transaction != null) {
_json["transaction"] = transaction;
}
return _json;
}
}
/** Not documented yet. */
class ResponseHeader {
/**
* Identifies what kind of resource this is. Value: the fixed string
* "datastore#responseHeader".
*/
core.String kind;
ResponseHeader();
ResponseHeader.fromJson(core.Map _json) {
if (_json.containsKey("kind")) {
kind = _json["kind"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (kind != null) {
_json["kind"] = kind;
}
return _json;
}
}
/** Not documented yet. */
class RollbackRequest {
/** The transaction identifier, returned by a call to beginTransaction. */
core.String transaction;
core.List<core.int> get transactionAsBytes {
return crypto.CryptoUtils.base64StringToBytes(transaction);
}
void set transactionAsBytes(core.List<core.int> _bytes) {
transaction = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
RollbackRequest();
RollbackRequest.fromJson(core.Map _json) {
if (_json.containsKey("transaction")) {
transaction = _json["transaction"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (transaction != null) {
_json["transaction"] = transaction;
}
return _json;
}
}
/** Not documented yet. */
class RollbackResponse {
/** Not documented yet. */
ResponseHeader header;
RollbackResponse();
RollbackResponse.fromJson(core.Map _json) {
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (header != null) {
_json["header"] = (header).toJson();
}
return _json;
}
}
/** Not documented yet. */
class RunQueryRequest {
/**
* The GQL query to run. Either this field or field query must be set, but not
* both.
*/
GqlQuery gqlQuery;
/**
* Entities are partitioned into subsets, identified by a dataset (usually
* implicitly specified by the project) and namespace ID. Queries are scoped
* to a single partition. This partition ID is normalized with the standard
* default context partition ID, but all other partition IDs in
* RunQueryRequest are normalized with this partition ID as the context
* partition ID.
*/
PartitionId partitionId;
/**
* The query to run. Either this field or field gql_query must be set, but not
* both.
*/
Query query;
/** The options for this query. */
ReadOptions readOptions;
RunQueryRequest();
RunQueryRequest.fromJson(core.Map _json) {
if (_json.containsKey("gqlQuery")) {
gqlQuery = new GqlQuery.fromJson(_json["gqlQuery"]);
}
if (_json.containsKey("partitionId")) {
partitionId = new PartitionId.fromJson(_json["partitionId"]);
}
if (_json.containsKey("query")) {
query = new Query.fromJson(_json["query"]);
}
if (_json.containsKey("readOptions")) {
readOptions = new ReadOptions.fromJson(_json["readOptions"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (gqlQuery != null) {
_json["gqlQuery"] = (gqlQuery).toJson();
}
if (partitionId != null) {
_json["partitionId"] = (partitionId).toJson();
}
if (query != null) {
_json["query"] = (query).toJson();
}
if (readOptions != null) {
_json["readOptions"] = (readOptions).toJson();
}
return _json;
}
}
/** Not documented yet. */
class RunQueryResponse {
/** A batch of query results (always present). */
QueryResultBatch batch;
/** Not documented yet. */
ResponseHeader header;
RunQueryResponse();
RunQueryResponse.fromJson(core.Map _json) {
if (_json.containsKey("batch")) {
batch = new QueryResultBatch.fromJson(_json["batch"]);
}
if (_json.containsKey("header")) {
header = new ResponseHeader.fromJson(_json["header"]);
}
}
core.Map toJson() {
var _json = new core.Map();
if (batch != null) {
_json["batch"] = (batch).toJson();
}
if (header != null) {
_json["header"] = (header).toJson();
}
return _json;
}
}
/** Not documented yet. */
class Value {
/** A blob key value. */
core.String blobKeyValue;
/** A blob value. May be a maximum of 1,000,000 bytes. */
core.String blobValue;
core.List<core.int> get blobValueAsBytes {
return crypto.CryptoUtils.base64StringToBytes(blobValue);
}
void set blobValueAsBytes(core.List<core.int> _bytes) {
blobValue = crypto.CryptoUtils.bytesToBase64(_bytes, urlSafe: true);
}
/** A boolean value. */
core.bool booleanValue;
/** A timestamp value. */
core.DateTime dateTimeValue;
/** A double value. */
core.double doubleValue;
/**
* An entity value. May have no key. May have a key with an incomplete key
* path. May have a reserved/read-only key.
*/
Entity entityValue;
/**
* If the value should be indexed.
*
* The indexed property may be set for a null value. When indexed is true,
* stringValue is limited to 500 characters and the blob value is limited to
* 500 bytes. Input values by default have indexed set to true; however, you
* can explicitly set indexed to true if you want. (An output value never has
* indexed explicitly set to true.) If a value is itself an entity, it cannot
* have indexed set to true.
*/
core.bool indexed;
/** An integer value. */
core.String integerValue;
/** A key value. */
Key keyValue;
/**
* A list value. Cannot contain another list value. Cannot also have a meaning
* and indexing set.
*/
core.List<Value> listValue;
/** The meaning field is reserved and should not be used. */
core.int meaning;
/** A UTF-8 encoded string value. */
core.String stringValue;
Value();
Value.fromJson(core.Map _json) {
if (_json.containsKey("blobKeyValue")) {
blobKeyValue = _json["blobKeyValue"];
}
if (_json.containsKey("blobValue")) {
blobValue = _json["blobValue"];
}
if (_json.containsKey("booleanValue")) {
booleanValue = _json["booleanValue"];
}
if (_json.containsKey("dateTimeValue")) {
dateTimeValue = core.DateTime.parse(_json["dateTimeValue"]);
}
if (_json.containsKey("doubleValue")) {
doubleValue = _json["doubleValue"];
}
if (_json.containsKey("entityValue")) {
entityValue = new Entity.fromJson(_json["entityValue"]);
}
if (_json.containsKey("indexed")) {
indexed = _json["indexed"];
}
if (_json.containsKey("integerValue")) {
integerValue = _json["integerValue"];
}
if (_json.containsKey("keyValue")) {
keyValue = new Key.fromJson(_json["keyValue"]);
}
if (_json.containsKey("listValue")) {
listValue = _json["listValue"].map((value) => new Value.fromJson(value)).toList();
}
if (_json.containsKey("meaning")) {
meaning = _json["meaning"];
}
if (_json.containsKey("stringValue")) {
stringValue = _json["stringValue"];
}
}
core.Map toJson() {
var _json = new core.Map();
if (blobKeyValue != null) {
_json["blobKeyValue"] = blobKeyValue;
}
if (blobValue != null) {
_json["blobValue"] = blobValue;
}
if (booleanValue != null) {
_json["booleanValue"] = booleanValue;
}
if (dateTimeValue != null) {
_json["dateTimeValue"] = (dateTimeValue).toIso8601String();
}
if (doubleValue != null) {
_json["doubleValue"] = doubleValue;
}
if (entityValue != null) {
_json["entityValue"] = (entityValue).toJson();
}
if (indexed != null) {
_json["indexed"] = indexed;
}
if (integerValue != null) {
_json["integerValue"] = integerValue;
}
if (keyValue != null) {
_json["keyValue"] = (keyValue).toJson();
}
if (listValue != null) {
_json["listValue"] = listValue.map((value) => (value).toJson()).toList();
}
if (meaning != null) {
_json["meaning"] = meaning;
}
if (stringValue != null) {
_json["stringValue"] = stringValue;
}
return _json;
}
}