ibm_watson 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/README.md +7 -2
- data/lib/ibm_watson.rb +1 -0
- data/lib/ibm_watson/assistant_v1.rb +22 -14
- data/lib/ibm_watson/assistant_v2.rb +7 -2
- data/lib/ibm_watson/discovery_v1.rb +2 -2
- data/lib/ibm_watson/discovery_v2.rb +762 -0
- data/lib/ibm_watson/speech_to_text_v1.rb +10 -0
- data/lib/ibm_watson/version.rb +1 -1
- data/lib/ibm_watson/visual_recognition_v4.rb +39 -6
- data/test/integration/test_assistant_v1.rb +2 -4
- data/test/integration/test_compare_comply_v1.rb +1 -1
- data/test/integration/test_discovery_v2.rb +144 -0
- data/test/unit/test_assistant_v1.rb +13 -403
- data/test/unit/test_assistant_v2.rb +8 -26
- data/test/unit/test_compare_comply_v1.rb +8 -93
- data/test/unit/test_discovery_v1.rb +10 -399
- data/test/unit/test_discovery_v2.rb +237 -0
- data/test/unit/test_visual_recognition_v4.rb +54 -131
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae8370e694afb3c9bc5904e6cf9156e329c46569e531953bd5de499d8e06d069
|
4
|
+
data.tar.gz: 07a2a51577402b7a908996e3e536d7085bfd4e3fbb1e854bff24902d71d085c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12746df4ba137cda554cfb8fcd7f313bfc7a355f2f258a86a39d3d6824f06e9e7e30947c22b846bc811d3bafadb8e7e1cdb4e916209fe76b44c74358fa1f6c75
|
7
|
+
data.tar.gz: 9942822349a390ebe594b4905f1148b0a21aa6eac12de531c6505aee9e43d00a5cdb16a3a18ad71b87bc75625987ff35ee2c1d92f06a11123da797b5d3a6f254
|
data/README.md
CHANGED
@@ -16,6 +16,7 @@ Ruby gem to quickly get started with the various [IBM Watson][wdc] services.
|
|
16
16
|
* [Before you begin](#before-you-begin)
|
17
17
|
* [Installation](#installation)
|
18
18
|
* [Examples](#examples)
|
19
|
+
* [Discovery v2 only on CP4D](#discovery-v2-only-on-cp4d)
|
19
20
|
* [Running in IBM Cloud](#running-in-ibm-cloud)
|
20
21
|
* [Authentication](#authentication)
|
21
22
|
* [Getting credentials](#getting-credentials)
|
@@ -61,6 +62,10 @@ require "ibm_watson"
|
|
61
62
|
|
62
63
|
The [examples][examples] folder has basic and advanced examples. The examples within each service assume that you already have [service credentials](#getting-credentials).
|
63
64
|
|
65
|
+
## Discovery v2 only on CP4D
|
66
|
+
|
67
|
+
Discovery v2 is only available on Cloud Pak for Data.
|
68
|
+
|
64
69
|
## Running in IBM Cloud
|
65
70
|
|
66
71
|
If you run your app in IBM Cloud, the SDK gets credentials from the [`VCAP_SERVICES`][vcap_services] environment variable.
|
@@ -350,7 +355,7 @@ The SDK will manage the token for the user
|
|
350
355
|
|
351
356
|
```ruby
|
352
357
|
|
353
|
-
authenticator = IBMWatson::Authenticators::
|
358
|
+
authenticator = IBMWatson::Authenticators::CloudPakForDataAuthenticator.new(
|
354
359
|
username: "<username>",
|
355
360
|
password: "<password>",
|
356
361
|
url: "<authentication url>",
|
@@ -360,7 +365,7 @@ assistant = IBMWatson::AssistantV1.new(
|
|
360
365
|
version: "<version>",
|
361
366
|
authenticator: authenticator
|
362
367
|
)
|
363
|
-
|
368
|
+
|
364
369
|
```
|
365
370
|
|
366
371
|
## Ruby version
|
data/lib/ibm_watson.rb
CHANGED
@@ -13,6 +13,7 @@ module IBMWatson
|
|
13
13
|
require_relative("./ibm_watson/assistant_v2.rb")
|
14
14
|
require_relative("./ibm_watson/text_to_speech_v1.rb")
|
15
15
|
require_relative("./ibm_watson/discovery_v1.rb")
|
16
|
+
require_relative("./ibm_watson/discovery_v2.rb")
|
16
17
|
require_relative("./ibm_watson/natural_language_understanding_v1.rb")
|
17
18
|
require_relative("./ibm_watson/speech_to_text_v1.rb")
|
18
19
|
require_relative("./ibm_watson/visual_recognition_v3.rb")
|
@@ -177,7 +177,7 @@ module IBMWatson
|
|
177
177
|
end
|
178
178
|
|
179
179
|
##
|
180
|
-
# @!method create_workspace(name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil)
|
180
|
+
# @!method create_workspace(name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, webhooks: nil)
|
181
181
|
# Create workspace.
|
182
182
|
# Create a workspace based on component objects. You must provide workspace
|
183
183
|
# components defining the content of the new workspace.
|
@@ -199,8 +199,9 @@ module IBMWatson
|
|
199
199
|
# @param dialog_nodes [Array[DialogNode]] An array of objects describing the dialog nodes in the workspace.
|
200
200
|
# @param counterexamples [Array[Counterexample]] An array of objects defining input examples that have been marked as irrelevant
|
201
201
|
# input.
|
202
|
+
# @param webhooks [Array[Webhook]]
|
202
203
|
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
203
|
-
def create_workspace(name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil)
|
204
|
+
def create_workspace(name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, webhooks: nil)
|
204
205
|
headers = {
|
205
206
|
}
|
206
207
|
sdk_headers = Common.new.get_sdk_headers("conversation", "V1", "create_workspace")
|
@@ -220,7 +221,8 @@ module IBMWatson
|
|
220
221
|
"intents" => intents,
|
221
222
|
"entities" => entities,
|
222
223
|
"dialog_nodes" => dialog_nodes,
|
223
|
-
"counterexamples" => counterexamples
|
224
|
+
"counterexamples" => counterexamples,
|
225
|
+
"webhooks" => webhooks
|
224
226
|
}
|
225
227
|
|
226
228
|
method_url = "/v1/workspaces"
|
@@ -282,7 +284,7 @@ module IBMWatson
|
|
282
284
|
end
|
283
285
|
|
284
286
|
##
|
285
|
-
# @!method update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, append: nil)
|
287
|
+
# @!method update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, webhooks: nil, append: nil)
|
286
288
|
# Update workspace.
|
287
289
|
# Update an existing workspace with new or modified data. You must provide component
|
288
290
|
# objects defining the content of the updated workspace.
|
@@ -305,6 +307,7 @@ module IBMWatson
|
|
305
307
|
# @param dialog_nodes [Array[DialogNode]] An array of objects describing the dialog nodes in the workspace.
|
306
308
|
# @param counterexamples [Array[Counterexample]] An array of objects defining input examples that have been marked as irrelevant
|
307
309
|
# input.
|
310
|
+
# @param webhooks [Array[Webhook]]
|
308
311
|
# @param append [Boolean] Whether the new data is to be appended to the existing data in the workspace. If
|
309
312
|
# **append**=`false`, elements included in the new data completely replace the
|
310
313
|
# corresponding existing elements, including all subelements. For example, if the
|
@@ -315,7 +318,7 @@ module IBMWatson
|
|
315
318
|
# added. If any elements in the new data collide with existing elements, the update
|
316
319
|
# request fails.
|
317
320
|
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
318
|
-
def update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, append: nil)
|
321
|
+
def update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, webhooks: nil, append: nil)
|
319
322
|
raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?
|
320
323
|
|
321
324
|
headers = {
|
@@ -338,7 +341,8 @@ module IBMWatson
|
|
338
341
|
"intents" => intents,
|
339
342
|
"entities" => entities,
|
340
343
|
"dialog_nodes" => dialog_nodes,
|
341
|
-
"counterexamples" => counterexamples
|
344
|
+
"counterexamples" => counterexamples,
|
345
|
+
"webhooks" => webhooks
|
342
346
|
}
|
343
347
|
|
344
348
|
method_url = "/v1/workspaces/%s" % [ERB::Util.url_encode(workspace_id)]
|
@@ -1936,7 +1940,7 @@ module IBMWatson
|
|
1936
1940
|
end
|
1937
1941
|
|
1938
1942
|
##
|
1939
|
-
# @!method create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil)
|
1943
|
+
# @!method create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil, disambiguation_opt_out: nil)
|
1940
1944
|
# Create dialog node.
|
1941
1945
|
# Create a new dialog node.
|
1942
1946
|
#
|
@@ -1976,8 +1980,9 @@ module IBMWatson
|
|
1976
1980
|
# @param digress_out_slots [String] Whether the user can digress to top-level nodes while filling out slots.
|
1977
1981
|
# @param user_label [String] A label that can be displayed externally to describe the purpose of the node to
|
1978
1982
|
# users.
|
1983
|
+
# @param disambiguation_opt_out [Boolean] Whether the dialog node should be excluded from disambiguation suggestions.
|
1979
1984
|
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
1980
|
-
def create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil)
|
1985
|
+
def create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil, disambiguation_opt_out: nil)
|
1981
1986
|
raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?
|
1982
1987
|
|
1983
1988
|
raise ArgumentError.new("dialog_node must be provided") if dialog_node.nil?
|
@@ -2009,7 +2014,8 @@ module IBMWatson
|
|
2009
2014
|
"digress_in" => digress_in,
|
2010
2015
|
"digress_out" => digress_out,
|
2011
2016
|
"digress_out_slots" => digress_out_slots,
|
2012
|
-
"user_label" => user_label
|
2017
|
+
"user_label" => user_label,
|
2018
|
+
"disambiguation_opt_out" => disambiguation_opt_out
|
2013
2019
|
}
|
2014
2020
|
|
2015
2021
|
method_url = "/v1/workspaces/%s/dialog_nodes" % [ERB::Util.url_encode(workspace_id)]
|
@@ -2065,7 +2071,7 @@ module IBMWatson
|
|
2065
2071
|
end
|
2066
2072
|
|
2067
2073
|
##
|
2068
|
-
# @!method update_dialog_node(workspace_id:, dialog_node:, new_dialog_node: nil, new_description: nil, new_conditions: nil, new_parent: nil, new_previous_sibling: nil, new_output: nil, new_context: nil, new_metadata: nil, new_next_step: nil, new_title: nil, new_type: nil, new_event_name: nil, new_variable: nil, new_actions: nil, new_digress_in: nil, new_digress_out: nil, new_digress_out_slots: nil, new_user_label: nil)
|
2074
|
+
# @!method update_dialog_node(workspace_id:, dialog_node:, new_dialog_node: nil, new_description: nil, new_conditions: nil, new_parent: nil, new_previous_sibling: nil, new_output: nil, new_context: nil, new_metadata: nil, new_next_step: nil, new_title: nil, new_type: nil, new_event_name: nil, new_variable: nil, new_actions: nil, new_digress_in: nil, new_digress_out: nil, new_digress_out_slots: nil, new_user_label: nil, new_disambiguation_opt_out: nil)
|
2069
2075
|
# Update dialog node.
|
2070
2076
|
# Update an existing dialog node with new or modified data.
|
2071
2077
|
#
|
@@ -2106,8 +2112,9 @@ module IBMWatson
|
|
2106
2112
|
# @param new_digress_out_slots [String] Whether the user can digress to top-level nodes while filling out slots.
|
2107
2113
|
# @param new_user_label [String] A label that can be displayed externally to describe the purpose of the node to
|
2108
2114
|
# users.
|
2115
|
+
# @param new_disambiguation_opt_out [Boolean] Whether the dialog node should be excluded from disambiguation suggestions.
|
2109
2116
|
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
2110
|
-
def update_dialog_node(workspace_id:, dialog_node:, new_dialog_node: nil, new_description: nil, new_conditions: nil, new_parent: nil, new_previous_sibling: nil, new_output: nil, new_context: nil, new_metadata: nil, new_next_step: nil, new_title: nil, new_type: nil, new_event_name: nil, new_variable: nil, new_actions: nil, new_digress_in: nil, new_digress_out: nil, new_digress_out_slots: nil, new_user_label: nil)
|
2117
|
+
def update_dialog_node(workspace_id:, dialog_node:, new_dialog_node: nil, new_description: nil, new_conditions: nil, new_parent: nil, new_previous_sibling: nil, new_output: nil, new_context: nil, new_metadata: nil, new_next_step: nil, new_title: nil, new_type: nil, new_event_name: nil, new_variable: nil, new_actions: nil, new_digress_in: nil, new_digress_out: nil, new_digress_out_slots: nil, new_user_label: nil, new_disambiguation_opt_out: nil)
|
2111
2118
|
raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?
|
2112
2119
|
|
2113
2120
|
raise ArgumentError.new("dialog_node must be provided") if dialog_node.nil?
|
@@ -2139,7 +2146,8 @@ module IBMWatson
|
|
2139
2146
|
"digress_in" => new_digress_in,
|
2140
2147
|
"digress_out" => new_digress_out,
|
2141
2148
|
"digress_out_slots" => new_digress_out_slots,
|
2142
|
-
"user_label" => new_user_label
|
2149
|
+
"user_label" => new_user_label,
|
2150
|
+
"disambiguation_opt_out" => new_disambiguation_opt_out
|
2143
2151
|
}
|
2144
2152
|
|
2145
2153
|
method_url = "/v1/workspaces/%s/dialog_nodes/%s" % [ERB::Util.url_encode(workspace_id), ERB::Util.url_encode(dialog_node)]
|
@@ -2249,8 +2257,8 @@ module IBMWatson
|
|
2249
2257
|
# more information, see **Rate limiting**.
|
2250
2258
|
# @param filter [String] A cacheable parameter that limits the results to those matching the specified
|
2251
2259
|
# filter. You must specify a filter query that includes a value for `language`, as
|
2252
|
-
# well as a value for `
|
2253
|
-
# more information, see the
|
2260
|
+
# well as a value for `request.context.system.assistant_id`, `workspace_id`, or
|
2261
|
+
# `request.context.metadata.deployment`. For more information, see the
|
2254
2262
|
# [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-filter-reference#filter-reference).
|
2255
2263
|
# @param sort [String] How to sort the returned log events. You can sort by **request_timestamp**. To
|
2256
2264
|
# reverse the sort order, prefix the parameter value with a minus sign (`-`).
|
@@ -74,7 +74,10 @@ module IBMWatson
|
|
74
74
|
# @!method create_session(assistant_id:)
|
75
75
|
# Create a session.
|
76
76
|
# Create a new session. A session is used to send user input to a skill and receive
|
77
|
-
# responses. It also maintains the state of the conversation.
|
77
|
+
# responses. It also maintains the state of the conversation. A session persists
|
78
|
+
# until it is deleted, or until it times out because of inactivity. (For more
|
79
|
+
# information, see the
|
80
|
+
# [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-settings).
|
78
81
|
# @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
|
79
82
|
# Assistant user interface, open the assistant settings and click **API Details**.
|
80
83
|
# For information about creating assistants, see the
|
@@ -109,7 +112,9 @@ module IBMWatson
|
|
109
112
|
##
|
110
113
|
# @!method delete_session(assistant_id:, session_id:)
|
111
114
|
# Delete session.
|
112
|
-
# Deletes a session explicitly before it times out.
|
115
|
+
# Deletes a session explicitly before it times out. (For more information about the
|
116
|
+
# session inactivity timeout, see the
|
117
|
+
# [documentation](https://cloud.ibm.com/docs/services/assistant?topic=assistant-assistant-settings)).
|
113
118
|
# @param assistant_id [String] Unique identifier of the assistant. To find the assistant ID in the Watson
|
114
119
|
# Assistant user interface, open the assistant settings and click **API Details**.
|
115
120
|
# For information about creating assistants, see the
|
@@ -1112,7 +1112,7 @@ module IBMWatson
|
|
1112
1112
|
# @param collection_id [String] The ID of the collection.
|
1113
1113
|
# @param file [File] The content of the document to ingest. The maximum supported file size when adding
|
1114
1114
|
# a file to a collection is 50 megabytes, the maximum supported file size when
|
1115
|
-
# testing a
|
1115
|
+
# testing a configuration is 1 megabyte. Files larger than the supported size are
|
1116
1116
|
# rejected.
|
1117
1117
|
# @param filename [String] The filename for file.
|
1118
1118
|
# @param file_content_type [String] The content type of file.
|
@@ -1213,7 +1213,7 @@ module IBMWatson
|
|
1213
1213
|
# @param document_id [String] The ID of the document.
|
1214
1214
|
# @param file [File] The content of the document to ingest. The maximum supported file size when adding
|
1215
1215
|
# a file to a collection is 50 megabytes, the maximum supported file size when
|
1216
|
-
# testing a
|
1216
|
+
# testing a configuration is 1 megabyte. Files larger than the supported size are
|
1217
1217
|
# rejected.
|
1218
1218
|
# @param filename [String] The filename for file.
|
1219
1219
|
# @param file_content_type [String] The content type of file.
|
@@ -0,0 +1,762 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# (C) Copyright IBM Corp. 2019.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
# IBM Watson™ 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.
|
22
|
+
|
23
|
+
require "concurrent"
|
24
|
+
require "erb"
|
25
|
+
require "json"
|
26
|
+
require "ibm_cloud_sdk_core"
|
27
|
+
require_relative "./common.rb"
|
28
|
+
|
29
|
+
# Module for the Watson APIs
|
30
|
+
module IBMWatson
|
31
|
+
##
|
32
|
+
# The Discovery V2 service.
|
33
|
+
class DiscoveryV2 < IBMCloudSdkCore::BaseService
|
34
|
+
include Concurrent::Async
|
35
|
+
##
|
36
|
+
# @!method initialize(args)
|
37
|
+
# Construct a new client for the Discovery service.
|
38
|
+
#
|
39
|
+
# @param args [Hash] The args to initialize with
|
40
|
+
# @option args version [String] The API version date to use with the service, in
|
41
|
+
# "YYYY-MM-DD" format. Whenever the API is changed in a backwards
|
42
|
+
# incompatible way, a new minor version of the API is released.
|
43
|
+
# The service uses the API version for the date you specify, or
|
44
|
+
# the most recent version before that date. Note that you should
|
45
|
+
# not programmatically specify the current date at runtime, in
|
46
|
+
# case the API has been updated since your application's release.
|
47
|
+
# Instead, specify a version date that is compatible with your
|
48
|
+
# application, and don't change it until your application is
|
49
|
+
# ready for a later version.
|
50
|
+
# @option args service_url [String] The base service URL to use when contacting the service.
|
51
|
+
# The base service_url may differ between IBM Cloud regions.
|
52
|
+
# @option args authenticator [Object] The Authenticator instance to be configured for this service.
|
53
|
+
def initialize(args = {})
|
54
|
+
@__async_initialized__ = false
|
55
|
+
defaults = {}
|
56
|
+
defaults[:version] = nil
|
57
|
+
defaults[:service_url] = nil
|
58
|
+
defaults[:authenticator] = nil
|
59
|
+
args = defaults.merge(args)
|
60
|
+
@version = args[:version]
|
61
|
+
raise ArgumentError.new("version must be provided") if @version.nil?
|
62
|
+
|
63
|
+
args[:service_name] = "discovery"
|
64
|
+
args[:authenticator] = IBMCloudSdkCore::ConfigBasedAuthenticatorFactory.new.get_authenticator(service_name: args[:service_name]) if args[:authenticator].nil?
|
65
|
+
super
|
66
|
+
end
|
67
|
+
|
68
|
+
#########################
|
69
|
+
# Collections
|
70
|
+
#########################
|
71
|
+
|
72
|
+
##
|
73
|
+
# @!method list_collections(project_id:)
|
74
|
+
# List collections.
|
75
|
+
# Lists existing collections for the specified project.
|
76
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
77
|
+
# Discovery administrative tooling.
|
78
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
79
|
+
def list_collections(project_id:)
|
80
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
81
|
+
|
82
|
+
headers = {
|
83
|
+
}
|
84
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "list_collections")
|
85
|
+
headers.merge!(sdk_headers)
|
86
|
+
|
87
|
+
params = {
|
88
|
+
"version" => @version
|
89
|
+
}
|
90
|
+
|
91
|
+
method_url = "/v2/projects/%s/collections" % [ERB::Util.url_encode(project_id)]
|
92
|
+
|
93
|
+
response = request(
|
94
|
+
method: "GET",
|
95
|
+
url: method_url,
|
96
|
+
headers: headers,
|
97
|
+
params: params,
|
98
|
+
accept_json: true
|
99
|
+
)
|
100
|
+
response
|
101
|
+
end
|
102
|
+
#########################
|
103
|
+
# Queries
|
104
|
+
#########################
|
105
|
+
|
106
|
+
##
|
107
|
+
# @!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
|
+
# Query a project.
|
109
|
+
# 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).
|
111
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
112
|
+
# Discovery administrative tooling.
|
113
|
+
# @param collection_ids [Array[String]] A comma-separated list of collection IDs to be queried against.
|
114
|
+
# @param filter [String] A cacheable query that excludes documents that don't mention the query content.
|
115
|
+
# Filter searches are better for metadata-type searches and for assessing the
|
116
|
+
# concepts in the data set.
|
117
|
+
# @param query [String] A query search returns all documents in your data set with full enrichments and
|
118
|
+
# full text, but with the most relevant documents listed first. Use a query search
|
119
|
+
# when you want to find the most relevant search results.
|
120
|
+
# @param natural_language_query [String] A natural language query that returns relevant documents by utilizing training
|
121
|
+
# data and natural language understanding.
|
122
|
+
# @param aggregation [String] An aggregation search that returns an exact answer by combining query search with
|
123
|
+
# filters. Useful for applications to build lists, tables, and time series. For a
|
124
|
+
# full list of possible aggregations, see the Query reference.
|
125
|
+
# @param count [Fixnum] Number of results to return.
|
126
|
+
# @param _return [Array[String]] A list of the fields in the document hierarchy to return. If this parameter not
|
127
|
+
# specified, then all top-level fields are returned.
|
128
|
+
# @param offset [Fixnum] The number of query results to skip at the beginning. For example, if the total
|
129
|
+
# number of results that are returned is 10 and the offset is 8, it returns the last
|
130
|
+
# two results.
|
131
|
+
# @param sort [String] A comma-separated list of fields in the document to sort on. You can optionally
|
132
|
+
# specify a sort direction by prefixing the field with `-` for descending or `+` for
|
133
|
+
# ascending. Ascending is the default sort direction if no prefix is specified. This
|
134
|
+
# parameter cannot be used in the same query as the **bias** parameter.
|
135
|
+
# @param highlight [Boolean] When `true`, a highlight field is returned for each result which contains the
|
136
|
+
# fields which match the query with `<em></em>` tags around the matching query
|
137
|
+
# terms.
|
138
|
+
# @param spelling_suggestions [Boolean] When `true` and the **natural_language_query** parameter is used, the
|
139
|
+
# **natural_language_query** parameter is spell checked. The most likely correction
|
140
|
+
# is returned in the **suggested_query** field of the response (if one exists).
|
141
|
+
# @param table_results [QueryLargeTableResults] Configuration for table retrieval.
|
142
|
+
# @param suggested_refinements [QueryLargeSuggestedRefinements] Configuration for suggested refinements.
|
143
|
+
# @param passages [QueryLargePassages] Configuration for passage retrieval.
|
144
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
145
|
+
def 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)
|
146
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
147
|
+
|
148
|
+
headers = {
|
149
|
+
}
|
150
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "query")
|
151
|
+
headers.merge!(sdk_headers)
|
152
|
+
|
153
|
+
params = {
|
154
|
+
"version" => @version
|
155
|
+
}
|
156
|
+
|
157
|
+
data = {
|
158
|
+
"collection_ids" => collection_ids,
|
159
|
+
"filter" => filter,
|
160
|
+
"query" => query,
|
161
|
+
"natural_language_query" => natural_language_query,
|
162
|
+
"aggregation" => aggregation,
|
163
|
+
"count" => count,
|
164
|
+
"return" => _return,
|
165
|
+
"offset" => offset,
|
166
|
+
"sort" => sort,
|
167
|
+
"highlight" => highlight,
|
168
|
+
"spelling_suggestions" => spelling_suggestions,
|
169
|
+
"table_results" => table_results,
|
170
|
+
"suggested_refinements" => suggested_refinements,
|
171
|
+
"passages" => passages
|
172
|
+
}
|
173
|
+
|
174
|
+
method_url = "/v2/projects/%s/query" % [ERB::Util.url_encode(project_id)]
|
175
|
+
|
176
|
+
response = request(
|
177
|
+
method: "POST",
|
178
|
+
url: method_url,
|
179
|
+
headers: headers,
|
180
|
+
params: params,
|
181
|
+
json: data,
|
182
|
+
accept_json: true
|
183
|
+
)
|
184
|
+
response
|
185
|
+
end
|
186
|
+
|
187
|
+
##
|
188
|
+
# @!method get_autocompletion(project_id:, prefix:, collection_ids: nil, field: nil, count: nil)
|
189
|
+
# Get Autocomplete Suggestions.
|
190
|
+
# Returns completion query suggestions for the specified prefix.
|
191
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
192
|
+
# Discovery administrative tooling.
|
193
|
+
# @param prefix [String] The prefix to use for autocompletion. For example, the prefix `Ho` could
|
194
|
+
# autocomplete to `Hot`, `Housing`, or `How do I upgrade`. Possible completions are.
|
195
|
+
# @param collection_ids [Array[String]] Comma separated list of the collection IDs. If this parameter is not specified,
|
196
|
+
# all collections in the project are used.
|
197
|
+
# @param field [String] The field in the result documents that autocompletion suggestions are identified
|
198
|
+
# from.
|
199
|
+
# @param count [Fixnum] The number of autocompletion suggestions to return.
|
200
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
201
|
+
def get_autocompletion(project_id:, prefix:, collection_ids: nil, field: nil, count: nil)
|
202
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
203
|
+
|
204
|
+
raise ArgumentError.new("prefix must be provided") if prefix.nil?
|
205
|
+
|
206
|
+
headers = {
|
207
|
+
}
|
208
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_autocompletion")
|
209
|
+
headers.merge!(sdk_headers)
|
210
|
+
collection_ids *= "," unless collection_ids.nil?
|
211
|
+
|
212
|
+
params = {
|
213
|
+
"version" => @version,
|
214
|
+
"prefix" => prefix,
|
215
|
+
"collection_ids" => collection_ids,
|
216
|
+
"field" => field,
|
217
|
+
"count" => count
|
218
|
+
}
|
219
|
+
|
220
|
+
method_url = "/v2/projects/%s/autocompletion" % [ERB::Util.url_encode(project_id)]
|
221
|
+
|
222
|
+
response = request(
|
223
|
+
method: "GET",
|
224
|
+
url: method_url,
|
225
|
+
headers: headers,
|
226
|
+
params: params,
|
227
|
+
accept_json: true
|
228
|
+
)
|
229
|
+
response
|
230
|
+
end
|
231
|
+
|
232
|
+
##
|
233
|
+
# @!method query_notices(project_id:, filter: nil, query: nil, natural_language_query: nil, count: nil, offset: nil)
|
234
|
+
# Query system notices.
|
235
|
+
# Queries for notices (errors or warnings) that might have been generated by the
|
236
|
+
# system. Notices are generated when ingesting documents and performing relevance
|
237
|
+
# training.
|
238
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
239
|
+
# Discovery administrative tooling.
|
240
|
+
# @param filter [String] A cacheable query that excludes documents that don't mention the query content.
|
241
|
+
# Filter searches are better for metadata-type searches and for assessing the
|
242
|
+
# concepts in the data set.
|
243
|
+
# @param query [String] A query search returns all documents in your data set with full enrichments and
|
244
|
+
# full text, but with the most relevant documents listed first.
|
245
|
+
# @param natural_language_query [String] A natural language query that returns relevant documents by utilizing training
|
246
|
+
# data and natural language understanding.
|
247
|
+
# @param count [Fixnum] Number of results to return. The maximum for the **count** and **offset** values
|
248
|
+
# together in any one query is **10000**.
|
249
|
+
# @param offset [Fixnum] The number of query results to skip at the beginning. For example, if the total
|
250
|
+
# number of results that are returned is 10 and the offset is 8, it returns the last
|
251
|
+
# two results. The maximum for the **count** and **offset** values together in any
|
252
|
+
# one query is **10000**.
|
253
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
254
|
+
def query_notices(project_id:, filter: nil, query: nil, natural_language_query: nil, count: nil, offset: nil)
|
255
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
256
|
+
|
257
|
+
headers = {
|
258
|
+
}
|
259
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "query_notices")
|
260
|
+
headers.merge!(sdk_headers)
|
261
|
+
|
262
|
+
params = {
|
263
|
+
"version" => @version,
|
264
|
+
"filter" => filter,
|
265
|
+
"query" => query,
|
266
|
+
"natural_language_query" => natural_language_query,
|
267
|
+
"count" => count,
|
268
|
+
"offset" => offset
|
269
|
+
}
|
270
|
+
|
271
|
+
method_url = "/v2/projects/%s/notices" % [ERB::Util.url_encode(project_id)]
|
272
|
+
|
273
|
+
response = request(
|
274
|
+
method: "GET",
|
275
|
+
url: method_url,
|
276
|
+
headers: headers,
|
277
|
+
params: params,
|
278
|
+
accept_json: true
|
279
|
+
)
|
280
|
+
response
|
281
|
+
end
|
282
|
+
|
283
|
+
##
|
284
|
+
# @!method list_fields(project_id:, collection_ids: nil)
|
285
|
+
# List fields.
|
286
|
+
# Gets a list of the unique fields (and their types) stored in the the specified
|
287
|
+
# collections.
|
288
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
289
|
+
# Discovery administrative tooling.
|
290
|
+
# @param collection_ids [Array[String]] Comma separated list of the collection IDs. If this parameter is not specified,
|
291
|
+
# all collections in the project are used.
|
292
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
293
|
+
def list_fields(project_id:, collection_ids: nil)
|
294
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
295
|
+
|
296
|
+
headers = {
|
297
|
+
}
|
298
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "list_fields")
|
299
|
+
headers.merge!(sdk_headers)
|
300
|
+
collection_ids *= "," unless collection_ids.nil?
|
301
|
+
|
302
|
+
params = {
|
303
|
+
"version" => @version,
|
304
|
+
"collection_ids" => collection_ids
|
305
|
+
}
|
306
|
+
|
307
|
+
method_url = "/v2/projects/%s/fields" % [ERB::Util.url_encode(project_id)]
|
308
|
+
|
309
|
+
response = request(
|
310
|
+
method: "GET",
|
311
|
+
url: method_url,
|
312
|
+
headers: headers,
|
313
|
+
params: params,
|
314
|
+
accept_json: true
|
315
|
+
)
|
316
|
+
response
|
317
|
+
end
|
318
|
+
#########################
|
319
|
+
# Component settings
|
320
|
+
#########################
|
321
|
+
|
322
|
+
##
|
323
|
+
# @!method get_component_settings(project_id:)
|
324
|
+
# Configuration settings for components.
|
325
|
+
# Returns default configuration settings for components.
|
326
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
327
|
+
# Discovery administrative tooling.
|
328
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
329
|
+
def get_component_settings(project_id:)
|
330
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
331
|
+
|
332
|
+
headers = {
|
333
|
+
}
|
334
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_component_settings")
|
335
|
+
headers.merge!(sdk_headers)
|
336
|
+
|
337
|
+
params = {
|
338
|
+
"version" => @version
|
339
|
+
}
|
340
|
+
|
341
|
+
method_url = "/v2/projects/%s/component_settings" % [ERB::Util.url_encode(project_id)]
|
342
|
+
|
343
|
+
response = request(
|
344
|
+
method: "GET",
|
345
|
+
url: method_url,
|
346
|
+
headers: headers,
|
347
|
+
params: params,
|
348
|
+
accept_json: true
|
349
|
+
)
|
350
|
+
response
|
351
|
+
end
|
352
|
+
#########################
|
353
|
+
# Documents
|
354
|
+
#########################
|
355
|
+
|
356
|
+
##
|
357
|
+
# @!method add_document(project_id:, collection_id:, file: nil, filename: nil, file_content_type: nil, metadata: nil, x_watson_discovery_force: nil)
|
358
|
+
# Add a document.
|
359
|
+
# Add a document to a collection with optional metadata.
|
360
|
+
#
|
361
|
+
# Returns immediately after the system has accepted the document for processing.
|
362
|
+
#
|
363
|
+
# * The user must provide document content, metadata, or both. If the request is
|
364
|
+
# missing both document content and metadata, it is rejected.
|
365
|
+
#
|
366
|
+
# * The user can set the **Content-Type** parameter on the **file** part to
|
367
|
+
# indicate the media type of the document. If the **Content-Type** parameter is
|
368
|
+
# missing or is one of the generic media types (for example,
|
369
|
+
# `application/octet-stream`), then the service attempts to automatically detect the
|
370
|
+
# document's media type.
|
371
|
+
#
|
372
|
+
# * The following field names are reserved and will be filtered out if present
|
373
|
+
# after normalization: `id`, `score`, `highlight`, and any field with the prefix of:
|
374
|
+
# `_`, `+`, or `-`
|
375
|
+
#
|
376
|
+
# * Fields with empty name values after normalization are filtered out before
|
377
|
+
# indexing.
|
378
|
+
#
|
379
|
+
# * Fields containing the following characters after normalization are filtered
|
380
|
+
# out before indexing: `#` and `,`
|
381
|
+
#
|
382
|
+
# If the document is uploaded to a collection that has it's data shared with
|
383
|
+
# another collection, the **X-Watson-Discovery-Force** header must be set to `true`.
|
384
|
+
#
|
385
|
+
#
|
386
|
+
# **Note:** Documents can be added with a specific **document_id** by using the
|
387
|
+
# **_/v2/projects/{project_id}/collections/{collection_id}/documents** method.
|
388
|
+
#
|
389
|
+
# **Note:** This operation only works on collections created to accept direct file
|
390
|
+
# uploads. It cannot be used to modify a collection that conects to an external
|
391
|
+
# source such as Microsoft SharePoint.
|
392
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
393
|
+
# Discovery administrative tooling.
|
394
|
+
# @param collection_id [String] The ID of the collection.
|
395
|
+
# @param file [File] The content of the document to ingest. The maximum supported file size when adding
|
396
|
+
# a file to a collection is 50 megabytes, the maximum supported file size when
|
397
|
+
# testing a confiruration is 1 megabyte. Files larger than the supported size are
|
398
|
+
# rejected.
|
399
|
+
# @param filename [String] The filename for file.
|
400
|
+
# @param file_content_type [String] The content type of file.
|
401
|
+
# @param metadata [String] The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB
|
402
|
+
# are rejected. Example: ``` {
|
403
|
+
# "Creator": "Johnny Appleseed",
|
404
|
+
# "Subject": "Apples"
|
405
|
+
# } ```.
|
406
|
+
# @param x_watson_discovery_force [Boolean] When `true`, the uploaded document is added to the collection even if the data for
|
407
|
+
# that collection is shared with other collections.
|
408
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
409
|
+
def add_document(project_id:, collection_id:, file: nil, filename: nil, file_content_type: nil, metadata: nil, x_watson_discovery_force: nil)
|
410
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
411
|
+
|
412
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
413
|
+
|
414
|
+
headers = {
|
415
|
+
"X-Watson-Discovery-Force" => x_watson_discovery_force
|
416
|
+
}
|
417
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "add_document")
|
418
|
+
headers.merge!(sdk_headers)
|
419
|
+
|
420
|
+
params = {
|
421
|
+
"version" => @version
|
422
|
+
}
|
423
|
+
|
424
|
+
form_data = {}
|
425
|
+
|
426
|
+
unless file.nil?
|
427
|
+
unless file.instance_of?(StringIO) || file.instance_of?(File)
|
428
|
+
file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
|
429
|
+
end
|
430
|
+
filename = file.path if filename.nil? && file.respond_to?(:path)
|
431
|
+
form_data[:file] = HTTP::FormData::File.new(file, content_type: file_content_type.nil? ? "application/octet-stream" : file_content_type, filename: filename)
|
432
|
+
end
|
433
|
+
|
434
|
+
form_data[:metadata] = HTTP::FormData::Part.new(metadata.to_s, content_type: "text/plain") unless metadata.nil?
|
435
|
+
|
436
|
+
method_url = "/v2/projects/%s/collections/%s/documents" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id)]
|
437
|
+
|
438
|
+
response = request(
|
439
|
+
method: "POST",
|
440
|
+
url: method_url,
|
441
|
+
headers: headers,
|
442
|
+
params: params,
|
443
|
+
form: form_data,
|
444
|
+
accept_json: true
|
445
|
+
)
|
446
|
+
response
|
447
|
+
end
|
448
|
+
|
449
|
+
##
|
450
|
+
# @!method update_document(project_id:, collection_id:, document_id:, file: nil, filename: nil, file_content_type: nil, metadata: nil, x_watson_discovery_force: nil)
|
451
|
+
# Update a document.
|
452
|
+
# Replace an existing document or add a document with a specified **document_id**.
|
453
|
+
# Starts ingesting a document with optional metadata.
|
454
|
+
#
|
455
|
+
# If the document is uploaded to a collection that has it's data shared with another
|
456
|
+
# collection, the **X-Watson-Discovery-Force** header must be set to `true`.
|
457
|
+
#
|
458
|
+
# **Note:** When uploading a new document with this method it automatically replaces
|
459
|
+
# any document stored with the same **document_id** if it exists.
|
460
|
+
#
|
461
|
+
# **Note:** This operation only works on collections created to accept direct file
|
462
|
+
# uploads. It cannot be used to modify a collection that conects to an external
|
463
|
+
# source such as Microsoft SharePoint.
|
464
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
465
|
+
# Discovery administrative tooling.
|
466
|
+
# @param collection_id [String] The ID of the collection.
|
467
|
+
# @param document_id [String] The ID of the document.
|
468
|
+
# @param file [File] The content of the document to ingest. The maximum supported file size when adding
|
469
|
+
# a file to a collection is 50 megabytes, the maximum supported file size when
|
470
|
+
# testing a confiruration is 1 megabyte. Files larger than the supported size are
|
471
|
+
# rejected.
|
472
|
+
# @param filename [String] The filename for file.
|
473
|
+
# @param file_content_type [String] The content type of file.
|
474
|
+
# @param metadata [String] The maximum supported metadata file size is 1 MB. Metadata parts larger than 1 MB
|
475
|
+
# are rejected. Example: ``` {
|
476
|
+
# "Creator": "Johnny Appleseed",
|
477
|
+
# "Subject": "Apples"
|
478
|
+
# } ```.
|
479
|
+
# @param x_watson_discovery_force [Boolean] When `true`, the uploaded document is added to the collection even if the data for
|
480
|
+
# that collection is shared with other collections.
|
481
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
482
|
+
def update_document(project_id:, collection_id:, document_id:, file: nil, filename: nil, file_content_type: nil, metadata: nil, x_watson_discovery_force: nil)
|
483
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
484
|
+
|
485
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
486
|
+
|
487
|
+
raise ArgumentError.new("document_id must be provided") if document_id.nil?
|
488
|
+
|
489
|
+
headers = {
|
490
|
+
"X-Watson-Discovery-Force" => x_watson_discovery_force
|
491
|
+
}
|
492
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "update_document")
|
493
|
+
headers.merge!(sdk_headers)
|
494
|
+
|
495
|
+
params = {
|
496
|
+
"version" => @version
|
497
|
+
}
|
498
|
+
|
499
|
+
form_data = {}
|
500
|
+
|
501
|
+
unless file.nil?
|
502
|
+
unless file.instance_of?(StringIO) || file.instance_of?(File)
|
503
|
+
file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
|
504
|
+
end
|
505
|
+
filename = file.path if filename.nil? && file.respond_to?(:path)
|
506
|
+
form_data[:file] = HTTP::FormData::File.new(file, content_type: file_content_type.nil? ? "application/octet-stream" : file_content_type, filename: filename)
|
507
|
+
end
|
508
|
+
|
509
|
+
form_data[:metadata] = HTTP::FormData::Part.new(metadata.to_s, content_type: "text/plain") unless metadata.nil?
|
510
|
+
|
511
|
+
method_url = "/v2/projects/%s/collections/%s/documents/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id), ERB::Util.url_encode(document_id)]
|
512
|
+
|
513
|
+
response = request(
|
514
|
+
method: "POST",
|
515
|
+
url: method_url,
|
516
|
+
headers: headers,
|
517
|
+
params: params,
|
518
|
+
form: form_data,
|
519
|
+
accept_json: true
|
520
|
+
)
|
521
|
+
response
|
522
|
+
end
|
523
|
+
|
524
|
+
##
|
525
|
+
# @!method delete_document(project_id:, collection_id:, document_id:, x_watson_discovery_force: nil)
|
526
|
+
# Delete a document.
|
527
|
+
# If the given document ID is invalid, or if the document is not found, then the a
|
528
|
+
# success response is returned (HTTP status code `200`) with the status set to
|
529
|
+
# 'deleted'.
|
530
|
+
#
|
531
|
+
# **Note:** This operation only works on collections created to accept direct file
|
532
|
+
# uploads. It cannot be used to modify a collection that conects to an external
|
533
|
+
# source such as Microsoft SharePoint.
|
534
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
535
|
+
# Discovery administrative tooling.
|
536
|
+
# @param collection_id [String] The ID of the collection.
|
537
|
+
# @param document_id [String] The ID of the document.
|
538
|
+
# @param x_watson_discovery_force [Boolean] When `true`, the uploaded document is added to the collection even if the data for
|
539
|
+
# that collection is shared with other collections.
|
540
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
541
|
+
def delete_document(project_id:, collection_id:, document_id:, x_watson_discovery_force: nil)
|
542
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
543
|
+
|
544
|
+
raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
|
545
|
+
|
546
|
+
raise ArgumentError.new("document_id must be provided") if document_id.nil?
|
547
|
+
|
548
|
+
headers = {
|
549
|
+
"X-Watson-Discovery-Force" => x_watson_discovery_force
|
550
|
+
}
|
551
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_document")
|
552
|
+
headers.merge!(sdk_headers)
|
553
|
+
|
554
|
+
params = {
|
555
|
+
"version" => @version
|
556
|
+
}
|
557
|
+
|
558
|
+
method_url = "/v2/projects/%s/collections/%s/documents/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(collection_id), ERB::Util.url_encode(document_id)]
|
559
|
+
|
560
|
+
response = request(
|
561
|
+
method: "DELETE",
|
562
|
+
url: method_url,
|
563
|
+
headers: headers,
|
564
|
+
params: params,
|
565
|
+
accept_json: true
|
566
|
+
)
|
567
|
+
response
|
568
|
+
end
|
569
|
+
#########################
|
570
|
+
# Training data
|
571
|
+
#########################
|
572
|
+
|
573
|
+
##
|
574
|
+
# @!method list_training_queries(project_id:)
|
575
|
+
# List training queries.
|
576
|
+
# List the training queries for the specified project.
|
577
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
578
|
+
# Discovery administrative tooling.
|
579
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
580
|
+
def list_training_queries(project_id:)
|
581
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
582
|
+
|
583
|
+
headers = {
|
584
|
+
}
|
585
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "list_training_queries")
|
586
|
+
headers.merge!(sdk_headers)
|
587
|
+
|
588
|
+
params = {
|
589
|
+
"version" => @version
|
590
|
+
}
|
591
|
+
|
592
|
+
method_url = "/v2/projects/%s/training_data/queries" % [ERB::Util.url_encode(project_id)]
|
593
|
+
|
594
|
+
response = request(
|
595
|
+
method: "GET",
|
596
|
+
url: method_url,
|
597
|
+
headers: headers,
|
598
|
+
params: params,
|
599
|
+
accept_json: true
|
600
|
+
)
|
601
|
+
response
|
602
|
+
end
|
603
|
+
|
604
|
+
##
|
605
|
+
# @!method delete_training_queries(project_id:)
|
606
|
+
# Delete training queries.
|
607
|
+
# Removes all training queries for the specified project.
|
608
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
609
|
+
# Discovery administrative tooling.
|
610
|
+
# @return [nil]
|
611
|
+
def delete_training_queries(project_id:)
|
612
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
613
|
+
|
614
|
+
headers = {
|
615
|
+
}
|
616
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "delete_training_queries")
|
617
|
+
headers.merge!(sdk_headers)
|
618
|
+
|
619
|
+
params = {
|
620
|
+
"version" => @version
|
621
|
+
}
|
622
|
+
|
623
|
+
method_url = "/v2/projects/%s/training_data/queries" % [ERB::Util.url_encode(project_id)]
|
624
|
+
|
625
|
+
request(
|
626
|
+
method: "DELETE",
|
627
|
+
url: method_url,
|
628
|
+
headers: headers,
|
629
|
+
params: params,
|
630
|
+
accept_json: false
|
631
|
+
)
|
632
|
+
nil
|
633
|
+
end
|
634
|
+
|
635
|
+
##
|
636
|
+
# @!method create_training_query(project_id:, natural_language_query:, examples:, filter: nil)
|
637
|
+
# Create training query.
|
638
|
+
# Add a query to the training data for this project. The query can contain a filter
|
639
|
+
# and natural language query.
|
640
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
641
|
+
# Discovery administrative tooling.
|
642
|
+
# @param natural_language_query [String] The natural text query for the training query.
|
643
|
+
# @param examples [Array[TrainingExample]] Array of training examples.
|
644
|
+
# @param filter [String] The filter used on the collection before the **natural_language_query** is
|
645
|
+
# applied.
|
646
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
647
|
+
def create_training_query(project_id:, natural_language_query:, examples:, filter: nil)
|
648
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
649
|
+
|
650
|
+
headers = {
|
651
|
+
}
|
652
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "create_training_query")
|
653
|
+
headers.merge!(sdk_headers)
|
654
|
+
|
655
|
+
params = {
|
656
|
+
"version" => @version
|
657
|
+
}
|
658
|
+
|
659
|
+
data = {
|
660
|
+
"natural_language_query" => natural_language_query,
|
661
|
+
"examples" => examples,
|
662
|
+
"filter" => filter
|
663
|
+
}
|
664
|
+
|
665
|
+
method_url = "/v2/projects/%s/training_data/queries" % [ERB::Util.url_encode(project_id)]
|
666
|
+
|
667
|
+
response = request(
|
668
|
+
method: "POST",
|
669
|
+
url: method_url,
|
670
|
+
headers: headers,
|
671
|
+
params: params,
|
672
|
+
json: data,
|
673
|
+
accept_json: true
|
674
|
+
)
|
675
|
+
response
|
676
|
+
end
|
677
|
+
|
678
|
+
##
|
679
|
+
# @!method get_training_query(project_id:, query_id:)
|
680
|
+
# Get a training data query.
|
681
|
+
# Get details for a specific training data query, including the query string and all
|
682
|
+
# examples.
|
683
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
684
|
+
# Discovery administrative tooling.
|
685
|
+
# @param query_id [String] The ID of the query used for training.
|
686
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
687
|
+
def get_training_query(project_id:, query_id:)
|
688
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
689
|
+
|
690
|
+
raise ArgumentError.new("query_id must be provided") if query_id.nil?
|
691
|
+
|
692
|
+
headers = {
|
693
|
+
}
|
694
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "get_training_query")
|
695
|
+
headers.merge!(sdk_headers)
|
696
|
+
|
697
|
+
params = {
|
698
|
+
"version" => @version
|
699
|
+
}
|
700
|
+
|
701
|
+
method_url = "/v2/projects/%s/training_data/queries/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(query_id)]
|
702
|
+
|
703
|
+
response = request(
|
704
|
+
method: "GET",
|
705
|
+
url: method_url,
|
706
|
+
headers: headers,
|
707
|
+
params: params,
|
708
|
+
accept_json: true
|
709
|
+
)
|
710
|
+
response
|
711
|
+
end
|
712
|
+
|
713
|
+
##
|
714
|
+
# @!method update_training_query(project_id:, query_id:, natural_language_query:, examples:, filter: nil)
|
715
|
+
# Update a training query.
|
716
|
+
# Updates an existing training query and it's examples.
|
717
|
+
# @param project_id [String] The ID of the project. This information can be found from the deploy page of the
|
718
|
+
# Discovery administrative tooling.
|
719
|
+
# @param query_id [String] The ID of the query used for training.
|
720
|
+
# @param natural_language_query [String] The natural text query for the training query.
|
721
|
+
# @param examples [Array[TrainingExample]] Array of training examples.
|
722
|
+
# @param filter [String] The filter used on the collection before the **natural_language_query** is
|
723
|
+
# applied.
|
724
|
+
# @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
|
725
|
+
def update_training_query(project_id:, query_id:, natural_language_query:, examples:, filter: nil)
|
726
|
+
raise ArgumentError.new("project_id must be provided") if project_id.nil?
|
727
|
+
|
728
|
+
raise ArgumentError.new("query_id must be provided") if query_id.nil?
|
729
|
+
|
730
|
+
raise ArgumentError.new("natural_language_query must be provided") if natural_language_query.nil?
|
731
|
+
|
732
|
+
raise ArgumentError.new("examples must be provided") if examples.nil?
|
733
|
+
|
734
|
+
headers = {
|
735
|
+
}
|
736
|
+
sdk_headers = Common.new.get_sdk_headers("discovery", "V2", "update_training_query")
|
737
|
+
headers.merge!(sdk_headers)
|
738
|
+
|
739
|
+
params = {
|
740
|
+
"version" => @version
|
741
|
+
}
|
742
|
+
|
743
|
+
data = {
|
744
|
+
"natural_language_query" => natural_language_query,
|
745
|
+
"examples" => examples,
|
746
|
+
"filter" => filter
|
747
|
+
}
|
748
|
+
|
749
|
+
method_url = "/v2/projects/%s/training_data/queries/%s" % [ERB::Util.url_encode(project_id), ERB::Util.url_encode(query_id)]
|
750
|
+
|
751
|
+
response = request(
|
752
|
+
method: "POST",
|
753
|
+
url: method_url,
|
754
|
+
headers: headers,
|
755
|
+
params: params,
|
756
|
+
json: data,
|
757
|
+
accept_json: true
|
758
|
+
)
|
759
|
+
response
|
760
|
+
end
|
761
|
+
end
|
762
|
+
end
|