Synchronize new proto changes.
diff --git a/google/datastore/datastore.yaml b/google/datastore/datastore.yaml
index b135105..0f8b414 100644
--- a/google/datastore/datastore.yaml
+++ b/google/datastore/datastore.yaml
@@ -1,22 +1,42 @@
 type: google.api.Service
-config_version: 1
+config_version: 3
 name: datastore.googleapis.com
-
 title: Google Cloud Datastore API
 
+apis:
+- name: google.datastore.admin.v1beta1.DatastoreAdmin
+- name: google.datastore.v1beta3.Datastore
+- name: google.datastore.v1.Datastore
+
+types:
+- name: google.datastore.admin.v1beta1.ExportEntitiesMetadata
+- name: google.datastore.admin.v1beta1.ExportEntitiesResponse
+- name: google.datastore.admin.v1beta1.ImportEntitiesMetadata
+
 documentation:
-  summary:  >
+  summary: |-
     Accesses the schemaless NoSQL database to provide fully managed, robust,
     scalable storage for your application.
 
-apis:
-- name: google.datastore.v1.Datastore
+http:
+  rules:
+  - selector: google.longrunning.Operations.ListOperations
+    get: '/v1/{name=projects/*}/operations'
 
-# Auth section
+  - selector: google.longrunning.Operations.GetOperation
+    get: '/v1/{name=projects/*/operations/*}'
+
+  - selector: google.longrunning.Operations.DeleteOperation
+    delete: '/v1/{name=projects/*/operations/*}'
+
+  - selector: google.longrunning.Operations.CancelOperation
+    post: '/v1/{name=projects/*/operations/*}:cancel'
+
+
 authentication:
   rules:
-    - selector: '*'
-      oauth:
-        canonical_scopes: https://www.googleapis.com/auth/datastore,
-                          https://www.googleapis.com/auth/cloud-platform
-
+  - selector: '*'
+    oauth:
+      canonical_scopes: |-
+        https://www.googleapis.com/auth/cloud-platform,
+        https://www.googleapis.com/auth/datastore
diff --git a/google/datastore/v1/datastore.proto b/google/datastore/v1/datastore.proto
index e0a9f42..245edb6 100644
--- a/google/datastore/v1/datastore.proto
+++ b/google/datastore/v1/datastore.proto
@@ -66,6 +66,12 @@
   rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) {
     option (google.api.http) = { post: "/v1/projects/{project_id}:allocateIds" body: "*" };
   }
+
+  // Prevents the supplied keys' IDs from being auto-allocated by Cloud
+  // Datastore.
+  rpc ReserveIds(ReserveIdsRequest) returns (ReserveIdsResponse) {
+    option (google.api.http) = { post: "/v1/projects/{project_id}:reserveIds" body: "*" };
+  }
 }
 
 // The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup].
@@ -235,6 +241,24 @@
   repeated Key keys = 1;
 }
 
+// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds].
+message ReserveIdsRequest {
+  // The ID of the project against which to make the request.
+  string project_id = 8;
+
+  // If not empty, the ID of the database against which to make the request.
+  string database_id = 9;
+
+  // A list of keys with complete key paths whose numeric IDs should not be
+  // auto-allocated.
+  repeated Key keys = 1;
+}
+
+// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds].
+message ReserveIdsResponse {
+
+}
+
 // A mutation to apply to an entity.
 message Mutation {
   // The mutation operation.
@@ -321,6 +345,10 @@
 }
 
 // Options for beginning a new transaction.
+//
+// Transactions can be created explicitly with calls to
+// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting
+// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests.
 message TransactionOptions {
   // Options specific to read / write transactions.
   message ReadWrite {
diff --git a/google/datastore/v1beta3/datastore.proto b/google/datastore/v1beta3/datastore.proto
index a84fd35..140188f 100644
--- a/google/datastore/v1beta3/datastore.proto
+++ b/google/datastore/v1beta3/datastore.proto
@@ -66,6 +66,12 @@
   rpc AllocateIds(AllocateIdsRequest) returns (AllocateIdsResponse) {
     option (google.api.http) = { post: "/v1beta3/projects/{project_id}:allocateIds" body: "*" };
   }
+
+  // Prevents the supplied keys' IDs from being auto-allocated by Cloud
+  // Datastore.
+  rpc ReserveIds(ReserveIdsRequest) returns (ReserveIdsResponse) {
+    option (google.api.http) = { post: "/v1beta3/projects/{project_id}:reserveIds" body: "*" };
+  }
 }
 
 // The request for [Datastore.Lookup][google.datastore.v1beta3.Datastore.Lookup].
@@ -235,6 +241,24 @@
   repeated Key keys = 1;
 }
 
+// The request for [Datastore.ReserveIds][google.datastore.v1beta3.Datastore.ReserveIds].
+message ReserveIdsRequest {
+  // The ID of the project against which to make the request.
+  string project_id = 8;
+
+  // If not empty, the ID of the database against which to make the request.
+  string database_id = 9;
+
+  // A list of keys with complete key paths whose numeric IDs should not be
+  // auto-allocated.
+  repeated Key keys = 1;
+}
+
+// The response for [Datastore.ReserveIds][google.datastore.v1beta3.Datastore.ReserveIds].
+message ReserveIdsResponse {
+
+}
+
 // A mutation to apply to an entity.
 message Mutation {
   // The mutation operation.
@@ -321,6 +345,10 @@
 }
 
 // Options for beginning a new transaction.
+//
+// Transactions can be created explicitly with calls to
+// [Datastore.BeginTransaction][google.datastore.v1beta3.Datastore.BeginTransaction] or implicitly by setting
+// [ReadOptions.new_transaction][google.datastore.v1beta3.ReadOptions.new_transaction] in read requests.
 message TransactionOptions {
   // Options specific to read / write transactions.
   message ReadWrite {