Clone this repo:


  1. bd3a9ea add command for retrieving the code example by Yunsi Mou · 6 years ago master
  2. c9b6477 Initial commit of java client example for maps booking api by Christopher Cawdrey · 6 years ago

Java client example for real-time updates using RESTful calls


Have your service account created, download your private key.

Get started:

  1. Download the Java client library , unzip the file to get the ‘mapsbooking’ package.

  2. Create a java project in your IDE, retrieve the sample codes ( & from this repo:

    git clone

    import them into your java project under src directory.

  3. Make a copy of your private key (JSON file) to the src directory.

  4. Add the Java Client Library to the dependencies of your project (include jar files under mapsbooking and libs-sources directory).

  5. In both java files, follow the TODOs to complete your implementations.

More detail about the REST API can be found here.


  1. Create a merchant/service with existing merchantId/serviceId, your will get following error message: 409 Conflict { “code” : 409, “errors” : [ { “domain” : “global”, “message” : “Requested entity already exists”, “reason” : “alreadyExists”, “debugInfo” : “detail: "[ORIGINAL ERROR] generic::already_exists: ...”\n" } ], “message” : “Requested entity already exists”, “status” : “ALREADY_EXISTS” }

  2. Update/Delete with wrong merchantId/serviceId (update with wrong bookingId), your will get following error message: 404 Not Found { “code” : 404, “errors” : [ { “domain” : “global”, “message” : “Requested entity was not found.”, “reason” : “notFound”, “debugInfo” : “detail: "[ORIGINAL ERROR] spanner::Row not found:..."\n” } ], “message” : “Requested entity was not found.”, “status” : “NOT_FOUND” }

  3. In all update functions, the parameter ‘updateMask’ must be in FieldMask format to specify the fields to update. The API is required to only change the values of the fields as specified in the mask and leave the others untouched. If you pass the wrong updateMask string, the update will not take effect. If a field mask is not present on update, the operation applies to all fields (as if a field mask of all fields has been specified). So if you want to update all fields, just set the updateMask empty.

  4. Since an Availability Slot is not associated with a merchant_id/service_id, if you make the replace availability calls with invalid merchant_id/service_id, you will be able to make the REST call without any issue, but your request will not be served in the production due to the invalid merchant_id/service_id.

  5. Any field that has a zero value is not shown in the response.