vania-janet/multiturn-rag-retrieval-data huggingface dataset:
Such changes can be considered compatible only if they are designed to avoid impacting existing client applications that take either of the following client robustness approaches across an entire resource scope

[2]:



1. Isolation-based client robustness: Client developers ensure that no use is made of new features

[3]by any client applications across a resource scope. Existing client applications will not encounter any effects of the changes because these applications will operate only on resource configurations which were supported prior to the changes being made available.

In support of this approach, the service MUST ensure that resources taking advantage of expanded response schemas will not appear in a resource scope where a client application did not explicitly request them.
2. Forward-compatible client robustness: Client developers ensure that all client applications across a resource scope are coded to gracefully handle new behavior (such as property values outside previously documented ranges), in a forward-compatible way, as advised in the API documentation.

In support of this approach, the API documentation MUST clearly describe the potential for new behavior and offer guidance on handling future response schema expansions. This guidance must have been in place when the functionality being changed was originally documented.



The following types of changes are examples of what MAY be considered backward-compatible if the preceding client robustness approaches can be respected:



* Expanding possible values for a property in a response schema; for example, a new value in an enumeration, a lower minimum or higher maximum, or a more permissive string pattern.
* Adding a new required property to a previously unsupported variant of a request schema [4].
* Reducing acceptable values for a property for a previously unsupported variant of a request schema [5].
* Expanding the types of resources that could be referenced by an href or embedded reference schema within the context of another resource.







 Changing default values 

Additionally, a default value for a property in a request MAY be changed if the new default has no increase in price or regressions in performance or supported features at the time of the change.

For example, the default pricing profile for a new resource may be changed if the new default is considered better in all respects and is an equal or lower price at the time of the change.
* Only Basic, Bearer, OAuth 2.0, and API key authentication are supported.
* For OAuth 2.0 authentication, only the Password, Client Credentials, and Authorization Code grant types are supported.
* Schemas that are defined by using anyOf, oneOf, and allOf are currently not supported.



In addition, any call to the external API must complete within 30 seconds.





 Building the custom extension 

To build a custom extension based on the API definition, follow these steps:



1. Go to the ![Integrations icon](https://cloud.ibm.com/docs-content/v1/content/ca9232b3702768f24bb897f48f10778fcda28718/watson-assistant/images/integrations.svg)Integrations page.
2. Scroll to the Extensions section and click Build custom extension.
3. Read the Get started information and click Next to continue.
4. In the Basic information step, specify the following information about the extension you are creating:



* Extension name: A short, descriptive name for the extension (for example, CRM system or Weather service). This name that is displayed on the tile for the extension on the Integrations page, and in the list of available extensions in the action editor.
* Extension description: A brief summary of the extension and what it does. The description is available from the Integrations page.



Click Next.
5. In the Import OpenAPI step, click or drag to add the OpenAPI document that describes the REST API you want to integrate with.

If you encounter an error when you try to import the JSON file, make sure the file satisfies all of the requirements that are listed in [Preparing the API definition](https://cloud.ibm.com/docs/watson-assistant?topic=watson-assistant-build-custom-extensionbuild-custom-extension-openapi-file). Edit the file to correct errors or remove unsupported features. Click the X to clear the error message, and try the import again.

After you import the file successfully, click Next.
6.
The Dockerfile might contain steps that copy static files from your sources into the container to be hosted by a web service, for example. It might compile source code that is written in the language of your choice and add the resulting binary to your container image. For more information about Dockerfile builds, see [Writing a Dockerfile for Code Engine](https://cloud.ibm.com/docs/codeengine?topic=codeengine-dockerfile).

When you pull an image from Docker Hub to use with apps or jobs in Code Engine, be aware of [Docker rate limits](https://docs.docker.com/docker-hub/download-rate-limit) for free plan (anonymous) users. You might experience pull limits if you receive a 429 error that indicates you reached your pull rate limit. To [increase rate limits](https://www.docker.com/increase-rate-limits), you can upgrade your account to a Docker Pro or Team subscription.





 Cloud Native Buildpacks 

[Cloud Native Buildpack](https://buildpacks.io/) that uses [Paketo](https://paketo.io/) to inspect your source repository and detect which runtime environment that your code is based on and how a container image is built from your sources. Buildpacks make assumptions about the directory structure of your source repositories. For more information about how to structure your source repository correctly, see the samples that are provided for your runtime.



Runtime sample files

 Runtime Version Samples 

 Go 1.19.9 [Go samples](https://github.com/paketo-buildpacks/samples/tree/main/go). 
 Java 17.0.7 [Java samples](https://github.com/paketo-buildpacks/samples/tree/main/java). 
 Node.js 18.16.1 [Node.js samples](https://github.com/paketo-buildpacks/samples/tree/main/nodejs).
Unsupported: Beta version of TokenReview API Migrate manifests and API clients to use the authentication.k8s.io/v1 API version, available since Kubernetes version 1.10. For more information, see [Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know](https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/). 
 Unsupported: Beta versions of SubjectAccessReview, LocalSubjectAccessReview, SelfSubjectAccessReview APIs Migrate manifests and API clients to use the authorization.k8s.io/v1 API version, available since Kubernetes version 1.6. For more information, see [Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know](https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/). 
 Unsupported: Beta version of CertificateSigningRequest API Migrate manifests and API clients to use the certificates.k8s.io/v1 API version, available since Kubernetes version 1.19. For more information, see [Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know](https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/). 
 Unsupported: Beta version of Lease API Migrate manifests and API clients to use the coordination.k8s.io/v1 API version, available since Kubernetes version 1.14. For more information, see [Kubernetes API and Feature Removals In 1.22: Here’s What You Need To Know](https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/).
Setting up a bastion host that uses Teleport 

This tutorial shows you one way that can be used to meet the IBM Cloud Framework for Financial Services requirements that are related to [bastion host](https://cloud.ibm.com/docs/framework-financial-services?topic=framework-financial-services-vpc-architecture-connectivity-bastion). There are various ways to implement a compliant bastion solution, but we show you how to configure a bastion host in your VPC by using [Teleport Enterprise Edition](https://goteleport.com/), along with Object Storage and App ID for enhanced security. You will learn how to set up a Teleport-based solution that meets the previously described IBM Cloud Framework for Financial Services requirements.

We provide guidance, but you are solely responsible for installing, configuring, and operating IBM third-party software in a way that satisfies IBM Cloud Framework for Financial Services requirements. In addition, IBM does not provide support for third-party software. So, if you choose to use Teleport and encounter issues with the Teleport software that require support, you should contact Teleport.

To implement your bastion host solution, you must complete the following high-level steps:



1. Provision an instance of Object Storage and configure a bucket for storing session recordings.
2. Provision an instance of App ID and configure a SAML-based identity provider.
3. Provision a virtual server instance, install Teleport, and complete the Teleport configuration for unified access to your infrastructure.





 Before you begin 

Before you deploy and configure a bastion host into a virtual server instance running on the VPC reference architecture, make sure you have completed the following prerequisites:



* Acquire a Teleport Enterprise Edition license
* Configure a VPC like VPC 0 (Edge Network) in the architecture diagram



Zoom

!
2. Click Continue.







 Configure the application source code repo 

In the Application step, the recommended options for the application source code repo are displayed by default. To view all of the available options for the underlying Git integration, click Advanced Options. By default, the toolchain uses the default sample that clones the sample app as an IBM-hosted Git Repos and Issue Tracking repo.

Zoom

![VPC secure app repo](https://cloud.ibm.com/docs-content/v1/content/562806c0b18119f4d21cb66f5ae6d051634b4a16/ContinuousDelivery/images/ds-vpc-setup-app-repo.png)

Figure 3. VPC secure app repo

You can change the name of the app repo. The region of the repo remains the same as the region of the toolchain.

The toolchain template provides a sample [Java™ Spring App](https://us-south.git.cloud.ibm.com/open-toolchain/java-spring-app) that uses a Maven build. If you want to link an existing Application repo for the toolchain, select Bring your own app and specify the URL for the repo. The toolchain supports linking only to existing Git Repos and Issue Tracking repos.

By default, the application repo template is cloned to your Git Repos and Issue Tracking org. To change the org, enable Advanced options and specify the repo owner.





 Configure the inventory repo 

The inventory repo records the details of the artifacts that are built by the continuous integration toolchains. You can either create a new inventory repo that is a clone of the [inventory repo template](https://us-south.git.cloud.ibm.com/open-toolchain/compliance-inventory) or use an existing inventory repo that you share between toolchains.

Zoom

!
For the v1 HTTP API, FCM introduced three new parameters: project_id, client_email, and private_key. The important point to observe here is both legacy and v1 HTTP APIs are mutually exclusive and we have taken care of that in Event Notifications.

Here's how you can migrate from an old configuration to a new one.



1. Under your existing FCM Android destination configuration you will find server_key and sender_id provided. Now you just need to update the existing destination by providing project_id, client_email, and private_key USING the PATCH /destinations/{id} API call.

Existing Android destination configuration:

{
"name": "Existing android destination",
"description": "Android destination with legacy parameters",
"type": "push_android",
"config": {
"params": {
"sender_id": "xxxxxx",
"server_key": "xxxxxx"
}
}
}

New Android destination configuration:

{
"name": "New android destination",
"description": "Android destination with V1 HTTP parameters",
"type": "push_android",
"config": {
"params": {
"project_id": "xxxxx",
"private_key": "xxxxx",
"client_email": "abc@xyz.pqr"
}
}
}





 Examples of FCM payload changes 



* FCM Legacy HTTP API

{
"notification": {
"title": "Incidunt qui porro sequi iste assumenda esse animi.",
"body": "Minus reprehenderit ut nisi. Aut earum qui est iure eos fuga."
},
"data": {
"name": "Willie Greenholt",
"description": "Voluptas voluptatem sed quia expedita error a at sit rerum.
You can update the code in your app or to migrate to a newer version of a runtime. For example, because Node.js version 8 is in maintenance mode, you might want to switch the runtime to Node.js 10. You can update your actions from the CLI or from the console.

When you migrate to a new runtime version, you might need to change the code in your app to comply with the new runtime version. Usually, the runtime versions are compatible.

When an action is using a disabled runtime, the action can be only read or deleted; no update is possible. In this case, you can view the original action code from the console, copy it, and create a new action with the copied code.

From the CLI, you can get the action code by using the [ibmcloud fn action get <action name> --save](https://cloud.ibm.com/docs/openwhisk?topic=cloud-functions-cli-plugin-functions-clicli_action_get) command and use the saved action file for action create by using the new runtime.



 Updating actions from the CLI 

You can update your actions from the CLI with the [ibmcloud fn action update](https://cloud.ibm.com/docs/openwhisk?topic=cloud-functions-cli-plugin-functions-clicli_action_update) command.



1. Update your app locally.
2. If you packaged your app as a Docker image, upload the latest image to Docker Hub. This upload allows the system to pull your new Docker image the next time it runs the code for your action. If you have a running container that uses a previous version of your Docker image, any new invocations continue to use that image. You must run the update command so that new invocations begin running on the new image.
3. Update an action and include the local path to your app or the Docker image.

ibmcloud fn action update <action_name> <app_file> --kind <runtime>

Example
Toolchain Integration 

Adopt a DevOps approach in your feature releases by using IBM Cloud App Configuration service and IBM Cloud Continuous Delivery. Continuous Delivery includes toolchains that automate the building of your applications.

App Configuration toolchain is based on Tekton and is available as a template at [https://github.com/ibm-cloud-appconfiguration/appconfiguration-toolchain](https://github.com/ibm-cloud-appconfiguration/appconfiguration-toolchain) for automating the deployment of your applications.

Make sure you allowlist the traffic from Pipeline & toolchain services.

Integrate App Configuration service to a [toolchain](https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-toolchains_getting_started&interface=ui) and apply feature flags and properties from the service instance to the environment or trigger properties of the associated pipeline.

This feature supports centralized management of feature flags and properties directly from an App Configuration service instance.

[Learn more about configuring App Configuration tool integration](https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-app-configuration&interface=ui).
If you need external file storage, try IBM Cloud® Object Storage.

If the capability that you want to incorporate is not available as a service on IBM Cloud®, you can always integrate that capability with feeds and APIs too, without the need for frameworks.
3. [Verify that your code meets the system limits.](https://cloud.ibm.com/docs/openwhisk?topic=openwhisk-limits)

Your code must fit within the system limits to run. For example, if your packaged code is larger than 48 MB, you might need to continue breaking it down into smaller pieces or packaging it as a Docker image.

Applications that contain many third-party modules, native libraries, or external tools might hit this limit. If you create a .zip or .jar package action that is larger than 48 MB, you must extend the runtime image with dependencies. Then, use a single source file or smaller archive than 48 MB. For example, by building a custom Docker runtime that includes necessary shared libraries, dependencies are not required to be present in the archive file. Private source files can still be bundled in the archive and injected at run time.
4. Determine the parameters that must be injected into your code.

In serverless actions, data is supplied by adding parameters to the actions. Parameters are declared as an argument to the main serverless function. Most commonly, these parameters are credentials for a service, but they might be anything that makes your code reusable with different triggers.
5. [Verify that the structural requirements for your code to be used in a function.](https://cloud.ibm.com/docs/openwhisk?topic=openwhisk-prep)

Whether you have an app already or plan to develop a script to use, your code probably needs a few tweaks to make it consumable by IBM Cloud® Functions. The code itself must meet some structural requirements, such as the input parameters and the output results. It might also need to be packaged into a single file that includes all its dependencies.







 Determine your event source 

Think about your function in terms of the event you want to happen to trigger code to run.
If you encounter errors like The underlying connection was closed: An unexpected error occurred on a send, make sure you have .Net Framework 4.5 or later installed. Also, try to enable TLS 1.2 protocol by running the following command:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12







 Downloading installation packages with private endpoints 

Use the following steps to install the latest stand-alone IBM Cloud CLI:



1. Select the installer of your OS to begin the download. The following operating systems are supported: macOS X 64-bit, Windows™ 64-bit, Linux™ x86 64-bit, Linux™ LE 64-bit (ppc64le), and System/390 Linux™.
2. Run the installer:



* For Mac and Windows™, run the installer.
* For Linux™, extract the package and run the install script.



Installers:



* [Mac OS X 64-bit](https://ibm-cloud-cli.s3.private.us.cloud-object-storage.appdomain.cloud/2.16.0/IBM_Cloud_CLI_2.16.0.pkg)
* [Mac OS X M1/ARM](https://ibm-cloud-cli.s3.private.us.cloud-object-storage.appdomain.cloud/2.16.0/IBM_Cloud_CLI_2.16.0_arm64.pkg)(provided as-is)
* [Windows™ 64-bit](https://ibm-cloud-cli.s3.private.us.cloud-object-storage.appdomain.cloud/2.16.0/IBM_Cloud_CLI_2.16.0_amd64.exe)
* [Windows™ 32-bit](https://ibm-cloud-cli.s3.private.us.cloud-object-storage.appdomain.cloud/2.16.0/IBM_Cloud_CLI_2.16.0_386.exe)
When you name your application directory, do not use one that is reserved by Unix-based operating systems, Kubernetes or Code Engine builds, such as /bin, /dev, /etc, /lib, /proc, /run, /sys, /usr, /var, or /workspace. Naming your application directory /app is a best practice.

If your source code repository contains the sources for different applications that are organized in directories, similar to the [Code Engine samples repository](https://github.com/IBM/CodeEngine), then you can use a subdirectory as your context. In the [ibmcloud ce build create](https://cloud.ibm.com/docs/codeengine?topic=codeengine-clicli-build-create) command, specify subdirectories by using the --context-dir option.

If your Dockerfile is not in the context directory, then you can point to it by using the --dockerfile argument.

To try out a Docker build on your local system before you build it in Code Engine, you can use [Docker Desktop](https://www.docker.com/products/docker-desktop).

Let's now look at specific aspects of a Dockerfile that can help you to improve your Dockerfile. These examples focus on reducing the image size, improving the interoperability with Code Engine applications, and to run containers as a non-root user.





 Reducing the size of a container image 

Reducing the size of a container image brings a value in multiple aspects.



* Less space is needed to store the image in the container registry. You save quota for other images and save money.
* Sometimes, the build run needs less time to complete because a smaller image can be transferred faster to the container registry than a much larger one. You again save money.
* The application or job that uses the image starts faster because the time that is needed to pull the image is shorter. As the resources that are needed to run your application or job are reserved while the image is pulled, you again save money.
![mymobileapp.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/mymobileapp.png)
5. Save the client secret and client id displayed. This will be the only time your client secret is available for you to copy!

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

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







 Subscribing to an API Product 



1. Click the API Products link on the toolbar. Your Weather Provider API Product is listed!

![apiproducts.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/apiproducts.png)
2. Click the link to see details and options. Two Plans are available: the original Default Plan, and your new Demo Plan. If you only see one Plan, return to API Connect and ensure that your Product changes have been saved, staged, and published to the Sandbox Catalog.

![plans.png](https://cloud.ibm.com/docs-content/v1/content/78bb71851d95d7580503eb9ba10cf3ae31490ade/apiconnect/tutorials/images/plans.png)
And now, time to create a web application. The dev space is a default option for your organization, but you might prefer to create others for isolating different efforts. For example, keeping 'finance' separate from 'development'.

ibmcloud dev create

With that command, you're asked a series of questions. You can go back at many points in the process, so if you feel lost you can start over by deleting the existing directory and creating a new directory. Even when you create your application on the command line, you'll still see the results in your IBM Cloud console.

Note the option for creating a 'Web App'. That's the one you want.

===============================================================================
Select an application type:

1. Backend Service / Web App
2. Mobile App
-------------------------
0. Exit

===============================================================================
? Enter selection number:> 1

A number of options are provided, but we want 'Node'. Type '4' and press enter.

===============================================================================
Select a language:

1.