ibm_watson 1.2.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +33 -5
  3. data/lib/ibm_watson/assistant_v1.rb +153 -209
  4. data/lib/ibm_watson/assistant_v2.rb +168 -15
  5. data/lib/ibm_watson/compare_comply_v1.rb +11 -5
  6. data/lib/ibm_watson/discovery_v1.rb +14 -8
  7. data/lib/ibm_watson/discovery_v2.rb +605 -12
  8. data/lib/ibm_watson/language_translator_v3.rb +166 -47
  9. data/lib/ibm_watson/natural_language_classifier_v1.rb +10 -4
  10. data/lib/ibm_watson/natural_language_understanding_v1.rb +19 -15
  11. data/lib/ibm_watson/personality_insights_v3.rb +17 -11
  12. data/lib/ibm_watson/speech_to_text_v1.rb +323 -195
  13. data/lib/ibm_watson/text_to_speech_v1.rb +75 -59
  14. data/lib/ibm_watson/tone_analyzer_v3.rb +11 -5
  15. data/lib/ibm_watson/version.rb +1 -1
  16. data/lib/ibm_watson/visual_recognition_v3.rb +11 -5
  17. data/lib/ibm_watson/visual_recognition_v4.rb +199 -4
  18. data/test/integration/test_assistant_v2.rb +25 -0
  19. data/test/integration/test_compare_comply_v1.rb +1 -12
  20. data/test/integration/test_discovery_v2.rb +118 -6
  21. data/test/integration/test_language_translator_v3.rb +5 -0
  22. data/test/integration/test_speech_to_text_v1.rb +2 -0
  23. data/test/integration/test_visual_recognition_v4.rb +9 -0
  24. data/test/unit/test_assistant_v1.rb +98 -98
  25. data/test/unit/test_assistant_v2.rb +102 -8
  26. data/test/unit/test_compare_comply_v1.rb +20 -20
  27. data/test/unit/test_discovery_v1.rb +125 -125
  28. data/test/unit/test_discovery_v2.rb +262 -29
  29. data/test/unit/test_language_translator_v3.rb +85 -24
  30. data/test/unit/test_natural_language_classifier_v1.rb +17 -17
  31. data/test/unit/test_natural_language_understanding_v1.rb +10 -10
  32. data/test/unit/test_personality_insights_v3.rb +14 -10
  33. data/test/unit/test_speech_to_text_v1.rb +97 -97
  34. data/test/unit/test_text_to_speech_v1.rb +41 -41
  35. data/test/unit/test_tone_analyzer_v3.rb +12 -12
  36. data/test/unit/test_visual_recognition_v3.rb +16 -16
  37. data/test/unit/test_visual_recognition_v4.rb +117 -30
  38. metadata +5 -6
  39. data/test/unit/test_vcap_using_personality_insights.rb +0 -161
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # (C) Copyright IBM Corp. 2020.
3
+ # (C) Copyright IBM Corp. 2018, 2020.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -33,6 +33,8 @@ module IBMWatson
33
33
  # The Assistant V2 service.
34
34
  class AssistantV2 < IBMCloudSdkCore::BaseService
35
35
  include Concurrent::Async
36
+ DEFAULT_SERVICE_NAME = "assistant"
37
+ DEFAULT_SERVICE_URL = "https://api.us-south.assistant.watson.cloud.ibm.com"
36
38
  ##
37
39
  # @!method initialize(args)
38
40
  # Construct a new client for the Assistant service.
@@ -51,19 +53,23 @@ module IBMWatson
51
53
  # @option args service_url [String] The base service URL to use when contacting the service.
52
54
  # The base service_url may differ between IBM Cloud regions.
53
55
  # @option args authenticator [Object] The Authenticator instance to be configured for this service.
56
+ # @option args service_name [String] The name of the service to configure. Will be used as the key to load
57
+ # any external configuration, if applicable.
54
58
  def initialize(args = {})
55
59
  @__async_initialized__ = false
56
60
  defaults = {}
57
61
  defaults[:version] = nil
58
- defaults[:service_url] = "https://gateway.watsonplatform.net/assistant/api"
62
+ defaults[:service_url] = DEFAULT_SERVICE_URL
63
+ defaults[:service_name] = DEFAULT_SERVICE_NAME
59
64
  defaults[:authenticator] = nil
65
+ user_service_url = args[:service_url] unless args[:service_url].nil?
60
66
  args = defaults.merge(args)
61
67
  @version = args[:version]
62
68
  raise ArgumentError.new("version must be provided") if @version.nil?
63
69
 
64
- args[:service_name] = "assistant"
65
70
  args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
66
71
  super
72
+ @service_url = user_service_url unless user_service_url.nil?
67
73
  end
68
74
 
69
75
  #########################
@@ -77,11 +83,11 @@ module IBMWatson
77
83
  # responses. It also maintains the state of the conversation. A session persists
78
84
  # until it is deleted, or until it times out because of inactivity. (For more
79
85
  # information, see the
80
- # [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-settings).
86
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-settings).
81
87
  # @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
82
88
  # Assistant user interface, open the assistant settings and click **API Details**.
83
89
  # For information about creating assistants, see the
84
- # [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-add#assistant-add-task).
90
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add#assistant-add-task).
85
91
  #
86
92
  # **Note:** Currently, the v2 API does not support creating assistants.
87
93
  # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
@@ -114,11 +120,11 @@ module IBMWatson
114
120
  # Delete session.
115
121
  # Deletes a session explicitly before it times out. (For more information about the
116
122
  # session inactivity timeout, see the
117
- # [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-settings)).
123
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-settings)).
118
124
  # @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
119
125
  # Assistant user interface, open the assistant settings and click **API Details**.
120
126
  # For information about creating assistants, see the
121
- # [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-add#assistant-add-task).
127
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add#assistant-add-task).
122
128
  #
123
129
  # **Note:** Currently, the v2 API does not support creating assistants.
124
130
  # @param session_id [String] Unique identifier of the session.
@@ -154,21 +160,24 @@ module IBMWatson
154
160
 
155
161
  ##
156
162
  # @!method message(assistant_id:, session_id:, input: nil, context: nil)
157
- # Send user input to assistant.
158
- # Send user input to an assistant and receive a response.
159
- #
160
- # There is no rate limit for this operation.
163
+ # Send user input to assistant (stateful).
164
+ # Send user input to an assistant and receive a response, with conversation state
165
+ # (including context data) stored by Watson Assistant for the duration of the
166
+ # session.
161
167
  # @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
162
168
  # Assistant user interface, open the assistant settings and click **API Details**.
163
169
  # For information about creating assistants, see the
164
- # [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-add#assistant-add-task).
170
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add#assistant-add-task).
165
171
  #
166
172
  # **Note:** Currently, the v2 API does not support creating assistants.
167
173
  # @param session_id [String] Unique identifier of the session.
168
174
  # @param input [MessageInput] An input object that includes the input text.
169
- # @param context [MessageContext] State information for the conversation. The context is stored by the assistant on
170
- # a per-session basis. You can use this property to set or modify context variables,
171
- # which can also be accessed by dialog nodes.
175
+ # @param context [MessageContext] Context data for the conversation. You can use this property to set or modify
176
+ # context variables, which can also be accessed by dialog nodes. The context is
177
+ # stored by the assistant on a per-session basis.
178
+ #
179
+ # **Note:** The total size of the context data stored for a stateful session cannot
180
+ # exceed 100KB.
172
181
  # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
173
182
  def message(assistant_id:, session_id:, input: nil, context: nil)
174
183
  raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
@@ -201,5 +210,149 @@ module IBMWatson
201
210
  )
202
211
  response
203
212
  end
213
+
214
+ ##
215
+ # @!method message_stateless(assistant_id:, input: nil, context: nil)
216
+ # Send user input to assistant (stateless).
217
+ # Send user input to an assistant and receive a response, with conversation state
218
+ # (including context data) managed by your application.
219
+ # @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
220
+ # Assistant user interface, open the assistant settings and click **API Details**.
221
+ # For information about creating assistants, see the
222
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add#assistant-add-task).
223
+ #
224
+ # **Note:** Currently, the v2 API does not support creating assistants.
225
+ # @param input [MessageInputStateless] An input object that includes the input text.
226
+ # @param context [MessageContextStateless] Context data for the conversation. You can use this property to set or modify
227
+ # context variables, which can also be accessed by dialog nodes. The context is not
228
+ # stored by the assistant. To maintain session state, include the context from the
229
+ # previous response.
230
+ #
231
+ # **Note:** The total size of the context data for a stateless session cannot exceed
232
+ # 250KB.
233
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
234
+ def message_stateless(assistant_id:, input: nil, context: nil)
235
+ raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
236
+
237
+ headers = {
238
+ }
239
+ sdk_headers = Common.new.get_sdk_headers("conversation", "V2", "message_stateless")
240
+ headers.merge!(sdk_headers)
241
+
242
+ params = {
243
+ "version" => @version
244
+ }
245
+
246
+ data = {
247
+ "input" => input,
248
+ "context" => context
249
+ }
250
+
251
+ method_url = "/v2/assistants/%s/message" % [ERB::Util.url_encode(assistant_id)]
252
+
253
+ response = request(
254
+ method: "POST",
255
+ url: method_url,
256
+ headers: headers,
257
+ params: params,
258
+ json: data,
259
+ accept_json: true
260
+ )
261
+ response
262
+ end
263
+ #########################
264
+ # Logs
265
+ #########################
266
+
267
+ ##
268
+ # @!method list_logs(assistant_id:, sort: nil, filter: nil, page_limit: nil, cursor: nil)
269
+ # List log events for an assistant.
270
+ # List the events from the log of an assistant.
271
+ #
272
+ # This method is available only with Premium plans.
273
+ # @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
274
+ # Assistant user interface, open the assistant settings and click **API Details**.
275
+ # For information about creating assistants, see the
276
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add#assistant-add-task).
277
+ #
278
+ # **Note:** Currently, the v2 API does not support creating assistants.
279
+ # @param sort [String] How to sort the returned log events. You can sort by **request_timestamp**. To
280
+ # reverse the sort order, prefix the parameter value with a minus sign (`-`).
281
+ # @param filter [String] A cacheable parameter that limits the results to those matching the specified
282
+ # filter. For more information, see the
283
+ # [documentation](https://cloud.ibm.com/docs/assistant?topic=assistant-filter-reference#filter-reference).
284
+ # @param page_limit [Fixnum] The number of records to return in each page of results.
285
+ # @param cursor [String] A token identifying the page of results to retrieve.
286
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
287
+ def list_logs(assistant_id:, sort: nil, filter: nil, page_limit: nil, cursor: nil)
288
+ raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
289
+
290
+ headers = {
291
+ }
292
+ sdk_headers = Common.new.get_sdk_headers("conversation", "V2", "list_logs")
293
+ headers.merge!(sdk_headers)
294
+
295
+ params = {
296
+ "version" => @version,
297
+ "sort" => sort,
298
+ "filter" => filter,
299
+ "page_limit" => page_limit,
300
+ "cursor" => cursor
301
+ }
302
+
303
+ method_url = "/v2/assistants/%s/logs" % [ERB::Util.url_encode(assistant_id)]
304
+
305
+ response = request(
306
+ method: "GET",
307
+ url: method_url,
308
+ headers: headers,
309
+ params: params,
310
+ accept_json: true
311
+ )
312
+ response
313
+ end
314
+ #########################
315
+ # User data
316
+ #########################
317
+
318
+ ##
319
+ # @!method delete_user_data(customer_id:)
320
+ # Delete labeled data.
321
+ # Deletes all data associated with a specified customer ID. The method has no effect
322
+ # if no data is associated with the customer ID.
323
+ #
324
+ # You associate a customer ID with data by passing the `X-Watson-Metadata` header
325
+ # with a request that passes data. For more information about personal data and
326
+ # customer IDs, see [Information
327
+ # security](https://cloud.ibm.com/docs/assistant?topic=assistant-information-security#information-security).
328
+ #
329
+ # This operation is limited to 4 requests per minute. For more information, see
330
+ # **Rate limiting**.
331
+ # @param customer_id [String] The customer ID for which all data is to be deleted.
332
+ # @return [nil]
333
+ def delete_user_data(customer_id:)
334
+ raise ArgumentError.new("customer_id must be provided") if customer_id.nil?
335
+
336
+ headers = {
337
+ }
338
+ sdk_headers = Common.new.get_sdk_headers("conversation", "V2", "delete_user_data")
339
+ headers.merge!(sdk_headers)
340
+
341
+ params = {
342
+ "version" => @version,
343
+ "customer_id" => customer_id
344
+ }
345
+
346
+ method_url = "/v2/user_data"
347
+
348
+ request(
349
+ method: "DELETE",
350
+ url: method_url,
351
+ headers: headers,
352
+ params: params,
353
+ accept_json: true
354
+ )
355
+ nil
356
+ end
204
357
  end
205
358
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # (C) Copyright IBM Corp. 2020.
3
+ # (C) Copyright IBM Corp. 2018, 2020.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -29,6 +29,8 @@ module IBMWatson
29
29
  # The Compare Comply V1 service.
30
30
  class CompareComplyV1 < IBMCloudSdkCore::BaseService
31
31
  include Concurrent::Async
32
+ DEFAULT_SERVICE_NAME = "compare_comply"
33
+ DEFAULT_SERVICE_URL = "https://api.us-south.compare-comply.watson.cloud.ibm.com"
32
34
  ##
33
35
  # @!method initialize(args)
34
36
  # Construct a new client for the Compare Comply service.
@@ -47,19 +49,23 @@ module IBMWatson
47
49
  # @option args service_url [String] The base service URL to use when contacting the service.
48
50
  # The base service_url may differ between IBM Cloud regions.
49
51
  # @option args authenticator [Object] The Authenticator instance to be configured for this service.
52
+ # @option args service_name [String] The name of the service to configure. Will be used as the key to load
53
+ # any external configuration, if applicable.
50
54
  def initialize(args = {})
51
55
  @__async_initialized__ = false
52
56
  defaults = {}
53
57
  defaults[:version] = nil
54
- defaults[:service_url] = "https://gateway.watsonplatform.net/compare-comply/api"
58
+ defaults[:service_url] = DEFAULT_SERVICE_URL
59
+ defaults[:service_name] = DEFAULT_SERVICE_NAME
55
60
  defaults[:authenticator] = nil
61
+ user_service_url = args[:service_url] unless args[:service_url].nil?
56
62
  args = defaults.merge(args)
57
63
  @version = args[:version]
58
64
  raise ArgumentError.new("version must be provided") if @version.nil?
59
65
 
60
- args[:service_name] = "compare_comply"
61
66
  args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
62
67
  super
68
+ @service_url = user_service_url unless user_service_url.nil?
63
69
  end
64
70
 
65
71
  #########################
@@ -473,10 +479,10 @@ module IBMWatson
473
479
  # Run Compare and Comply methods over a collection of input documents.
474
480
  #
475
481
  # **Important:** Batch processing requires the use of the [IBM Cloud Object Storage
476
- # service](https://cloud.ibm.com/docs/services/cloud-object-storage?topic=cloud-object-storage-about#about-ibm-cloud-object-storage).
482
+ # service](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-about#about-ibm-cloud-object-storage).
477
483
  # The use of IBM Cloud Object Storage with Compare and Comply is discussed at [Using
478
484
  # batch
479
- # processing](https://cloud.ibm.com/docs/services/compare-comply?topic=compare-comply-batching#before-you-batch).
485
+ # processing](https://cloud.ibm.com/docs/compare-comply?topic=compare-comply-batching#before-you-batch).
480
486
  # @param function [String] The Compare and Comply method to run across the submitted input documents.
481
487
  # @param input_credentials_file [File] A JSON file containing the input Cloud Object Storage credentials. At a minimum,
482
488
  # the credentials must enable `READ` permissions on the bucket defined by the
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # (C) Copyright IBM Corp. 2020.
3
+ # (C) Copyright IBM Corp. 2018, 2020.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -32,6 +32,8 @@ module IBMWatson
32
32
  # The Discovery V1 service.
33
33
  class DiscoveryV1 < IBMCloudSdkCore::BaseService
34
34
  include Concurrent::Async
35
+ DEFAULT_SERVICE_NAME = "discovery"
36
+ DEFAULT_SERVICE_URL = "https://api.us-south.discovery.watson.cloud.ibm.com"
35
37
  ##
36
38
  # @!method initialize(args)
37
39
  # Construct a new client for the Discovery service.
@@ -50,19 +52,23 @@ module IBMWatson
50
52
  # @option args service_url [String] The base service URL to use when contacting the service.
51
53
  # The base service_url may differ between IBM Cloud regions.
52
54
  # @option args authenticator [Object] The Authenticator instance to be configured for this service.
55
+ # @option args service_name [String] The name of the service to configure. Will be used as the key to load
56
+ # any external configuration, if applicable.
53
57
  def initialize(args = {})
54
58
  @__async_initialized__ = false
55
59
  defaults = {}
56
60
  defaults[:version] = nil
57
- defaults[:service_url] = "https://gateway.watsonplatform.net/discovery/api"
61
+ defaults[:service_url] = DEFAULT_SERVICE_URL
62
+ defaults[:service_name] = DEFAULT_SERVICE_NAME
58
63
  defaults[:authenticator] = nil
64
+ user_service_url = args[:service_url] unless args[:service_url].nil?
59
65
  args = defaults.merge(args)
60
66
  @version = args[:version]
61
67
  raise ArgumentError.new("version must be provided") if @version.nil?
62
68
 
63
- args[:service_name] = "discovery"
64
69
  args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
65
70
  super
71
+ @service_url = user_service_url unless user_service_url.nil?
66
72
  end
67
73
 
68
74
  #########################
@@ -1312,7 +1318,7 @@ module IBMWatson
1312
1318
  # Query a collection.
1313
1319
  # By using this method, you can construct long queries. For details, see the
1314
1320
  # [Discovery
1315
- # documentation](https://cloud.ibm.com/docs/services/discovery?topic=discovery-query-concepts#query-concepts).
1321
+ # documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-concepts#query-concepts).
1316
1322
  # @param environment_id [String] The ID of the environment.
1317
1323
  # @param collection_id [String] The ID of the collection.
1318
1324
  # @param filter [String] A cacheable query that excludes documents that don't mention the query content.
@@ -1432,7 +1438,7 @@ module IBMWatson
1432
1438
  # Queries for notices (errors or warnings) that might have been generated by the
1433
1439
  # system. Notices are generated when ingesting documents and performing relevance
1434
1440
  # training. See the [Discovery
1435
- # documentation](https://cloud.ibm.com/docs/services/discovery?topic=discovery-query-concepts#query-concepts)
1441
+ # documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-concepts#query-concepts)
1436
1442
  # for more details on the query language.
1437
1443
  # @param environment_id [String] The ID of the environment.
1438
1444
  # @param collection_id [String] The ID of the collection.
@@ -1532,7 +1538,7 @@ module IBMWatson
1532
1538
  # Query multiple collections.
1533
1539
  # By using this method, you can construct long queries that search multiple
1534
1540
  # collection. For details, see the [Discovery
1535
- # documentation](https://cloud.ibm.com/docs/services/discovery?topic=discovery-query-concepts#query-concepts).
1541
+ # documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-concepts#query-concepts).
1536
1542
  # @param environment_id [String] The ID of the environment.
1537
1543
  # @param collection_ids [String] A comma-separated list of collection IDs to be queried against.
1538
1544
  # @param filter [String] A cacheable query that excludes documents that don't mention the query content.
@@ -1646,7 +1652,7 @@ module IBMWatson
1646
1652
  # Queries for notices (errors or warnings) that might have been generated by the
1647
1653
  # system. Notices are generated when ingesting documents and performing relevance
1648
1654
  # training. See the [Discovery
1649
- # documentation](https://cloud.ibm.com/docs/services/discovery?topic=discovery-query-concepts#query-concepts)
1655
+ # documentation](https://cloud.ibm.com/docs/discovery?topic=discovery-query-concepts#query-concepts)
1650
1656
  # for more details on the query language.
1651
1657
  # @param environment_id [String] The ID of the environment.
1652
1658
  # @param collection_ids [Array[String]] A comma-separated list of collection IDs to be queried against.
@@ -2184,7 +2190,7 @@ module IBMWatson
2184
2190
  # You associate a customer ID with data by passing the **X-Watson-Metadata** header
2185
2191
  # with a request that passes data. For more information about personal data and
2186
2192
  # customer IDs, see [Information
2187
- # security](https://cloud.ibm.com/docs/services/discovery?topic=discovery-information-security#information-security).
2193
+ # security](https://cloud.ibm.com/docs/discovery?topic=discovery-information-security#information-security).
2188
2194
  # @param customer_id [String] The customer ID for which all data is to be deleted.
2189
2195
  # @return [nil]
2190
2196
  def delete_user_data(customer_id:)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # (C) Copyright IBM Corp. 2020.
3
+ # (C) Copyright IBM Corp. 2019, 2020.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- # IBM Watson&trade; Discovery for IBM Cloud Pak for Data is a cognitive search and
18
- # content analytics engine that you can add to applications to identify patterns, trends
19
- # and actionable insights to drive better decision-making. Securely unify structured and
20
- # unstructured data with pre-enriched content, and use a simplified query language to
21
- # eliminate the need for manual filtering of results.
17
+ # IBM Watson&trade; Discovery is a cognitive search and content analytics engine that
18
+ # you can add to applications to identify patterns, trends and actionable insights to
19
+ # drive better decision-making. Securely unify structured and unstructured data with
20
+ # pre-enriched content, and use a simplified query language to eliminate the need for
21
+ # manual filtering of results.
22
22
 
23
23
  require "concurrent"
24
24
  require "erb"
@@ -32,6 +32,8 @@ module IBMWatson
32
32
  # The Discovery V2 service.
33
33
  class DiscoveryV2 < IBMCloudSdkCore::BaseService
34
34
  include Concurrent::Async
35
+ DEFAULT_SERVICE_NAME = "discovery"
36
+ DEFAULT_SERVICE_URL = "https://api.us-south.discovery.watson.cloud.ibm.com"
35
37
  ##
36
38
  # @!method initialize(args)
37
39
  # Construct a new client for the Discovery service.
@@ -50,19 +52,23 @@ module IBMWatson
50
52
  # @option args service_url [String] The base service URL to use when contacting the service.
51
53
  # The base service_url may differ between IBM Cloud regions.
52
54
  # @option args authenticator [Object] The Authenticator instance to be configured for this service.
55
+ # @option args service_name [String] The name of the service to configure. Will be used as the key to load
56
+ # any external configuration, if applicable.
53
57
  def initialize(args = {})
54
58
  @__async_initialized__ = false
55
59
  defaults = {}
56
60
  defaults[:version] = nil
57
- defaults[:service_url] = nil
61
+ defaults[:service_url] = DEFAULT_SERVICE_URL
62
+ defaults[:service_name] = DEFAULT_SERVICE_NAME
58
63
  defaults[:authenticator] = nil
64
+ user_service_url = args[:service_url] unless args[:service_url].nil?
59
65
  args = defaults.merge(args)
60
66
  @version = args[:version]
61
67
  raise ArgumentError.new("version must be provided") if @version.nil?
62
68
 
63
- args[:service_name] = "discovery"
64
69
  args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
65
70
  super
71
+ @service_url = user_service_url unless user_service_url.nil?
66
72
  end
67
73
 
68
74
  #########################
@@ -99,6 +105,164 @@ module IBMWatson
99
105
  )
100
106
  response
101
107
  end
108
+
109
+ ##
110
+ # @!method create_collection(project_id:, name:, description: nil, language: nil, enrichments: nil)
111
+ # Create a collection.
112
+ # Create a new collection in the specified project.
113
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
114
+ # Discovery administrative tooling.
115
+ # @param name [String] The name of the collection.
116
+ # @param description [String] A description of the collection.
117
+ # @param language [String] The language of the collection.
118
+ # @param enrichments [Array[CollectionEnrichment]] An array of enrichments that are applied to this collection.
119
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
120
+ def create_collection(project_id:, name:, description: nil, language: nil, enrichments: nil)
121
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
122
+
123
+ raise ArgumentError.new("name must be provided") if name.nil?
124
+
125
+ headers = {
126
+ }
127
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "create_collection")
128
+ headers.merge!(sdk_headers)
129
+
130
+ params = {
131
+ "version" => @version
132
+ }
133
+
134
+ data = {
135
+ "name" => name,
136
+ "description" => description,
137
+ "language" => language,
138
+ "enrichments" => enrichments
139
+ }
140
+
141
+ method_url = "/v2/projects/%s/collections" % [ERB::Util.url_encode(project_id)]
142
+
143
+ response = request(
144
+ method: "POST",
145
+ url: method_url,
146
+ headers: headers,
147
+ params: params,
148
+ json: data,
149
+ accept_json: true
150
+ )
151
+ response
152
+ end
153
+
154
+ ##
155
+ # @!method get_collection(project_id:, collection_id:)
156
+ # Get collection.
157
+ # Get details about the specified collection.
158
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
159
+ # Discovery administrative tooling.
160
+ # @param collection_id [String] The ID of the collection.
161
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
162
+ def get_collection(project_id:, collection_id:)
163
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
164
+
165
+ raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
166
+
167
+ headers = {
168
+ }
169
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_collection")
170
+ headers.merge!(sdk_headers)
171
+
172
+ params = {
173
+ "version" => @version
174
+ }
175
+
176
+ method_url = "/v2/projects/%s/collections/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id)]
177
+
178
+ response = request(
179
+ method: "GET",
180
+ url: method_url,
181
+ headers: headers,
182
+ params: params,
183
+ accept_json: true
184
+ )
185
+ response
186
+ end
187
+
188
+ ##
189
+ # @!method update_collection(project_id:, collection_id:, name: nil, description: nil, enrichments: nil)
190
+ # Update a collection.
191
+ # Updates the specified collection's name, description, and enrichments.
192
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
193
+ # Discovery administrative tooling.
194
+ # @param collection_id [String] The ID of the collection.
195
+ # @param name [String] The name of the collection.
196
+ # @param description [String] A description of the collection.
197
+ # @param enrichments [Array[CollectionEnrichment]] An array of enrichments that are applied to this collection.
198
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
199
+ def update_collection(project_id:, collection_id:, name: nil, description: nil, enrichments: nil)
200
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
201
+
202
+ raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
203
+
204
+ headers = {
205
+ }
206
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "update_collection")
207
+ headers.merge!(sdk_headers)
208
+
209
+ params = {
210
+ "version" => @version
211
+ }
212
+
213
+ data = {
214
+ "name" => name,
215
+ "description" => description,
216
+ "enrichments" => enrichments
217
+ }
218
+
219
+ method_url = "/v2/projects/%s/collections/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id)]
220
+
221
+ response = request(
222
+ method: "POST",
223
+ url: method_url,
224
+ headers: headers,
225
+ params: params,
226
+ json: data,
227
+ accept_json: true
228
+ )
229
+ response
230
+ end
231
+
232
+ ##
233
+ # @!method delete_collection(project_id:, collection_id:)
234
+ # Delete a collection.
235
+ # Deletes the specified collection from the project. All documents stored in the
236
+ # specified collection and not shared is also deleted.
237
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
238
+ # Discovery administrative tooling.
239
+ # @param collection_id [String] The ID of the collection.
240
+ # @return [nil]
241
+ def delete_collection(project_id:, collection_id:)
242
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
243
+
244
+ raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
245
+
246
+ headers = {
247
+ }
248
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_collection")
249
+ headers.merge!(sdk_headers)
250
+
251
+ params = {
252
+ "version" => @version
253
+ }
254
+
255
+ method_url = "/v2/projects/%s/collections/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id)]
256
+
257
+ request(
258
+ method: "DELETE",
259
+ url: method_url,
260
+ headers: headers,
261
+ params: params,
262
+ accept_json: false
263
+ )
264
+ nil
265
+ end
102
266
  #########################
103
267
  # Queries
104
268
  #########################
@@ -107,7 +271,13 @@ module IBMWatson
107
271
  # @!method query(project_id:, collection_ids: nil, filter: nil, query: nil, natural_language_query: nil, aggregation: nil, count: nil, _return: nil, offset: nil, sort: nil, highlight: nil, spelling_suggestions: nil, table_results: nil, suggested_refinements: nil, passages: nil)
108
272
  # Query a project.
109
273
  # By using this method, you can construct queries. For details, see the [Discovery
110
- # documentation](https://cloud.ibm.com/docs/services/discovery-data?topic=discovery-data-query-concepts).
274
+ # documentation](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-query-concepts).
275
+ # The default query parameters are defined by the settings for this project, see the
276
+ # [Discovery
277
+ # documentation](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-project-defaults)
278
+ # for an overview of the standard default settings, and see [the Projects API
279
+ # documentation](#create-project) for details about how to set custom default query
280
+ # settings.
111
281
  # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
112
282
  # Discovery administrative tooling.
113
283
  # @param collection_ids [Array[String]] A comma-separated list of collection IDs to be queried against.
@@ -321,7 +491,7 @@ module IBMWatson
321
491
 
322
492
  ##
323
493
  # @!method get_component_settings(project_id:)
324
- # Configuration settings for components.
494
+ # List component settings.
325
495
  # Returns default configuration settings for components.
326
496
  # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
327
497
  # Discovery administrative tooling.
@@ -399,7 +569,10 @@ module IBMWatson
399
569
  # @param filename [String] The filename for file.
400
570
  # @param file_content_type [String] The content type of file.
401
571
  # @param metadata [String] The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB
402
- # are rejected. Example: ``` {
572
+ # are rejected.
573
+ #
574
+ #
575
+ # Example: ``` {
403
576
  # "Creator": "Johnny Appleseed",
404
577
  # "Subject": "Apples"
405
578
  # } ```.
@@ -461,6 +634,9 @@ module IBMWatson
461
634
  # **Note:** This operation only works on collections created to accept direct file
462
635
  # uploads. It cannot be used to modify a collection that connects to an external
463
636
  # source such as Microsoft SharePoint.
637
+ #
638
+ # **Note:** If an uploaded document is segmented, all segments will be overwritten,
639
+ # even if the updated version of the document has fewer segments.
464
640
  # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
465
641
  # Discovery administrative tooling.
466
642
  # @param collection_id [String] The ID of the collection.
@@ -472,7 +648,10 @@ module IBMWatson
472
648
  # @param filename [String] The filename for file.
473
649
  # @param file_content_type [String] The content type of file.
474
650
  # @param metadata [String] The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB
475
- # are rejected. Example: ``` {
651
+ # are rejected.
652
+ #
653
+ #
654
+ # Example: ``` {
476
655
  # "Creator": "Johnny Appleseed",
477
656
  # "Subject": "Apples"
478
657
  # } ```.
@@ -531,6 +710,9 @@ module IBMWatson
531
710
  # **Note:** This operation only works on collections created to accept direct file
532
711
  # uploads. It cannot be used to modify a collection that connects to an external
533
712
  # source such as Microsoft SharePoint.
713
+ #
714
+ # **Note:** Segments of an uploaded document cannot be deleted individually. Delete
715
+ # all segments by deleting using the `parent_document_id` of a segment result.
534
716
  # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
535
717
  # Discovery administrative tooling.
536
718
  # @param collection_id [String] The ID of the collection.
@@ -762,5 +944,416 @@ module IBMWatson
762
944
  )
763
945
  response
764
946
  end
947
+ #########################
948
+ # enrichments
949
+ #########################
950
+
951
+ ##
952
+ # @!method list_enrichments(project_id:)
953
+ # List Enrichments.
954
+ # List the enrichments available to this project.
955
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
956
+ # Discovery administrative tooling.
957
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
958
+ def list_enrichments(project_id:)
959
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
960
+
961
+ headers = {
962
+ }
963
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "list_enrichments")
964
+ headers.merge!(sdk_headers)
965
+
966
+ params = {
967
+ "version" => @version
968
+ }
969
+
970
+ method_url = "/v2/projects/%s/enrichments" % [ERB::Util.url_encode(project_id)]
971
+
972
+ response = request(
973
+ method: "GET",
974
+ url: method_url,
975
+ headers: headers,
976
+ params: params,
977
+ accept_json: true
978
+ )
979
+ response
980
+ end
981
+
982
+ ##
983
+ # @!method create_enrichment(project_id:, enrichment:, file: nil)
984
+ # Create an enrichment.
985
+ # Create an enrichment for use with the specified project/.
986
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
987
+ # Discovery administrative tooling.
988
+ # @param enrichment [CreateEnrichment]
989
+ # @param file [File] The enrichment file to upload.
990
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
991
+ def create_enrichment(project_id:, enrichment:, file: nil)
992
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
993
+
994
+ raise ArgumentError.new("enrichment must be provided") if enrichment.nil?
995
+
996
+ headers = {
997
+ }
998
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "create_enrichment")
999
+ headers.merge!(sdk_headers)
1000
+
1001
+ params = {
1002
+ "version" => @version
1003
+ }
1004
+
1005
+ form_data = {}
1006
+
1007
+ form_data[:enrichment] = HTTP::FormData::Part.new(enrichment.to_s, content_type: "application/json")
1008
+
1009
+ unless file.nil?
1010
+ unless file.instance_of?(StringIO) || file.instance_of?(File)
1011
+ file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
1012
+ end
1013
+ form_data[:file] = HTTP::FormData::File.new(file, content_type: "application/octet-stream", filename: file.respond_to?(:path) ? file.path : nil)
1014
+ end
1015
+
1016
+ method_url = "/v2/projects/%s/enrichments" % [ERB::Util.url_encode(project_id)]
1017
+
1018
+ response = request(
1019
+ method: "POST",
1020
+ url: method_url,
1021
+ headers: headers,
1022
+ params: params,
1023
+ form: form_data,
1024
+ accept_json: true
1025
+ )
1026
+ response
1027
+ end
1028
+
1029
+ ##
1030
+ # @!method get_enrichment(project_id:, enrichment_id:)
1031
+ # Get enrichment.
1032
+ # Get details about a specific enrichment.
1033
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1034
+ # Discovery administrative tooling.
1035
+ # @param enrichment_id [String] The ID of the enrichment.
1036
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1037
+ def get_enrichment(project_id:, enrichment_id:)
1038
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1039
+
1040
+ raise ArgumentError.new("enrichment_id must be provided") if enrichment_id.nil?
1041
+
1042
+ headers = {
1043
+ }
1044
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_enrichment")
1045
+ headers.merge!(sdk_headers)
1046
+
1047
+ params = {
1048
+ "version" => @version
1049
+ }
1050
+
1051
+ method_url = "/v2/projects/%s/enrichments/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(enrichment_id)]
1052
+
1053
+ response = request(
1054
+ method: "GET",
1055
+ url: method_url,
1056
+ headers: headers,
1057
+ params: params,
1058
+ accept_json: true
1059
+ )
1060
+ response
1061
+ end
1062
+
1063
+ ##
1064
+ # @!method update_enrichment(project_id:, enrichment_id:, name:, description: nil)
1065
+ # Update an enrichment.
1066
+ # Updates an existing enrichment's name and description.
1067
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1068
+ # Discovery administrative tooling.
1069
+ # @param enrichment_id [String] The ID of the enrichment.
1070
+ # @param name [String] A new name for the enrichment.
1071
+ # @param description [String] A new description for the enrichment.
1072
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1073
+ def update_enrichment(project_id:, enrichment_id:, name:, description: nil)
1074
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1075
+
1076
+ raise ArgumentError.new("enrichment_id must be provided") if enrichment_id.nil?
1077
+
1078
+ raise ArgumentError.new("name must be provided") if name.nil?
1079
+
1080
+ headers = {
1081
+ }
1082
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "update_enrichment")
1083
+ headers.merge!(sdk_headers)
1084
+
1085
+ params = {
1086
+ "version" => @version
1087
+ }
1088
+
1089
+ data = {
1090
+ "name" => name,
1091
+ "description" => description
1092
+ }
1093
+
1094
+ method_url = "/v2/projects/%s/enrichments/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(enrichment_id)]
1095
+
1096
+ response = request(
1097
+ method: "POST",
1098
+ url: method_url,
1099
+ headers: headers,
1100
+ params: params,
1101
+ json: data,
1102
+ accept_json: true
1103
+ )
1104
+ response
1105
+ end
1106
+
1107
+ ##
1108
+ # @!method delete_enrichment(project_id:, enrichment_id:)
1109
+ # Delete an enrichment.
1110
+ # Deletes an existing enrichment from the specified project.
1111
+ #
1112
+ # **Note:** Only enrichments that have been manually created can be deleted.
1113
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1114
+ # Discovery administrative tooling.
1115
+ # @param enrichment_id [String] The ID of the enrichment.
1116
+ # @return [nil]
1117
+ def delete_enrichment(project_id:, enrichment_id:)
1118
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1119
+
1120
+ raise ArgumentError.new("enrichment_id must be provided") if enrichment_id.nil?
1121
+
1122
+ headers = {
1123
+ }
1124
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_enrichment")
1125
+ headers.merge!(sdk_headers)
1126
+
1127
+ params = {
1128
+ "version" => @version
1129
+ }
1130
+
1131
+ method_url = "/v2/projects/%s/enrichments/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(enrichment_id)]
1132
+
1133
+ request(
1134
+ method: "DELETE",
1135
+ url: method_url,
1136
+ headers: headers,
1137
+ params: params,
1138
+ accept_json: false
1139
+ )
1140
+ nil
1141
+ end
1142
+ #########################
1143
+ # projects
1144
+ #########################
1145
+
1146
+ ##
1147
+ # @!method list_projects
1148
+ # List projects.
1149
+ # Lists existing projects for this instance.
1150
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1151
+ def list_projects
1152
+ headers = {
1153
+ }
1154
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "list_projects")
1155
+ headers.merge!(sdk_headers)
1156
+
1157
+ params = {
1158
+ "version" => @version
1159
+ }
1160
+
1161
+ method_url = "/v2/projects"
1162
+
1163
+ response = request(
1164
+ method: "GET",
1165
+ url: method_url,
1166
+ headers: headers,
1167
+ params: params,
1168
+ accept_json: true
1169
+ )
1170
+ response
1171
+ end
1172
+
1173
+ ##
1174
+ # @!method create_project(name:, type:, default_query_parameters: nil)
1175
+ # Create a Project.
1176
+ # Create a new project for this instance.
1177
+ # @param name [String] The human readable name of this project.
1178
+ # @param type [String] The project type of this project.
1179
+ # @param default_query_parameters [DefaultQueryParams] Default query parameters for this project.
1180
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1181
+ def create_project(name:, type:, default_query_parameters: nil)
1182
+ raise ArgumentError.new("name must be provided") if name.nil?
1183
+
1184
+ raise ArgumentError.new("type must be provided") if type.nil?
1185
+
1186
+ headers = {
1187
+ }
1188
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "create_project")
1189
+ headers.merge!(sdk_headers)
1190
+
1191
+ params = {
1192
+ "version" => @version
1193
+ }
1194
+
1195
+ data = {
1196
+ "name" => name,
1197
+ "type" => type,
1198
+ "default_query_parameters" => default_query_parameters
1199
+ }
1200
+
1201
+ method_url = "/v2/projects"
1202
+
1203
+ response = request(
1204
+ method: "POST",
1205
+ url: method_url,
1206
+ headers: headers,
1207
+ params: params,
1208
+ json: data,
1209
+ accept_json: true
1210
+ )
1211
+ response
1212
+ end
1213
+
1214
+ ##
1215
+ # @!method get_project(project_id:)
1216
+ # Get project.
1217
+ # Get details on the specified project.
1218
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1219
+ # Discovery administrative tooling.
1220
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1221
+ def get_project(project_id:)
1222
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1223
+
1224
+ headers = {
1225
+ }
1226
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_project")
1227
+ headers.merge!(sdk_headers)
1228
+
1229
+ params = {
1230
+ "version" => @version
1231
+ }
1232
+
1233
+ method_url = "/v2/projects/%s" % [ERB::Util.url_encode(project_id)]
1234
+
1235
+ response = request(
1236
+ method: "GET",
1237
+ url: method_url,
1238
+ headers: headers,
1239
+ params: params,
1240
+ accept_json: true
1241
+ )
1242
+ response
1243
+ end
1244
+
1245
+ ##
1246
+ # @!method update_project(project_id:, name: nil)
1247
+ # Update a project.
1248
+ # Update the specified project's name.
1249
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1250
+ # Discovery administrative tooling.
1251
+ # @param name [String] The new name to give this project.
1252
+ # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
1253
+ def update_project(project_id:, name: nil)
1254
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1255
+
1256
+ headers = {
1257
+ }
1258
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "update_project")
1259
+ headers.merge!(sdk_headers)
1260
+
1261
+ params = {
1262
+ "version" => @version
1263
+ }
1264
+
1265
+ data = {
1266
+ "name" => name
1267
+ }
1268
+
1269
+ method_url = "/v2/projects/%s" % [ERB::Util.url_encode(project_id)]
1270
+
1271
+ response = request(
1272
+ method: "POST",
1273
+ url: method_url,
1274
+ headers: headers,
1275
+ params: params,
1276
+ json: data,
1277
+ accept_json: true
1278
+ )
1279
+ response
1280
+ end
1281
+
1282
+ ##
1283
+ # @!method delete_project(project_id:)
1284
+ # Delete a project.
1285
+ # Deletes the specified project.
1286
+ #
1287
+ # **Important:** Deleting a project deletes everything that is part of the specified
1288
+ # project, including all collections.
1289
+ # @param project_id [String] The ID of the project. This information can be found from the deploy page of the
1290
+ # Discovery administrative tooling.
1291
+ # @return [nil]
1292
+ def delete_project(project_id:)
1293
+ raise ArgumentError.new("project_id must be provided") if project_id.nil?
1294
+
1295
+ headers = {
1296
+ }
1297
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_project")
1298
+ headers.merge!(sdk_headers)
1299
+
1300
+ params = {
1301
+ "version" => @version
1302
+ }
1303
+
1304
+ method_url = "/v2/projects/%s" % [ERB::Util.url_encode(project_id)]
1305
+
1306
+ request(
1307
+ method: "DELETE",
1308
+ url: method_url,
1309
+ headers: headers,
1310
+ params: params,
1311
+ accept_json: false
1312
+ )
1313
+ nil
1314
+ end
1315
+ #########################
1316
+ # userData
1317
+ #########################
1318
+
1319
+ ##
1320
+ # @!method delete_user_data(customer_id:)
1321
+ # Delete labeled data.
1322
+ # Deletes all data associated with a specified customer ID. The method has no effect
1323
+ # if no data is associated with the customer ID.
1324
+ #
1325
+ # You associate a customer ID with data by passing the **X-Watson-Metadata** header
1326
+ # with a request that passes data. For more information about personal data and
1327
+ # customer IDs, see [Information
1328
+ # security](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-information-security#information-security).
1329
+ #
1330
+ #
1331
+ # **Note:** This method is only supported on IBM Cloud instances of Discovery.
1332
+ # @param customer_id [String] The customer ID for which all data is to be deleted.
1333
+ # @return [nil]
1334
+ def delete_user_data(customer_id:)
1335
+ raise ArgumentError.new("customer_id must be provided") if customer_id.nil?
1336
+
1337
+ headers = {
1338
+ }
1339
+ sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_user_data")
1340
+ headers.merge!(sdk_headers)
1341
+
1342
+ params = {
1343
+ "version" => @version,
1344
+ "customer_id" => customer_id
1345
+ }
1346
+
1347
+ method_url = "/v2/user_data"
1348
+
1349
+ request(
1350
+ method: "DELETE",
1351
+ url: method_url,
1352
+ headers: headers,
1353
+ params: params,
1354
+ accept_json: false
1355
+ )
1356
+ nil
1357
+ end
765
1358
  end
766
1359
  end