IBM Cloud API Docs

Introduction

The IBM Watson™ Assistant service combines machine learning, natural language understanding, and an integrated dialog editor to create conversation flows between your apps and your users.

The Assistant v1 API provides authoring methods your application can use to create or update a workspace.

This documentation describes Java SDK major version 9. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Node SDK major version 6. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Python SDK major version 5. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Ruby SDK major version 2. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes .NET Standard SDK major version 5. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Go SDK major version 2. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Swift SDK major version 4. For more information about how to update your code from the previous version, see the migration guide.

This documentation describes Unity SDK major version 5. For more information about how to update your code from the previous version, see the migration guide.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API reference.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

For runtime methods that are used by a client application to send user input to an assistant, use the v2 API.

The IBM Watson Unity SDK has the following requirements.

  • The SDK requires Unity version 2018.2 or later to support Transport Layer Security (TLS) 1.2.
    • Set the project settings for both the Scripting Runtime Version and the Api Compatibility Level to .NET 4.x Equivalent.
    • For more information, see TLS 1.0 support.
  • The SDK doesn't support the WebGL projects. Change your build settings to any platform except WebGL.

For more information about how to install and configure the SDK and SDK Core, see https://github.com/watson-developer-cloud/unity-sdk.

The code examples on this tab use the client library that is provided for Java.

Maven

<dependency>
  <groupId>com.ibm.watson</groupId>
  <artifactId>ibm-watson</artifactId>
  <version>11.0.1</version>
</dependency>

Gradle

compile 'com.ibm.watson:ibm-watson:11.0.1'

GitHub

The code examples on this tab use the client library that is provided for Node.js.

Installation

npm install ibm-watson@^8.0.0

GitHub

The code examples on this tab use the client library that is provided for Python.

Installation

pip install --upgrade "ibm-watson>=7.0.1"

GitHub

The code examples on this tab use the client library that is provided for Ruby.

Installation

gem install ibm_watson

GitHub

The code examples on this tab use the client library that is provided for Go.

go get -u github.com/watson-developer-cloud/go-sdk/v2@v3.0.0

GitHub

The code examples on this tab use the client library that is provided for Swift.

Cocoapods

pod 'IBMWatsonAssistantV1', '~> 5.0.0'

Carthage

github "watson-developer-cloud/swift-sdk" ~> 5.0.0

Swift Package Manager

.package(url: "https://github.com/watson-developer-cloud/swift-sdk", from: "5.0.0")

GitHub

The code examples on this tab use the client library that is provided for .NET Standard.

Package Manager

Install-Package IBM.Watson.Assistant.v1 -Version 7.0.0

.NET CLI

dotnet add package IBM.Watson.Assistant.v1 --version 7.0.0

PackageReference

<PackageReference Include="IBM.Watson.Assistant.v1" Version="7.0.0" />

GitHub

The code examples on this tab use the client library that is provided for Unity.

GitHub

Endpoint URLs

Identify the base URL for your service instance.

IBM Cloud URLs

The base URLs come from the service instance. To find the URL, view the service credentials by clicking the name of the service in the Resource list. Use the value of the URL. Add the method to form the complete API endpoint for your request.

The following example URL represents a watsonx Assistant instance that is hosted in Washington, DC:

https://api.us-east.assistant.watson.cloud.ibm.com/instances/6bbda3b3-d572-45e1-8c54-22d6ed9e52c2

The following URLs represent the base URLs for watsonx Assistant. When you call the API, use the URL that corresponds to the location of your service instance.

  • Dallas: https://api.us-south.assistant.watson.cloud.ibm.com
  • Washington, DC: https://api.us-east.assistant.watson.cloud.ibm.com
  • Frankfurt: https://api.eu-de.assistant.watson.cloud.ibm.com
  • Sydney: https://api.au-syd.assistant.watson.cloud.ibm.com
  • Tokyo: https://api.jp-tok.assistant.watson.cloud.ibm.com
  • London: https://api.eu-gb.assistant.watson.cloud.ibm.com
  • Seoul: https://api.kr-seo.assistant.watson.cloud.ibm.com

Set the correct service URL by calling the setServiceUrl() method of the service instance.

Set the correct service URL by specifying the serviceUrl parameter when you create the service instance.

Set the correct service URL by calling the set_service_url() method of the service instance.

Set the correct service URL by specifying the service_url property of the service instance.

Set the correct service URL by calling the SetServiceURL() method of the service instance.

Set the correct service URL by setting the serviceURL property of the service instance.

Set the correct service URL by calling the SetServiceUrl() method of the service instance.

Set the correct service URL by calling the SetServiceUrl() method of the service instance.

Dallas API endpoint example for services managed on IBM Cloud

curl -X {request_method} -u "apikey:{apikey}" "https://api.us-south.assistant.watson.cloud.ibm.com/instances/{instance_id}"

Your service instance might not use this URL

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("https://api.us-east.assistant.watson.cloud.ibm.com");

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  serviceUrl: 'https://api.us-east.assistant.watson.cloud.ibm.com',
});

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('https://api.us-east.assistant.watson.cloud.ibm.com')

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::IamAuthenticator.new(
  apikey: "{apikey}"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "https://api.us-east.assistant.watson.cloud.ibm.com"

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

assistant, assistantErr := assistantv1.NewAssistantV1(options)

if assistantErr != nil {
  panic(assistantErr)
}

assistant.SetServiceURL("https://api.us-east.assistant.watson.cloud.ibm.com")

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

let authenticator = WatsonIAMAuthenticator(apiKey: "{apikey}")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "https://api.us-east.assistant.watson.cloud.ibm.com"

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

IamAuthenticator authenticator = new IamAuthenticator(
    apikey: "{apikey}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://api.us-east.assistant.watson.cloud.ibm.com");

Default URL

https://api.us-south.assistant.watson.cloud.ibm.com

Example for the Washington, DC location

var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://api.us-east.assistant.watson.cloud.ibm.com");

Cloud Pak for Data URLs

For services installed on Cloud Pak for Data, the base URLs come from both the cluster and service instance.

You can find the base URL from the Cloud Pak for Data web client in the details page about the instance. Click the name of the service in your list of instances to see the URL.

Use that URL in your requests to Watson Assistant v1. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the URL by calling the setServiceUrl() method of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by specifying the serviceUrl parameter when you create the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by specifying the url parameter when you create the service instance or by calling the set_url() method of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by specifying the url parameter when you create the service instance or by calling the url= method of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by specifying the URL parameter when you create the service instance or by calling the SetURL= method of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by setting the serviceURL property of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by calling the SetEndpoint() method of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Set the correct service URL by setting the Url property of the service instance. For Cloud Pak for Data System, use a hostname that resolves to an IP address in the cluster.

Endpoint example for Cloud Pak for Data

curl -X {request_method} -H "Authorization: Bearer {token}" "https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api"

Endpoint example for Cloud Pak for Data

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}", "{username}", "{password}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api");

Endpoint example for Cloud Pak for Data

const AssistantV1 = require('ibm-watson/assistant/v1');
const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new CloudPakForDataAuthenticator({
    username: '{username}',
    password: '{password}',
    url: 'https://{cpd_cluster_host}{:port}',
  }),
  serviceUrl: 'https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api',
});

Endpoint example for Cloud Pak for Data

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator

authenticator = CloudPakForDataAuthenticator(
    '{username}',
    '{password}',
    'https://{cpd_cluster_host}{:port}'
)

assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api')

Endpoint example for Cloud Pak for Data

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::CLoudPakForDataAuthenticator.new(
  username: "{username}",
  password: "{password}",
  url: "https://{cpd_cluster_host}{:port}"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api"

Endpoint example for Cloud Pak for Data

assistant, assistantErr := assistantv1.NewAssistantV1(options)

if assistantErr != nil {
  panic(assistantErr)
}

assistant.SetServiceURL("https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api")

Endpoint example for Cloud Pak for Data

let authenticator = CloudPakForDataAuthenticator(username: "{username}", password: "{password}", url: "https://{cpd_cluster_host}{:port}")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api"

Endpoint example for Cloud Pak for Data

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api");

Endpoint example for Cloud Pak for Data

var authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://{cpd_cluster_host}{:port}/assistant/{deployment_id}/instances/{instance_id}/api");

Disabling SSL verification

All Watson services use Secure Sockets Layer (SSL) (or Transport Layer Security (TLS)) for secure connections between the client and server. The connection is verified against the local certificate store to ensure authentication, integrity, and confidentiality.

If you use a self-signed certificate, you need to disable SSL verification to make a successful connection.

Enabling SSL verification is highly recommended. Disabling SSL jeopardizes the security of the connection and data. Disable SSL only if necessary, and take steps to enable SSL as soon as possible.

To disable SSL verification for a curl request, use the --insecure (-k) option with the request.

To disable SSL verification, create an HttpConfigOptions object and set the disableSslVerification property to true. Then, pass the object to the service instance by using the configureClient method.

To disable SSL verification, set the disableSslVerification parameter to true when you create the service instance.

To disable SSL verification, specify True on the set_disable_ssl_verification method for the service instance.

To disable SSL verification, set the disable_ssl_verification parameter to true in the configure_http_client() method for the service instance.

To disable SSL verification, call the DisableSSLVerification method on the service instance.

To disable SSL verification, call the disableSSLVerification() method on the service instance. You cannot disable SSL verification on Linux.

To disable SSL verification, set the DisableSslVerification method to true on the service instance.

To disable SSL verification, set the DisableSslVerification method to true on the service instance.

Example to disable SSL verification with a service managed on IBM Cloud. Replace {apikey} and {url} with your service credentials.

curl -k -X {request_method} -u "apikey:{apikey}" "{url}/{method}"

Example to disable SSL verification with a service managed on IBM Cloud

IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("{url}");

HttpConfigOptions configOptions = new HttpConfigOptions.Builder()
  .disableSslVerification(true)
  .build();
assistant.configureClient(configOptions);

Example to disable SSL verification with a service managed on IBM Cloud

const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  serviceUrl: '{url}',
  disableSslVerification: true,
});

Example to disable SSL verification with a service managed on IBM Cloud

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('{url}')

assistant.set_disable_ssl_verification(True)

Example to disable SSL verification with a service managed on IBM Cloud

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::IamAuthenticator.new(
  apikey: "{apikey}"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "{url}"

assistant.configure_http_client(disable_ssl_verification: true)

Example to disable SSL verification with a service managed on IBM Cloud

assistant, assistantErr := assistantv1.NewAssistantV1(options)

if assistantErr != nil {
  panic(assistantErr)
}

assistant.SetServiceURL("{url}")

assistant.DisableSSLVerification()

Example to disable SSL verification with a service managed on IBM Cloud

let authenticator = WatsonIAMAuthenticator(apiKey: "{apikey}")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "{url}"

assistant.disableSSLVerification()

Example to disable SSL verification with a service managed on IBM Cloud

IamAuthenticator authenticator = new IamAuthenticator(
    apikey: "{apikey}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.DisableSslVerification(true);

Example to disable SSL verification with a service managed on IBM Cloud

var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.DisableSslVerification = true;

Example to disable SSL verification with an installed service

curl -k -X {request_method} -H "Authorization: Bearer {token}" "{url}/v1/{method}"

Example to disable SSL verification with an installed service

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}", "{username}", "{password}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("{url}";

HttpConfigOptions configOptions = new HttpConfigOptions.Builder()
  .disableSslVerification(true)
  .build();
assistant.configureClient(configOptions);

Example to disable SSL verification with an installed service

const AssistantV1 = require('ibm-watson/assistant/v1');
const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new CloudPakForDataAuthenticator({
    username: '{username}',
    password: '{password}',
    url: 'https://{cpd_cluster_host}{:port}',
  }),
  serviceUrl: '{url}',
  disableSslVerification: true,
});

Example to disable SSL verification with an installed service

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator

authenticator = CloudPakForDataAuthenticator(
    '{username}',
    '{password}'
)

assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('{url}')

assistant.set_disable_ssl_verification(True)

Example to disable SSL verification with an installed service

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::CLoudPakForDataAuthenticator.new(
  username: "{username}",
  password: "{password}",
  url: "https://{cpd_cluster_host}{:port}"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "{url}"

assistant.configure_http_client(disable_ssl_verification: true)

Example to disable SSL verification with an installed service

assistant, assistantErr := assistantv1.NewAssistantV1(options)

if assistantErr != nil {
  panic(assistantErr)
}

assistant.SetServiceURL("{url}")

assistant.DisableSSLVerification()

Example to disable SSL verification with an installed service

let authenticator = WatsonCloudPakForDataAuthenticator(username: "{username}", password: "{password}", url: "https://{cpd_cluster_host}{:port}")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "{url}"

assistant.disableSSLVerification()

Example to disable SSL verification with an installed service

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.DisableSslVerification(true);

Example to disable SSL verification with an installed service

var authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.DisableSslVerification = true;

Authentication

IBM Cloud services use IBM Cloud Identity and Access Management (IAM) to authenticate. With IBM Cloud Pak for Data, you pass a bearer token.

IBM Cloud

For IBM Cloud instances, you authenticate to the API by using IBM Cloud Identity and Access Management (IAM).

You can pass either a bearer token in an authorization header or an API key. Tokens support authenticated requests without embedding service credentials in every call. API keys use basic authentication. For more information, see Authenticating to Watson services.

  • For testing and development, you can pass an API key directly.
  • For production use, unless you use the Watson SDKs, use an IAM token.

If you pass in an API key, use apikey for the username and the value of the API key as the password. For example, if the API key is f5sAznhrKQyvBFFaZbtF60m5tzLbqWhyALQawBg5TjRI in the service credentials, include the credentials in your call like this:

curl -u "apikey:f5sAznhrKQyvBFFaZbtF60m5tzLbqWhyALQawBg5TjRI"

For IBM Cloud instances, the SDK provides initialization methods for each form of authentication.

  • Use the API key to have the SDK manage the lifecycle of the access token. The SDK requests an access token, ensures that the access token is valid, and refreshes it if necessary.
  • Use the access token to manage the lifecycle yourself. You must periodically refresh the token.

For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.For more information, see IAM authentication with the SDK.

The service access role that is associated with the API key determines which endpoints and methods you can access. For more information, see Resource-level role impact on available actions.

IBM Cloud. Replace {apikey} and {url} with your service credentials.

curl -X {request_method} -u "apikey:{apikey}" "{url}/v1/{method}"

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("{url}");

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  serviceUrl: '{url}',
});

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('{url}')

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::IamAuthenticator.new(
  apikey: "{apikey}"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "{url}"

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

import (
  "github.com/IBM/go-sdk-core/core"
  "github.com/watson-developer-cloud/go-sdk/assistantv1"
)

func main() {
  authenticator := &core.IamAuthenticator{
    ApiKey: "{apikey}",
  }

  options := &assistantv1.AssistantV1Options{
    Version: "{version}",
    Authenticator: authenticator,
  }

  assistant, assistantErr := assistantv1.NewAssistantV1(options)

  if assistantErr != nil {
    panic(assistantErr)
  }

  assistant.SetServiceURL("{url}")
}

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

let authenticator = WatsonIAMAuthenticator(apiKey: "{apikey}")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "{url}"

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

IamAuthenticator authenticator = new IamAuthenticator(
    apikey: "{apikey}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

IBM Cloud. SDK managing the IAM token. Replace {apikey}, {version}, and {url}.

var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

Cloud Pak for Data

For Cloud Pak for Data, you pass a bearer token in an Authorization header to authenticate to the API. The token is associated with a username.

  • For testing and development, you can use the bearer token that's displayed in the Cloud Pak for Data web client. To find this token, view the details for the service instance by clicking the name of the service in your list of instances. The details also include the service endpoint URL. Don't use this token in production because it does not expire.
  • For production use, create a user in the Cloud Pak for Data web client to use for authentication. Generate a token from that user's credentials with the POST /v1/authorize method.

For more information, see the Get authorization token method of the Cloud Pak for Data API reference.

For Cloud Pak for Data instances, pass either username and password credentials or a bearer token that you generate to authenticate to the API. Username and password credentials use basic authentication. However, the SDK manages the lifecycle of the token. Tokens are temporary security credentials. If you pass a token, you maintain the token lifecycle.

For production use, create a user in the Cloud Pak for Data web client to use for authentication, and decide which authentication mechanism to use.

  • To have the SDK manage the lifecycle of the token, use the username and password for that new user in your calls.
  • To manage the lifecycle of the token yourself, generate a token from that user's credentials. Call the POST /v1/authorize method to generate the token, and then pass the token in an Authorization header in your calls. You can see an example of the method on the Curl tab.

For more information, see the Get authorization token method of the Cloud Pak for Data API reference.

Don't use the bearer token that's displayed in the web client for the instance except during testing and development because that token does not expire.

To find your value for {url}, view the details for the service instance by clicking the name of the service in your list of instances in the Cloud Pak for Data web client.

Cloud Pak for Data. Generating a bearer token.

Replace {cpd_cluster_host} and {port} with the details for the service instance. Replace {username} and {password} with your Cloud Pak for Data credentials.

curl -k -X POST -H "cache-control: no-cache" -H "Content-Type: application/json" -d "{\"username\":\"{username}\",\"password\":\"{password}\"}" "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize"

The response includes a token property.

Authenticating to the API. Replace {token} with your details.

curl -H "Authorization: Bearer {token}" "{url}/v1/{method}"

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
Assistant assistant = new Assistant("{version}", authenticator);
assistant.setServiceUrl("{url}");

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

const AssistantV1 = require('ibm-watson/assistant/v1');
const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new CloudPakForDataAuthenticator({
    username: '{username}',
    password: '{password}',
    url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
  }),
  serviceUrl: '{url}',
});

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator

authenticator = CloudPakForDataAuthenticator(
    '{username}',
    '{password}',
    'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
)

assistant = AssistantV1(
    version='{version}',
    authenticator=authenticator
)

assistant.set_service_url('{url}')

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::CloudPakForDataAuthenticator.new(
  username: "{username}",
  password: "{password}",
  url: "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize"
)
assistant = AssistantV1.new(
  version: "{version}",
  authenticator: authenticator
)
assistant.service_url = "{url}"

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

import (
  "github.com/IBM/go-sdk-core/core"
  "github.com/watson-developer-cloud/go-sdk/assistantv1"
)

func main() {
  authenticator := &core.CloudPakForDataAuthenticator{
    URL: "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize",
    Username: "{username}",
    Password: "{password}",
  }

  options := &assistantv1.AssistantV1Options{
    Version: "{version}",
    Authenticator: authenticator,
  }

  assistant, assistantErr := assistantv1.NewAssistantV1(options)

  if assistantErr != nil {
    panic(assistantErr)
  }

  assistant.SetServiceURL("{url}")
}

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {url}, see Endpoint URLs.

let authenticator = WatsonCloudPakForDataAuthenticator(username: "{username}", password: "{password}", url: "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize")
let assistant = Assistant(version: "{version}", authenticator: authenticator)
assistant.serviceURL = "{url}"

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {cpd_cluster_host}, {port}, {release}, and {instance_id}, see Endpoint URLs.

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize",
    username: "{username}",
    password: "{password}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

Cloud Pak for Data. SDK managing the token.

Replace {username} and {password} with your Cloud Pak for Data credentials. Replace {version} with the service version date. For {cpd_cluster_host}, {port}, {release}, and {instance_id}, see Endpoint URLs.

var authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize",
    username: "{username}",
    password: "{password}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

Access between services

Your application might use more than one Watson service. You can grant access between services and you can grant access to more than one service for your applications.

For IBM Cloud services, the method to grant access between Watson services varies depending on the type of API key. For more information, see IAM access.

  • To grant access between IBM Cloud services, create an authorization between the services. For more information, see Granting access between services.
  • To grant access to your services by applications without using user credentials, create a service ID, add an API key, and assign access policies. For more information, see Creating and working with service IDs.

When you give a user ID access to multiple services, use an endpoint URL that includes the service instance ID (for example, https://api.us-south.assistant.watson.cloud.ibm.com/instances/6bbda3b3-d572-45e1-8c54-22d6ed9e52c2). You can find the instance ID in two places:

  • By clicking the service instance row in the Resource list. The instance ID is the GUID in the details pane.

  • By clicking the name of the service instance in the list and looking at the credentials URL.

    If you don't see the instance ID in the URL, the credentials predate service IDs. Add new credentials from the Service credentials page and use those credentials.

Because the Cloud Pak for Data bearer token is associated with a username, you can use the token for all CPD Watson services that are associated with the username.

Versioning

API requests require a version parameter that takes a date in the format version=YYYY-MM-DD. When the API is updated with any breaking changes, the service introduces a new version date for the API.

Send the version parameter with every API request. The service uses the API version for the date you specify, or the most recent version before that date. Don't default to the current date. Instead, specify a date that matches a version that is compatible with your app, and don't change it until your app is ready for a later version.

Specify the version to use on API requests with the version parameter when you create the service instance. The service uses the API version for the date you specify, or the most recent version before that date. Don't default to the current date. Instead, specify a date that matches a version that is compatible with your app, and don't change it until your app is ready for a later version.

This documentation describes the current version of watsonx Assistant, 2021-11-27. In some cases, differences in earlier versions are noted in the descriptions of parameters and response models.

Error handling

watsonx Assistant uses standard HTTP response codes to indicate whether a method completed successfully. HTTP response codes in the 2xx range indicate success. A response in the 4xx range is some sort of failure, and a response in the 5xx range usually indicates an internal system error that cannot be resolved by the user. Response codes are listed with the method.

ErrorResponse

Name Description
code
integer
The HTTP response code.
error
string
General description of an error.
errors
ErrorDetail[]
Collection of specific constraint violations associated with the error.

ErrorDetail

Name Description
message
string
Description of a specific constraint violation.
path
string
The location of the constraint violation.

The Java SDK generates an exception for any unsuccessful method invocation. All methods that accept an argument can also throw an IllegalArgumentException.

Exception Description
IllegalArgumentException An invalid argument was passed to the method.

When the Java SDK receives an error response from the watsonx Assistant service, it generates an exception from the com.ibm.watson.developer_cloud.service.exception package. All service exceptions contain the following fields.

Field Description
statusCode The HTTP response code that is returned.
message A message that describes the error.

When the Node SDK receives an error response from the watsonx Assistant service, it creates an Error object with information that describes the error that occurred. This error object is passed as the first parameter to the callback function for the method. The contents of the error object are as shown in the following table.

Error

Field Description
code The HTTP response code that is returned.
message A message that describes the error.

The Python SDK generates an exception for any unsuccessful method invocation. When the Python SDK receives an error response from the watsonx Assistant service, it generates an ApiException with the following fields.

Field Description
code The HTTP response code that is returned.
message A message that describes the error.
info A dictionary of additional information about the error.

When the Ruby SDK receives an error response from the watsonx Assistant service, it generates an ApiException with the following fields.

Field Description
code The HTTP response code that is returned.
message A message that describes the error.
info A dictionary of additional information about the error.

The Go SDK generates an error for any unsuccessful service instantiation and method invocation. You can check for the error immediately. The contents of the error object are as shown in the following table.

Error

Field Description
code The HTTP response code that is returned.
message A message that describes the error.

The Swift SDK returns a WatsonError in the completionHandler any unsuccessful method invocation. This error type is an enum that conforms to LocalizedError and contains an errorDescription property that returns an error message. Some of the WatsonError cases contain associated values that reveal more information about the error.

Field Description
errorDescription A message that describes the error.

When the .NET Standard SDK receives an error response from the watsonx Assistant service, it generates a ServiceResponseException with the following fields.

Field Description
Message A message that describes the error.
CodeDescription The HTTP response code that is returned.

When the Unity SDK receives an error response from the watsonx Assistant service, it generates an IBMError with the following fields.

Field Description
Url The URL that generated the error.
StatusCode The HTTP response code returned.
ErrorMessage A message that describes the error.
Response The contents of the response from the server.
ResponseHeaders A dictionary of headers returned by the request.

Example error handling

try {
  // Invoke a method
} catch (NotFoundException e) {
  // Handle Not Found (404) exception
} catch (RequestTooLargeException e) {
  // Handle Request Too Large (413) exception
} catch (ServiceResponseException e) {
  // Base class for all exceptions caused by error responses from the service
  System.out.println("Service returned status code "
    + e.getStatusCode() + ": " + e.getMessage());
}

Example error handling

assistant.method(params)
  .catch(err => {
    console.log('error:', err);
  });

Example error handling

from ibm_watson import ApiException
try:
    # Invoke a method
except ApiException as ex:
    print "Method failed with status code " + str(ex.code) + ": " + ex.message

Example error handling

require "ibm_watson"
begin
  # Invoke a method
rescue IBMWatson::ApiException => ex
  print "Method failed with status code #{ex.code}: #{ex.error}"
end

Example error handling

import "github.com/watson-developer-cloud/go-sdk/assistantv1"

// Instantiate a service
assistant, assistantErr := assistantv1.NewAssistantV1(options)

// Check for errors
if assistantErr != nil {
  panic(assistantErr)
}

// Call a method
result, _, responseErr := assistant.MethodName(&methodOptions)

// Check for errors
if responseErr != nil {
  panic(responseErr)
}

Example error handling

assistant.method() {
  response, error in

  if let error = error {
    switch error {
    case let .http(statusCode, message, metadata):
      switch statusCode {
      case .some(404):
        // Handle Not Found (404) exception
        print("Not found")
      case .some(413):
        // Handle Request Too Large (413) exception
        print("Payload too large")
      default:
        if let statusCode = statusCode {
          print("Error - code: \(statusCode), \(message ?? "")")
        }
      }
    default:
      print(error.localizedDescription)
    }
    return
  }

  guard let result = response?.result else {
    print(error?.localizedDescription ?? "unknown error")
    return
  }

  print(result)
}

Example error handling

try
{
    // Invoke a method
}
catch(ServiceResponseException e)
{
    Console.WriteLine("Error: " + e.Message);
}
catch (Exception e)
{
    Console.WriteLine("Error: " + e.Message);
}

Example error handling

// Invoke a method
assistant.MethodName(Callback, Parameters);

// Check for errors
private void Callback(DetailedResponse<ExampleResponse> response, IBMError error)
{
    if (error == null)
    {
        Log.Debug("ExampleCallback", "Response received: {0}", response.Response);
    }
    else
    {
        Log.Debug("ExampleCallback", "Error received: {0}, {1}, {3}", error.StatusCode, error.ErrorMessage, error.Response);
    }
}

Data handling

Additional headers

Some Watson services accept special parameters in headers that are passed with the request.

You can pass request header parameters in all requests or in a single request to the service.

To pass a request header, use the --header (-H) option with a curl request.

To pass header parameters with every request, use the setDefaultHeaders method of the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, use the addHeader method as a modifier on the request before you execute it.

To pass header parameters with every request, specify the headers parameter when you create the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, use the headers method as a modifier on the request before you execute it.

To pass header parameters with every request, specify the set_default_headers method of the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, include headers as a dict in the request.

To pass header parameters with every request, specify the add_default_headers method of the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, specify the headers method as a chainable method in the request.

To pass header parameters with every request, specify the SetDefaultHeaders method of the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, specify the Headers as a map in the request.

To pass header parameters with every request, add them to the defaultHeaders property of the service object. See Data collection for an example use of this method.

To pass header parameters in a single request, pass the headers parameter to the request method.

To pass header parameters in a single request, use the WithHeader() method as a modifier on the request before you execute it. See Data collection for an example use of this method.

To pass header parameters in a single request, use the WithHeader() method as a modifier on the request before you execute it.

Example header parameter in a request

curl -X {request_method} -H "Request-Header: {header_value}" "{url}/v1/{method}"

Example header parameter in a request

ReturnType returnValue = assistant.methodName(parameters)
  .addHeader("Custom-Header", "{header_value}")
  .execute();

Example header parameter in a request

const parameters = {
  {parameters}
};

assistant.methodName(
  parameters,
  headers: {
    'Custom-Header': '{header_value}'
  })
   .then(result => {
    console.log(response);
  })
  .catch(err => {
    console.log('error:', err);
  });

Example header parameter in a request

response = assistant.methodName(
    parameters,
    headers = {
        'Custom-Header': '{header_value}'
    })

Example header parameter in a request

response = assistant.headers(
  "Custom-Header" => "{header_value}"
).methodName(parameters)

Example header parameter in a request

result, _, responseErr := assistant.MethodName(
  &methodOptions{
    Headers: map[string]string{
      "Accept": "application/json",
    },
  },
)

Example header parameter in a request

let customHeader: [String: String] = ["Custom-Header": "{header_value}"]
assistant.methodName(parameters, headers: customHeader) {
  response, error in
}

Example header parameter in a request for a service managed on IBM Cloud

IamAuthenticator authenticator = new IamAuthenticator(
    apikey: "{apikey}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.WithHeader("Custom-Header", "header_value");

Example header parameter in a request for an installed service

CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://{cpd_cluster_host}{:port}/assistant/{release}/instances/{instance_id}/api");

assistant.WithHeader("Custom-Header", "header_value");

Example header parameter in a request for a service managed on IBM Cloud

var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.WithHeader("Custom-Header", "header_value");

Example header parameter in a request for an installed service

var authenticator = new CloudPakForDataAuthenticator(
    url: "https://{cpd_cluster_host}{:port}",
    username: "{username}",
    password: "{password}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("https://{cpd_cluster_host}{:port}/assistant/{release}/instances/{instance_id}/api");

assistant.WithHeader("Custom-Header", "header_value");

Response details

The watsonx Assistant service might return information to the application in response headers.

To access all response headers that the service returns, include the --include (-i) option with a curl request. To see detailed response data for the request, including request headers, response headers, and extra debugging information, include the --verbose (-v) option with the request.

Example request to access response headers

curl -X {request_method} {authentication_method} --include "{url}/v1/{method}"

To access information in the response headers, use one of the request methods that returns details with the response: executeWithDetails(), enqueueWithDetails(), or rxWithDetails(). These methods return a Response<T> object, where T is the expected response model. Use the getResult() method to access the response object for the method, and use the getHeaders() method to access information in response headers.

Example request to access response headers

Response<ReturnType> response = assistant.methodName(parameters)
  .executeWithDetails();
// Access response from methodName
ReturnType returnValue = response.getResult();
// Access information in response headers
Headers responseHeaders = response.getHeaders();

All response data is available in the Response<T> object that is returned by each method. To access information in the response object, use the following properties.

Property Description
result Returns the response for the service-specific method.
headers Returns the response header information.
status Returns the HTTP status code.

Example request to access response headers

assistant.methodName(parameters)
  .then(response => {
    console.log(response.headers);
  })
  .catch(err => {
    console.log('error:', err);
  });

The return value from all service methods is a DetailedResponse object. To access information in the result object or response headers, use the following methods.

DetailedResponse

Method Description
get_result() Returns the response for the service-specific method.
get_headers() Returns the response header information.
get_status_code() Returns the HTTP status code.

Example request to access response headers

assistant.set_detailed_response(True)
response = assistant.methodName(parameters)
# Access response from methodName
print(json.dumps(response.get_result(), indent=2))
# Access information in response headers
print(response.get_headers())
# Access HTTP response status
print(response.get_status_code())

The return value from all service methods is a DetailedResponse object. To access information in the response object, use the following properties.

DetailedResponse

Property Description
result Returns the response for the service-specific method.
headers Returns the response header information.
status Returns the HTTP status code.

Example request to access response headers

response = assistant.methodName(parameters)
# Access response from methodName
print response.result
# Access information in response headers
print response.headers
# Access HTTP response status
print response.status

The return value from all service methods is a DetailedResponse object. To access information in the response object or response headers, use the following methods.

DetailedResponse

Method Description
GetResult() Returns the response for the service-specific method.
GetHeaders() Returns the response header information.
GetStatusCode() Returns the HTTP status code.

Example request to access response headers

import (
  "github.com/IBM/go-sdk-core/core"
  "github.com/watson-developer-cloud/go-sdk/assistantv1"
)
result, response, responseErr := assistant.MethodName(
  &methodOptions{})
// Access result
core.PrettyPrint(response.GetResult(), "Result ")

// Access response headers
core.PrettyPrint(response.GetHeaders(), "Headers ")

// Access status code
core.PrettyPrint(response.GetStatusCode(), "Status Code ")

All response data is available in the WatsonResponse<T> object that is returned in each method's completionHandler.

Example request to access response headers

assistant.methodName(parameters) {
  response, error in

  guard let result = response?.result else {
    print(error?.localizedDescription ?? "unknown error")
    return
  }
  print(result) // The data returned by the service
  print(response?.statusCode)
  print(response?.headers)
}

The response contains fields for response headers, response JSON, and the status code.

DetailedResponse

Property Description
Result Returns the result for the service-specific method.
Response Returns the raw JSON response for the service-specific method.
Headers Returns the response header information.
StatusCode Returns the HTTP status code.

Example request to access response headers

var results = assistant.MethodName(parameters);

var result = results.Result;            //  The result object
var responseHeaders = results.Headers;  //  The response headers
var responseJson = results.Response;    //  The raw response JSON
var statusCode = results.StatusCode;    //  The response status code

The response contains fields for response headers, response JSON, and the status code.

DetailedResponse

Property Description
Result Returns the result for the service-specific method.
Response Returns the raw JSON response for the service-specific method.
Headers Returns the response header information.
StatusCode Returns the HTTP status code.

Example request to access response headers

private void Example()
{
    assistant.MethodName(Callback, Parameters);
}

private void Callback(DetailedResponse<ResponseType> response, IBMError error)
{
    var result = response.Result;                 //  The result object
    var responseHeaders = response.Headers;       //  The response headers
    var responseJson = reresponsesults.Response;  //  The raw response JSON
    var statusCode = response.StatusCode;         //  The response status code
}

Data labels (IBM Cloud)

You can remove data associated with a specific customer if you label the data with a customer ID when you send a request to the service.

  • Use the X-Watson-Metadata header to associate a customer ID with the data. By adding a customer ID to a request, you indicate that it contains data that belongs to that customer.

    Specify a random or generic string for the customer ID. Do not include personal data, such as an email address. Pass the string customer_id={id} as the argument of the header.

    Labeling data is used only by methods that accept customer data.

  • Use the Delete labeled data method to remove data that is associated with a customer ID.

Use this process of labeling and deleting data only when you want to remove the data that is associated with a single customer, not when you want to remove data for multiple customers. For more information about watsonx Assistant and labeling data, see Information security.

For more information about how to pass headers, see Additional headers.

Data collection (IBM Cloud)

By default, watsonx Assistant service instances managed on IBM Cloud that are not part of Enterprise plans collect data about API requests and their results. This data is collected only to improve the services for future users. The collected data is not shared or made public. Data is not collected for services that are part of Enterprise plans.

To prevent IBM usage of your data for an API request, set one of the following options.

  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You must set the header on each message request that you do not want IBM to access for general service improvements.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by using the setDefaultHeaders method of the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by using the headers parameter when you create the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by using the set_default_headers method of the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by using the add_default_headers method of the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by using the SetDefaultHeaders method of the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing user input and Watson responses, set the X-Watson-Learning-Opt-Out header parameter to true when you send a message. You can set the header by adding it to the defaultHeaders property of the service object you use to send message requests that you do not want to be accessed.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.)
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the setDefaultHeaders method of the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the headers parameter when you create the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the set_default_headers method of the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the add_default_headers method of the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the SetDefaultHeaders method of the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by adding it to the defaultHeaders property of the service object you use to create or update the workspace.
  • To prevent IBM from accessing training data such as intents and entities, set the X-Watson-Learning-Opt-Out header parameter to true when you create or update a workspace. This option marks the workspace as opted out, and no training data for that workspace will be used. (This option does not apply to messages, which must be opted out individually.) You can set the header by using the WithHeader() method of the service object you use to create or update the workspace.
  • You can also mark a workspace as opted out by specifying a value of true for the learning_opt_out property in the JSON data that is used to create or update a workspace. This option applies only to training data, not to messages. (The HTTP header always overrides the JSON property, if both are specified.)

Example request with a service managed on IBM Cloud

curl -u "apikey:{apikey}" -H "X-Watson-Learning-Opt-Out: true" "{url}/{method}"

Example request with a service managed on IBM Cloud

Map<String, String> headers = new HashMap<String, String>();
headers.put("X-Watson-Learning-Opt-Out", "true");

assistant.setDefaultHeaders(headers);

Example request with a service managed on IBM Cloud

const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '{version}',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  serviceUrl: '{url}',
  headers: {
    'X-Watson-Learning-Opt-Out': 'true'
  }
});

Example request with a service managed on IBM Cloud

assistant.set_default_headers({'x-watson-learning-opt-out': "true"})

Example request with a service managed on IBM Cloud

assistant.add_default_headers(headers: {"x-watson-learning-opt-out" => "true"})

Example request with a service managed on IBM Cloud

import "net/http"

headers := http.Header{}
headers.Add("x-watson-learning-opt-out", "true")
assistant.SetDefaultHeaders(headers)

Example request with a service managed on IBM Cloud

assistant.defaultHeaders["X-Watson-Learning-Opt-Out"] = "true"

Example request with a service managed on IBM Cloud

IamAuthenticator authenticator = new IamAuthenticator(
    apikey: "{apikey}"
    );

AssistantService assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.WithHeader("X-Watson-Learning-Opt-Out", "true");

Example request with a service managed on IBM Cloud

var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);

while (!authenticator.CanAuthenticate())
    yield return null;

var assistant = new AssistantService("{version}", authenticator);
assistant.SetServiceUrl("{url}");

assistant.WithHeader("X-Watson-Learning-Opt-Out", "true");

Synchronous and asynchronous requests

The Java SDK supports both synchronous (blocking) and asynchronous (non-blocking) execution of service methods. All service methods implement the ServiceCall interface.

  • To call a method synchronously, use the execute method of the ServiceCall interface. You can call the execute method directly from an instance of the service.
  • To call a method asynchronously, use the enqueue method of the ServiceCall interface to receive a callback when the response arrives. The ServiceCallback interface of the method's argument provides onResponse and onFailure methods that you override to handle the callback.

The Ruby SDK supports both synchronous (blocking) and asynchronous (non-blocking) execution of service methods. All service methods implement the Concurrent::Async module. When you use the synchronous or asynchronous methods, an IVar object is returned. You access the DetailedResponse object by calling ivar_object.value.

For more information about the Ivar object, see the IVar class docs.

  • To call a method synchronously, either call the method directly or use the .await chainable method of the Concurrent::Async module.

    Calling a method directly (without .await) returns a DetailedResponse object.

  • To call a method asynchronously, use the .async chainable method of the Concurrent::Async module.

You can call the .await and .async methods directly from an instance of the service.

Example synchronous request

ReturnType returnValue = assistant.method(parameters).execute();

Example asynchronous request

assistant.method(parameters).enqueue(new ServiceCallback<ReturnType>() {
  @Override public void onResponse(ReturnType response) {
    . . .
  }
  @Override public void onFailure(Exception e) {
    . . .
  }
});

Example synchronous request

response = assistant.method_name(parameters)

or

response = assistant.await.method_name(parameters)

Example asynchronous request

response = assistant.async.method_name(parameters)

Pagination

Some API requests might return many results. To avoid performance issues, these results are returned one page at a time, with a limited number of results on each page. The starting point for each page of results is identified by a token called a cursor.

The default page size is 100 objects. To use a different page size, use the page_limit query parameterpage_limit parameterpageLimit parameterPageLimit parameter.

To change the attribute by which results are sorted, use the sort query parametersort parameterSort parameter. If you include multiple sortSort parameters on the same request, the results are sorted first by the first sorting attribute, then the second, and so on.

The supported sorting attributes vary by endpoint. For more information, see the API Reference information for each method.

For any request that uses pagination, the response includes a pagination object that specifies pagination information. This object includes two URLs that you can use to make subsequent requests:

  • refresh_url: The URL for requesting the same page of results again.
  • next_url: The URL for requesting the next page of results. The next_url property is omitted if no more results exist.

Each URL specifies the appropriate cursor parameter and retains the same page_limit and sort parameters that were used for the initial request.

For any request that uses pagination, the response includes a paginationPagination object that specifies pagination information. This object includes two cursor tokens, refreshCursorrefresh_cursorRefreshCursor and nextCursornext_cursorNextCursor, that you can specify on subsequent requests.

To request a specific page of results, specify the appropriate value by using the cursorCursor parameter. When you request subsequent pages, do not change the values of the sort and pageLimitsort and page_limitSort and PageLimit parameters (if any).

Pagination

Name Description
refreshCursorrefresh_cursorRefreshCursor
string
The cursor value for the current page of results.
nextCursornext_cursorNextCursor
string
The cursor value for the next page of results, if any.
refreshUrlrefreshURLrefresh_urlRefreshUrl
string
The URL that returns the same page of results.
nextUrlnextURLnext_urlNextUrl
string
The URL that returns the next page of results, if any.
totalTotal
integer
Reserved for future use.
matchedMatched
integer
Reserved for future use.

Using cursor parameter to request a specific page of results:

curl -u "apikey:{apikey}" "{url}/v1/workspaces/{workspace_id}/intents/hello/examples?cursor=eyJ0ZXh0Ijp7Im9yZGVyIjoiYXNjIiwiaW5kZXgiOjAsInZhbHVlIjoiSGV5In0sInBfcyI6NH0=&version=2019-02-28"

Example that retrieves and displays results one page at a time:

IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
Assistant assistant = new Assistant("2019-02-28", authenticator);
assistant.setServiceUrl("{url}");
String workspaceId = "{workspace_id}";
String intent = "hello";
String cursor = "";

do {
  ListExamplesOptions options = new ListExamplesOptions.Builder(workspaceId, intent)
    .pageLimit(3)
    .cursor(cursor)
    .build();
  ExampleCollection response = assistant.listExamples(options).execute().getResult();
  List<Example> examples = response.getExamples();
  cursor = response.getPagination().getNextCursor();
  for (Example example : examples) {
    System.out.println(example.text());
  }
}
while(cursor != null);

Example that retrieves and displays results one page at a time:

const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV1({
  version: '2019-02-28',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  serviceUrl: '{url}',
});
const cursor = null;

getNextPage(cursor);

function getNextPage(cursor) {
  const params = {
    workspaceId: '{workspace_id}',
    intent: 'hello',
    cursor,
    pageLimit: 3,
  };
  assistant.listExamples(params)
    .then(res => {
      for (const example in res.result.examples) {
        console.log(res.result.examples[example]['text']);
      }
      if(res.result.pagination.next_cursor) {
        getNextPage(res.result.pagination.next_cursor)
      }
    })
    .catch(err => {
      console.log(err)
    });
}

Example that retrieves and displays results one page at a time:

from ibm_watson import AssistantV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

authenticator = IAMAuthenticator('{apikey}')
assistant = AssistantV1(
    version='2019-02-28',
    authenticator = authenticator
)
assistant.set_service_url('{url}')
cursor = None

while True:
    response=assistant.list_examples(
        workspace_id='{workspace_id}',
        intent='hello',
        cursor=cursor,
        page_limit=3
    ).get_result()

    for example in response.get('examples'):
        print(example.get('text'))

    cursor=response.get('pagination').get('next_cursor')
    if not cursor:
        break

Example that retrieves and displays results one page at a time:

require "ibm_watson/authenticators"
require "ibm_watson/assistant_v1"
include IBMWatson

authenticator = Authenticators::IamAuthenticator.new(
  apikey: "{apikey}"
)
assistant = AssistantV1.new(
  version: "2019-02-28",
  authenticator: authenticator
)
assistant.service_url = "{url}"
cursor = nil

loop do
  response = assistant.list_examples(
    workspace_id: "{workspace_id}",
    intent: "hello",
    page_limit: 3,
    cursor: cursor
  )
  response.result["examples"].each { |example|
    puts example["text"]
  }
  cursor = response.result["pagination"]["next_cursor"]
  if cursor.nil?
    break
  end
end

Example that retrieves and displays results one page at a time:

package main

import (
  "fmt"
  "github.com/IBM/go-sdk-core/core"
  "github.com/watson-developer-cloud/go-sdk/assistantv1"
)

func main() {
  authenticator := &core.IamAuthenticator{
    ApiKey: "{apikey}",
  }
  options := &assistantv1.AssistantV1Options{
    Version: "2019-02-28",
    Authenticator: authenticator,
  }
  assistant, assistantErr := assistantv1.NewAssistantV1(options)
  if assistantErr != nil {
    panic(assistantErr)
  }

  assistant.SetServiceURL("{url}")
  cursor := core.StringPtr("")
  pageLimit := int64(3)

  for {
    result, _, responseErr := assistant.ListExamples(
      &assistantv1.ListExamplesOptions{
        WorkspaceID: core.StringPtr("{workspace_id}"),
        Intent: core.StringPtr("hello"),
        PageLimit: &pageLimit,
        Cursor: cursor,
     },
    )
    if responseErr != nil {
      panic(responseErr)
    }
    for _, example := range result.Examples {
      fmt.Println(*example.Text)
    }
    cursor = result.Pagination.NextCursor
    if cursor == nil {
      break
    }
  }
}

Example that retrieves and displays results one page at a time:

import Foundation
import AssistantV1
let authenticator = WatsonIAMAuthenticator.init(apiKey: "{apikey}")
assistant = Assistant(version: "2019-02-28", authenticator: authenticator)
assistant.serviceURL = "{url}"
func getNextPage(cursor: String?) {
    assistant.listExamples(workspaceID: "{workspace_id}", intent: "hello", pageLimit: 2, cursor: cursor) {
        response, error in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        guard let results = response?.result else {
            print("No results found")
            return
        }
        for example in results.examples {
            print(example)
        }
        if let cursor = examples.pagination.nextCursor {
            getNextPage(cursor?)
        }
    }
}
getNextPage(cursor: nil)

Example that retrieves and displays results one page at a time:

public class ListExamplesWithPagination
{
    public ListExamplesWithPagination()
    {
        IamAuthenticator authenticator = new IamAuthenticator(apikey: "{apikey}");
        AssistantService service = new AssistantService("2019-02-28", authenticator);
        service.SetServiceUrl("{url}");
        string workspaceId = "{workspace_id}";
        string intent = "hello";
        long? pageLimit = 3;
        string cursor = "";
        ListExamples(service, workspaceId, intent, pageLimit, cursor);
    }
    public void ListExamples(AssistantService service, string workspaceId, string intent, long? pageLimit, string cursor)
    {
        var result = service.ListExamples(
            workspaceId: workspaceId,
            intent: intent,
            pageLimit: 3,
            cursor: cursor
        );
        foreach (Example example in result.Result.Examples)
        {
            Console.WriteLine(example.Text);
        }
        var nextCursor = result.Result.Pagination.NextCursor;
        if (!string.IsNullOrEmpty(nextCursor))
        {
            ListExamples(service, workspaceId, intent, pageLimit, nextCursor);
        }
    }
}

Example that retrieves and displays results one page at a time:

public void ListExamples(AssistantService service, string workspaceId, string intent, long? pageLimit, string cursor)
{
    ExampleCollection listExamplesResponse = null;
    service.ListExamples(
        callback: (DetailedResponse<ExampleCollection> response, IBMError error) =>
        {
            Log.Debug("AssistantServiceV1", "ListExamples result: {0}", response.Response);
            listExamplesResponse = response.Result;
            foreach (Example example in listExamplesResponse.Examples)
            {
                Log.Debug("AssistantServiceV1", "Example text: {0}", example.Text);
            }
            var nextCursor = listExamplesResponse.Pagination.NextCursor;
            if (!string.IsNullOrEmpty(nextCursor))
            {
                ListExamples(service, workspaceId, intent, pageLimit, nextCursor);
            }
            else
            {
                paginationDone = true;
            }
        },
        workspaceId: workspaceId,
        intent: intent,
        pageLimit: 3,
        cursor: cursor
    );
}
var authenticator = new IamAuthenticator(
    apikey: "{apikey}"
);
while (!authenticator.CanAuthenticate())
    yield return null;
var assistant = new AssistantService("2019-02-28", authenticator);
assistant.SetServiceUrl("{url}");
bool isPaginationDone = false;
string workspaceId = "{workspace_id}";
string intent = "hello";
long? pageLimit = 3;
string cursor = "";
ListExamples(service, workspaceId, intent, pageLimit, cursor);
while (isPaginationDone == false)
    yield return null;

Rate limiting

Rate limits for API requests are enforced on a per-service-instance basis. If the number of requests for a particular method and endpoint reaches the request limit within the specified time window, no further requests are accepted until the timer expires. After the timer expires, a new time window begins with the next accepted request.

The response to each HTTP request includes headers you can use to determine whether you are close to the rate limit:

  • X-RateLimit-Reset: the time the current timer expires (in UNIX epoch time)
  • X-RateLimit-Remaining: the number of requests that remain in the current time window
  • X-RateLimit-Limit: the total number of requests allowed within the time window

An HTTP status code of 429 indicates that the rate limit has been exceeded.

The number of allowed requests, and the length of the time window, vary by method and endpoint. The reference information for each endpoint specifies the rate limit that applies.

Methods

Get response to user input

Send user input to a workspace and receive a response.

Important: This method has been superseded by the new v2 runtime API. The v2 API offers significant advantages, including ease of deployment, automatic state management, versioning, and search capabilities. For more information, see the documentation.

Send user input to a workspace and receive a response.

Important: This method has been superseded by the new v2 runtime API. The v2 API offers significant advantages, including ease of deployment, automatic state management, versioning, and search capabilities. For more information, see the documentation.

Send user input to a workspace and receive a response.

Important: This method has been superseded by the new v2 runtime API. The v2 API offers significant advantages, including ease of deployment, automatic state management, versioning, and search capabilities. For more information, see the documentation.

Send user input to a workspace and receive a response.

Important: This method has been superseded by the new v2 runtime API. The v2 API offers significant advantages, including ease of deployment, automatic state management, versioning, and search capabilities. For more information, see the documentation.

POST /v1/workspaces/{workspace_id}/message
ServiceCall<MessageResponse> message(MessageOptions messageOptions)
message(params)
message(
        self,
        workspace_id: str,
        *,
        input: Optional['MessageInput'] = None,
        intents: Optional[List['RuntimeIntent']] = None,
        entities: Optional[List['RuntimeEntity']] = None,
        alternate_intents: Optional[bool] = None,
        context: Optional['Context'] = None,
        output: Optional['OutputData'] = None,
        user_id: Optional[str] = None,
        nodes_visited_details: Optional[bool] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

There is no rate limit for this operation.

Request

Use the MessageOptions.Builder to create a MessageOptions object that contains the parameter values for the message method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • Whether to include additional diagnostic information about the dialog nodes that were visited during processing of the message.

    Default: false

The message to be sent. This includes the user's input, along with optional intents, entities, and context from the last response.

The message options.

parameters

  • Unique identifier of the workspace.

  • An input object that includes the input text.

  • Intents to use when evaluating the user input. Include intents from the previous response to continue using those intents rather than trying to recognize intents in the new input.

  • Entities to use when evaluating the message. Include entities from the previous response to continue using those entities rather than detecting entities in the new input.

    Examples:
    {
      "entity": "appliance",
      "location": [
        12,
        18
      ],
      "value": "light",
      "metadata": {}
    }
  • Whether to return more than one intent. A value of true indicates that all matching intents are returned.

    Default: false

  • State information for the conversation. To maintain state, include the context from the previous response.

  • An output object that includes the response to the user, the dialog nodes that were triggered, and messages from the log.

  • A string value that identifies the user who is interacting with the workspace. The client must provide a unique identifier for each individual end user who accesses the application. For user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or tab characters. If no value is specified in the input, user_id is automatically set to the value of context.conversation_id.

    Note: This property is the same as the user_id property in the context metadata. If user_id is specified in both locations in a message request, the value specified at the root is used.

    Possible values: 1 ≤ length ≤ 256

  • Whether to include additional diagnostic information about the dialog nodes that were visited during processing of the message.

    Default: false

parameters

  • Unique identifier of the workspace.

  • An input object that includes the input text.

  • Intents to use when evaluating the user input. Include intents from the previous response to continue using those intents rather than trying to recognize intents in the new input.

  • Entities to use when evaluating the message. Include entities from the previous response to continue using those entities rather than detecting entities in the new input.

    Examples:
    {
      "entity": "appliance",
      "location": [
        12,
        18
      ],
      "value": "light",
      "metadata": {}
    }
  • Whether to return more than one intent. A value of true indicates that all matching intents are returned.

    Default: false

  • State information for the conversation. To maintain state, include the context from the previous response.

  • An output object that includes the response to the user, the dialog nodes that were triggered, and messages from the log.

  • A string value that identifies the user who is interacting with the workspace. The client must provide a unique identifier for each individual end user who accesses the application. For user-based plans, this user ID is used to identify unique users for billing purposes. This string cannot contain carriage return, newline, or tab characters. If no value is specified in the input, user_id is automatically set to the value of context.conversation_id.

    Note: This property is the same as the user_id property in the context metadata. If user_id is specified in both locations in a message request, the value specified at the root is used.

    Possible values: 1 ≤ length ≤ 256

  • Whether to include additional diagnostic information about the dialog nodes that were visited during processing of the message.

    Default: false

  • curl -X POST -u "apikey:{apikey}" --header "Content-Type:application/json" --data "{\"input\": {\"text\": \"Hello\"}}" "{url}/v1/workspaces/{workspace_id}/message?version=2021-06-14"
  • curl -X POST -H "Authorization: Bearer {token}" --header "Content-Type:application/json" --data "{\"input\": {\"text\": \"Hello\"}}" "{url}/v1/workspaces/{workspace_id}/message?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    MessageInput input = new MessageInput();
    input.setText("Hello");
    
    MessageOptions options = new MessageOptions.Builder(workspaceId)
      .input(input)
      .build();
    
    MessageResponse response = assistant.message(options).execute().getResult();
    
    System.out.println(response);
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    MessageInput input = new MessageInput();
    input.setText("Hello");
    
    MessageOptions options = new MessageOptions.Builder(workspaceId)
      .input(input)
      .build();
    
    MessageResponse response = assistant.message(options).execute().getResult();
    
    System.out.println(response);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    assistant.message({
      workspaceId: '{workspace_id}',
      input: {'text': 'Hello'}
      })
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    assistant.message({
      workspaceId: '{workspace_id}',
      input: {'text': 'Hello'}
      })
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response = assistant.message(
        workspace_id='{workspace_id}',
        input={
            'text': 'Hello'
        }
    ).get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response = assistant.message(
        workspace_id='{workspace_id}',
        input={
            'text': 'Hello'
        }
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

The response sent by the workspace, including the output text, detected intents and entities, and context.

The response sent by the workspace, including the output text, detected intents and entities, and context.

The response sent by the workspace, including the output text, detected intents and entities, and context.

The response sent by the workspace, including the output text, detected intents and entities, and context.

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "intents": [
        {
          "intent": "hello",
          "confidence": 0.9755029201507568
        }
      ],
      "entities": [],
      "input": {
        "text": "Hello"
      },
      "output": {
        "generic": [
          {
            "response_type": "text",
            "text": "Hello! What can I do for you?"
          }
        ],
        "text": [
          "Hello! What can I do for you?"
        ],
        "nodes_visited": [
          "greeting"
        ],
        "log_messages": []
      },
      "context": {
        "conversation_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0",
        "system": {
          "dialog_stack": [
            {
              "dialog_node": "root"
            }
          ],
          "dialog_turn_counter": 1,
          "dialog_request_counter": 1,
          "_node_output_map": {
            "greeting": {
              "0": [
                0,
                0
              ]
            }
          },
          "branch_exited": true,
          "branch_exited_reason": "completed"
        },
        "metadata": {
          "user_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0"
        }
      },
      "user_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0"
    }
  • {
      "intents": [
        {
          "intent": "hello",
          "confidence": 0.9755029201507568
        }
      ],
      "entities": [],
      "input": {
        "text": "Hello"
      },
      "output": {
        "generic": [
          {
            "response_type": "text",
            "text": "Hello! What can I do for you?"
          }
        ],
        "text": [
          "Hello! What can I do for you?"
        ],
        "nodes_visited": [
          "greeting"
        ],
        "log_messages": []
      },
      "context": {
        "conversation_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0",
        "system": {
          "dialog_stack": [
            {
              "dialog_node": "root"
            }
          ],
          "dialog_turn_counter": 1,
          "dialog_request_counter": 1,
          "_node_output_map": {
            "greeting": {
              "0": [
                0,
                0
              ]
            }
          },
          "branch_exited": true,
          "branch_exited_reason": "completed"
        },
        "metadata": {
          "user_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0"
        }
      },
      "user_id": "a96ec62f-773c-4e84-8be9-f9dbca9f83d0"
    }

Identify intents and entities in multiple user utterances

Send multiple user inputs to a workspace in a single request and receive information about the intents and entities recognized in each input. This method is useful for testing and comparing the performance of different workspaces.

This method is available only with Enterprise with Data Isolation plans.

Send multiple user inputs to a workspace in a single request and receive information about the intents and entities recognized in each input. This method is useful for testing and comparing the performance of different workspaces.

This method is available only with Enterprise with Data Isolation plans.

Send multiple user inputs to a workspace in a single request and receive information about the intents and entities recognized in each input. This method is useful for testing and comparing the performance of different workspaces.

This method is available only with Enterprise with Data Isolation plans.

Send multiple user inputs to a workspace in a single request and receive information about the intents and entities recognized in each input. This method is useful for testing and comparing the performance of different workspaces.

This method is available only with Enterprise with Data Isolation plans.

POST /v1/workspaces/{workspace_id}/bulk_classify
ServiceCall<BulkClassifyResponse> bulkClassify(BulkClassifyOptions bulkClassifyOptions)
bulkClassify(params)
bulk_classify(
        self,
        workspace_id: str,
        *,
        input: Optional[List['BulkClassifyUtterance']] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 5 requests per minute.

Request

Use the BulkClassifyOptions.Builder to create a BulkClassifyOptions object that contains the parameter values for the bulkClassify method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

An input object that includes the text to classify.

The bulkClassify options.

parameters

  • Unique identifier of the workspace.

  • An array of input utterances to classify.

    Possible values: 1 ≤ number of items ≤ 50

parameters

  • Unique identifier of the workspace.

  • An array of input utterances to classify.

    Possible values: 1 ≤ number of items ≤ 50

  • curl -X POST -u "apikey:{apikey}" --header "Content-Type:application/json" --data "{\"input\": [{\"text\": \"I want to order some coffee\"}]}" "{url}/v1/workspaces/{workspace_id}/bulk_classify?version=2021-06-14"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    BulkClassifyUtterance bulkClassifyUtterance = new BulkClassifyUtterance.Builder()
      .text("I want to order some coffee")
      .build();
    
    BulkClassifyOptions options = new BulkClassifyOptions.Builder()
      .workspaceId("{workspace_id}")
      .addInput(bulkClassifyUtterance)
      .build();
    
    BulkClassifyResponse response = assistant.bulkClassify(options).execute().getResult();
    
    System.out.println(response);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '{id}'
      input: [{'text': 'I want to order some coffee'}]
    };
    
    assistant.bulkClassify(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.bulk_classify(
        workspace_id='{workspace_id}',
        input=[{'text': 'I want to order some coffee'}]
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "output": [
        {
          "input": {
            "text": "I want to order some coffee"
          },
          "entities": [
            {
              "entity": "beverage",
              "value": "coffee",
              "confidence": 1,
              "location": [
                14,
                20
              ],
              "groups": null,
              "role": null
            }
          ],
          "intents": [
            {
              "intent": "order",
              "confidence": 0.1588214785085711
            },
            {
              "intent": "goodbye",
              "confidence": 0.041231044110733354
            }
          ]
        }
      ]
    }
  • {
      "output": [
        {
          "input": {
            "text": "I want to order some coffee"
          },
          "entities": [
            {
              "entity": "beverage",
              "value": "coffee",
              "confidence": 1,
              "location": [
                14,
                20
              ],
              "groups": null,
              "role": null
            }
          ],
          "intents": [
            {
              "intent": "order",
              "confidence": 0.1588214785085711
            },
            {
              "intent": "goodbye",
              "confidence": 0.041231044110733354
            }
          ]
        }
      ]
    }

List workspaces

List the workspaces associated with a Watson Assistant service instance.

List the workspaces associated with a Watson Assistant service instance.

List the workspaces associated with a Watson Assistant service instance.

List the workspaces associated with a Watson Assistant service instance.

GET /v1/workspaces
ServiceCall<WorkspaceCollection> listWorkspaces(ListWorkspacesOptions listWorkspacesOptions)
listWorkspaces(params)
list_workspaces(
        self,
        *,
        page_limit: Optional[int] = None,
        include_count: Optional[bool] = None,
        sort: Optional[str] = None,
        cursor: Optional[str] = None,
        include_audit: Optional[bool] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 500 requests per 30 minutes.

Request

Use the ListWorkspacesOptions.Builder to create a ListWorkspacesOptions object that contains the parameter values for the listWorkspaces method.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • The number of records to return in each page of results.

    Default: 100

  • Whether to include information about the number of records that satisfy the request, regardless of the page limit. If this parameter is true, the pagination object in the response includes the total property.

    Default: false

  • The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with a minus sign (-).

    Allowable values: [name,updated]

  • A token identifying the page of results to retrieve.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

The listWorkspaces options.

parameters

  • The number of records to return in each page of results.

    Default: 100

  • Whether to include information about the number of records that satisfy the request, regardless of the page limit. If this parameter is true, the pagination object in the response includes the total property.

    Default: false

  • The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with a minus sign (-).

    Allowable values: [name,updated]

  • A token identifying the page of results to retrieve.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

parameters

  • The number of records to return in each page of results.

    Default: 100

  • Whether to include information about the number of records that satisfy the request, regardless of the page limit. If this parameter is true, the pagination object in the response includes the total property.

    Default: false

  • The attribute by which returned workspaces will be sorted. To reverse the sort order, prefix the value with a minus sign (-).

    Allowable values: [name,updated]

  • A token identifying the page of results to retrieve.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • curl -u "apikey:{apikey}" "{url}/v1/workspaces?version=2021-06-14"
  • curl -H "Authorization: Bearer {token}" "{url}/v1/workspaces?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    ListWorkspacesOptions options = new ListWorkspacesOptions.Builder().build();
    
    WorkspaceCollection workspaces = assistant.listWorkspaces(options).execute().getResult();
    
    System.out.println(workspaces);
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    ListWorkspacesOptions options = new ListWorkspacesOptions.Builder().build();
    
    WorkspaceCollection workspaces = assistant.listWorkspaces(options).execute().getResult();
    
    System.out.println(workspaces);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    assistant.listWorkspaces()
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    assistant.listWorkspaces()
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.list_workspaces().get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.list_workspaces().get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "workspaces": [
        {
          "name": "Car_Dashboard",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "description": "Cognitive Car workspace which allows multi-turn conversations to perform tasks in the car.",
          "workspace_id": "0a0c06c1-8e31-4655-9067-58fcac5134fc",
          "learning_opt_out": false
        },
        {
          "name": "testing",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "workspace_id": "e42c8e5c-eb34-4b65-99f0-59f9329b66ec",
          "learning_opt_out": false
        },
        {
          "name": "workspace-example",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "description": "Example workspace to try out the service",
          "workspace_id": "293b58fc-3c5b-4ac5-a8f4-8d52c393d875",
          "learning_opt_out": false
        }
      ],
      "pagination": {
        "refresh_url": "/v1/workspaces?version=2021-11-27"
      }
    }
  • {
      "workspaces": [
        {
          "name": "Car_Dashboard",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "description": "Cognitive Car workspace which allows multi-turn conversations to perform tasks in the car.",
          "workspace_id": "0a0c06c1-8e31-4655-9067-58fcac5134fc",
          "learning_opt_out": false
        },
        {
          "name": "testing",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "workspace_id": "e42c8e5c-eb34-4b65-99f0-59f9329b66ec",
          "learning_opt_out": false
        },
        {
          "name": "workspace-example",
          "language": "en",
          "metadata": {
            "runtime_version": "2021-11-27"
          },
          "description": "Example workspace to try out the service",
          "workspace_id": "293b58fc-3c5b-4ac5-a8f4-8d52c393d875",
          "learning_opt_out": false
        }
      ],
      "pagination": {
        "refresh_url": "/v1/workspaces?version=2021-11-27"
      }
    }

Create workspace

Create a workspace based on component objects. You must provide workspace components defining the content of the new workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Create workspace asynchronously method.

Create a workspace based on component objects. You must provide workspace components defining the content of the new workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Create workspace asynchronously method.

Create a workspace based on component objects. You must provide workspace components defining the content of the new workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Create workspace asynchronously method.

Create a workspace based on component objects. You must provide workspace components defining the content of the new workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Create workspace asynchronously method.

POST /v1/workspaces
ServiceCall<Workspace> createWorkspace(CreateWorkspaceOptions createWorkspaceOptions)
createWorkspace(params)
create_workspace(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        language: Optional[str] = None,
        dialog_nodes: Optional[List['DialogNode']] = None,
        counterexamples: Optional[List['Counterexample']] = None,
        metadata: Optional[dict] = None,
        learning_opt_out: Optional[bool] = None,
        system_settings: Optional['WorkspaceSystemSettings'] = None,
        webhooks: Optional[List['Webhook']] = None,
        intents: Optional[List['CreateIntent']] = None,
        entities: Optional[List['CreateEntity']] = None,
        include_audit: Optional[bool] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 30 requests per 30 minutes.

Request

Use the CreateWorkspaceOptions.Builder to create a CreateWorkspaceOptions object that contains the parameter values for the createWorkspace method.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

The createWorkspace options.

parameters

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

parameters

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • curl -X POST -u "apikey:{apikey}" --header "Content-Type: application/json" --data "{\"name\":\"API test\",\"intents\":[],\"entities\":[],\"language\":\"en\",\"description\":\"Example workspace created via API.\",\"dialog_nodes\":[]}" "{url}/v1/workspaces?version=2021-06-14"
  • curl -H "Content-Type: application/json" -X POST -H "Authorization: Bearer {token}" -d "{\"name\":\"API test\",\"intents\":[],\"entities\":[],\"language\":\"en\",\"description\":\"Example workspace created via API.\",\"dialog_nodes\":[]}" "{url}/v1/workspaces?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceName = "API test";
    String workspaceDescription = "Example workspace created via API";
    
    CreateWorkspaceOptions options = new CreateWorkspaceOptions.Builder()
      .name(workspaceName)
      .description(workspaceDescription)
      .build();
    
    Workspace response = assistant.createWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceName = "API test";
    String workspaceDescription = "Example workspace created via API";
    
    CreateWorkspaceOptions options = new CreateWorkspaceOptions.Builder()
      .name(workspaceName)
      .description(workspaceDescription)
      .build();
    
    Workspace response = assistant.createWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    const workspace = {
      name: 'API test',
      description: 'Example workspace created via API.'
    };
    
    assistant.createWorkspace(workspace)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    const workspace = {
      name: 'API test',
      description: 'Example workspace created via API.'
    };
    
    assistant.createWorkspace(workspace)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.create_workspace(
        name='API test',
        description='Example workspace created via API'
    ).get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.create_workspace(
        name='API test',
        description='Example workspace created via API'
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "name": "API test",
      "language": "en",
      "description": "Example workspace created via API.",
      "workspace_id": "245edf96-b89f-46ac-b647-c6618b2eb5f0",
      "learning_opt_out": false
    }
  • {
      "name": "API test",
      "language": "en",
      "description": "Example workspace created via API.",
      "workspace_id": "245edf96-b89f-46ac-b647-c6618b2eb5f0",
      "learning_opt_out": false
    }

Get information about a workspace

Get information about a workspace, optionally including all workspace content.

Get information about a workspace, optionally including all workspace content.

Get information about a workspace, optionally including all workspace content.

Get information about a workspace, optionally including all workspace content.

GET /v1/workspaces/{workspace_id}
ServiceCall<Workspace> getWorkspace(GetWorkspaceOptions getWorkspaceOptions)
getWorkspace(params)
get_workspace(
        self,
        workspace_id: str,
        *,
        export: Optional[bool] = None,
        include_audit: Optional[bool] = None,
        sort: Optional[str] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

With export=false, this operation is limited to 6000 requests per 5 minutes. With export=true, the limit is 20 requests per 30 minutes.

Request

Use the GetWorkspaceOptions.Builder to create a GetWorkspaceOptions object that contains the parameter values for the getWorkspace method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • Whether to include all element content in the returned data. If export=false, the returned data includes only information about the element itself. If export=true, all content, including subelements, is included.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • Indicates how the returned workspace data will be sorted. This parameter is valid only if export=true. Specify sort=stable to sort all workspace objects by unique identifier, in ascending alphabetical order.

    Allowable values: [stable]

The getWorkspace options.

parameters

  • Unique identifier of the workspace.

  • Whether to include all element content in the returned data. If export=false, the returned data includes only information about the element itself. If export=true, all content, including subelements, is included.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • Indicates how the returned workspace data will be sorted. This parameter is valid only if export=true. Specify sort=stable to sort all workspace objects by unique identifier, in ascending alphabetical order.

    Allowable values: [stable]

parameters

  • Unique identifier of the workspace.

  • Whether to include all element content in the returned data. If export=false, the returned data includes only information about the element itself. If export=true, all content, including subelements, is included.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • Indicates how the returned workspace data will be sorted. This parameter is valid only if export=true. Specify sort=stable to sort all workspace objects by unique identifier, in ascending alphabetical order.

    Allowable values: [stable]

  • curl -u "apikey:{apikey}" "{url}/v1/workspaces/{workspace_id}?version=2021-06-14"
  • curl -H "Authorization: Bearer {token}" "{url}/v1/workspaces/{workspace_id}?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    GetWorkspaceOptions options = new GetWorkspaceOptions.Builder(workspaceId).build();
    
    Workspace response = assistant.getWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    GetWorkspaceOptions options = new GetWorkspaceOptions.Builder(workspaceId).build();
    
    Workspace response = assistant.getWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '{workspace_id}'
    };
    
    assistant.getWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '{workspace_id}'
    };
    
    assistant.getWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.get_workspace(
        workspace_id='{workspace_id}'
    ).get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.get_workspace(
        workspace_id='{workspace_id}'
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "name": "Pizza app",
      "language": "en",
      "metadata": {},
      "description": "Pizza app",
      "status": "Available",
      "workspace_id": "pizza_app-e0f3",
      "learning_opt_out": false
    }
  • {
      "name": "Pizza app",
      "language": "en",
      "metadata": {},
      "description": "Pizza app",
      "status": "Available",
      "workspace_id": "pizza_app-e0f3",
      "learning_opt_out": false
    }

Update workspace

Update an existing workspace with new or modified data. You must provide component objects defining the content of the updated workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Update workspace asynchronously method.

Update an existing workspace with new or modified data. You must provide component objects defining the content of the updated workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Update workspace asynchronously method.

Update an existing workspace with new or modified data. You must provide component objects defining the content of the updated workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Update workspace asynchronously method.

Update an existing workspace with new or modified data. You must provide component objects defining the content of the updated workspace.

Note: The new workspace data cannot be larger than 1.5 MB. For larger requests, use the Update workspace asynchronously method.

POST /v1/workspaces/{workspace_id}
ServiceCall<Workspace> updateWorkspace(UpdateWorkspaceOptions updateWorkspaceOptions)
updateWorkspace(params)
update_workspace(
        self,
        workspace_id: str,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        language: Optional[str] = None,
        dialog_nodes: Optional[List['DialogNode']] = None,
        counterexamples: Optional[List['Counterexample']] = None,
        metadata: Optional[dict] = None,
        learning_opt_out: Optional[bool] = None,
        system_settings: Optional['WorkspaceSystemSettings'] = None,
        webhooks: Optional[List['Webhook']] = None,
        intents: Optional[List['CreateIntent']] = None,
        entities: Optional[List['CreateEntity']] = None,
        append: Optional[bool] = None,
        include_audit: Optional[bool] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 30 request per 30 minutes.

Request

Use the UpdateWorkspaceOptions.Builder to create a UpdateWorkspaceOptions object that contains the parameter values for the updateWorkspace method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • Whether the new data is to be appended to the existing data in the object. If append=false, elements included in the new data completely replace the corresponding existing elements, including all subelements. For example, if the new data for a workspace includes entities and append=false, all existing entities in the workspace are discarded and replaced with the new entities.

    If append=true, existing elements are preserved, and the new elements are added. If any elements in the new data collide with existing elements, the update request fails.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

Valid data defining the new and updated workspace content.

The maximum size for this data is 50MB. If you need to import a larger amount of workspace data, consider importing components such as intents and entities using separate operations.

The updateWorkspace options.

parameters

  • Unique identifier of the workspace.

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

  • Whether the new data is to be appended to the existing data in the object. If append=false, elements included in the new data completely replace the corresponding existing elements, including all subelements. For example, if the new data for a workspace includes entities and append=false, all existing entities in the workspace are discarded and replaced with the new entities.

    If append=true, existing elements are preserved, and the new elements are added. If any elements in the new data collide with existing elements, the update request fails.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

parameters

  • Unique identifier of the workspace.

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

  • Whether the new data is to be appended to the existing data in the object. If append=false, elements included in the new data completely replace the corresponding existing elements, including all subelements. For example, if the new data for a workspace includes entities and append=false, all existing entities in the workspace are discarded and replaced with the new entities.

    If append=true, existing elements are preserved, and the new elements are added. If any elements in the new data collide with existing elements, the update request fails.

    Default: false

  • Whether to include the audit properties (created and updated timestamps) in the response.

    Default: false

  • curl -X POST -u "apikey:{apikey}" --header "Content-Type: application/json" --data "{\"name\":\"Updated workspace\",\"intents\":[],\"entities\":[],\"language\":\"en\",\"description\":\"Example workspace updated via API.\",\"dialog_nodes\":[]}" "{url}/v1/workspaces/{workspace_id}?version=2021-06-14"
  • curl -H "Content-Type: application/json" -X POST -H "Authorization: Bearer {token}" -d "{\"name\":\"Updated workspace\",\"intents\":[],\"entities\":[],\"language\":\"en\",\"description\":\"Example workspace updated via API.\",\"dialog_nodes\":[]}" "{url}/v1/workspaces/{workspace_id}?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    String workspaceName = "Updated workspace";
    String workspaceDescription = "Example workspace updated via API.";
    
    UpdateWorkspaceOptions options = new UpdateWorkspaceOptions.Builder(workspaceId)
      .name(workspaceName)
      .description(workspaceDescription)
      .build();
    
    Workspace response = assistant.updateWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    String workspaceName = "Updated workspace";
    String workspaceDescription = "Example workspace updated via API.";
    
    UpdateWorkspaceOptions options = new UpdateWorkspaceOptions.Builder(workspaceId)
      .name(workspaceName)
      .description(workspaceDescription)
      .build();
    
    Workspace response = assistant.updateWorkspace(options).execute().getResult();
    
    System.out.println(response);
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '{workspace_id}',
      name: 'Updated workspace',
      description: 'Test workspace modified via API.'
    };
    
    assistant.updateWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '{workspace_id}',
      name: 'Updated workspace',
      description: 'Test workspace modified via API.'
    };
    
    assistant.updateWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.update_workspace(
        workspace_id='{workspace_id}',
        name='Updated workspace',
        description='Example workspace updated via API'
    ).get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.update_workspace(
        workspace_id='{workspace_id}',
        name='Updated workspace',
        description='Example workspace updated via API'
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

Example responses
  • {
      "name": "Updated workspace",
      "language": "en",
      "description": "Example workspace modified via API",
      "workspace_id": "164cca2d-8af7-4034-a121-89049a665183",
      "learning_opt_out": false
    }
  • {
      "name": "Updated workspace",
      "language": "en",
      "description": "Example workspace modified via API",
      "workspace_id": "164cca2d-8af7-4034-a121-89049a665183",
      "learning_opt_out": false
    }

Delete workspace

Delete a workspace from the service instance.

Delete a workspace from the service instance.

Delete a workspace from the service instance.

Delete a workspace from the service instance.

DELETE /v1/workspaces/{workspace_id}
ServiceCall<Void> deleteWorkspace(DeleteWorkspaceOptions deleteWorkspaceOptions)
deleteWorkspace(params)
delete_workspace(
        self,
        workspace_id: str,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 30 requests per 30 minutes.

Request

Use the DeleteWorkspaceOptions.Builder to create a DeleteWorkspaceOptions object that contains the parameter values for the deleteWorkspace method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

The deleteWorkspace options.

parameters

  • Unique identifier of the workspace.

parameters

  • Unique identifier of the workspace.

  • curl -X DELETE -u "apikey:{apikey}" "{url}/v1/workspaces/{workspace_id}?version=2021-06-14"
  • curl -X DELETE -H "Authorization: Bearer {token}" "{url}/v1/workspaces/{workspace_id}?version=2020-04-01"
  • IamAuthenticator authenticator = new IamAuthenticator("{apikey}");
    Assistant assistant = new Assistant("2021-06-14", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    DeleteWorkspaceOptions options = new DeleteWorkspaceOptions.Builder(workspaceId).build();
    
    assistant.deleteWorkspace(options).execute();
  • CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize", "{username}", "{password}");
    Assistant assistant = new Assistant("2020-04-01", authenticator);
    assistant.setServiceUrl("{url}");
    
    String workspaceId = "{workspace_id}";
    
    DeleteWorkspaceOptions options = new DeleteWorkspaceOptions.Builder(workspaceId).build();
    
    assistant.deleteWorkspace(options).execute();
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { IamAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2021-06-14',
      authenticator: new IamAuthenticator({
        apikey: '{apikey}',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '036fdc1e-71a3-432f-a404-0e4b4de6acad'
    };
    
    assistant.deleteWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • const AssistantV1 = require('ibm-watson/assistant/v1');
    const { CloudPakForDataAuthenticator } = require('ibm-watson/auth');
    
    const assistant = new AssistantV1({
      version: '2020-04-01',
      authenticator: new CloudPakForDataAuthenticator({
        username: '{username}',
        password: '{password}',
        url: 'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize',
      }),
      serviceUrl: '{url}',
    });
    
    const params = {
      workspaceId: '036fdc1e-71a3-432f-a404-0e4b4de6acad'
    };
    
    assistant.deleteWorkspace(params)
      .then(res => {
        console.log(JSON.stringify(res.result, null, 2));
      })
      .catch(err => {
        console.log(err)
      });
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
    
    authenticator = IAMAuthenticator('{apikey}')
    assistant = AssistantV1(
        version='2021-06-14',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.delete_workspace(
        workspace_id='{workspace_id}'
    ).get_result()
    
    print(json.dumps(response, indent=2))
  • import json
    from ibm_watson import AssistantV1
    from ibm_cloud_sdk_core.authenticators import CloudPakForDataAuthenticator
    
    authenticator = CloudPakForDataAuthenticator(
        '{username}',
        '{password}',
        'https://{cpd_cluster_host}{:port}/icp4d-api/v1/authorize'
    )
    assistant = AssistantV1(
        version='2020-04-01',
        authenticator = authenticator
    )
    
    assistant.set_service_url('{url}')
    
    response=assistant.delete_workspace(
        workspace_id='{workspace_id}'
    ).get_result()
    
    print(json.dumps(response, indent=2))

Response

Status Code

  • Successful request.

  • Invalid request.

No Sample Response

This method does not specify any sample responses.

Create workspace asynchronously

Create a workspace asynchronously based on component objects. You must provide workspace components defining the content of the new workspace.

A successful call to this method only initiates asynchronous creation of the workspace. The new workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Create a workspace asynchronously based on component objects. You must provide workspace components defining the content of the new workspace.

A successful call to this method only initiates asynchronous creation of the workspace. The new workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Create a workspace asynchronously based on component objects. You must provide workspace components defining the content of the new workspace.

A successful call to this method only initiates asynchronous creation of the workspace. The new workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Create a workspace asynchronously based on component objects. You must provide workspace components defining the content of the new workspace.

A successful call to this method only initiates asynchronous creation of the workspace. The new workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

POST /v1/workspaces_async
ServiceCall<Workspace> createWorkspaceAsync(CreateWorkspaceAsyncOptions createWorkspaceAsyncOptions)
createWorkspaceAsync(params)
create_workspace_async(
        self,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        language: Optional[str] = None,
        dialog_nodes: Optional[List['DialogNode']] = None,
        counterexamples: Optional[List['Counterexample']] = None,
        metadata: Optional[dict] = None,
        learning_opt_out: Optional[bool] = None,
        system_settings: Optional['WorkspaceSystemSettings'] = None,
        webhooks: Optional[List['Webhook']] = None,
        intents: Optional[List['CreateIntent']] = None,
        entities: Optional[List['CreateEntity']] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 30 requests per 30 minutes.

Request

Use the CreateWorkspaceAsyncOptions.Builder to create a CreateWorkspaceAsyncOptions object that contains the parameter values for the createWorkspaceAsync method.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

The createWorkspaceAsync options.

parameters

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

parameters

  • The name of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 64

  • The description of the workspace. This string cannot contain carriage return, newline, or tab characters.

    Possible values: 1 ≤ length ≤ 128

  • The language of the workspace.

  • An array of objects describing the dialog nodes in the workspace.

  • An array of objects defining input examples that have been marked as irrelevant input.

  • Any metadata related to the workspace.

  • Whether training data from the workspace (including artifacts such as intents and entities) can be used by IBM for general service improvements. true indicates that workspace training data is not to be used.

    Default: false

  • Global settings for the workspace.

  • A webhook that can be used by dialog nodes to make programmatic calls to an external function.

    Note: Currently, only a single webhook named main_webhook is supported.

  • An array of objects defining the intents for the workspace.

  • An array of objects describing the entities for the workspace.

Response

Status Code

  • Successful request

  • Invalid request.

Example responses
  • Successful request. The workspace is being created asynchronously.

    {
      "status": "Processing",
      "name": "API test",
      "language": "en",
      "description": "Example workspace created via API.",
      "workspace_id": "245edf96-b89f-46ac-b647-c6618b2eb5f0",
      "learning_opt_out": false
    }
  • Successful request. The workspace is being created asynchronously.

    {
      "status": "Processing",
      "name": "API test",
      "language": "en",
      "description": "Example workspace created via API.",
      "workspace_id": "245edf96-b89f-46ac-b647-c6618b2eb5f0",
      "learning_opt_out": false
    }

Update workspace asynchronously

Update an existing workspace asynchronously with new or modified data. You must provide component objects defining the content of the updated workspace.

A successful call to this method only initiates an asynchronous update of the workspace. The updated workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Update an existing workspace asynchronously with new or modified data. You must provide component objects defining the content of the updated workspace.

A successful call to this method only initiates an asynchronous update of the workspace. The updated workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Update an existing workspace asynchronously with new or modified data. You must provide component objects defining the content of the updated workspace.

A successful call to this method only initiates an asynchronous update of the workspace. The updated workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

Update an existing workspace asynchronously with new or modified data. You must provide component objects defining the content of the updated workspace.

A successful call to this method only initiates an asynchronous update of the workspace. The updated workspace is not available until processing completes. To check the status of the asynchronous operation, use the Get information about a workspace method.

POST /v1/workspaces_async/{workspace_id}
ServiceCall<Workspace> updateWorkspaceAsync(UpdateWorkspaceAsyncOptions updateWorkspaceAsyncOptions)
updateWorkspaceAsync(params)
update_workspace_async(
        self,
        workspace_id: str,
        *,
        name: Optional[str] = None,
        description: Optional[str] = None,
        language: Optional[str] = None,
        dialog_nodes: Optional[List['DialogNode']] = None,
        counterexamples: Optional[List['Counterexample']] = None,
        metadata: Optional[dict] = None,
        learning_opt_out: Optional[bool] = None,
        system_settings: Optional['WorkspaceSystemSettings'] = None,
        webhooks: Optional[List['Webhook']] = None,
        intents: Optional[List['CreateIntent']] = None,
        entities: Optional[List['CreateEntity']] = None,
        append: Optional[bool] = None,
        **kwargs,
    ) -> DetailedResponse

Rate limit

This operation is limited to 30 request per 30 minutes.

Request

Use the UpdateWorkspaceAsyncOptions.Builder to create a UpdateWorkspaceAsyncOptions object that contains the parameter values for the updateWorkspaceAsync method.

Path Parameters

  • Unique identifier of the workspace.

Query Parameters

  • Release date of the API version you want to use. Specify dates in YYYY-MM-DD format. The current version is 2021-11-27.

  • Whether the new data is to be appended to the existing data in the object. If append=false, elements included in the new data completely replace the corresponding existing elements, including all subelements. For example, if the new data for a workspace includes entities and append=false, all existing entities in the workspace are discarded and replaced with the new entities.

    If append=true, existing elements are preserved, and the new elements are added. If any elements in the new data collide with existing elements, the update request fails.

    Default: false

Valid data defining the new and updated workspace content.

The maximum size for this data is 50MB. If you need to import a larger amount of workspace data, consider importing components such as intents and entities using separate operations.

The updateWorkspaceAsync options.