Index: generated/googleapis/lib/streetviewpublish/v1.dart |
diff --git a/generated/googleapis/lib/streetviewpublish/v1.dart b/generated/googleapis/lib/streetviewpublish/v1.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ea6b58e37315ebc73cdd98dcdf61f895270c8441 |
--- /dev/null |
+++ b/generated/googleapis/lib/streetviewpublish/v1.dart |
@@ -0,0 +1,1409 @@ |
+// This is a generated file (see the discoveryapis_generator project). |
+ |
+library googleapis.streetviewpublish.v1; |
+ |
+import 'dart:core' as core; |
+import 'dart:async' as async; |
+import 'dart:convert' as convert; |
+ |
+import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; |
+import 'package:http/http.dart' as http; |
+ |
+export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show |
+ ApiRequestError, DetailedApiRequestError; |
+ |
+const core.String USER_AGENT = 'dart-api-client streetviewpublish/v1'; |
+ |
+/** |
+ * Publishes 360 photos to Google Maps, along with position, orientation, and |
+ * connectivity metadata. Apps can offer an interface for positioning, |
+ * connecting, and uploading user-generated Street View images. |
+ */ |
+class StreetviewpublishApi { |
+ /** Publish and manage your 360 photos on Google Street View */ |
+ static const StreetviewpublishScope = "https://www.googleapis.com/auth/streetviewpublish"; |
+ |
+ |
+ final commons.ApiRequester _requester; |
+ |
+ PhotoResourceApi get photo => new PhotoResourceApi(_requester); |
+ PhotosResourceApi get photos => new PhotosResourceApi(_requester); |
+ |
+ StreetviewpublishApi(http.Client client, {core.String rootUrl: "https://streetviewpublish.googleapis.com/", core.String servicePath: ""}) : |
+ _requester = new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT); |
+} |
+ |
+ |
+class PhotoResourceApi { |
+ final commons.ApiRequester _requester; |
+ |
+ PhotoResourceApi(commons.ApiRequester client) : |
+ _requester = client; |
+ |
+ /** |
+ * After the client finishes uploading the photo with the returned |
+ * UploadRef, |
+ * CreatePhoto |
+ * publishes the uploaded Photo to |
+ * Street View on Google Maps. |
+ * |
+ * This method returns the following error codes: |
+ * |
+ * * google.rpc.Code.INVALID_ARGUMENT if the request is malformed. |
+ * * google.rpc.Code.NOT_FOUND if the upload reference does not exist. |
+ * * google.rpc.Code.RESOURCE_EXHAUSTED if the account has reached the |
+ * storage limit. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * Completes with a [Photo]. |
+ * |
+ * 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<Photo> create(Photo request) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ |
+ _url = 'v1/photo'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Photo.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Deletes a Photo and its metadata. |
+ * |
+ * This method returns the following error codes: |
+ * |
+ * * google.rpc.Code.PERMISSION_DENIED if the requesting user did not |
+ * create the requested photo. |
+ * * google.rpc.Code.NOT_FOUND if the photo ID does not exist. |
+ * |
+ * Request parameters: |
+ * |
+ * [photoId] - Required. ID of the Photo. |
+ * |
+ * 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 photoId) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (photoId == null) { |
+ throw new core.ArgumentError("Parameter photoId is required."); |
+ } |
+ |
+ _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$photoId'); |
+ |
+ var _response = _requester.request(_url, |
+ "DELETE", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Empty.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Gets the metadata of the specified |
+ * Photo. |
+ * |
+ * This method returns the following error codes: |
+ * |
+ * * google.rpc.Code.PERMISSION_DENIED if the requesting user did not |
+ * create the requested Photo. |
+ * * google.rpc.Code.NOT_FOUND if the requested |
+ * Photo does not exist. |
+ * |
+ * Request parameters: |
+ * |
+ * [photoId] - Required. ID of the Photo. |
+ * |
+ * [view] - Specifies if a download URL for the photo bytes should be returned |
+ * in the |
+ * Photo response. |
+ * Possible string values are: |
+ * - "BASIC" : A BASIC. |
+ * - "INCLUDE_DOWNLOAD_URL" : A INCLUDE_DOWNLOAD_URL. |
+ * |
+ * Completes with a [Photo]. |
+ * |
+ * 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<Photo> get(core.String photoId, {core.String view}) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (photoId == null) { |
+ throw new core.ArgumentError("Parameter photoId is required."); |
+ } |
+ if (view != null) { |
+ _queryParams["view"] = [view]; |
+ } |
+ |
+ _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$photoId'); |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Photo.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Creates an upload session to start uploading photo bytes. The upload URL of |
+ * the returned UploadRef is used to |
+ * upload the bytes for the Photo. |
+ * |
+ * In addition to the photo requirements shown in |
+ * https://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, |
+ * the photo must also meet the following requirements: |
+ * |
+ * * Photo Sphere XMP metadata must be included in the photo medadata. See |
+ * https://developers.google.com/streetview/spherical-metadata for the |
+ * required fields. |
+ * * The pixel size of the photo must meet the size requirements listed in |
+ * https://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, and |
+ * the photo must be a full 360 horizontally. |
+ * |
+ * After the upload is complete, the |
+ * UploadRef is used with |
+ * CreatePhoto |
+ * to create the Photo object entry. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * Completes with a [UploadRef]. |
+ * |
+ * 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<UploadRef> startUpload(Empty request) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ |
+ _url = 'v1/photo:startUpload'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new UploadRef.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Updates the metadata of a Photo, such |
+ * as pose, place association, connections, etc. Changing the pixels of a |
+ * photo is not supported. |
+ * |
+ * This method returns the following error codes: |
+ * |
+ * * google.rpc.Code.PERMISSION_DENIED if the requesting user did not |
+ * create the requested photo. |
+ * * google.rpc.Code.INVALID_ARGUMENT if the request is malformed. |
+ * * google.rpc.Code.NOT_FOUND if the requested photo does not exist. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * [id] - Required. A base64 encoded identifier. |
+ * |
+ * [updateMask] - Mask that identifies fields on the photo metadata to update. |
+ * If not present, the old Photo metadata will be entirely replaced with the |
+ * new Photo metadata in this request. The update fails if invalid fields are |
+ * specified. Multiple fields can be specified in a comma-delimited list. |
+ * |
+ * The following fields are valid: |
+ * |
+ * * `pose.heading` |
+ * * `pose.latlngpair` |
+ * * `pose.pitch` |
+ * * `pose.roll` |
+ * * `pose.level` |
+ * * `pose.altitude` |
+ * * `connections` |
+ * * `places` |
+ * |
+ * |
+ * <aside class="note"><b>Note:</b> Repeated fields in |
+ * updateMask |
+ * mean the entire set of repeated values will be replaced with the new |
+ * contents. For example, if |
+ * updateMask |
+ * contains `connections` and |
+ * google.streetview.publish.v1.UpdatePhotoRequest.photo.connections is |
+ * empty, all connections will be removed.</aside> |
+ * |
+ * Completes with a [Photo]. |
+ * |
+ * 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<Photo> update(Photo request, core.String id, {core.String updateMask}) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ if (id == null) { |
+ throw new core.ArgumentError("Parameter id is required."); |
+ } |
+ if (updateMask != null) { |
+ _queryParams["updateMask"] = [updateMask]; |
+ } |
+ |
+ _url = 'v1/photo/' + commons.Escaper.ecapeVariable('$id'); |
+ |
+ var _response = _requester.request(_url, |
+ "PUT", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new Photo.fromJson(data)); |
+ } |
+ |
+} |
+ |
+ |
+class PhotosResourceApi { |
+ final commons.ApiRequester _requester; |
+ |
+ PhotosResourceApi(commons.ApiRequester client) : |
+ _requester = client; |
+ |
+ /** |
+ * Deletes a list of Photos and their metadata. |
+ * |
+ * Note that if |
+ * BatchDeletePhotos |
+ * fails, either critical fields are missing or there was an authentication |
+ * error. Even if |
+ * BatchDeletePhotos |
+ * succeeds, there may have been failures for single photos in the batch. |
+ * These failures will be specified in each |
+ * PhotoResponse.status |
+ * in |
+ * BatchDeletePhotosResponse.results. |
+ * See |
+ * DeletePhoto |
+ * for specific failures that can occur per photo. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * Completes with a [BatchDeletePhotosResponse]. |
+ * |
+ * 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<BatchDeletePhotosResponse> batchDelete(BatchDeletePhotosRequest request) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ |
+ _url = 'v1/photos:batchDelete'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new BatchDeletePhotosResponse.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Gets the metadata of the specified |
+ * Photo batch. |
+ * |
+ * Note that if |
+ * BatchGetPhotos |
+ * fails, either critical fields are missing or there was an authentication |
+ * error. Even if |
+ * BatchGetPhotos |
+ * succeeds, there may have been failures for single photos in the batch. |
+ * These failures will be specified in each |
+ * PhotoResponse.status |
+ * in |
+ * BatchGetPhotosResponse.results. |
+ * See |
+ * GetPhoto |
+ * for specific failures that can occur per photo. |
+ * |
+ * Request parameters: |
+ * |
+ * [view] - Specifies if a download URL for the photo bytes should be returned |
+ * in the |
+ * Photo response. |
+ * Possible string values are: |
+ * - "BASIC" : A BASIC. |
+ * - "INCLUDE_DOWNLOAD_URL" : A INCLUDE_DOWNLOAD_URL. |
+ * |
+ * [photoIds] - Required. IDs of the Photos. For HTTP |
+ * GET requests, the URL query parameter should be |
+ * `photoIds=<id1>&photoIds=<id2>&...`. |
+ * |
+ * Completes with a [BatchGetPhotosResponse]. |
+ * |
+ * 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<BatchGetPhotosResponse> batchGet({core.String view, core.List<core.String> photoIds}) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (view != null) { |
+ _queryParams["view"] = [view]; |
+ } |
+ if (photoIds != null) { |
+ _queryParams["photoIds"] = photoIds; |
+ } |
+ |
+ _url = 'v1/photos:batchGet'; |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new BatchGetPhotosResponse.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Updates the metadata of Photos, such |
+ * as pose, place association, connections, etc. Changing the pixels of photos |
+ * is not supported. |
+ * |
+ * Note that if |
+ * BatchUpdatePhotos |
+ * fails, either critical fields are missing or there was an authentication |
+ * error. Even if |
+ * BatchUpdatePhotos |
+ * succeeds, there may have been failures for single photos in the batch. |
+ * These failures will be specified in each |
+ * PhotoResponse.status |
+ * in |
+ * BatchUpdatePhotosResponse.results. |
+ * See |
+ * UpdatePhoto |
+ * for specific failures that can occur per photo. |
+ * |
+ * [request] - The metadata request object. |
+ * |
+ * Request parameters: |
+ * |
+ * Completes with a [BatchUpdatePhotosResponse]. |
+ * |
+ * 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<BatchUpdatePhotosResponse> batchUpdate(BatchUpdatePhotosRequest request) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (request != null) { |
+ _body = convert.JSON.encode((request).toJson()); |
+ } |
+ |
+ _url = 'v1/photos:batchUpdate'; |
+ |
+ var _response = _requester.request(_url, |
+ "POST", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new BatchUpdatePhotosResponse.fromJson(data)); |
+ } |
+ |
+ /** |
+ * Lists all the Photos that belong to the user. |
+ * |
+ * Request parameters: |
+ * |
+ * [pageToken] - The |
+ * nextPageToken |
+ * value returned from a previous |
+ * ListPhotos |
+ * request, if any. |
+ * |
+ * [pageSize] - The maximum number of photos to return. |
+ * `pageSize` must be non-negative. If `pageSize` is zero or is not provided, |
+ * the default page size of 100 will be used. |
+ * The number of photos returned in the response may be less than `pageSize` |
+ * if the number of photos that belong to the user is less than `pageSize`. |
+ * |
+ * [view] - Specifies if a download URL for the photos bytes should be |
+ * returned in the |
+ * Photos response. |
+ * Possible string values are: |
+ * - "BASIC" : A BASIC. |
+ * - "INCLUDE_DOWNLOAD_URL" : A INCLUDE_DOWNLOAD_URL. |
+ * |
+ * [filter] - The filter expression. For example: |
+ * `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`. |
+ * |
+ * Completes with a [ListPhotosResponse]. |
+ * |
+ * 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<ListPhotosResponse> list({core.String pageToken, core.int pageSize, core.String view, core.String filter}) { |
+ var _url = null; |
+ var _queryParams = new core.Map(); |
+ var _uploadMedia = null; |
+ var _uploadOptions = null; |
+ var _downloadOptions = commons.DownloadOptions.Metadata; |
+ var _body = null; |
+ |
+ if (pageToken != null) { |
+ _queryParams["pageToken"] = [pageToken]; |
+ } |
+ if (pageSize != null) { |
+ _queryParams["pageSize"] = ["${pageSize}"]; |
+ } |
+ if (view != null) { |
+ _queryParams["view"] = [view]; |
+ } |
+ if (filter != null) { |
+ _queryParams["filter"] = [filter]; |
+ } |
+ |
+ _url = 'v1/photos'; |
+ |
+ var _response = _requester.request(_url, |
+ "GET", |
+ body: _body, |
+ queryParams: _queryParams, |
+ uploadOptions: _uploadOptions, |
+ uploadMedia: _uploadMedia, |
+ downloadOptions: _downloadOptions); |
+ return _response.then((data) => new ListPhotosResponse.fromJson(data)); |
+ } |
+ |
+} |
+ |
+ |
+ |
+/** Request to delete multiple Photos. */ |
+class BatchDeletePhotosRequest { |
+ /** |
+ * Required. IDs of the Photos. For HTTP |
+ * GET requests, the URL query parameter should be |
+ * `photoIds=<id1>&photoIds=<id2>&...`. |
+ */ |
+ core.List<core.String> photoIds; |
+ |
+ BatchDeletePhotosRequest(); |
+ |
+ BatchDeletePhotosRequest.fromJson(core.Map _json) { |
+ if (_json.containsKey("photoIds")) { |
+ photoIds = _json["photoIds"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (photoIds != null) { |
+ _json["photoIds"] = photoIds; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * Response to batch delete of one or more |
+ * Photos. |
+ */ |
+class BatchDeletePhotosResponse { |
+ /** |
+ * The status for the operation to delete a single |
+ * Photo in the batch request. |
+ */ |
+ core.List<Status> status; |
+ |
+ BatchDeletePhotosResponse(); |
+ |
+ BatchDeletePhotosResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("status")) { |
+ status = _json["status"].map((value) => new Status.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (status != null) { |
+ _json["status"] = status.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Response to batch get of Photos. */ |
+class BatchGetPhotosResponse { |
+ /** |
+ * List of results for each individual |
+ * Photo requested, in the same order as |
+ * the requests in |
+ * BatchGetPhotos. |
+ */ |
+ core.List<PhotoResponse> results; |
+ |
+ BatchGetPhotosResponse(); |
+ |
+ BatchGetPhotosResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("results")) { |
+ results = _json["results"].map((value) => new PhotoResponse.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (results != null) { |
+ _json["results"] = results.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * Request to update the metadata of photos. |
+ * Updating the pixels of photos is not supported. |
+ */ |
+class BatchUpdatePhotosRequest { |
+ /** |
+ * Required. List of |
+ * UpdatePhotoRequests. |
+ */ |
+ core.List<UpdatePhotoRequest> updatePhotoRequests; |
+ |
+ BatchUpdatePhotosRequest(); |
+ |
+ BatchUpdatePhotosRequest.fromJson(core.Map _json) { |
+ if (_json.containsKey("updatePhotoRequests")) { |
+ updatePhotoRequests = _json["updatePhotoRequests"].map((value) => new UpdatePhotoRequest.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (updatePhotoRequests != null) { |
+ _json["updatePhotoRequests"] = updatePhotoRequests.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * Response to batch update of metadata of one or more |
+ * Photos. |
+ */ |
+class BatchUpdatePhotosResponse { |
+ /** |
+ * List of results for each individual |
+ * Photo updated, in the same order as |
+ * the request. |
+ */ |
+ core.List<PhotoResponse> results; |
+ |
+ BatchUpdatePhotosResponse(); |
+ |
+ BatchUpdatePhotosResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("results")) { |
+ results = _json["results"].map((value) => new PhotoResponse.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (results != null) { |
+ _json["results"] = results.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** A connection is the link from a source photo to a destination photo. */ |
+class Connection { |
+ /** |
+ * Required. The destination of the connection from the containing photo to |
+ * another photo. |
+ */ |
+ PhotoId target; |
+ |
+ Connection(); |
+ |
+ Connection.fromJson(core.Map _json) { |
+ if (_json.containsKey("target")) { |
+ target = new PhotoId.fromJson(_json["target"]); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (target != null) { |
+ _json["target"] = (target).toJson(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * 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(core.Map _json) { |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * An object representing a latitude/longitude pair. This is expressed as a pair |
+ * of doubles representing degrees latitude and degrees longitude. Unless |
+ * specified otherwise, this must conform to the |
+ * <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84 |
+ * standard</a>. Values must be within normalized ranges. |
+ * |
+ * Example of normalization code in Python: |
+ * |
+ * def NormalizeLongitude(longitude): |
+ * """Wraps decimal degrees longitude to [-180.0, 180.0].""" |
+ * q, r = divmod(longitude, 360.0) |
+ * if r > 180.0 or (r == 180.0 and q <= -1.0): |
+ * return r - 360.0 |
+ * return r |
+ * |
+ * def NormalizeLatLng(latitude, longitude): |
+ * """Wraps decimal degrees latitude and longitude to |
+ * [-90.0, 90.0] and [-180.0, 180.0], respectively.""" |
+ * r = latitude % 360.0 |
+ * if r <= 90.0: |
+ * return r, NormalizeLongitude(longitude) |
+ * elif r >= 270.0: |
+ * return r - 360, NormalizeLongitude(longitude) |
+ * else: |
+ * return 180 - r, NormalizeLongitude(longitude + 180.0) |
+ * |
+ * assert 180.0 == NormalizeLongitude(180.0) |
+ * assert -180.0 == NormalizeLongitude(-180.0) |
+ * assert -179.0 == NormalizeLongitude(181.0) |
+ * assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0) |
+ * assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0) |
+ * assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) |
+ * assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0) |
+ * assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0) |
+ * assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0) |
+ * assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0) |
+ * assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0) |
+ * assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0) |
+ * assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0) |
+ */ |
+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"]; |
+ } |
+ if (_json.containsKey("longitude")) { |
+ longitude = _json["longitude"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (latitude != null) { |
+ _json["latitude"] = latitude; |
+ } |
+ if (longitude != null) { |
+ _json["longitude"] = longitude; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Level information containing level number and its corresponding name. */ |
+class Level { |
+ /** |
+ * Required. A name assigned to this Level, restricted to 3 characters. |
+ * Consider how the elevator buttons would be labeled for this level if there |
+ * was an elevator. |
+ */ |
+ core.String name; |
+ /** |
+ * Floor number, used for ordering. 0 indicates the ground level, 1 indicates |
+ * the first level above ground level, -1 indicates the first level under |
+ * ground level. Non-integer values are OK. |
+ */ |
+ core.double number; |
+ |
+ Level(); |
+ |
+ Level.fromJson(core.Map _json) { |
+ if (_json.containsKey("name")) { |
+ name = _json["name"]; |
+ } |
+ if (_json.containsKey("number")) { |
+ number = _json["number"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (name != null) { |
+ _json["name"] = name; |
+ } |
+ if (number != null) { |
+ _json["number"] = number; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Response to list all photos that belong to a user. */ |
+class ListPhotosResponse { |
+ /** |
+ * Token to retrieve the next page of results, or empty if there are no more |
+ * results in the list. |
+ */ |
+ core.String nextPageToken; |
+ /** |
+ * List of photos. The maximum number of items returned is based on the |
+ * pageSize field |
+ * in the request. |
+ */ |
+ core.List<Photo> photos; |
+ |
+ ListPhotosResponse(); |
+ |
+ ListPhotosResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("nextPageToken")) { |
+ nextPageToken = _json["nextPageToken"]; |
+ } |
+ if (_json.containsKey("photos")) { |
+ photos = _json["photos"].map((value) => new Photo.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (nextPageToken != null) { |
+ _json["nextPageToken"] = nextPageToken; |
+ } |
+ if (photos != null) { |
+ _json["photos"] = photos.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Photo is used to store 360 photos along with photo metadata. */ |
+class Photo { |
+ /** |
+ * Absolute time when the photo was captured. |
+ * When the photo has no exif timestamp, this is used to set a timestamp in |
+ * the photo metadata. |
+ */ |
+ core.String captureTime; |
+ /** |
+ * Connections to other photos. A connection represents the link from this |
+ * photo to another photo. |
+ */ |
+ core.List<Connection> connections; |
+ /** |
+ * Output only. The download URL for the photo bytes. This field is set only |
+ * when |
+ * GetPhotoRequest.view |
+ * is set to |
+ * PhotoView.INCLUDE_DOWNLOAD_URL. |
+ */ |
+ core.String downloadUrl; |
+ /** |
+ * Required when updating photo. Output only when creating photo. |
+ * Identifier for the photo, which is unique among all photos in |
+ * Google. |
+ */ |
+ PhotoId photoId; |
+ /** Places where this photo belongs. */ |
+ core.List<Place> places; |
+ /** Pose of the photo. */ |
+ Pose pose; |
+ /** Output only. The share link for the photo. */ |
+ core.String shareLink; |
+ /** |
+ * Output only. The thumbnail URL for showing a preview of the given photo. |
+ */ |
+ core.String thumbnailUrl; |
+ /** |
+ * Required when creating photo. Input only. The resource URL where the photo |
+ * bytes are uploaded to. |
+ */ |
+ UploadRef uploadReference; |
+ /** Output only. View count of the photo. */ |
+ core.String viewCount; |
+ |
+ Photo(); |
+ |
+ Photo.fromJson(core.Map _json) { |
+ if (_json.containsKey("captureTime")) { |
+ captureTime = _json["captureTime"]; |
+ } |
+ if (_json.containsKey("connections")) { |
+ connections = _json["connections"].map((value) => new Connection.fromJson(value)).toList(); |
+ } |
+ if (_json.containsKey("downloadUrl")) { |
+ downloadUrl = _json["downloadUrl"]; |
+ } |
+ if (_json.containsKey("photoId")) { |
+ photoId = new PhotoId.fromJson(_json["photoId"]); |
+ } |
+ if (_json.containsKey("places")) { |
+ places = _json["places"].map((value) => new Place.fromJson(value)).toList(); |
+ } |
+ if (_json.containsKey("pose")) { |
+ pose = new Pose.fromJson(_json["pose"]); |
+ } |
+ if (_json.containsKey("shareLink")) { |
+ shareLink = _json["shareLink"]; |
+ } |
+ if (_json.containsKey("thumbnailUrl")) { |
+ thumbnailUrl = _json["thumbnailUrl"]; |
+ } |
+ if (_json.containsKey("uploadReference")) { |
+ uploadReference = new UploadRef.fromJson(_json["uploadReference"]); |
+ } |
+ if (_json.containsKey("viewCount")) { |
+ viewCount = _json["viewCount"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (captureTime != null) { |
+ _json["captureTime"] = captureTime; |
+ } |
+ if (connections != null) { |
+ _json["connections"] = connections.map((value) => (value).toJson()).toList(); |
+ } |
+ if (downloadUrl != null) { |
+ _json["downloadUrl"] = downloadUrl; |
+ } |
+ if (photoId != null) { |
+ _json["photoId"] = (photoId).toJson(); |
+ } |
+ if (places != null) { |
+ _json["places"] = places.map((value) => (value).toJson()).toList(); |
+ } |
+ if (pose != null) { |
+ _json["pose"] = (pose).toJson(); |
+ } |
+ if (shareLink != null) { |
+ _json["shareLink"] = shareLink; |
+ } |
+ if (thumbnailUrl != null) { |
+ _json["thumbnailUrl"] = thumbnailUrl; |
+ } |
+ if (uploadReference != null) { |
+ _json["uploadReference"] = (uploadReference).toJson(); |
+ } |
+ if (viewCount != null) { |
+ _json["viewCount"] = viewCount; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Identifier for a Photo. */ |
+class PhotoId { |
+ /** Required. A base64 encoded identifier. */ |
+ core.String id; |
+ |
+ PhotoId(); |
+ |
+ PhotoId.fromJson(core.Map _json) { |
+ if (_json.containsKey("id")) { |
+ id = _json["id"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (id != null) { |
+ _json["id"] = id; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * Response payload for a single |
+ * Photo |
+ * in batch operations including |
+ * BatchGetPhotos |
+ * and |
+ * BatchUpdatePhotos. |
+ */ |
+class PhotoResponse { |
+ /** |
+ * The Photo resource, if the request |
+ * was successful. |
+ */ |
+ Photo photo; |
+ /** |
+ * The status for the operation to get or update a single photo in the batch |
+ * request. |
+ */ |
+ Status status; |
+ |
+ PhotoResponse(); |
+ |
+ PhotoResponse.fromJson(core.Map _json) { |
+ if (_json.containsKey("photo")) { |
+ photo = new Photo.fromJson(_json["photo"]); |
+ } |
+ if (_json.containsKey("status")) { |
+ status = new Status.fromJson(_json["status"]); |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (photo != null) { |
+ _json["photo"] = (photo).toJson(); |
+ } |
+ if (status != null) { |
+ _json["status"] = (status).toJson(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Place metadata for an entity. */ |
+class Place { |
+ /** |
+ * Required. Place identifier, as described in |
+ * https://developers.google.com/places/place-id. |
+ */ |
+ core.String placeId; |
+ |
+ Place(); |
+ |
+ Place.fromJson(core.Map _json) { |
+ if (_json.containsKey("placeId")) { |
+ placeId = _json["placeId"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (placeId != null) { |
+ _json["placeId"] = placeId; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Raw pose measurement for an entity. */ |
+class Pose { |
+ /** |
+ * Altitude of the pose in meters above ground level (as defined by WGS84). |
+ * NaN indicates an unmeasured quantity. |
+ */ |
+ core.double altitude; |
+ /** |
+ * Compass heading, measured at the center of the photo in degrees clockwise |
+ * from North. Value must be >=0 and <360. |
+ * NaN indicates an unmeasured quantity. |
+ */ |
+ core.double heading; |
+ /** |
+ * Latitude and longitude pair of the pose, as explained here: |
+ * https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng |
+ * When creating a Photo, if the |
+ * latitude and longitude pair are not provided here, the geolocation from the |
+ * exif header will be used. If the latitude and longitude pair is not |
+ * provided and cannot be found in the exif header, the create photo process |
+ * will fail. |
+ */ |
+ LatLng latLngPair; |
+ /** Level (the floor in a building) used to configure vertical navigation. */ |
+ Level level; |
+ /** |
+ * Pitch, measured at the center of the photo in degrees. Value must be >=-90 |
+ * and <= 90. A value of -90 means looking directly down, and a value of 90 |
+ * means looking directly up. |
+ * NaN indicates an unmeasured quantity. |
+ */ |
+ core.double pitch; |
+ /** |
+ * Roll, measured in degrees. Value must be >= 0 and <360. A value of 0 |
+ * means level with the horizon. |
+ * NaN indicates an unmeasured quantity. |
+ */ |
+ core.double roll; |
+ |
+ Pose(); |
+ |
+ Pose.fromJson(core.Map _json) { |
+ if (_json.containsKey("altitude")) { |
+ altitude = _json["altitude"]; |
+ } |
+ if (_json.containsKey("heading")) { |
+ heading = _json["heading"]; |
+ } |
+ if (_json.containsKey("latLngPair")) { |
+ latLngPair = new LatLng.fromJson(_json["latLngPair"]); |
+ } |
+ if (_json.containsKey("level")) { |
+ level = new Level.fromJson(_json["level"]); |
+ } |
+ if (_json.containsKey("pitch")) { |
+ pitch = _json["pitch"]; |
+ } |
+ if (_json.containsKey("roll")) { |
+ roll = _json["roll"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (altitude != null) { |
+ _json["altitude"] = altitude; |
+ } |
+ if (heading != null) { |
+ _json["heading"] = heading; |
+ } |
+ if (latLngPair != null) { |
+ _json["latLngPair"] = (latLngPair).toJson(); |
+ } |
+ if (level != null) { |
+ _json["level"] = (level).toJson(); |
+ } |
+ if (pitch != null) { |
+ _json["pitch"] = pitch; |
+ } |
+ if (roll != null) { |
+ _json["roll"] = roll; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * 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). The error model is designed to be: |
+ * |
+ * - Simple to use and understand for most users |
+ * - Flexible enough to meet unexpected needs |
+ * |
+ * # Overview |
+ * |
+ * The `Status` message contains three pieces of data: error code, error |
+ * message, |
+ * and error details. The error code should be an enum value of |
+ * google.rpc.Code, but it may accept additional error codes if needed. The |
+ * error message should be a developer-facing English message that helps |
+ * developers *understand* and *resolve* the error. If a localized user-facing |
+ * error message is needed, put the localized message in the error details or |
+ * localize it in the client. The optional error details may contain arbitrary |
+ * information about the error. There is a predefined set of error detail types |
+ * in the package `google.rpc` that can be used for common error conditions. |
+ * |
+ * # Language mapping |
+ * |
+ * The `Status` message is the logical representation of the error model, but it |
+ * is not necessarily the actual wire format. When the `Status` message is |
+ * exposed in different client libraries and different wire protocols, it can be |
+ * mapped differently. For example, it will likely be mapped to some exceptions |
+ * in Java, but more likely mapped to some error codes in C. |
+ * |
+ * # Other uses |
+ * |
+ * The error model and the `Status` message can be used in a variety of |
+ * environments, either with or without APIs, to provide a |
+ * consistent developer experience across different environments. |
+ * |
+ * Example uses of this error model include: |
+ * |
+ * - Partial errors. If a service needs to return partial errors to the client, |
+ * it may embed the `Status` in the normal response to indicate the partial |
+ * errors. |
+ * |
+ * - Workflow errors. A typical workflow has multiple steps. Each step may |
+ * have a `Status` message for error reporting. |
+ * |
+ * - Batch operations. If a client uses batch request and batch response, the |
+ * `Status` message should be used directly inside batch response, one for |
+ * each error sub-response. |
+ * |
+ * - Asynchronous operations. If an API call embeds asynchronous operation |
+ * results in its response, the status of those operations should be |
+ * represented directly using the `Status` message. |
+ * |
+ * - Logging. If some API errors are stored in logs, the message `Status` could |
+ * be used directly after any stripping needed for security/privacy reasons. |
+ */ |
+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"]; |
+ } |
+ if (_json.containsKey("details")) { |
+ details = _json["details"]; |
+ } |
+ if (_json.containsKey("message")) { |
+ message = _json["message"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (code != null) { |
+ _json["code"] = code; |
+ } |
+ if (details != null) { |
+ _json["details"] = details; |
+ } |
+ if (message != null) { |
+ _json["message"] = message; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * Request to update the metadata of a |
+ * Photo. Updating the pixels of a photo |
+ * is not supported. |
+ */ |
+class UpdatePhotoRequest { |
+ /** |
+ * Required. Photo object containing the |
+ * new metadata. Only the fields specified in |
+ * updateMask |
+ * field are used. If `updateMask` is not present, the update applies to all |
+ * fields. <aside class="note"><b>Note:</b> To update |
+ * Pose.altitude, |
+ * Pose.latLngPair has to be |
+ * filled as well. Otherwise, the request will fail. |
+ */ |
+ Photo photo; |
+ /** |
+ * Mask that identifies fields on the photo metadata to update. |
+ * If not present, the old Photo metadata will be entirely replaced with the |
+ * new Photo metadata in this request. The update fails if invalid fields are |
+ * specified. Multiple fields can be specified in a comma-delimited list. |
+ * |
+ * The following fields are valid: |
+ * |
+ * * `pose.heading` |
+ * * `pose.latlngpair` |
+ * * `pose.pitch` |
+ * * `pose.roll` |
+ * * `pose.level` |
+ * * `pose.altitude` |
+ * * `connections` |
+ * * `places` |
+ * |
+ * |
+ * <aside class="note"><b>Note:</b> Repeated fields in |
+ * updateMask |
+ * mean the entire set of repeated values will be replaced with the new |
+ * contents. For example, if |
+ * updateMask |
+ * contains `connections` and |
+ * google.streetview.publish.v1.UpdatePhotoRequest.photo.connections is |
+ * empty, all connections will be removed.</aside> |
+ */ |
+ core.String updateMask; |
+ |
+ UpdatePhotoRequest(); |
+ |
+ UpdatePhotoRequest.fromJson(core.Map _json) { |
+ if (_json.containsKey("photo")) { |
+ photo = new Photo.fromJson(_json["photo"]); |
+ } |
+ if (_json.containsKey("updateMask")) { |
+ updateMask = _json["updateMask"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (photo != null) { |
+ _json["photo"] = (photo).toJson(); |
+ } |
+ if (updateMask != null) { |
+ _json["updateMask"] = updateMask; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** Upload reference for media files. */ |
+class UploadRef { |
+ /** |
+ * Required. An upload reference should be unique for each user. It follows |
+ * the form: |
+ * "https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}" |
+ */ |
+ core.String uploadUrl; |
+ |
+ UploadRef(); |
+ |
+ UploadRef.fromJson(core.Map _json) { |
+ if (_json.containsKey("uploadUrl")) { |
+ uploadUrl = _json["uploadUrl"]; |
+ } |
+ } |
+ |
+ core.Map<core.String, core.Object> toJson() { |
+ final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); |
+ if (uploadUrl != null) { |
+ _json["uploadUrl"] = uploadUrl; |
+ } |
+ return _json; |
+ } |
+} |