ibm_watson 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|