ibm_watson 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -101,14 +101,17 @@ module IBMWatson
101
101
  # **Note:** Currently, the v2 API does not support creating assistants.
102
102
  # @return [DetailedResponse] A `DetailedResponse` object representing the response.
103
103
  def create_session(assistant_id:)
104
- raise ArgumentError("assistant_id must be provided") if assistant_id.nil?
104
+ raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
105
105
 
106
106
  headers = {
107
107
  }
108
+
108
109
  params = {
109
110
  "version" => @version
110
111
  }
112
+
111
113
  method_url = "/v2/assistants/%s/sessions" % [ERB::Util.url_encode(assistant_id)]
114
+
112
115
  response = request(
113
116
  method: "POST",
114
117
  url: method_url,
@@ -132,16 +135,19 @@ module IBMWatson
132
135
  # @param session_id [String] Unique identifier of the session.
133
136
  # @return [nil]
134
137
  def delete_session(assistant_id:, session_id:)
135
- raise ArgumentError("assistant_id must be provided") if assistant_id.nil?
138
+ raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
136
139
 
137
- raise ArgumentError("session_id must be provided") if session_id.nil?
140
+ raise ArgumentError.new("session_id must be provided") if session_id.nil?
138
141
 
139
142
  headers = {
140
143
  }
144
+
141
145
  params = {
142
146
  "version" => @version
143
147
  }
148
+
144
149
  method_url = "/v2/assistants/%s/sessions/%s" % [ERB::Util.url_encode(assistant_id), ERB::Util.url_encode(session_id)]
150
+
145
151
  request(
146
152
  method: "DELETE",
147
153
  url: method_url,
@@ -168,24 +174,28 @@ module IBMWatson
168
174
  #
169
175
  # **Note:** Currently, the v2 API does not support creating assistants.
170
176
  # @param session_id [String] Unique identifier of the session.
171
- # @param input [MessageInput] An input object that includes the input text.
177
+ # @param input [MessageInput] The user input.
172
178
  # @param context [MessageContext] State information for the conversation.
173
179
  # @return [DetailedResponse] A `DetailedResponse` object representing the response.
174
180
  def message(assistant_id:, session_id:, input: nil, context: nil)
175
- raise ArgumentError("assistant_id must be provided") if assistant_id.nil?
181
+ raise ArgumentError.new("assistant_id must be provided") if assistant_id.nil?
176
182
 
177
- raise ArgumentError("session_id must be provided") if session_id.nil?
183
+ raise ArgumentError.new("session_id must be provided") if session_id.nil?
178
184
 
179
185
  headers = {
180
186
  }
187
+
181
188
  params = {
182
189
  "version" => @version
183
190
  }
191
+
184
192
  data = {
185
193
  "input" => input,
186
194
  "context" => context
187
195
  }
196
+
188
197
  method_url = "/v2/assistants/%s/sessions/%s/message" % [ERB::Util.url_encode(assistant_id), ERB::Util.url_encode(session_id)]
198
+
189
199
  response = request(
190
200
  method: "POST",
191
201
  url: method_url,
@@ -0,0 +1,653 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2018 IBM All Rights Reserved.
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™ Compare and Comply analyzes governing documents to provide details
18
+ # about critical aspects of the documents.
19
+
20
+ require "concurrent"
21
+ require "erb"
22
+ require "json"
23
+ require_relative "./detailed_response"
24
+
25
+ require_relative "./watson_service"
26
+
27
+ # Module for the Watson APIs
28
+ module IBMWatson
29
+ ##
30
+ # The Compare Comply V1 service.
31
+ class CompareComplyV1 < WatsonService
32
+ include Concurrent::Async
33
+ ##
34
+ # @!method initialize(args)
35
+ # Construct a new client for the Compare Comply service.
36
+ #
37
+ # @param args [Hash] The args to initialize with
38
+ # @option args version [String] The API version date to use with the service, in
39
+ # "YYYY-MM-DD" format. Whenever the API is changed in a backwards
40
+ # incompatible way, a new minor version of the API is released.
41
+ # The service uses the API version for the date you specify, or
42
+ # the most recent version before that date. Note that you should
43
+ # not programmatically specify the current date at runtime, in
44
+ # case the API has been updated since your application's release.
45
+ # Instead, specify a version date that is compatible with your
46
+ # application, and don't change it until your application is
47
+ # ready for a later version.
48
+ # @option args url [String] The base url to use when contacting the service (e.g.
49
+ # "https://gateway.watsonplatform.net/compare-comply/api").
50
+ # The base url may differ between Bluemix regions.
51
+ # @option args iam_apikey [String] An API key that can be used to request IAM tokens. If
52
+ # this API key is provided, the SDK will manage the token and handle the
53
+ # refreshing.
54
+ # @option args iam_access_token [String] An IAM access token is fully managed by the application.
55
+ # Responsibility falls on the application to refresh the token, either before
56
+ # it expires or reactively upon receiving a 401 from the service as any requests
57
+ # made with an expired token will fail.
58
+ # @option args iam_url [String] An optional URL for the IAM service API. Defaults to
59
+ # 'https://iam.ng.bluemix.net/identity/token'.
60
+ def initialize(args = {})
61
+ @__async_initialized__ = false
62
+ defaults = {}
63
+ defaults[:version] = nil
64
+ defaults[:url] = "https://gateway.watsonplatform.net/compare-comply/api"
65
+ defaults[:iam_apikey] = nil
66
+ defaults[:iam_access_token] = nil
67
+ defaults[:iam_url] = nil
68
+ args = defaults.merge(args)
69
+ args[:vcap_services_name] = "compare-comply"
70
+ super
71
+ @version = args[:version]
72
+ end
73
+
74
+ #########################
75
+ # HTML conversion
76
+ #########################
77
+
78
+ ##
79
+ # @!method convert_to_html(file:, model_id: nil, file_content_type: nil, filename: nil)
80
+ # Convert file to HTML.
81
+ # Uploads an input file. The response includes an HTML version of the document.
82
+ # @param file [File] The file to convert.
83
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
84
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
85
+ # method, the default is `tables`. These defaults apply to the standalone methods as
86
+ # well as to the methods' use in batch-processing requests.
87
+ # @param file_content_type [String] The content type of file.
88
+ # @param filename [String] The filename for file.
89
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
90
+ def convert_to_html(file:, model_id: nil, file_content_type: nil, filename: nil)
91
+ raise ArgumentError.new("file must be provided") if file.nil?
92
+
93
+ headers = {
94
+ }
95
+
96
+ params = {
97
+ "version" => @version,
98
+ "model_id" => model_id
99
+ }
100
+
101
+ form_data = {}
102
+
103
+ unless file.instance_of?(StringIO) || file.instance_of?(File)
104
+ file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
105
+ end
106
+ filename = file.path if filename.nil? && file.respond_to?(:path)
107
+ form_data[:file] = HTTP::FormData::File.new(file, content_type: file_content_type.nil? ? "application/octet-stream" : file_content_type, filename: filename)
108
+
109
+ method_url = "/v1/html_conversion"
110
+
111
+ response = request(
112
+ method: "POST",
113
+ url: method_url,
114
+ headers: headers,
115
+ params: params,
116
+ form: form_data,
117
+ accept_json: true
118
+ )
119
+ response
120
+ end
121
+ #########################
122
+ # Element classification
123
+ #########################
124
+
125
+ ##
126
+ # @!method classify_elements(file:, model_id: nil, file_content_type: nil, filename: nil)
127
+ # Classify the elements of a document.
128
+ # Uploads a file. The response includes an analysis of the document's structural and
129
+ # semantic elements.
130
+ # @param file [File] The file to classify.
131
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
132
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
133
+ # method, the default is `tables`. These defaults apply to the standalone methods as
134
+ # well as to the methods' use in batch-processing requests.
135
+ # @param file_content_type [String] The content type of file.
136
+ # @param filename [String] The filename for file.
137
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
138
+ def classify_elements(file:, model_id: nil, file_content_type: nil, filename: nil)
139
+ raise ArgumentError.new("file must be provided") if file.nil?
140
+
141
+ headers = {
142
+ }
143
+
144
+ params = {
145
+ "version" => @version,
146
+ "model_id" => model_id
147
+ }
148
+
149
+ form_data = {}
150
+
151
+ unless file.instance_of?(StringIO) || file.instance_of?(File)
152
+ file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
153
+ end
154
+ filename = file.path if filename.nil? && file.respond_to?(:path)
155
+ form_data[:file] = HTTP::FormData::File.new(file, content_type: file_content_type.nil? ? "application/octet-stream" : file_content_type, filename: filename)
156
+
157
+ method_url = "/v1/element_classification"
158
+
159
+ response = request(
160
+ method: "POST",
161
+ url: method_url,
162
+ headers: headers,
163
+ params: params,
164
+ form: form_data,
165
+ accept_json: true
166
+ )
167
+ response
168
+ end
169
+ #########################
170
+ # Tables
171
+ #########################
172
+
173
+ ##
174
+ # @!method extract_tables(file:, model_id: nil, file_content_type: nil, filename: nil)
175
+ # Extract a document's tables.
176
+ # Uploads a file. The response includes an analysis of the document's tables.
177
+ # @param file [File] The file on which to run table extraction.
178
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
179
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
180
+ # method, the default is `tables`. These defaults apply to the standalone methods as
181
+ # well as to the methods' use in batch-processing requests.
182
+ # @param file_content_type [String] The content type of file.
183
+ # @param filename [String] The filename for file.
184
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
185
+ def extract_tables(file:, model_id: nil, file_content_type: nil, filename: nil)
186
+ raise ArgumentError.new("file must be provided") if file.nil?
187
+
188
+ headers = {
189
+ }
190
+
191
+ params = {
192
+ "version" => @version,
193
+ "model_id" => model_id
194
+ }
195
+
196
+ form_data = {}
197
+
198
+ unless file.instance_of?(StringIO) || file.instance_of?(File)
199
+ file = file.respond_to?(:to_json) ? StringIO.new(file.to_json) : StringIO.new(file)
200
+ end
201
+ filename = file.path if filename.nil? && file.respond_to?(:path)
202
+ form_data[:file] = HTTP::FormData::File.new(file, content_type: file_content_type.nil? ? "application/octet-stream" : file_content_type, filename: filename)
203
+
204
+ method_url = "/v1/tables"
205
+
206
+ response = request(
207
+ method: "POST",
208
+ url: method_url,
209
+ headers: headers,
210
+ params: params,
211
+ form: form_data,
212
+ accept_json: true
213
+ )
214
+ response
215
+ end
216
+ #########################
217
+ # Comparison
218
+ #########################
219
+
220
+ ##
221
+ # @!method compare_documents(file_1:, file_2:, file_1_label: nil, file_2_label: nil, model_id: nil, file_1_content_type: nil, file_1_filename: nil, file_2_content_type: nil, file_2_filename: nil)
222
+ # Compare two documents.
223
+ # Uploads two input files. The response includes JSON comparing the two documents.
224
+ # Uploaded files must be in the same file format.
225
+ # @param file_1 [File] The first file to compare.
226
+ # @param file_2 [File] The second file to compare.
227
+ # @param file_1_label [String] A text label for the first file.
228
+ # @param file_2_label [String] A text label for the second file.
229
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
230
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
231
+ # method, the default is `tables`. These defaults apply to the standalone methods as
232
+ # well as to the methods' use in batch-processing requests.
233
+ # @param file_1_content_type [String] The content type of file_1.
234
+ # @param file_1_filename [String] The filename for file_1.
235
+ # @param file_2_content_type [String] The content type of file_2.
236
+ # @param file_2_filename [String] The filename for file_2.
237
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
238
+ def compare_documents(file_1:, file_2:, file_1_label: nil, file_2_label: nil, model_id: nil, file_1_content_type: nil, file_1_filename: nil, file_2_content_type: nil, file_2_filename: nil)
239
+ raise ArgumentError.new("file_1 must be provided") if file_1.nil?
240
+
241
+ raise ArgumentError.new("file_2 must be provided") if file_2.nil?
242
+
243
+ headers = {
244
+ }
245
+
246
+ params = {
247
+ "version" => @version,
248
+ "file_1_label" => file_1_label,
249
+ "file_2_label" => file_2_label,
250
+ "model_id" => model_id
251
+ }
252
+
253
+ form_data = {}
254
+
255
+ unless file_1.instance_of?(StringIO) || file_1.instance_of?(File)
256
+ file_1 = file_1.respond_to?(:to_json) ? StringIO.new(file_1.to_json) : StringIO.new(file_1)
257
+ end
258
+ file_1_filename = file_1.path if file_1_filename.nil? && file_1.respond_to?(:path)
259
+ form_data[:file_1] = HTTP::FormData::File.new(file_1, content_type: file_1_content_type.nil? ? "application/octet-stream" : file_1_content_type, filename: file_1_filename)
260
+
261
+ unless file_2.instance_of?(StringIO) || file_2.instance_of?(File)
262
+ file_2 = file_2.respond_to?(:to_json) ? StringIO.new(file_2.to_json) : StringIO.new(file_2)
263
+ end
264
+ file_2_filename = file_2.path if file_2_filename.nil? && file_2.respond_to?(:path)
265
+ form_data[:file_2] = HTTP::FormData::File.new(file_2, content_type: file_2_content_type.nil? ? "application/octet-stream" : file_2_content_type, filename: file_2_filename)
266
+
267
+ method_url = "/v1/comparison"
268
+
269
+ response = request(
270
+ method: "POST",
271
+ url: method_url,
272
+ headers: headers,
273
+ params: params,
274
+ form: form_data,
275
+ accept_json: true
276
+ )
277
+ response
278
+ end
279
+ #########################
280
+ # Feedback
281
+ #########################
282
+
283
+ ##
284
+ # @!method add_feedback(feedback_data:, user_id: nil, comment: nil)
285
+ # Add feedback.
286
+ # Adds feedback in the form of _labels_ from a subject-matter expert (SME) to a
287
+ # governing document.
288
+ # **Important:** Feedback is not immediately incorporated into the training model,
289
+ # nor is it guaranteed to be incorporated at a later date. Instead, submitted
290
+ # feedback is used to suggest future updates to the training model.
291
+ # @param feedback_data [FeedbackDataInput] Feedback data for submission.
292
+ # @param user_id [String] An optional string identifying the user.
293
+ # @param comment [String] An optional comment on or description of the feedback.
294
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
295
+ def add_feedback(feedback_data:, user_id: nil, comment: nil)
296
+ raise ArgumentError.new("feedback_data must be provided") if feedback_data.nil?
297
+
298
+ headers = {
299
+ }
300
+
301
+ params = {
302
+ "version" => @version
303
+ }
304
+
305
+ data = {
306
+ "feedback_data" => feedback_data,
307
+ "user_id" => user_id,
308
+ "comment" => comment
309
+ }
310
+
311
+ method_url = "/v1/feedback"
312
+
313
+ response = request(
314
+ method: "POST",
315
+ url: method_url,
316
+ headers: headers,
317
+ params: params,
318
+ json: data,
319
+ accept_json: true
320
+ )
321
+ response
322
+ end
323
+
324
+ ##
325
+ # @!method list_feedback(feedback_type: nil, before: nil, after: nil, document_title: nil, model_id: nil, model_version: nil, category_removed: nil, category_added: nil, category_not_changed: nil, type_removed: nil, type_added: nil, type_not_changed: nil, page_limit: nil, cursor: nil, sort: nil, include_total: nil)
326
+ # List the feedback in documents.
327
+ # @param feedback_type [String] An optional string that filters the output to include only feedback with the
328
+ # specified feedback type. The only permitted value is `element_classification`.
329
+ # @param before [Time] An optional string in the format `YYYY-MM-DD` that filters the output to include
330
+ # only feedback that was added before the specified date.
331
+ # @param after [Time] An optional string in the format `YYYY-MM-DD` that filters the output to include
332
+ # only feedback that was added after the specified date.
333
+ # @param document_title [String] An optional string that filters the output to include only feedback from the
334
+ # document with the specified `document_title`.
335
+ # @param model_id [String] An optional string that filters the output to include only feedback with the
336
+ # specified `model_id`. The only permitted value is `contracts`.
337
+ # @param model_version [String] An optional string that filters the output to include only feedback with the
338
+ # specified `model_version`.
339
+ # @param category_removed [String] An optional string in the form of a comma-separated list of categories. If this is
340
+ # specified, the service filters the output to include only feedback that has at
341
+ # least one category from the list removed.
342
+ # @param category_added [String] An optional string in the form of a comma-separated list of categories. If this is
343
+ # specified, the service filters the output to include only feedback that has at
344
+ # least one category from the list added.
345
+ # @param category_not_changed [String] An optional string in the form of a comma-separated list of categories. If this is
346
+ # specified, the service filters the output to include only feedback that has at
347
+ # least one category from the list unchanged.
348
+ # @param type_removed [String] An optional string of comma-separated `nature`:`party` pairs. If this is
349
+ # specified, the service filters the output to include only feedback that has at
350
+ # least one `nature`:`party` pair from the list removed.
351
+ # @param type_added [String] An optional string of comma-separated `nature`:`party` pairs. If this is
352
+ # specified, the service filters the output to include only feedback that has at
353
+ # least one `nature`:`party` pair from the list removed.
354
+ # @param type_not_changed [String] An optional string of comma-separated `nature`:`party` pairs. If this is
355
+ # specified, the service filters the output to include only feedback that has at
356
+ # least one `nature`:`party` pair from the list unchanged.
357
+ # @param page_limit [Fixnum] An optional integer specifying the number of documents that you want the service
358
+ # to return.
359
+ # @param cursor [String] An optional string that returns the set of documents after the previous set. Use
360
+ # this parameter with the `page_limit` parameter.
361
+ # @param sort [String] An optional comma-separated list of fields in the document to sort on. You can
362
+ # optionally specify the sort direction by prefixing the value of the field with `-`
363
+ # for descending order or `+` for ascending order (the default). Currently permitted
364
+ # sorting fields are `created`, `user_id`, and `document_title`.
365
+ # @param include_total [Boolean] An optional boolean value. If specified as `true`, the `pagination` object in the
366
+ # output includes a value called `total` that gives the total count of feedback
367
+ # created.
368
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
369
+ def list_feedback(feedback_type: nil, before: nil, after: nil, document_title: nil, model_id: nil, model_version: nil, category_removed: nil, category_added: nil, category_not_changed: nil, type_removed: nil, type_added: nil, type_not_changed: nil, page_limit: nil, cursor: nil, sort: nil, include_total: nil)
370
+ headers = {
371
+ }
372
+
373
+ params = {
374
+ "version" => @version,
375
+ "feedback_type" => feedback_type,
376
+ "before" => before,
377
+ "after" => after,
378
+ "document_title" => document_title,
379
+ "model_id" => model_id,
380
+ "model_version" => model_version,
381
+ "category_removed" => category_removed,
382
+ "category_added" => category_added,
383
+ "category_not_changed" => category_not_changed,
384
+ "type_removed" => type_removed,
385
+ "type_added" => type_added,
386
+ "type_not_changed" => type_not_changed,
387
+ "page_limit" => page_limit,
388
+ "cursor" => cursor,
389
+ "sort" => sort,
390
+ "include_total" => include_total
391
+ }
392
+
393
+ method_url = "/v1/feedback"
394
+
395
+ response = request(
396
+ method: "GET",
397
+ url: method_url,
398
+ headers: headers,
399
+ params: params,
400
+ accept_json: true
401
+ )
402
+ response
403
+ end
404
+
405
+ ##
406
+ # @!method get_feedback(feedback_id:, model_id: nil)
407
+ # List a specified feedback entry.
408
+ # @param feedback_id [String] An string that specifies the feedback entry to be included in the output.
409
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
410
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
411
+ # method, the default is `tables`. These defaults apply to the standalone methods as
412
+ # well as to the methods' use in batch-processing requests.
413
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
414
+ def get_feedback(feedback_id:, model_id: nil)
415
+ raise ArgumentError.new("feedback_id must be provided") if feedback_id.nil?
416
+
417
+ headers = {
418
+ }
419
+
420
+ params = {
421
+ "version" => @version,
422
+ "model_id" => model_id
423
+ }
424
+
425
+ method_url = "/v1/feedback/%s" % [ERB::Util.url_encode(feedback_id)]
426
+
427
+ response = request(
428
+ method: "GET",
429
+ url: method_url,
430
+ headers: headers,
431
+ params: params,
432
+ accept_json: true
433
+ )
434
+ response
435
+ end
436
+
437
+ ##
438
+ # @!method delete_feedback(feedback_id:, model_id: nil)
439
+ # Deletes a specified feedback entry.
440
+ # @param feedback_id [String] An string that specifies the feedback entry to be deleted from the document.
441
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
442
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
443
+ # method, the default is `tables`. These defaults apply to the standalone methods as
444
+ # well as to the methods' use in batch-processing requests.
445
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
446
+ def delete_feedback(feedback_id:, model_id: nil)
447
+ raise ArgumentError.new("feedback_id must be provided") if feedback_id.nil?
448
+
449
+ headers = {
450
+ }
451
+
452
+ params = {
453
+ "version" => @version,
454
+ "model_id" => model_id
455
+ }
456
+
457
+ method_url = "/v1/feedback/%s" % [ERB::Util.url_encode(feedback_id)]
458
+
459
+ response = request(
460
+ method: "DELETE",
461
+ url: method_url,
462
+ headers: headers,
463
+ params: params,
464
+ accept_json: true
465
+ )
466
+ response
467
+ end
468
+ #########################
469
+ # Batches
470
+ #########################
471
+
472
+ ##
473
+ # @!method create_batch(function:, input_credentials_file:, input_bucket_location:, input_bucket_name:, output_credentials_file:, output_bucket_location:, output_bucket_name:, model_id: nil, input_credentials_filename: nil, output_credentials_filename: nil)
474
+ # Submit a batch-processing request.
475
+ # Run Compare and Comply methods over a collection of input documents.
476
+ # **Important:** Batch processing requires the use of the [IBM Cloud Object Storage
477
+ # service](https://console.bluemix.net/docs/services/cloud-object-storage/about-cos.html#about-ibm-cloud-object-storage).
478
+ # The use of IBM Cloud Object Storage with Compare and Comply is discussed at [Using
479
+ # batch
480
+ # processing](https://console.bluemix.net/docs/services/compare-comply/batching.html#before-you-batch).
481
+ # @param function [String] The Compare and Comply method to run across the submitted input documents.
482
+ # @param input_credentials_file [File] A JSON file containing the input Cloud Object Storage credentials. At a minimum,
483
+ # the credentials must enable `READ` permissions on the bucket defined by the
484
+ # `input_bucket_name` parameter.
485
+ # @param input_bucket_location [String] The geographical location of the Cloud Object Storage input bucket as listed on
486
+ # the **Endpoint** tab of your Cloud Object Storage instance; for example, `us-geo`,
487
+ # `eu-geo`, or `ap-geo`.
488
+ # @param input_bucket_name [String] The name of the Cloud Object Storage input bucket.
489
+ # @param output_credentials_file [File] A JSON file that lists the Cloud Object Storage output credentials. At a minimum,
490
+ # the credentials must enable `READ` and `WRITE` permissions on the bucket defined
491
+ # by the `output_bucket_name` parameter.
492
+ # @param output_bucket_location [String] The geographical location of the Cloud Object Storage output bucket as listed on
493
+ # the **Endpoint** tab of your Cloud Object Storage instance; for example, `us-geo`,
494
+ # `eu-geo`, or `ap-geo`.
495
+ # @param output_bucket_name [String] The name of the Cloud Object Storage output bucket.
496
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
497
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
498
+ # method, the default is `tables`. These defaults apply to the standalone methods as
499
+ # well as to the methods' use in batch-processing requests.
500
+ # @param input_credentials_filename [String] The filename for input_credentials_file.
501
+ # @param output_credentials_filename [String] The filename for output_credentials_file.
502
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
503
+ def create_batch(function:, input_credentials_file:, input_bucket_location:, input_bucket_name:, output_credentials_file:, output_bucket_location:, output_bucket_name:, model_id: nil, input_credentials_filename: nil, output_credentials_filename: nil)
504
+ raise ArgumentError.new("function must be provided") if function.nil?
505
+
506
+ raise ArgumentError.new("input_credentials_file must be provided") if input_credentials_file.nil?
507
+
508
+ raise ArgumentError.new("input_bucket_location must be provided") if input_bucket_location.nil?
509
+
510
+ raise ArgumentError.new("input_bucket_name must be provided") if input_bucket_name.nil?
511
+
512
+ raise ArgumentError.new("output_credentials_file must be provided") if output_credentials_file.nil?
513
+
514
+ raise ArgumentError.new("output_bucket_location must be provided") if output_bucket_location.nil?
515
+
516
+ raise ArgumentError.new("output_bucket_name must be provided") if output_bucket_name.nil?
517
+
518
+ headers = {
519
+ }
520
+
521
+ params = {
522
+ "version" => @version,
523
+ "function" => function,
524
+ "model_id" => model_id
525
+ }
526
+
527
+ form_data = {}
528
+
529
+ unless input_credentials_file.instance_of?(StringIO) || input_credentials_file.instance_of?(File)
530
+ input_credentials_file = input_credentials_file.respond_to?(:to_json) ? StringIO.new(input_credentials_file.to_json) : StringIO.new(input_credentials_file)
531
+ end
532
+ input_credentials_filename = input_credentials_file.path if input_credentials_filename.nil? && input_credentials_file.respond_to?(:path)
533
+ form_data[:input_credentials_file] = HTTP::FormData::File.new(input_credentials_file, content_type: "application/json", filename: input_credentials_filename)
534
+
535
+ form_data[:input_bucket_location] = HTTP::FormData::Part.new(input_bucket_location.to_s, content_type: "text/plain")
536
+
537
+ form_data[:input_bucket_name] = HTTP::FormData::Part.new(input_bucket_name.to_s, content_type: "text/plain")
538
+
539
+ unless output_credentials_file.instance_of?(StringIO) || output_credentials_file.instance_of?(File)
540
+ output_credentials_file = output_credentials_file.respond_to?(:to_json) ? StringIO.new(output_credentials_file.to_json) : StringIO.new(output_credentials_file)
541
+ end
542
+ output_credentials_filename = output_credentials_file.path if output_credentials_filename.nil? && output_credentials_file.respond_to?(:path)
543
+ form_data[:output_credentials_file] = HTTP::FormData::File.new(output_credentials_file, content_type: "application/json", filename: output_credentials_filename)
544
+
545
+ form_data[:output_bucket_location] = HTTP::FormData::Part.new(output_bucket_location.to_s, content_type: "text/plain")
546
+
547
+ form_data[:output_bucket_name] = HTTP::FormData::Part.new(output_bucket_name.to_s, content_type: "text/plain")
548
+
549
+ method_url = "/v1/batches"
550
+
551
+ response = request(
552
+ method: "POST",
553
+ url: method_url,
554
+ headers: headers,
555
+ params: params,
556
+ form: form_data,
557
+ accept_json: true
558
+ )
559
+ response
560
+ end
561
+
562
+ ##
563
+ # @!method list_batches
564
+ # Gets the list of submitted batch-processing jobs.
565
+ # Gets the list of batch-processing jobs submitted by users.
566
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
567
+ def list_batches
568
+ headers = {
569
+ }
570
+
571
+ params = {
572
+ "version" => @version
573
+ }
574
+
575
+ method_url = "/v1/batches"
576
+
577
+ response = request(
578
+ method: "GET",
579
+ url: method_url,
580
+ headers: headers,
581
+ params: params,
582
+ accept_json: true
583
+ )
584
+ response
585
+ end
586
+
587
+ ##
588
+ # @!method get_batch(batch_id:)
589
+ # Gets information about a specific batch-processing request.
590
+ # Gets information about a batch-processing request with a specified ID.
591
+ # @param batch_id [String] The ID of the batch-processing request whose information you want to retrieve.
592
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
593
+ def get_batch(batch_id:)
594
+ raise ArgumentError.new("batch_id must be provided") if batch_id.nil?
595
+
596
+ headers = {
597
+ }
598
+
599
+ params = {
600
+ "version" => @version
601
+ }
602
+
603
+ method_url = "/v1/batches/%s" % [ERB::Util.url_encode(batch_id)]
604
+
605
+ response = request(
606
+ method: "GET",
607
+ url: method_url,
608
+ headers: headers,
609
+ params: params,
610
+ accept_json: true
611
+ )
612
+ response
613
+ end
614
+
615
+ ##
616
+ # @!method update_batch(batch_id:, action:, model_id: nil)
617
+ # Updates a pending or active batch-processing request.
618
+ # Updates a pending or active batch-processing request. You can rescan the input
619
+ # bucket to check for new documents or cancel a request.
620
+ # @param batch_id [String] The ID of the batch-processing request you want to update.
621
+ # @param action [String] The action you want to perform on the specified batch-processing request.
622
+ # @param model_id [String] The analysis model to be used by the service. For the `/v1/element_classification`
623
+ # and `/v1/comparison` methods, the default is `contracts`. For the `/v1/tables`
624
+ # method, the default is `tables`. These defaults apply to the standalone methods as
625
+ # well as to the methods' use in batch-processing requests.
626
+ # @return [DetailedResponse] A `DetailedResponse` object representing the response.
627
+ def update_batch(batch_id:, action:, model_id: nil)
628
+ raise ArgumentError.new("batch_id must be provided") if batch_id.nil?
629
+
630
+ raise ArgumentError.new("action must be provided") if action.nil?
631
+
632
+ headers = {
633
+ }
634
+
635
+ params = {
636
+ "version" => @version,
637
+ "action" => action,
638
+ "model_id" => model_id
639
+ }
640
+
641
+ method_url = "/v1/batches/%s" % [ERB::Util.url_encode(batch_id)]
642
+
643
+ response = request(
644
+ method: "PUT",
645
+ url: method_url,
646
+ headers: headers,
647
+ params: params,
648
+ accept_json: true
649
+ )
650
+ response
651
+ end
652
+ end
653
+ end