@google-cloud/discoveryengine 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +33 -1
  3. package/build/protos/google/cloud/discoveryengine/v1/common.proto +30 -2
  4. package/build/protos/google/cloud/discoveryengine/v1/completion_service.proto +15 -2
  5. package/build/protos/google/cloud/discoveryengine/v1/conversation.proto +114 -0
  6. package/build/protos/google/cloud/discoveryengine/v1/conversational_search_service.proto +303 -0
  7. package/build/protos/google/cloud/discoveryengine/v1/document.proto +8 -5
  8. package/build/protos/google/cloud/discoveryengine/v1/document_service.proto +4 -3
  9. package/build/protos/google/cloud/discoveryengine/v1/import_config.proto +27 -23
  10. package/build/protos/google/cloud/discoveryengine/v1/schema.proto +1 -1
  11. package/build/protos/google/cloud/discoveryengine/v1/search_service.proto +428 -20
  12. package/build/protos/google/cloud/discoveryengine/v1/user_event.proto +48 -39
  13. package/build/protos/google/cloud/discoveryengine/v1/user_event_service.proto +2 -2
  14. package/build/protos/google/cloud/discoveryengine/v1alpha/common.proto +155 -0
  15. package/build/protos/google/cloud/discoveryengine/v1alpha/completion_service.proto +134 -0
  16. package/build/protos/google/cloud/discoveryengine/v1alpha/conversation.proto +138 -0
  17. package/build/protos/google/cloud/discoveryengine/v1alpha/conversational_search_service.proto +306 -0
  18. package/build/protos/google/cloud/discoveryengine/v1alpha/document.proto +121 -0
  19. package/build/protos/google/cloud/discoveryengine/v1alpha/document_service.proto +318 -0
  20. package/build/protos/google/cloud/discoveryengine/v1alpha/import_config.proto +343 -0
  21. package/build/protos/google/cloud/discoveryengine/v1alpha/purge_config.proto +159 -0
  22. package/build/protos/google/cloud/discoveryengine/v1alpha/recommendation_service.proto +221 -0
  23. package/build/protos/google/cloud/discoveryengine/v1alpha/schema.proto +312 -0
  24. package/build/protos/google/cloud/discoveryengine/v1alpha/schema_service.proto +260 -0
  25. package/build/protos/google/cloud/discoveryengine/v1alpha/search_service.proto +851 -0
  26. package/build/protos/google/cloud/discoveryengine/v1alpha/site_search_engine_service.proto +152 -0
  27. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event.proto +475 -0
  28. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event_service.proto +154 -0
  29. package/build/protos/google/cloud/discoveryengine/v1beta/common.proto +6 -0
  30. package/build/protos/google/cloud/discoveryengine/v1beta/conversation.proto +9 -2
  31. package/build/protos/google/cloud/discoveryengine/v1beta/conversational_search_service.proto +25 -0
  32. package/build/protos/google/cloud/discoveryengine/v1beta/search_service.proto +115 -3
  33. package/build/protos/google/cloud/discoveryengine/v1beta/user_event.proto +4 -0
  34. package/build/protos/protos.d.ts +22864 -6680
  35. package/build/protos/protos.js +57205 -16191
  36. package/build/protos/protos.json +5548 -1224
  37. package/build/src/index.d.ts +6 -1
  38. package/build/src/index.js +7 -1
  39. package/build/src/v1/completion_service_client.d.ts +156 -6
  40. package/build/src/v1/completion_service_client.js +188 -4
  41. package/build/src/v1/conversational_search_service_client.d.ts +947 -0
  42. package/build/src/v1/conversational_search_service_client.js +1205 -0
  43. package/build/src/v1/conversational_search_service_client_config.json +68 -0
  44. package/build/src/v1/document_service_client.d.ts +165 -18
  45. package/build/src/v1/document_service_client.js +215 -11
  46. package/build/src/v1/index.d.ts +1 -0
  47. package/build/src/v1/index.js +3 -1
  48. package/build/src/v1/schema_service_client.d.ts +148 -4
  49. package/build/src/v1/schema_service_client.js +207 -5
  50. package/build/src/v1/search_service_client.d.ts +238 -28
  51. package/build/src/v1/search_service_client.js +248 -20
  52. package/build/src/v1/user_event_service_client.d.ts +153 -9
  53. package/build/src/v1/user_event_service_client.js +207 -5
  54. package/build/src/v1alpha/completion_service_client.d.ts +603 -0
  55. package/build/src/v1alpha/completion_service_client.js +843 -0
  56. package/build/src/v1alpha/completion_service_client_config.json +43 -0
  57. package/build/src/v1alpha/conversational_search_service_client.d.ts +998 -0
  58. package/build/src/v1alpha/conversational_search_service_client.js +1275 -0
  59. package/build/src/v1alpha/conversational_search_service_client_config.json +68 -0
  60. package/build/src/v1alpha/document_service_client.d.ts +1140 -0
  61. package/build/src/v1alpha/document_service_client.js +1393 -0
  62. package/build/src/v1alpha/document_service_client_config.json +82 -0
  63. package/build/src/v1alpha/index.d.ts +8 -0
  64. package/build/src/v1alpha/index.js +37 -0
  65. package/build/src/v1alpha/recommendation_service_client.d.ts +735 -0
  66. package/build/src/v1alpha/recommendation_service_client.js +938 -0
  67. package/build/src/v1alpha/recommendation_service_client_config.json +43 -0
  68. package/build/src/v1alpha/schema_service_client.d.ts +935 -0
  69. package/build/src/v1alpha/schema_service_client.js +1327 -0
  70. package/build/src/v1alpha/schema_service_client_config.json +63 -0
  71. package/build/src/v1alpha/search_service_client.d.ts +1208 -0
  72. package/build/src/v1alpha/search_service_client.js +1432 -0
  73. package/build/src/v1alpha/search_service_client_config.json +43 -0
  74. package/build/src/v1alpha/site_search_engine_service_client.d.ts +704 -0
  75. package/build/src/v1alpha/site_search_engine_service_client.js +1087 -0
  76. package/build/src/v1alpha/site_search_engine_service_client_config.json +30 -0
  77. package/build/src/v1alpha/user_event_service_client.d.ts +853 -0
  78. package/build/src/v1alpha/user_event_service_client.js +1174 -0
  79. package/build/src/v1alpha/user_event_service_client_config.json +67 -0
  80. package/build/src/v1beta/completion_service_client.d.ts +55 -4
  81. package/build/src/v1beta/completion_service_client.js +60 -4
  82. package/build/src/v1beta/conversational_search_service_client.d.ts +75 -4
  83. package/build/src/v1beta/conversational_search_service_client.js +60 -4
  84. package/build/src/v1beta/document_service_client.d.ts +55 -4
  85. package/build/src/v1beta/document_service_client.js +61 -5
  86. package/build/src/v1beta/recommendation_service_client.d.ts +55 -4
  87. package/build/src/v1beta/recommendation_service_client.js +60 -4
  88. package/build/src/v1beta/schema_service_client.d.ts +55 -4
  89. package/build/src/v1beta/schema_service_client.js +61 -5
  90. package/build/src/v1beta/search_service_client.d.ts +142 -4
  91. package/build/src/v1beta/search_service_client.js +118 -4
  92. package/build/src/v1beta/user_event_service_client.d.ts +55 -4
  93. package/build/src/v1beta/user_event_service_client.js +61 -5
  94. package/package.json +5 -5
@@ -60,8 +60,7 @@ class UserEventServiceClient {
60
60
  * API remote host.
61
61
  * @param {gax.ClientConfig} [options.clientConfig] - Client configuration override.
62
62
  * Follows the structure of {@link gapicConfig}.
63
- * @param {boolean | "rest"} [options.fallback] - Use HTTP fallback mode.
64
- * Pass "rest" to use HTTP/1.1 REST API instead of gRPC.
63
+ * @param {boolean} [options.fallback] - Use HTTP/1.1 REST mode.
65
64
  * For more information, please check the
66
65
  * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
67
66
  * @param {gax} [gaxInstance]: loaded instance of `google-gax`. Useful if you
@@ -69,7 +68,7 @@ class UserEventServiceClient {
69
68
  * HTTP implementation. Load only fallback version and pass it to the constructor:
70
69
  * ```
71
70
  * const gax = require('google-gax/build/src/fallback'); // avoids loading google-gax with gRPC
72
- * const client = new UserEventServiceClient({fallback: 'rest'}, gax);
71
+ * const client = new UserEventServiceClient({fallback: true}, gax);
73
72
  * ```
74
73
  */
75
74
  constructor(opts, gaxInstance) {
@@ -115,6 +114,7 @@ class UserEventServiceClient {
115
114
  if (servicePath === staticMembers.servicePath) {
116
115
  this.auth.defaultScopes = staticMembers.scopes;
117
116
  }
117
+ this.locationsClient = new this._gaxModule.LocationsClient(this._gaxGrpc, opts);
118
118
  // Determine the client header string.
119
119
  const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
120
120
  if (typeof process !== 'undefined' && 'versions' in process) {
@@ -126,7 +126,7 @@ class UserEventServiceClient {
126
126
  if (!opts.fallback) {
127
127
  clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
128
128
  }
129
- else if (opts.fallback === 'rest') {
129
+ else {
130
130
  clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`);
131
131
  }
132
132
  if (opts.libName && opts.libVersion) {
@@ -140,9 +140,11 @@ class UserEventServiceClient {
140
140
  this.pathTemplates = {
141
141
  projectLocationCollectionDataStorePathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}'),
142
142
  projectLocationCollectionDataStoreBranchDocumentPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}/documents/{document}'),
143
+ projectLocationCollectionDataStoreConversationPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/conversations/{conversation}'),
143
144
  projectLocationCollectionDataStoreSchemaPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/schemas/{schema}'),
144
145
  projectLocationDataStorePathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/dataStores/{data_store}'),
145
146
  projectLocationDataStoreBranchDocumentPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/dataStores/{data_store}/branches/{branch}/documents/{document}'),
147
+ projectLocationDataStoreConversationPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/dataStores/{data_store}/conversations/{conversation}'),
146
148
  projectLocationDataStoreSchemaPathTemplate: new this._gaxModule.PathTemplate('projects/{project}/locations/{location}/dataStores/{data_store}/schemas/{schema}'),
147
149
  };
148
150
  const protoFilesRoot = this._gaxModule.protobuf.Root.fromJSON(jsonProtos);
@@ -153,7 +155,7 @@ class UserEventServiceClient {
153
155
  auth: this.auth,
154
156
  grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined,
155
157
  };
156
- if (opts.fallback === 'rest') {
158
+ if (opts.fallback) {
157
159
  lroOptions.protoJson = protoFilesRoot;
158
160
  lroOptions.httpRules = [
159
161
  {
@@ -172,6 +174,15 @@ class UserEventServiceClient {
172
174
  {
173
175
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*/operations/*}',
174
176
  },
177
+ {
178
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/operations/*}',
179
+ },
180
+ {
181
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/targetSites/operations/*}',
182
+ },
183
+ {
184
+ get: '/v1/{name=projects/*/locations/*/collections/*/engines/*/operations/*}',
185
+ },
175
186
  {
176
187
  get: '/v1/{name=projects/*/locations/*/collections/*/operations/*}',
177
188
  },
@@ -201,9 +212,18 @@ class UserEventServiceClient {
201
212
  {
202
213
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*}/operations',
203
214
  },
215
+ {
216
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/targetSites}/operations',
217
+ },
218
+ {
219
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine}/operations',
220
+ },
204
221
  {
205
222
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*}/operations',
206
223
  },
224
+ {
225
+ get: '/v1/{name=projects/*/locations/*/collections/*/engines/*}/operations',
226
+ },
207
227
  { get: '/v1/{name=projects/*/locations/*/collections/*}/operations' },
208
228
  {
209
229
  get: '/v1/{name=projects/*/locations/*/dataStores/*/branches/*}/operations',
@@ -402,6 +422,61 @@ class UserEventServiceClient {
402
422
  const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.importUserEvents, this._gaxModule.createDefaultBackoffSettings());
403
423
  return decodeOperation;
404
424
  }
425
+ /**
426
+ * Gets information about a location.
427
+ *
428
+ * @param {Object} request
429
+ * The request object that will be sent.
430
+ * @param {string} request.name
431
+ * Resource name for the location.
432
+ * @param {object} [options]
433
+ * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html | CallOptions} for more details.
434
+ * @returns {Promise} - The promise which resolves to an array.
435
+ * The first element of the array is an object representing {@link google.cloud.location.Location | Location}.
436
+ * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
437
+ * for more details and examples.
438
+ * @example
439
+ * ```
440
+ * const [response] = await client.getLocation(request);
441
+ * ```
442
+ */
443
+ getLocation(request, options, callback) {
444
+ return this.locationsClient.getLocation(request, options, callback);
445
+ }
446
+ /**
447
+ * Lists information about the supported locations for this service. Returns an iterable object.
448
+ *
449
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
450
+ * @param {Object} request
451
+ * The request object that will be sent.
452
+ * @param {string} request.name
453
+ * The resource that owns the locations collection, if applicable.
454
+ * @param {string} request.filter
455
+ * The standard list filter.
456
+ * @param {number} request.pageSize
457
+ * The standard list page size.
458
+ * @param {string} request.pageToken
459
+ * The standard list page token.
460
+ * @param {object} [options]
461
+ * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
462
+ * @returns {Object}
463
+ * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
464
+ * When you iterate the returned iterable, each element will be an object representing
465
+ * {@link google.cloud.location.Location | Location}. The API will be called under the hood as needed, once per the page,
466
+ * so you can stop the iteration when you don't need more results.
467
+ * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
468
+ * for more details and examples.
469
+ * @example
470
+ * ```
471
+ * const iterable = client.listLocationsAsync(request);
472
+ * for await (const response of iterable) {
473
+ * // process response
474
+ * }
475
+ * ```
476
+ */
477
+ listLocationsAsync(request, options) {
478
+ return this.locationsClient.listLocationsAsync(request, options);
479
+ }
405
480
  /**
406
481
  * Gets the latest state of a long-running operation. Clients can use this
407
482
  * method to poll the operation result at intervals as recommended by the API
@@ -671,6 +746,75 @@ class UserEventServiceClient {
671
746
  matchDocumentFromProjectLocationCollectionDataStoreBranchDocumentName(projectLocationCollectionDataStoreBranchDocumentName) {
672
747
  return this.pathTemplates.projectLocationCollectionDataStoreBranchDocumentPathTemplate.match(projectLocationCollectionDataStoreBranchDocumentName).document;
673
748
  }
749
+ /**
750
+ * Return a fully-qualified projectLocationCollectionDataStoreConversation resource name string.
751
+ *
752
+ * @param {string} project
753
+ * @param {string} location
754
+ * @param {string} collection
755
+ * @param {string} data_store
756
+ * @param {string} conversation
757
+ * @returns {string} Resource name string.
758
+ */
759
+ projectLocationCollectionDataStoreConversationPath(project, location, collection, dataStore, conversation) {
760
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.render({
761
+ project: project,
762
+ location: location,
763
+ collection: collection,
764
+ data_store: dataStore,
765
+ conversation: conversation,
766
+ });
767
+ }
768
+ /**
769
+ * Parse the project from ProjectLocationCollectionDataStoreConversation resource.
770
+ *
771
+ * @param {string} projectLocationCollectionDataStoreConversationName
772
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
773
+ * @returns {string} A string representing the project.
774
+ */
775
+ matchProjectFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
776
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).project;
777
+ }
778
+ /**
779
+ * Parse the location from ProjectLocationCollectionDataStoreConversation resource.
780
+ *
781
+ * @param {string} projectLocationCollectionDataStoreConversationName
782
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
783
+ * @returns {string} A string representing the location.
784
+ */
785
+ matchLocationFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
786
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).location;
787
+ }
788
+ /**
789
+ * Parse the collection from ProjectLocationCollectionDataStoreConversation resource.
790
+ *
791
+ * @param {string} projectLocationCollectionDataStoreConversationName
792
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
793
+ * @returns {string} A string representing the collection.
794
+ */
795
+ matchCollectionFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
796
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).collection;
797
+ }
798
+ /**
799
+ * Parse the data_store from ProjectLocationCollectionDataStoreConversation resource.
800
+ *
801
+ * @param {string} projectLocationCollectionDataStoreConversationName
802
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
803
+ * @returns {string} A string representing the data_store.
804
+ */
805
+ matchDataStoreFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
806
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).data_store;
807
+ }
808
+ /**
809
+ * Parse the conversation from ProjectLocationCollectionDataStoreConversation resource.
810
+ *
811
+ * @param {string} projectLocationCollectionDataStoreConversationName
812
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
813
+ * @returns {string} A string representing the conversation.
814
+ */
815
+ matchConversationFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
816
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).conversation;
817
+ }
674
818
  /**
675
819
  * Return a fully-qualified projectLocationCollectionDataStoreSchema resource name string.
676
820
  *
@@ -854,6 +998,63 @@ class UserEventServiceClient {
854
998
  matchDocumentFromProjectLocationDataStoreBranchDocumentName(projectLocationDataStoreBranchDocumentName) {
855
999
  return this.pathTemplates.projectLocationDataStoreBranchDocumentPathTemplate.match(projectLocationDataStoreBranchDocumentName).document;
856
1000
  }
1001
+ /**
1002
+ * Return a fully-qualified projectLocationDataStoreConversation resource name string.
1003
+ *
1004
+ * @param {string} project
1005
+ * @param {string} location
1006
+ * @param {string} data_store
1007
+ * @param {string} conversation
1008
+ * @returns {string} Resource name string.
1009
+ */
1010
+ projectLocationDataStoreConversationPath(project, location, dataStore, conversation) {
1011
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.render({
1012
+ project: project,
1013
+ location: location,
1014
+ data_store: dataStore,
1015
+ conversation: conversation,
1016
+ });
1017
+ }
1018
+ /**
1019
+ * Parse the project from ProjectLocationDataStoreConversation resource.
1020
+ *
1021
+ * @param {string} projectLocationDataStoreConversationName
1022
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1023
+ * @returns {string} A string representing the project.
1024
+ */
1025
+ matchProjectFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1026
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).project;
1027
+ }
1028
+ /**
1029
+ * Parse the location from ProjectLocationDataStoreConversation resource.
1030
+ *
1031
+ * @param {string} projectLocationDataStoreConversationName
1032
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1033
+ * @returns {string} A string representing the location.
1034
+ */
1035
+ matchLocationFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1036
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).location;
1037
+ }
1038
+ /**
1039
+ * Parse the data_store from ProjectLocationDataStoreConversation resource.
1040
+ *
1041
+ * @param {string} projectLocationDataStoreConversationName
1042
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1043
+ * @returns {string} A string representing the data_store.
1044
+ */
1045
+ matchDataStoreFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1046
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).data_store;
1047
+ }
1048
+ /**
1049
+ * Parse the conversation from ProjectLocationDataStoreConversation resource.
1050
+ *
1051
+ * @param {string} projectLocationDataStoreConversationName
1052
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1053
+ * @returns {string} A string representing the conversation.
1054
+ */
1055
+ matchConversationFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1056
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).conversation;
1057
+ }
857
1058
  /**
858
1059
  * Return a fully-qualified projectLocationDataStoreSchema resource name string.
859
1060
  *
@@ -922,6 +1123,7 @@ class UserEventServiceClient {
922
1123
  return this.userEventServiceStub.then(stub => {
923
1124
  this._terminated = true;
924
1125
  stub.close();
1126
+ this.locationsClient.close();
925
1127
  this.operationsClient.close();
926
1128
  });
927
1129
  }