vania-janet/multiturn-rag-retrieval-data huggingface dataset:
* [Preventing a Found response from displaying when it is not needed](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-slotsdialog-slots-stifle-found-responses)
* [Handling requests to exit a process](https://cloud.ibm.com/docs/assistant-data?topic=assistant-data-dialog-slotsdialog-slots-node-level-handler)





 Asking for everything at once 

Include an initial prompt for the whole node that clearly tells users which units of information you want them to provide. Displaying this prompt first gives users the opportunity to provide all the details at once and not have to wait to be prompted for each piece of information one at a time.

For example, when the node is triggered because a customer wants to order a pizza, you can respond with the preliminary prompt, I can take your pizza order. Tell me what size pizza you want and the time that you want it delivered.

If the user provides even one piece of this information in their initial request, then the prompt is not displayed. For example, the initial input might be, I want to order a large pizza. When your assistant analyzes the input, it recognizes large as the pizza size and fills the Size slot with the value provided. Because one of the slots is filled, it skips displaying the initial prompt to avoid asking for the pizza size information again. Instead, it displays the prompts for any remaining slots with missing information.

From the Customize pane where you enabled the Slots feature, select the Prompt for everything checkbox to enable the intial prompt. This setting adds the If no slots are pre-filled, ask this first field to the node, where you can specify the text that prompts the user for everything.





 Capturing multiple values 

You can ask for a list of items and save them in one slot.

For example, you might want to ask users whether they want toppings on their pizza. To do so define an entity (@toppings), and the accepted values for it (pepperoni, cheese, mushroom, and so on). Add a slot that asks the user about toppings. Use the values property of the entity type to capture multiple values, if provided.
The OpenAPI document specifies all of the details for each operation, including the HTTP method that is used, request parameters, the data included in the request body, and the structure of the response body.

For more information about the OpenAPI specification, see [OpenAPI Specification](https://swagger.io/specification/).

When you create a custom extension, you import an OpenAPI document that describes the REST API of an external service. Watson Assistant parses the OpenAPI document to identify the operations supported by the external service, along with information about the input parameters and response for each operation and supported authentication methods.

After this processing is complete, the custom extension becomes available as a new integration that you can connect to the assistant. Your assistant can then use the extension to send requests to the external service based on conversations with your customers. Values that are included in the response from the service are then mapped to action variables, which can be accessed by subsequent action steps.

(For more information about connecting a custom extension to an assistant, see [Add a custom extension](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-add-custom-extension).)





 Preparing the API definition 

To create a custom extension, you need access to an OpenAPI document that describes the REST API you want to integrate with. Many third-party services publish OpenAPI documents that describe their APIs, which you can download and import. For an API that your company maintains, you can use standard tools to create an OpenAPI document that describes it.

The [SwaggerHub](https://swagger.io/tools/swaggerhub/) website offers an [OpenAPI 3.0 Tutorial](https://support.smartbear.com/swaggerhub/docs/tutorials/openapi-3-tutorial.html), and [tools](https://swagger.io/tools/) to help you develop and validate your OpenAPI document. You can use the online [Swagger editor](https://editor.swagger.io/) to convert your OpenAPI document to the correct format and OpenAPI version.
.index("<index-name>")
.build();

SearchInfoResult response =
service.getSearchInfo(infoOptions).execute()
.getResult();

System.out.println(response);

import { CloudantV1 } from '@ibm-cloud/cloudant';

const service = CloudantV1.newInstance({});

service.getSearchInfo({
db: '<db-name>',
ddoc: '<ddoc>',
index: '<index-name>'
}).then(response => {
console.log(response.result);
});

from ibmcloudant.cloudant_v1 import CloudantV1

service = CloudantV1.new_instance()

response = service.get_search_info(
db='<db-name>',
ddoc='<ddoc>',
index='<index-name>'
).get_result()

print(response)

getSearchInfoOptions := service.NewGetSearchInfoOptions(
"<db-name>",
"<ddoc>",
"<index-name>",
)

searchInfoResult, _, err := service.GetSearchInfo(getSearchInfoOptions)
if err != nil {
panic(err)
}

b, _ := json.MarshalIndent(searchInfoResult, "", " ")
fmt.Println(string(b))

The previous Go example requires the following import block:

import (
"encoding/json"
"fmt"
"github.com/IBM/cloudant-go-sdk/cloudantv1"
)

The response includes information about your index, such as the number of documents in the index and the size of the index on disk.

See the following example response after you request search index metadata:
{"_id":"4048662","_rev":"1-e95c97013ece566b37583e451c1864ee","name":"Paducah","latitude":37.08339,"longitude":-88.60005,"country":"US","population":25024,"timezone":"America/Chicago"}
] ,
"bookmark": "g1AAAAA-eJzLYWBgYMpgSmHgKy5JLCrJTq2MT8lPzkzJBYqzmxiYWJiZGYGkOWDSyBJZAPCBD58"
}
Show more
You get the first five cities and a bookmark ready for the next request with the bookmark request parameter. curl -H "Authorization: Bearer $API_BEARER_TOKEN" "$SERVICE_URL/cities/_search/search/_search/freetext?q=country:US&limit=5&bookmark=g1AAAAA-eJzLYWBgYMpgSmHgKy5JLCrJTq2MT8lPzkzJBYqzmxiYWJiZGYGkOWDSyBJZAPCBD58"
{
"total_rows": 65,
"rows":
{"_id":"4049979","_rev":"1-1fa2591477c774a07c230571568aeb66","name":"Birmingham","latitude":33.52066,"longitude":-86.80249,"country":"US","population":212237,"timezone":"America/Chicago"},
For more information about the endpoints, see [Custom Search](https://developers.google.com/custom-search/v1/reference/rest/v1/cse/list) or [Custom Search Site Restricted](https://developers.google.com/custom-search/v1/reference/rest/v1/cse.siterestrict/list).

The endpoints have the same arguments and responses, but with differences:



* Custom Search Site Restricted is restricted to searching 10 or fewer websites, each of which can have an unlimited number of pages.
* Custom Search can support any number of websites that is indexed by Google, but has a [daily query limit](https://developers.google.com/custom-search/v1/overviewpricing).



For a typical assistant focused on a specific topic, it is usually only necessary to search a single website or a few websites. Custom Search Site Restricted is a better fit since it doesn't have a limit on the number of queries that can be run per day. Assistants that need to search more than 10 websites need to use Custom Search instead.





 Create and add extension 



1. In your assistant, on the Integrations page, click Build custom extension and use the OpenAPI specification file to build a custom extension. For general instructions on building any custom extension, see [Building the custom extension](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-build-custom-extensionbuilding-the-custom-extension).
2. After you build the Google custom search extension and it appears on your Integrations page, click Add to add it to your assistant. Use your Google programmable search engine API key to authenticate. For general instructions on adding any custom extension, see [Adding an extension to your assistant](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-add-custom-extension).







 Add the Google custom search starter kit action template 



1. Open the Actions page.
2. If you have no actions, choose Create a new action. If you already have some actions, choose New action.
3.
The API returns a Response body that contains information about the current weather.
![15-success.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/15-success.png)







 Conclusion 

In this tutorial, you completed the following tasks:



1. Set up a SOAP API definition.
2. Test your API definition by invoking an API that requests weather data.
3. Receive a Response body from the weather API endpoint indicating the result of your request.







 Next step 

[Expose your service as a REST API](https://cloud.ibm.com/docs/apiconnect/tutorials?topic=apiconnect-tut_expose_soap_service) or [secure your API using OAuth 2.0](https://cloud.ibm.com/docs/apiconnect/tutorials?topic=apiconnect-tut_secure_oauth_2).

Create > Manage > Secure > Socialize > Analyze
For more information, see [Monitoring usage](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-analyzeapiapi-usage).





 30 August 2020 

Update to API version
: The current API version (v2) is now 2020-08-30. The following change was made with this version:

Change to 'options' object
: The List enrichments method no longer returns the options object per enrichment. Use the Get enrichment method to return the options object for a single enrichment.





 2.1.3 release, 19 June 2020 

New release now available
: IBM Watson® Discovery for IBM Cloud Pak® for Data version 2.1.3 is available.
: Discovery for Cloud Pak for Data now works with IBM Cloud Pak® for Data 3.0.1.

New Finnish and Hebrew language support
: Added basic support for Finnish and Hebrew. For more information, see [Language support](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-language-support).

Change to Analyze endpoint
: The Analyze endpoint, which supports stateless document ingestion workflows. For details, see the [Analyze API](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-analyzeapi). The Analyze API supports JSON documents only. Use of the Analyze API affects license usage.

New options for Content Miner
: The content mining application includes two new options: Cyclic time scale on the Time series dashboard, and the Contextual view tab.

New shortcut for Content Mining projects
: For Content Mining projects only, the Improve and customize page includes a shortcut: the Launch application button. Previously, you were required to open the Integrate and deploy page, select the Launch application tab, and click the Launch button.

Improved segment limit
: The segment limit when splitting documents has been increased to 1,000. For details, see [Split documents to make query results more succinct](https://cloud.ibm.com/docs/discovery-data?topic=discovery-data-split-documents).

Improved Filenet connector
Developer Portal tutorials for API Connect Reserved 

Tutorials are included in the extended API Connect V10 Reserved documentation.

For tutorials on setting up and using a developer portal, see [Developer Portal tutorials](https://www.ibm.com/support/knowledgecenter/SSMNED_v10cloud/com.ibm.apic.devportal.doc/tutorials_devportal_home.html).
For more information, see the [API Reference](https://cloud.ibm.com/apidocs/assistant/assistant-v1).
* Responses from API calls using the new version include only properties with non-null values.
* The output.nodes_visited and output.nodes_visited_details properties of message responses now include nodes with the following types, which were previously omitted:
* Nodes with type=response_condition
* Nodes with type=event_handler and event_name=input







 9 February 2018 

Dutch system entities (Beta)
: Dutch language support has been enhanced to include the availability of [System entities](https://cloud.ibm.com/docs/assistant?topic=assistant-system-entities) in beta release. See [Supported languages](https://cloud.ibm.com/docs/assistant?topic=assistant-language-support) for details.





 29 January 2018 



* The Watson Assistant REST API now supports new request parameters:



* Use the append parameter when updating a workspace to indicate whether the new workspace data should be added to the existing data, rather than replacing it. For more information, see [Update workspace](https://cloud.ibm.com/apidocs/assistant/assistant-v1?curl=update-workspace).
* Use the nodes_visited_details parameter when sending a message to indicate whether the response should include additional diagnostic information about the nodes that were visited during processing of the message. For more information, see [Send message](https://cloud.ibm.com/apidocs/assistant/assistant-v1?curl=message).









 23 January 2018 

Unable to retrieve list of workspaces
: If you see this or similar error messages when working in the tooling, it might mean that your session has expired. Log out by choosing Log out from the User information icon, and then log back in.





 8 December 2017 

Log data access across instances (Premium users only)
: If you are a Watson Assistant Premium user, your premium instances can optionally be configured to allow access to log data from workspaces across your different premium instances.

Copy nodes
* [Viewing a list of keys with the IBM Cloud console](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-view-key-listview-key-list-ui)
* [Viewing a list of keys with the API](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-view-key-listview-key-list-api)
* [What's next](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-view-key-listview-key-list-next)



[Filtering and searching keys](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-search-key-listsearch-key-list)



* [Filtering keys with the IBM Cloud console](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-search-key-listfilter-key-list-ui)
* [ Searching for keys with the IBM Cloud console](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-search-key-listsearch-key-list-ui)
* [Searching keys with the API](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-search-key-listsearch-key-list-api)
* [What's next](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-search-key-listsearch-key-list-next)



[Editing key details](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-edit-kms-keysedit-kms-keys)



* [Editing key details with the IBM Cloud console](https://cloud.ibm.com/docs/hs-crypto?topic=hs-crypto-edit-kms-keysedit-kms-keys-ui)
for examples.In other words, the second request has a value of startkey_docid that is the last document ID from the previous page of results (llama) plus the magic u0000 character (which becomes llama%00 in the URL).The startkey_docid parameter works only if a startkey is supplied and where all index entries share a key. If they don't share a key, then pagination can be achieved with manipulation of startkey/endkey parameters only. Also, the startkey_docid parameter is not JSON encoded.<-- </section "id="section-pagination-of-views" "> --><-- <section "id="section-bookmarks" "> --> Bookmarks Imagine you're creating a web application that shows a set of search results, whether they be books, actors, or products in your store. As the user scrolls through the search results, another page of matches is appended at the end. This behavior is known as an "infinite scroll" design pattern. It allows the user to endlessly scroll through a large data set with ease, while they fetch only smaller batches of data from the database each time.<-- <section "id="section-how-do-cloudant-bookmarks-work" "> --> How do IBM Cloudant bookmarks work? It's this sort of access pattern that IBM Cloudant bookmarks are built for. Here's how it works:<-- <ul> --> * Your application runs a search on an IBM Cloudant database, for example, find me the first 10 cities where the country is "US". * IBM Cloudant provides an array of 10 IBM Cloudant documents and a bookmark, an opaque key that represents a pointer to the next documents in the result set. * When the next set of results is required, the search is repeated. However, the query is sent, with the bookmark from the first response, to IBM Cloudant in the request. * IBM Cloudant replies with the second set of documents and another bookmark, which can be used to get a third page of results.
This request lists the objects inside the "apiary" bucket with a max key returned set to 1.

GET /apiary?list-type=2&max-keys=1 HTTP/1.1
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud
Authorization: Bearer {token}

Sample request (max-keys parameter)

GET /apiary?list-type=2&max-keys=1 HTTP/1.1
Authorization: 'AWS4-HMAC-SHA256 Credential={access-key}/{date}/{region}/s3/aws4_request,SignedHeaders=host;x-amz-date;,Signature={signature}'
x-amz-date: {timestamp}
Content-Type: text/plain
Host: s3.us.cloud-object-storage.appdomain.cloud

Example response (Truncated Response)

HTTP/1.1 200 OK
Date: Wed, 24 Aug 2016 17:36:24 GMT
X-Clv-Request-Id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Accept-Ranges: bytes
Server: Cleversafe/3.13.3.57
X-Clv-S3-Version: 2.5
x-amz-request-id: 9f39ff2e-55d1-461b-a6f1-2d0b75138861
Content-Type: application/xml
Content-Length: 598

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>apiary</Name>
<Prefix/>
You have access to up to 90 days of realtime and historical information regarding your APIs and Products that are published to that catalog. It also shows you who is calling them. If your catalog has multiple spaces, you can navigate to the Space level.

This tutorial consists of four activities that show you how to complete the following tasks:



* View analytics
* View event record details
* Build new dashboards
* Create new visualizations







 Activity 1: Viewing out of the box analytics 



1. In your API Connect service on IBM Cloud, launch your Dashboard and select the Catalog that you want to open.
2. Click the Analytics tab.

![analyticstab.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/analyticstab.png)



You'll see the default Overview dashboard, which shows two bar chart visualizations that contain the following data from the last 7 days:



* 5 Most Active Products
* 5 Most Active APIs





3. Hover over any of the bars to see additional details, such as the API count, api names, and so on.

![defaultoverview.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/defaultoverview.png)
4. Use the search bar to filter the data shown. You can also select a different time filter and/or auto-refresh rate. The visualizations update to reflect your selections.



There are other dashboards that are provided out of the box for you.



5. Click the folder icon to load a saved dashboard, and select api_default from the dropdown list.
Replace {apikey}, {environment_id} and {collection_id} with your information:

curl -u "apikey:{apikey}" "{url}/v1/environments/{environment_id}/collections/{collection_id}/query?version=2019-04-30&query=enriched_text.entities.text:IBM"





 Next steps 

You successfully queried documents in the environment and collection you created. You can now begin customizing your collection by adding more documents and enrichments, and customizing conversion settings.



* Read about the API in the [API reference](https://cloud.ibm.com/apidocs/discovery)
* [Configure](https://cloud.ibm.com/docs/discovery?topic=discovery-configservice) your service
* Learn about [authenticating with IAM](https://cloud.ibm.com/docs/watson?topic=watson-iam)
: Version 3 includes the following breaking changes:



* Mandatory version date for all API endpoints: API v3 requests require a version date query parameter of the form version=YYYY-MM-DD. The latest API version is version=2018-05-01.
* Simplified API:



* The Translate and Identify methods do not offer the option to return plain text responses in v3. The methods return only JSON responses.
* GET /translate and GET /identify methods are not supported in v3. Use the POST /translate and POST /identify methods instead.



* Monolingual corpus customization is not supported in v3.
* Creating custom models with both a parallel corpus and forced glossary now needs to be done in two API calls. First, customize the model with a parallel corpus. After the custom model has finished training, customize it again with the forced glossary. This change allows you to use a custom model trained with a parallel corpus as a base for forced glossary customization.
* Specialized patent and conversation domain models are not available in the v3 API. The translation quality provided by the NMT models in the patent and conversation domains is generally improved compared to the older specialized models.
* Error object keys have been renamed so that they are consistent with other Watson APIs. error_code has been renamed to code, and error_message has been renamed to error.



New support for IBM Cloud IAM
: As of 12 June 2018, new service instances created in the Sydney and US East regions use [Identity and Access Management (IAM) authentication](https://cloud.ibm.com/docs/language-translator?topic=language-translator-release-notesiam-auth-process).





 12 January 2018 

New Neural Machine Translation Models
: New Neural Machine Translation (NMT) models are available to preview. You can try NMT models for the following language pairs.



* English to and from: Arabic, Chinese, Dutch, French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazilian), Russian, Spanish, and Turkish
* French to and from: German, Spanish
* German to and from: Italian
"keys": [
"amelie.smith@aol.com",
"bob.smith@aol.com"
]
}

See the example of a global query that returns all users (where the key for the view matches is either amelie.smith@aol.com or bob.smith@aol.com):



* Curl
* Java
* Node
* Python
* Go



curl -X POST "$SERVICE_URL/users/_design/allusers/_view/getVerifiedEmails" -H "Content-Type: application/json" --data '{
"keys": [
"amelie.smith@aol.com",
"bob.smith@aol.com"
]
}'

import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.PostViewOptions;
import com.ibm.cloud.cloudant.v1.model.ViewResult;

import java.util.Arrays;

Cloudant service = Cloudant.newInstance();

PostViewOptions viewOptions = new PostViewOptions.Builder()
.db("users")
.ddoc("allusers")
.view("getVerifiedEmails")
.keys(Arrays.asList("amelie.smith@aol.com", "bob.smith@aol.com"))
.build();

ViewResult response =
service.postView(viewOptions).execute()
.getResult();

System.out.println(response);

const { CloudantV1 } = require('@ibm-cloud/cloudant');

const service = CloudantV1.newInstance({});

service.postView({
db: 'users',
ddoc: 'allusers',
view: 'getVerifiedEmails',