@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 SchemaServiceClient {
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 SchemaServiceClient {
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 SchemaServiceClient({fallback: 'rest'}, gax);
71
+ * const client = new SchemaServiceClient({fallback: true}, gax);
73
72
  * ```
74
73
  */
75
74
  constructor(opts, gaxInstance) {
@@ -115,6 +114,7 @@ class SchemaServiceClient {
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 SchemaServiceClient {
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 SchemaServiceClient {
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
  // Some of the methods on this service return "paged" results,
@@ -159,7 +161,7 @@ class SchemaServiceClient {
159
161
  auth: this.auth,
160
162
  grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined,
161
163
  };
162
- if (opts.fallback === 'rest') {
164
+ if (opts.fallback) {
163
165
  lroOptions.protoJson = protoFilesRoot;
164
166
  lroOptions.httpRules = [
165
167
  {
@@ -178,6 +180,15 @@ class SchemaServiceClient {
178
180
  {
179
181
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*/operations/*}',
180
182
  },
183
+ {
184
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/operations/*}',
185
+ },
186
+ {
187
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/targetSites/operations/*}',
188
+ },
189
+ {
190
+ get: '/v1/{name=projects/*/locations/*/collections/*/engines/*/operations/*}',
191
+ },
181
192
  {
182
193
  get: '/v1/{name=projects/*/locations/*/collections/*/operations/*}',
183
194
  },
@@ -207,9 +218,18 @@ class SchemaServiceClient {
207
218
  {
208
219
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/schemas/*}/operations',
209
220
  },
221
+ {
222
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine/targetSites}/operations',
223
+ },
224
+ {
225
+ get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*/siteSearchEngine}/operations',
226
+ },
210
227
  {
211
228
  get: '/v1/{name=projects/*/locations/*/collections/*/dataStores/*}/operations',
212
229
  },
230
+ {
231
+ get: '/v1/{name=projects/*/locations/*/collections/*/engines/*}/operations',
232
+ },
213
233
  { get: '/v1/{name=projects/*/locations/*/collections/*}/operations' },
214
234
  {
215
235
  get: '/v1/{name=projects/*/locations/*/dataStores/*/branches/*}/operations',
@@ -594,6 +614,61 @@ class SchemaServiceClient {
594
614
  this.initialize();
595
615
  return this.descriptors.page.listSchemas.asyncIterate(this.innerApiCalls['listSchemas'], request, callSettings);
596
616
  }
617
+ /**
618
+ * Gets information about a location.
619
+ *
620
+ * @param {Object} request
621
+ * The request object that will be sent.
622
+ * @param {string} request.name
623
+ * Resource name for the location.
624
+ * @param {object} [options]
625
+ * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html | CallOptions} for more details.
626
+ * @returns {Promise} - The promise which resolves to an array.
627
+ * The first element of the array is an object representing {@link google.cloud.location.Location | Location}.
628
+ * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
629
+ * for more details and examples.
630
+ * @example
631
+ * ```
632
+ * const [response] = await client.getLocation(request);
633
+ * ```
634
+ */
635
+ getLocation(request, options, callback) {
636
+ return this.locationsClient.getLocation(request, options, callback);
637
+ }
638
+ /**
639
+ * Lists information about the supported locations for this service. Returns an iterable object.
640
+ *
641
+ * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
642
+ * @param {Object} request
643
+ * The request object that will be sent.
644
+ * @param {string} request.name
645
+ * The resource that owns the locations collection, if applicable.
646
+ * @param {string} request.filter
647
+ * The standard list filter.
648
+ * @param {number} request.pageSize
649
+ * The standard list page size.
650
+ * @param {string} request.pageToken
651
+ * The standard list page token.
652
+ * @param {object} [options]
653
+ * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
654
+ * @returns {Object}
655
+ * An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
656
+ * When you iterate the returned iterable, each element will be an object representing
657
+ * {@link google.cloud.location.Location | Location}. The API will be called under the hood as needed, once per the page,
658
+ * so you can stop the iteration when you don't need more results.
659
+ * Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
660
+ * for more details and examples.
661
+ * @example
662
+ * ```
663
+ * const iterable = client.listLocationsAsync(request);
664
+ * for await (const response of iterable) {
665
+ * // process response
666
+ * }
667
+ * ```
668
+ */
669
+ listLocationsAsync(request, options) {
670
+ return this.locationsClient.listLocationsAsync(request, options);
671
+ }
597
672
  /**
598
673
  * Gets the latest state of a long-running operation. Clients can use this
599
674
  * method to poll the operation result at intervals as recommended by the API
@@ -863,6 +938,75 @@ class SchemaServiceClient {
863
938
  matchDocumentFromProjectLocationCollectionDataStoreBranchDocumentName(projectLocationCollectionDataStoreBranchDocumentName) {
864
939
  return this.pathTemplates.projectLocationCollectionDataStoreBranchDocumentPathTemplate.match(projectLocationCollectionDataStoreBranchDocumentName).document;
865
940
  }
941
+ /**
942
+ * Return a fully-qualified projectLocationCollectionDataStoreConversation resource name string.
943
+ *
944
+ * @param {string} project
945
+ * @param {string} location
946
+ * @param {string} collection
947
+ * @param {string} data_store
948
+ * @param {string} conversation
949
+ * @returns {string} Resource name string.
950
+ */
951
+ projectLocationCollectionDataStoreConversationPath(project, location, collection, dataStore, conversation) {
952
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.render({
953
+ project: project,
954
+ location: location,
955
+ collection: collection,
956
+ data_store: dataStore,
957
+ conversation: conversation,
958
+ });
959
+ }
960
+ /**
961
+ * Parse the project from ProjectLocationCollectionDataStoreConversation resource.
962
+ *
963
+ * @param {string} projectLocationCollectionDataStoreConversationName
964
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
965
+ * @returns {string} A string representing the project.
966
+ */
967
+ matchProjectFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
968
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).project;
969
+ }
970
+ /**
971
+ * Parse the location from ProjectLocationCollectionDataStoreConversation resource.
972
+ *
973
+ * @param {string} projectLocationCollectionDataStoreConversationName
974
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
975
+ * @returns {string} A string representing the location.
976
+ */
977
+ matchLocationFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
978
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).location;
979
+ }
980
+ /**
981
+ * Parse the collection from ProjectLocationCollectionDataStoreConversation resource.
982
+ *
983
+ * @param {string} projectLocationCollectionDataStoreConversationName
984
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
985
+ * @returns {string} A string representing the collection.
986
+ */
987
+ matchCollectionFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
988
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).collection;
989
+ }
990
+ /**
991
+ * Parse the data_store from ProjectLocationCollectionDataStoreConversation resource.
992
+ *
993
+ * @param {string} projectLocationCollectionDataStoreConversationName
994
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
995
+ * @returns {string} A string representing the data_store.
996
+ */
997
+ matchDataStoreFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
998
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).data_store;
999
+ }
1000
+ /**
1001
+ * Parse the conversation from ProjectLocationCollectionDataStoreConversation resource.
1002
+ *
1003
+ * @param {string} projectLocationCollectionDataStoreConversationName
1004
+ * A fully-qualified path representing project_location_collection_data_store_conversation resource.
1005
+ * @returns {string} A string representing the conversation.
1006
+ */
1007
+ matchConversationFromProjectLocationCollectionDataStoreConversationName(projectLocationCollectionDataStoreConversationName) {
1008
+ return this.pathTemplates.projectLocationCollectionDataStoreConversationPathTemplate.match(projectLocationCollectionDataStoreConversationName).conversation;
1009
+ }
866
1010
  /**
867
1011
  * Return a fully-qualified projectLocationCollectionDataStoreSchema resource name string.
868
1012
  *
@@ -1046,6 +1190,63 @@ class SchemaServiceClient {
1046
1190
  matchDocumentFromProjectLocationDataStoreBranchDocumentName(projectLocationDataStoreBranchDocumentName) {
1047
1191
  return this.pathTemplates.projectLocationDataStoreBranchDocumentPathTemplate.match(projectLocationDataStoreBranchDocumentName).document;
1048
1192
  }
1193
+ /**
1194
+ * Return a fully-qualified projectLocationDataStoreConversation resource name string.
1195
+ *
1196
+ * @param {string} project
1197
+ * @param {string} location
1198
+ * @param {string} data_store
1199
+ * @param {string} conversation
1200
+ * @returns {string} Resource name string.
1201
+ */
1202
+ projectLocationDataStoreConversationPath(project, location, dataStore, conversation) {
1203
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.render({
1204
+ project: project,
1205
+ location: location,
1206
+ data_store: dataStore,
1207
+ conversation: conversation,
1208
+ });
1209
+ }
1210
+ /**
1211
+ * Parse the project from ProjectLocationDataStoreConversation resource.
1212
+ *
1213
+ * @param {string} projectLocationDataStoreConversationName
1214
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1215
+ * @returns {string} A string representing the project.
1216
+ */
1217
+ matchProjectFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1218
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).project;
1219
+ }
1220
+ /**
1221
+ * Parse the location from ProjectLocationDataStoreConversation resource.
1222
+ *
1223
+ * @param {string} projectLocationDataStoreConversationName
1224
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1225
+ * @returns {string} A string representing the location.
1226
+ */
1227
+ matchLocationFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1228
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).location;
1229
+ }
1230
+ /**
1231
+ * Parse the data_store from ProjectLocationDataStoreConversation resource.
1232
+ *
1233
+ * @param {string} projectLocationDataStoreConversationName
1234
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1235
+ * @returns {string} A string representing the data_store.
1236
+ */
1237
+ matchDataStoreFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1238
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).data_store;
1239
+ }
1240
+ /**
1241
+ * Parse the conversation from ProjectLocationDataStoreConversation resource.
1242
+ *
1243
+ * @param {string} projectLocationDataStoreConversationName
1244
+ * A fully-qualified path representing project_location_data_store_conversation resource.
1245
+ * @returns {string} A string representing the conversation.
1246
+ */
1247
+ matchConversationFromProjectLocationDataStoreConversationName(projectLocationDataStoreConversationName) {
1248
+ return this.pathTemplates.projectLocationDataStoreConversationPathTemplate.match(projectLocationDataStoreConversationName).conversation;
1249
+ }
1049
1250
  /**
1050
1251
  * Return a fully-qualified projectLocationDataStoreSchema resource name string.
1051
1252
  *
@@ -1114,6 +1315,7 @@ class SchemaServiceClient {
1114
1315
  return this.schemaServiceStub.then(stub => {
1115
1316
  this._terminated = true;
1116
1317
  stub.close();
1318
+ this.locationsClient.close();
1117
1319
  this.operationsClient.close();
1118
1320
  });
1119
1321
  }