blob: 0815ea760f461f8f501b377192d891c5ee819d43 [file] [log] [blame] [view]
# Java client example for real-time updates using RESTful calls
### Prerequisite:
Have your service account created, download your private key.
### Get started:
1. Download the [Java client
library](https://dl.google.com/mapsbooking/apiclients/v1alpha/mapsbooking_java_public.zip)
, unzip the file to get the 'mapsbooking' package.
2. Create a java project in your IDE, retrieve the sample codes
(InventoryUpdate.java & BookingNotification.java) from this repo:
git clone https://maps-booking.googlesource.com/java-maps-booking-api-example
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.](https://developers.google.com/maps-booking/reference/maps-booking-api/rest/)
### Troubleshooting:
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](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#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.