{
  "openapi": "3.0.2",
  "info": {
    "title": "CD Toolchain",
    "description": "## Introduction\n\nA *toolchain* is a set of tools that supports development, deployment, and operational tasks. A tool is an instance that represents its corresponding tool, such as a GitHub tool, a Slack tool, and so on. For more information about the tools that are supported in Continuous Delivery, see [Continuous Delivery integrations](https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-integrations). Each toolchain is associated with a resource group, where you can manage user access control by using IBM Cloud Identity and Access Management (IAM).\n\nThe Toolchain API provides the following functions, based on the user's IAM permissions:\n\n* Read a toolchain\n* Create a toolchain\n* Update a toolchain\n* Delete a toolchain and its tools\n* Read a tool\n* Provision a tool\n* Update a tool\n* De-provision a tool\n\nFor more information about toolchains, see [Creating toolchains](https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-toolchains_getting_started&interface=ui).\n\n[toolchain-go-sdk](https://github.com/IBM/continuous-delivery-go-sdk/tree/main/cdtoolchainv2) is the official toolchain SDK for the Go programming language.\n\nRun the `go get` command to retrieve the toolchain SDK and add it to the `GOPATH` workspace or to the project's Go module dependencies.\n\n```bash\ngo get github.com/IBM/continuous-delivery-go-sdk/v2/cdtoolchainv2\n```\n\nTo retrieve the latest version of the SDK, type `go get -u`:\n\n```bash\ngo get -u github.com/IBM/continuous-delivery-go-sdk/v2/cdtoolchainv2\n```\n\nTo use the toolchain SDK within a program, import the package by running the `go build` or `go mod tidy` commands to load the package.\n\n```go\nimport (\n\t\"github.com/IBM/continuous-delivery-go-sdk/v2/cdtoolchainv2\"\n)\n```\n\nThe code examples on this tab use the client library that is provided for Node.\n\nInstallation:\n```bash\nnpm install @ibm-cloud/continuous-delivery\n```\n\nFor more information, view the project on GitHub: https://github.com/IBM/continuous-delivery-node-sdk. See also [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\nThe code examples on this tab use the client library that is provided for Node.\n\nInstallation:\n```bash\npip install \"ibm-continuous-delivery\"\n```\n\nFor more information, view the project on GitHub: https://github.com/IBM/continuous-delivery-python-sdk. See also the Python client library for IBM Cloud Continuous Delivery https://pypi.org/project/ibm-continuous-delivery/ and [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\nThe code examples on this tab use the client library that is provided for Java.\n\nMaven example:\n```xml\n<dependency>\n    <groupId>com.ibm.cloud</groupId>\n    <artifactId>cd-toolchain</artifactId>\n    <version>2.0.1</version>\n</dependency>\n```\n\nGradle example:\n```bash\ncompile 'com.ibm.cloud:cd-toolchain:2.0.1'\n```\n\nFor more information, view the project on GitHub: https://github.com/IBM/continuous-delivery-java-sdk. See also [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\n## Endpoint URL\n\nThe toolchain API uses the following regional endpoint URLs. When you call the API, add the path for each method to form the complete API endpoint for your requests.\n\nContinuous Delivery will be discontinued in the following regions on 12 February 2027: **au-syd**, **ca-mon**, **ca-tor**, **us-east**. On 12 June 2026, customers will no longer be able to create new resources in the affected regions. However, if a region has no active usage, the region may be discontinued earlier and stop accepting new instances. [Learn more](https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-faq_region_feature_consolidation).\n\n* Dallas: `https://api.us-south.devops.cloud.ibm.com/toolchain/v2`\n* London: `https://api.eu-gb.devops.cloud.ibm.com/toolchain/v2`\n* Frankfurt: `https://api.eu-de.devops.cloud.ibm.com/toolchain/v2`\n* Tokyo: `https://api.jp-tok.devops.cloud.ibm.com/toolchain/v2`\n* São Paulo: `https://api.br-sao.devops.cloud.ibm.com/toolchain/v2`\n* Montreal (**deprecated**, limited availability region): `https://api.ca-mon.devops.cloud.ibm.com/toolchain/v2`\n* Sydney (**deprecated**): `https://api.au-syd.devops.cloud.ibm.com/toolchain/v2`\n* Toronto (**deprecated**): `https://api.ca-tor.devops.cloud.ibm.com/toolchain/v2`\n* Washington DC (**deprecated**): `https://api.us-east.devops.cloud.ibm.com/toolchain/v2`\n\n**Note**: The following regions have been discontinued and are no longer available:\n* Osaka (jp-osa)\n* Madrid (eu-es)\n\nExample request to the Toolchain API (Dallas):\n\n```bash\ncurl -X <HTTP_METHOD> \"https://api.us-south.devops.cloud.ibm.com/toolchain/v2/<ENDPOINT_PATH>\"\n```\n\nWhere `<HTTP_METHOD>` is the appropriate HTTP method, such as GET or POST, and `<ENDPOINT_PATH>` is an endpoint that is provided by the Toolchain API.\n\nExample of constructing the toolchain service client pointed at a specific region.\n\nFirst construct the toolchain client:\n\n```go\nimport (\n\t\"github.com/IBM/continuous-delivery-go-sdk/v2/cdtoolchainv2\"\n)\n...\ntoolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}\ntoolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)\n```\n\nBy default, the SDK points at the Dallas URL. A different target region can be set using `SetServiceURL`:\n\n```go\ntoolchainClient.SetServiceURL(endpointUrl)\n```\n\nDefault service URL:\n```text\nhttps://api.us-south.devops.cloud.ibm.com/toolchain/v2\n```\n\nExample to change the service URL to the Frankfurt region:\n```javascript\nconst options = {\n  authenticator: new IamAuthenticator({\n    apikey: '{iam_api_key}'\n  }),\n  serviceUrl: 'https://api.eu-de.devops.cloud.ibm.com/toolchain/v2'\n};\nconst toolchainService = new CdToolchainV2(options);\n```\n\nAlternatively, the service URL can be set through environment variables:\n```bash\nexport CD_TOOLCHAIN_URL=https://api.eu-de.devops.cloud.ibm.com/toolchain/v2\n```\n\nFor more information, see [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\nDefault service URL:\n```text\nhttps://api.us-south.devops.cloud.ibm.com/toolchain/v2\n```\n\nExample to change the service URL to the Frankfurt region:\n```python\nfrom ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2\nfrom ibm_cloud_sdk_core.authenticators import IAMAuthenticator\n\nauthenticator = IAMAuthenticator('{iam_api_key}')\nservice = CdToolchainV2(authenticator=authenticator)\nservice.set_service_url('https://api.eu-de.devops.cloud.ibm.com/toolchain/v2')\n```\n\nAlternatively, the service URL can be set through environment variables:\n```bash\nexport CD_TOOLCHAIN_URL=https://api.eu-de.devops.cloud.ibm.com/toolchain/v2\n```\n\nFor more information, see [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\nDefault service URL:\n```text\nhttps://api.us-south.devops.cloud.ibm.com/toolchain/v2\n```\n\nExample to change the service URL to the Frankfurt region:\n```java\nimport com.ibm.cloud.continuous_delivery.cd_toolchain.v2;\nimport com.ibm.cloud.sdk.core.security.Authenticator;\nimport com.ibm.cloud.sdk.core.security.IamAuthenticator;\n\nAuthenticator authenticator = new IamAuthenticator.Builder()\n  .apikey(\"{api_key}\")\n  .build();\nCdToolchain service = new CdToolchain(CdToolchain.DEFAULT_SERVICE_NAME, authenticator);\nservice.setServiceUrl(\"https://api.eu-de.devops.cloud.ibm.com/toolchain/v2\");\n```\n\nAlternatively, the service URL can be set through environment variables:\n```bash\nexport CD_TOOLCHAIN_URL=https://api.eu-de.devops.cloud.ibm.com/toolchain/v2\n```\n\nFor more information, see [Using the SDK](https://github.com/IBM/ibm-cloud-sdk-common/blob/main/README.md#using-the-sdk).\n\n## Authentication\n\nAuthentication to the toolchain API is enforced by using an IBM Cloud Identity and Access Management (IAM) access token. This token determines the actions that a user or service ID can access when they use the API.\n\nFor more information about obtaining an IAM token for an authenticated user or service ID, see the [IAM Identity Services API documentation](https://cloud.ibm.com/apidocs/iam-identity-token-api).\n\nTo use the toolchain API, add a valid IAM token to the HTTP Authorization request header, for example, `-H \"Authorization: Bearer <IAM_TOKEN>\"`.\n\nExample request to generate an access token:\n\n```bash\ncurl -X POST\nhttps://iam.cloud.ibm.com/identity/token\n  -H \"Content-Type: application/x-www-form-urlencoded\"\n  -H \"Accept: application/json\"\n  -d \"grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey&apikey=<API_KEY>\"\n```\n\nWhere `<API_KEY>` is your [IBM Cloud API Key](https://cloud.ibm.com/iam/apikeys). Use the resulting `IAM token` value prefixed by `Bearer` to authenticate into the Toolchain API.\n\nExample `Authorization` header value:\n\n```bash\nBearer poJraWQiOiIyMDIxMTAzMDE1MTQiLCJhbGciiuJSUzI1NiJ9.eyJpYW1fdWQiOiJJQk1pZC0xMTAwMDBCS1VWIiwiaWQiOiJJQk1pZC0xMTAwMDBCS1VWIiwicmVhbG1pZCI6IklCTWlkIiwianRpIjoiMjgzMDE3MWItYmY1MC00ZGEyLWE4MjAtMjFmNGVjYWQ0NDE0IiwiaWRlbnRkj\n```\n\nTo authenticate into the toolchain service through the Go SDK, an IAM API key. To obtain an API key, access the [IBM Cloud API keys page](https://cloud.ibm.com/iam/apikeys) and create an API key.\n\nThe IAM API key can be passed to the toolchain Go SDK through environment variables:\n\n```bash\nexport CD_TOOLCHAIN_AUTHTYPE=iam\nexport CD_TOOLCHAIN_APIKEY=<IAM_API_KEY>\n```\n\n**Setting client options programmatically**\n\nConstruct the service client programmatically, where `{iam_api_key}` is your hardcoded IAM API key.\n\n```javascript\nconst CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');\nconst { IamAuthenticator } = require('@ibm-cloud/continuous-delivery/auth');\n\n// Create an IAM authenticator.\nconst authenticator = new IamAuthenticator({\n  apikey: '{iam_api_key}'\n});\n\n// Construct the service client.\nconst toolchainService = new CdToolchainV2({\n  authenticator,                                                    // required\n  serviceUrl: 'https://api.eu-de.devops.cloud.ibm.com/toolchain/v2' // optional\n});\n```\n\n**Setting client options through environment variables**\n\nExport environment variables to implement service client options, where `{service_url}` is an endpoint URL for the service and `{iam_api_key}` is an [IAM API key](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nexport CD_TOOLCHAIN_AUTH_TYPE=iam\nexport CD_TOOLCHAIN_APIKEY={iam_api_key}\nexport CD_TOOLCHAIN_URL={service_url}\n```\n\nConstruct the service client using external configuration. `CdToolchainV2.newInstance()` initializes the client with the environment variables, using them for subsequent authentication.\n\n```javascript\nconst CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');\nconst toolchainService = CdToolchainV2.newInstance();\n```\n\n**Setting client options through a credentials file**\n\nStore credentials in a file such as `my-credentials.env`, where `{service_url}` is an endpoint URL\nfor the service and `{iam_api_key}` is an IAM [API\nkey](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nCD_TOOLCHAIN_AUTH_TYPE=iam\nCD_TOOLCHAIN_APIKEY={iam_api_key}\nCD_TOOLCHAIN_URL={service_url}\n```\n\nExport the name of the file with an environment variable, where `{credential_file_path}` is the\nabsolute path to your credentials file, such as `\"$HOME/secrets/my-credentials.env\"`.\n\n```bash\nexport IBM_CREDENTIALS_FILE={credential_file_path}\n```\n\nConstruct the service client using external configuration. `CdToolchainV2.newInstance()` initializes with\nthe defined credential file, using it for subsequent authentication.\n\n```javascript\nconst CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');\nconst toolchainService = CdToolchainV2.newInstance();\n```\n\n**Setting client options programmatically**\n\nConstruct the service client programmatically, where `{iam_api_key}` is your hardcoded IAM API key.\n\n```python\nfrom ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2\nfrom ibm_cloud_sdk_core.authenticators import IAMAuthenticator\n\n## Create an IAM authenticator.\nauthenticator = IAMAuthenticator('{iam_api_key}')\n## Construct the service client.\nservice = CdToolchainV2(authenticator=authenticator)\n## Set custom service URL (optional)\nservice.set_service_url('https://api.eu-de.devops.cloud.ibm.com/toolchain/v2')\n```\n\n**Setting client options through environment variables**\n\nExport environment variables to implement service client options, where `{service_url}` is an endpoint URL for the service and `{iam_api_key}` is an [IAM API key](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nexport CD_TOOLCHAIN_AUTH_TYPE=iam\nexport CD_TOOLCHAIN_APIKEY={iam_api_key}\nexport CD_TOOLCHAIN_URL={service_url}\n```\n\nConstruct the service client using external configuration. `CdToolchainV2.new_instance()` initializes the client with the environment variables, using them for subsequent authentication.\n\n```python\nfrom ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2\nservice = CdToolchainV2.new_instance()\n```\n\n**Setting client options through a credentials file**\n\nStore credentials in a file such as `my-credentials.env`, where `{service_url}` is an endpoint URL\nfor the service and `{iam_api_key}` is an IAM [API key](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nCD_TOOLCHAIN_AUTH_TYPE=iam\nCD_TOOLCHAIN_APIKEY={iam_api_key}\nCD_TOOLCHAIN_URL={service_url}\n```\n\nExport the name of the file with an environment variable, where `{credential_file_path}` is the\nabsolute path to your credentials file, such as `\"$HOME/secrets/my-credentials.env\"`.\n\n```bash\nexport IBM_CREDENTIALS_FILE={credential_file_path}\n```\n\nConstruct the service client using external configuration. `CdToolchainV2.new_instance()` initializes with\nthe defined credential file, using it for subsequent authentication.\n\n```python\nfrom ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2\nservice = CdToolchainV2.new_instance()\n```\n\n**Setting client options programmatically**\n\nConstruct the service client programmatically, where `{iam_api_key}` is your hardcoded IAM API key.\n\n```java\nimport com.ibm.cloud.continuous_delivery.cd_toolchain.v2;\nimport com.ibm.cloud.sdk.core.security.Authenticator;\nimport com.ibm.cloud.sdk.core.security.IamAuthenticator;\n// Create an IAM authenticator\nAuthenticator authenticator = new IamAuthenticator.Builder()\n  .apikey(\"{api_key}\")\n  .build();\n// Construct the service client\nCdToolchain service = new CdToolchain(CdToolchain.DEFAULT_SERVICE_NAME, authenticator);\n```\n\n**Setting client options through environment variables**\n\nExport environment variables to implement service client options, where `{service_url}` is an endpoint URL for the service and `{iam_api_key}` is an [IAM API key](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nexport CD_TOOLCHAIN_AUTH_TYPE=iam\nexport CD_TOOLCHAIN_APIKEY={iam_api_key}\nexport CD_TOOLCHAIN_URL={service_url}\n```\n\nConstruct the service client using external configuration. `CdToolchain.newInstance()` initializes the client with the environment variables, using them for subsequent authentication.\n\n```java\nimport com.ibm.cloud.continuous_delivery.cd_toolchain.v2;\nCdToolchain service = CdToolchainV2.newInstance()\n```\n\n**Setting client options through a credentials file**\n\nStore credentials in a file such as `my-credentials.env`, where `{service_url}` is an endpoint URL\nfor the service and `{iam_api_key}` is an IAM [API key](https://cloud.ibm.com/iam/apikeys).\n\n```bash\nCD_TOOLCHAIN_AUTH_TYPE=iam\nCD_TOOLCHAIN_APIKEY={iam_api_key}\nCD_TOOLCHAIN_URL={service_url}\n```\n\nExport the name of the file with an environment variable, where `{credential_file_path}` is the\nabsolute path to your credentials file, such as `\"$HOME/secrets/my-credentials.env\"`.\n\n```bash\nexport IBM_CREDENTIALS_FILE={credential_file_path}\n```\n\nConstruct the service client using external configuration. `CdToolchain.newInstance()` initializes with\nthe defined credential file, using it for subsequent authentication.\n\n```java\nimport com.ibm.cloud.continuous_delivery.cd_toolchain.v2;\nCdToolchain service = CdToolchainV2.newInstance()\n```\n\n## Error handling\n\nThe toolchain API 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 indicates a failure, and a response in the 5xx range typically indicates an internal system error that cannot be resolved by the user. The following tables show the response codes and methods.\n\n**ErrorResponse**\n| Name                         | Description                                                             |\n|------------------------------|-------------------------------------------------------------------------|\n| **status_code**  \\n integer | The HTTP response code.                                                 |\n| **trace**  \\n string         | The unique ID that is used to trace an error.                                          |\n| **errors**  \\n ErrorDetail[] | The collection of error details that is encountered in the request.                 |\n\n**ErrorDetail**\n| Name                   | Description                                     |\n|------------------------|-------------------------------------------------|\n| **code**  \\n string    | An indicator that describes a specific error.       |\n| **message**  \\n string | The short description of a specific error.          |\n\n## Versioning\n\nAll toolchain API requests are prefixed with a segment that represents the API version. The latest version of the toolchain API is `v2`. The versions of individual components of Continuous Delivery, such as `toolchain` and `pipeline`, may change independently of each other.\n\n## Pagination\n\nSome API requests may return multiple results. To avoid performance problems, these results are returned one page at a time, with a limited number of results in each page. `GET` requests for the following resources use pagination:\n* `/toolchains`\n* `/toolchains/{toolchain_id}/tools`\n\nThe fields `first`, `previous`, `next`, and `last` are included in the collection response as needed, depending on the number of the results. The `href` property for these fields contains a URL reference to the appropriate page of results from the collection resource.\n\nThe default page size is 20 items, and the maximum size is 200 toolchains and 150 tools. To control the page size, use the `limit` query parameter.\n\nToken based pagination is used to traverse through the pages. The `start` query parameter, which corresponds to a pagination token, can be used to traverse to a specific section in the collection. The response will return results from the beginning of the collection and will provide the appropriate `start` values to traverse through the rest of the collection.\n\nA `total_count` is also included in the response, indicating how many results exist in the collection.\n\n## Rate limiting\n\nRate limits for API requests are enforced on this service. If the number of requests reaches the request limit within the specified time window, no further requests are accepted until after the time window. Clients that are blocked by rate limited should wait and try the request again later.\n\nAn HTTP status code of 429 indicates that the rate limit has been exceeded.\n\n## Related APIs\n\n* [Tekton Pipeline](https://cloud.ibm.com/apidocs/tekton-pipeline)",
    "version": "2.0.0",
    "x-codegen-config": {
      "improvedNameFormattingV2": true,
      "go": {
        "apiPackage": "github.com/IBM/continuous-delivery-go-sdk/v2"
      },
      "python": {
        "apiPackage": "ibm_continuous_delivery"
      },
      "terraform": {
        "apiEndpoint": "IBMCLOUD_TOOLCHAIN_ENDPOINT"
      },
      "java": {
        "apiPackage": "com.ibm.cloud.continuous_delivery"
      },
      "cli": {
        "apiPackage": "cli-continuous-delivery-plugin",
        "cliPluginName": "continuous-delivery"
      }
    },
    "x-github": "https://github.ibm.com/cloud-api-docs/toolchain",
    "x-github-issues": "https://github.ibm.com/cloud-api-docs/toolchain/issues/new",
    "x-last-updated": "2026-04-30"
  },
  "servers": [
    {
      "url": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the us-south region",
      "x-ibm-region": "us-south"
    },
    {
      "url": "https://api.us-east.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the us-east region",
      "x-ibm-region": "us-east"
    },
    {
      "url": "https://api.eu-de.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the eu-de region",
      "x-ibm-region": "eu-de"
    },
    {
      "url": "https://api.eu-gb.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the eu-gb region",
      "x-ibm-region": "eu-gb"
    },
    {
      "url": "https://api.jp-tok.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the jp-tok region",
      "x-ibm-region": "jp-tok"
    },
    {
      "url": "https://api.au-syd.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the au-syd region",
      "x-ibm-region": "au-syd"
    },
    {
      "url": "https://api.ca-tor.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the ca-tor region",
      "x-ibm-region": "ca-tor"
    },
    {
      "url": "https://api.ca-mon.devops.cloud.ibm.com/toolchain/v2",
      "description": "Montreal (ca-mon) is a limited availability region and not generally available. The toolchain API endpoint in the ca-mon region.",
      "x-ibm-region": "ca-mon"
    },
    {
      "url": "https://api.br-sao.devops.cloud.ibm.com/toolchain/v2",
      "description": "The toolchain API endpoint in the br-sao region",
      "x-ibm-region": "br-sao"
    }
  ],
  "tags": [
    {
      "name": "Toolchains",
      "description": "Endpoints for interacting with toolchains"
    },
    {
      "name": "Tools",
      "description": "Endpoints for interacting with tools"
    }
  ],
  "paths": {
    "/toolchains": {
      "get": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Get a list of toolchains",
        "description": "Returns a list of toolchains that the caller is authorized to access and that meets the provided query parameters.",
        "operationId": "list_toolchains",
        "parameters": [
          {
            "name": "resource_group_id",
            "in": "query",
            "description": "The resource group ID where the toolchains exist",
            "required": true,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceGroupIdParam"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/LimitParam"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "Pagination token",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/StartParam"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Exact name of toolchain to look up. This parameter is case sensitive",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/NameParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainCollection"
                }
              }
            }
          },
          "400": {
            "description": "Missing toolchain parameters or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Resource group with the provided ID is not found or accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.retrieve"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example GET toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X GET --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --get --data \"resource_group_id={resource_group_id}\" --data \"limit={limit}\" \\\n",
                      "  \"{base_url}/toolchains\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example GET toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listToolchainsOptions := toolchainClient.NewListToolchainsOptions(resourceGroupId)\n",
                      "listToolchainsOptions.SetLimit(limit)\n\n",
                      "toolchains, response, err := toolchainClient.ListToolchains(listToolchainsOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example GET toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.listToolchains({\n",
                      "    resourceGroupId: resourceGroupId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example GET toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.list_toolchains(\n",
                      "    resource_group_id = resource_group_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example GET toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListToolchainsOptions listToolchainsOptions = new ListToolchainsOptions.Builder()\n",
                      "    .resourceGroupId(resourceGroupId)\n",
                      "    .build();\n",
                      "Response<ToolchainCollection> listToolchainsResponse = service.listToolchains(listToolchainsOptions).execute();\n",
                      "ToolchainCollection toolchainCollection = listToolchainsResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "post": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Create a toolchain",
        "description": "Creates a new toolchain based off the provided parameters in the body",
        "operationId": "create_toolchain",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolchainPrototype"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Toolchain successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainPost"
                }
              }
            },
            "links": {
              "toolchainId": {
                "$ref": "#/components/links/toolchainId"
              }
            }
          },
          "400": {
            "description": "Missing required toolchain properties, or reached the maximum number of toolchains allowed in the resource group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.instance.create"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.create"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example POST toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X POST --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --header \"Content-Type: application/json\" \\\n",
                      "  --data '{ \"name\": \"{toolchain_name}\", \"resource_group_id\": \"{resource_group_id}\", \"description\": \"{toolchain_description}\" }' \\\n",
                      "  \"{base_url}/toolchains\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example POST toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createToolchainOptions := toolchainClient.NewCreateToolchainOptions(toolchainName, resourceGroupId)\n",
                      "createToolchainOptions.SetDescription(toolchainDescription)\n\n",
                      "toolchain, response, err := toolchainClient.CreateToolchain(createToolchainOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example POST toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const toolchainPrototypeModel = {\n",
                      "    description: toolchainDescription,\n",
                      "    name: toolchainName,\n",
                      "    resourceGroupId: resourceGroupId\n",
                      "};\n\n",
                      "const response = await toolchainService.createToolchain(toolchainPrototypeModel);"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example POST toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.create_toolchain(\n",
                      "    description = description,\n",
                      "    name = name,\n",
                      "    resource_group_id = resource_group_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example POST toolchains request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "CreateToolchainOptions createToolchainOptions = new CreateToolchainOptions.Builder()\n",
                      "    .description(description)\n",
                      "    .name(name)\n",
                      "    .resourceGroupId(resourceGroupId)\n",
                      "    .build();\n",
                      "Response<ToolchainPost> createToolchainResponse = service.createToolchain(createToolchainOptions).execute();\n",
                      "ToolchainPost createdToolchain = createToolchainResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/toolchains/{toolchain_id}": {
      "get": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Get a toolchain",
        "description": "Returns data for a single toolchain identified by its ID",
        "operationId": "get_toolchain_by_id",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Toolchain"
                }
              }
            }
          },
          "400": {
            "description": "Missing toolchain parameters or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Toolchain with the provided ID was not found or is not accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.retrieve"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example GET toolchain by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X GET --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example GET toolchain by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getToolchainByIDOptions := toolchainClient.NewGetToolchainByIDOptions(toolchainId)\n\n",
                      "toolchain, response, err := toolchainClient.GetToolchainByID(getToolchainByIDOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example GET toolchain by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.getToolchainById({\n",
                      "    toolchainId: toolchainId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example GET toolchain by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.get_toolchain_by_id(\n",
                      "    toolchain_id = toolchain_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example GET toolchain by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetToolchainByIdOptions getToolchainByIdOptions = new GetToolchainByIdOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .build();\n",
                      "Response<Toolchain> getToolchainByIdResponse = service.getToolchainById(getToolchainByIdOptions).execute();\n",
                      "Toolchain toolchain = getToolchainByIdResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Delete a toolchain",
        "description": "Delete the toolchain with the specified ID",
        "operationId": "delete_toolchain",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          }
        ],
        "responses": {
          "204": {
            "description": "Toolchain successfully deleted"
          },
          "400": {
            "description": "Missing or invalid path parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Toolchain with the provided ID was not found or is not accessible, or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.instance.delete"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.delete"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example DELETE toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X DELETE --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example DELETE toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteToolchainOptions := toolchainClient.NewDeleteToolchainOptions(toolchainId)\n\n",
                      "response, err := toolchainClient.DeleteToolchain(deleteToolchainOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example DELETE toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.deleteToolchain({\n",
                      "    toolchainId: toolchainId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example DELETE toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.delete_toolchain(\n",
                      "    toolchain_id = toolchain_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example DELETE toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteToolchainOptions deleteToolchainOptions = new DeleteToolchainOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .build();\n",
                      "Response<Void> deleteToolchainResponse = service.deleteToolchain(deleteToolchainOptions).execute();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "patch": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Update a toolchain",
        "description": "Update the toolchain with the specified ID",
        "operationId": "update_toolchain",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          }
        ],
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ToolchainPrototypePatch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Toolchain successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainPatch"
                }
              }
            }
          },
          "400": {
            "description": "Missing toolchain parameters or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "403": {
            "description": "Not authorized to modify the toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorForbidden"
                }
              }
            }
          },
          "404": {
            "description": "Toolchain with the provided ID was not found or is not accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.instance.update"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.update"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example PATCH toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X PATCH --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --header \"Content-Type: application/merge-patch+json\" \\\n",
                      "  --data '{ \"name\": \"{new_toolchain_name}\", \"description\": \"{new_toolchain_description}\" }' \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example PATCH toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "toolchainPatchModel := map[string]interface{}{\n",
                      "    \"name\": newToolchainName,\n",
                      "    \"description\": newToolchainDescription,\n",
                      "}\n",
                      "updateToolchainOptions := toolchainClient.NewUpdateToolchainOptions(toolchainId, toolchainPatchModel)\n",
                      "toolchain, response, err := toolchainClient.UpdateToolchain(updateToolchainOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example PATCH toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const toolchainPatchModel = {\n",
                      "    description: toolchainDescription,\n",
                      "    name: toolchainName\n",
                      "};\n\n",
                      "const response = await toolchainService.updateToolchain(toolchainPatchModel);"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example PATCH toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "toolchain_prototype_patch = {}\n",
                      "toolchain_prototype_patch[\"description\"] = updated_description\n",
                      "toolchain_prototype_patch[\"name\"] = updated_name\n\n",
                      "response = toolchain_service.update_toolchain(\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    toolchain_prototype_patch = toolchain_prototype_patch,\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example PATCH toolchain request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "HashMap<String, Object> toolchainPrototypePatch = new HashMap<>();\n",
                      "toolchainPrototypePatch.put(\"name\", toolchainName);\n",
                      "toolchainPrototypePatch.put(\"description\", toolchainDescription);\n",
                      "UpdateToolchainOptions updateToolchainOptions = new UpdateToolchainOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .toolchainPrototypePatch(toolchainPrototypePatch)\n",
                      "    .build();\n",
                      "Response<ToolchainPatch> toolchainPatchResponse = service.updateToolchain(updateToolchainOptions).execute();\n",
                      "ToolchainPatch updatedToolchain = toolchainPatchResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/toolchains/{toolchain_id}/events": {
      "post": {
        "tags": [
          "Toolchains"
        ],
        "summary": "Create a toolchain event",
        "description": "Creates and sends a custom event to each Event Notifications instance configured as a tool in the toolchain. This operation will fail if no Event Notifications instances are configured in the toolchain.",
        "operationId": "create_toolchain_event",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain to send events from",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolchainEventPrototype"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Request acknowledged and successfully processed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainEventPost"
                }
              }
            }
          },
          "400": {
            "description": "Missing or incorrect required toolchain event properties",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "403": {
            "description": "Unauthorized to send events from toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorForbidden"
                }
              }
            }
          },
          "404": {
            "description": "Toolchain with provided ID was not found or is not accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "413": {
            "description": "Exceeded maximum allowed size for the event payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorExceededMaxPayload"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests have been made within a given time window",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorTooManyRequests"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.event.send"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "toolchain.event.send"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example POST toolchain event request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X POST --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --header \"Content-Type: application/json\" \\\n",
                      "  --data '{ \"title\": \"My event title\", \"description\": \"My event description\", \"content_type\": \"text/plain\", \"data\": { \"text_plain\": \"My event details\" } }' \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/events\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example POST toolchain event request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createToolchainEventOptions := toolchainClient.NewCreateToolchainEventOptions(toolchainId, eventTitle, eventDescription, \"text/plain\")\n",
                      "eventDetails := \"My event details\"\n",
                      "createToolchainEventOptions.SetData(&cdtoolchainv2.ToolchainEventPrototypeData{ TextPlain: &eventDetails })\n\n",
                      "event, response, err := toolchainClient.CreateToolchainEvent(createToolchainEventOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example POST toolchain event request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.createToolchainEvent({\n",
                      "    toolchainId: toolchainId,\n",
                      "    title: eventTitle,\n",
                      "    description: eventDescription,\n",
                      "    contentType: \"text/plain\",\n",
                      "    data: {\n",
                      "        text_plain: eventDetails\n",
                      "    }\n",
                      "})"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example POST toolchain event request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.create_toolchain_event(\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    title = event_title,\n",
                      "    description = event_description,\n",
                      "    content_type = \"text/plain\",\n",
                      "    data = {\n",
                      "        \"text_plain\": event_details\n",
                      "    }\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example POST toolchain event request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ToolchainEventPrototypeData eventDetails = new ToolchainEventPrototypeData.Builder()\n",
                      "    .textPlain(\"My event details\")\n",
                      "    .build();\n",
                      "CreateToolchainEventOptions createToolchainEventOptions = new CreateToolchainEventOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .title(eventTitle)\n",
                      "    .description(eventDescription)\n",
                      "    .contentType(\"text/plain\")\n",
                      "    .data(eventDetails)\n",
                      "    .build();\n",
                      "Response<ToolchainEventPost> createToolchainEventResponse = service.createToolchainEvent(createToolchainEventOptions).execute();\n",
                      "ToolchainEventPost createdEvent = createToolchainEventResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/toolchains/{toolchain_id}/tools": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of tools bound to a toolchain",
        "description": "Returns a list of tools bound to a toolchain that the caller is authorized to access and that meet the provided query parameters",
        "operationId": "list_tools",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain that tools are bound to",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the number of results",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/LimitParam_1"
            }
          },
          {
            "name": "start",
            "in": "query",
            "description": "Pagination token",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/StartParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainToolCollection"
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid path or required query parameters, or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Resource group with provided ID was not found or is not accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.tool-instance.read"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.retrieve"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example GET tools request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X GET --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --get --data \"limit={limit}\" \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/tools\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example GET tools request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "listToolsOptions := toolchainClient.NewListToolsOptions(toolchainId)\n",
                      "listToolsOptions.SetLimit(limit)\n\n",
                      "tools, response, err := toolchainClient.ListTools(listToolsOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example GET tools request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.listTools({\n",
                      "    toolchainId: toolchainId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example GET tools request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.list_tools(\n",
                      "    toolchain_id = toolchain_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example GET tools request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "ListToolsOptions listToolsOptions = new ListToolsOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .build();\n",
                      "Response<ToolchainToolCollection> listToolsResponse = service.listTools(listToolsOptions).execute();\n",
                      "ToolchainToolCollection toolCollection = listToolsResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "post": {
        "tags": [
          "Tools"
        ],
        "summary": "Create a tool",
        "description": "Provisions a new tool based off the provided parameters in the body and binds it to the specified toolchain",
        "operationId": "create_tool",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain to bind the tool to",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolchainToolPrototype"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Tool successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainToolPost"
                }
              }
            },
            "links": {
              "toolId": {
                "$ref": "#/components/links/toolId"
              }
            }
          },
          "400": {
            "description": "Missing required tool properties, or reached the maximum number of tools allowed in toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.tool-instance.create"
            },
            {
              "name": "toolchain.tool-instance.deploy"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "toolchain.instance.create-bindings"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example POST tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X POST --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --header \"Content-Type: application/json\" \\\n",
                      "  --data '{ \"name\": \"{tool_name}\", \"tool_type_id\": \"{tool_type_id}\", \"parameters\": {json_parameters_object} }' \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/tools\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example POST tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "createToolOptions := toolchainClient.NewCreateToolOptions(toolchainId, toolTypeId)\n",
                      "createToolOptions.SetName(toolName)\n",
                      "createToolOptions.SetParameters(toolParameters)\n\n",
                      "tool, response, err := toolchainClient.CreateTool(createToolOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example POST tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const toolParameters = {};\n\n",
                      "const toolPrototypeModel = {\n",
                      "    toolchainId: toolchainId,\n",
                      "    toolTypeId: toolTypeId,\n",
                      "    name: toolName,\n",
                      "    parameters: toolParameters\n",
                      "};\n\n",
                      "const response = await toolchainService.createTool(toolPrototypeModel);"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example POST tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "tool_parameters = {}\n\n",
                      "response = toolchain_service.create_tool(\n",
                      "    name = name,\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    tool_type_id = tool_type_id,\n",
                      "    parameters = tool_parameters\n",
                      ")\n"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example POST tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "HashMap<String, Object> toolParameters = new HashMap<>();\n",
                      "CreateToolOptions createToolOptions = new CreateToolOptions.Builder()\n",
                      "    .name(name)\n",
                      "    .parameters(toolParameters)\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .toolTypeId(toolTypeId)\n",
                      "    .build();\n",
                      "Response<ToolchainToolPost> createToolResponse = service.createTool(createToolOptions).execute();\n",
                      "ToolchainToolPost createdTool = createToolResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    },
    "/toolchains/{toolchain_id}/tools/{tool_id}": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a tool",
        "description": "Returns a tool that is bound to the provided toolchain",
        "operationId": "get_tool_by_id",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          },
          {
            "name": "tool_id",
            "in": "path",
            "description": "ID of the tool bound to the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/tool_id"
            },
            "x-linkback": "#/components/links/toolId"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainTool"
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid path parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Tool with provided ID was not found or is not accessible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.tool-instance.read"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.retrieve"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example GET tool by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X GET --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/tools/{tool_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example GET tool by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "getToolByIDOptions := toolchainClient.NewGetToolByIDOptions(toolchainId, toolId)\n\n",
                      "tool, response, err := toolchainClient.GetToolByID(getToolByIDOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example GET tool by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.getToolById({\n",
                      "    toolchainId: toolchainId,\n",
                      "    toolId: toolId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example GET tool by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.get_tool_by_id(\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    tool_id = tool_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example GET tool by ID request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "GetToolByIdOptions getToolByIdOptions = new GetToolByIdOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .toolId(toolId);\n",
                      "    .build();\n",
                      "Response<ToolchainTool> getToolByIdResponse = service.getToolById(getToolByIdOptions).execute();\n",
                      "ToolchainTool tool = getToolByIdResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "delete": {
        "tags": [
          "Tools"
        ],
        "summary": "Delete a tool",
        "description": "Delete the tool with the specified ID",
        "operationId": "delete_tool",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          },
          {
            "name": "tool_id",
            "in": "path",
            "description": "ID of the tool bound to the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/tool_id"
            },
            "x-linkback": "#/components/links/toolId"
          }
        ],
        "responses": {
          "204": {
            "description": "Tool successfully deleted"
          },
          "400": {
            "description": "Missing or invalid path parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "Tool with the provided ID was not found or is not accessible, or unsupported toolchain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.tool-instance.delete"
            },
            {
              "name": "toolchain.tool-instance.undeploy"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "toolchain.instance.delete-bindings"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example DELETE tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X DELETE --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/tools/{tool_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example DELETE tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "deleteToolOptions := toolchainClient.NewDeleteToolOptions(toolchainId, toolId)\n\n",
                      "response, err := toolchainClient.DeleteTool(deleteToolOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example DELETE tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const response = await toolchainService.deleteTool({\n",
                      "    toolchainId: toolchainId,\n",
                      "    toolId: toolId\n",
                      "});"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example DELETE tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "response = toolchain_service.delete_tool(\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    tool_id = tool_id\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example DELETE tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "DeleteToolOptions deleteToolOptions = new DeleteToolOptions.Builder()\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .toolId(toolId)\n",
                      "    .build();\n",
                      "Response<Void> deleteToolResponse = service.deleteTool(deleteToolOptions).execute();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      },
      "patch": {
        "tags": [
          "Tools"
        ],
        "summary": "Update a tool",
        "description": "Update the tool with the specified ID",
        "operationId": "update_tool",
        "parameters": [
          {
            "name": "toolchain_id",
            "in": "path",
            "description": "ID of the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/toolchain_id"
            },
            "x-linkback": "#/components/links/toolchainId"
          },
          {
            "name": "tool_id",
            "in": "path",
            "description": "ID of the tool bound to the toolchain",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/tool_id"
            },
            "x-linkback": "#/components/links/toolId"
          }
        ],
        "requestBody": {
          "content": {
            "application/merge-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ToolchainToolPrototypePatch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tool successfully updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolchainToolPatch"
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid path parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Invalid authentication credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "403": {
            "description": "Not authorized to modify the tool",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorForbidden"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting tool type IDs in the body and the target tool",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorConflict"
                }
              }
            }
          },
          "500": {
            "description": "Internal system error encountered",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInternalServer"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "x-ibm-events": {
          "events": [
            {
              "name": "toolchain.tool-instance.update"
            }
          ]
        },
        "x-ibm-permissions": {
          "actions": [
            {
              "name": "resource-controller.instance.update"
            }
          ]
        },
        "x-sdk-operations": {
          "request-examples": {
            "curl": [
              {
                "name": "Example PATCH tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "curl -X PATCH --location --header \"Authorization: Bearer {iam_token}\" \\\n",
                      "  --header \"Accept: application/json\" \\\n",
                      "  --header \"Content-Type: application/merge-patch+json\" \\\n",
                      "  --data '{ \"name\": \"{new_tool_name}\", \"parameters\": {new_json_parameters_object} }' \\\n",
                      "  \"{base_url}/toolchains/{toolchain_id}/tools/{tool_id}\""
                    ]
                  }
                ]
              }
            ],
            "go": [
              {
                "name": "Example PATCH tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "toolPatchModel := map[string]interfact{}{\n",
                      "    \"name\": \"newToolName\",\n",
                      "    \"parameters\": \"newToolParameters\",\n",
                      "}\n",
                      "updateToolOptions := toolchainClient.NewUpdateToolOptions(toolchainId, toolId, toolPatchModel)\n",
                      "tool, response, err := toolchainClient.UpdateTool(updateToolOptions)"
                    ]
                  }
                ]
              }
            ],
            "node": [
              {
                "name": "Example PATCH tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "const newToolParameters = {};\n\n",
                      "const toolPatchModel = {\n",
                      "    toolchainId: toolchainId,\n",
                      "    toolId: toolId,\n",
                      "    name: newToolName,\n",
                      "    parameters: newToolParameters\n",
                      "};\n\n",
                      "const response = await toolchainService.updateTool(toolPatchModel);"
                    ]
                  }
                ]
              }
            ],
            "python": [
              {
                "name": "Example PATCH tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "updated_tool_parameters = {}\n\n",
                      "tool_prototype_patch = {}\n",
                      "tool_prototype_patch[\"name\"] = updated_name\n",
                      "tool_prototype_patch[\"parameters\"] = updated_tool_parameters\n\n",
                      "response = toolchain_service.update_tool(\n",
                      "    toolchain_id = toolchain_id,\n",
                      "    tool_id = tool_id,\n",
                      "    toolchain_tool_prototype_patch = tool_prototype_patch\n",
                      ")"
                    ]
                  }
                ]
              }
            ],
            "java": [
              {
                "name": "Example PATCH tool request",
                "example": [
                  {
                    "type": "code",
                    "source": [
                      "HashMap<String, Object> toolPrototypePatch = new HashMap<>();\n",
                      "toolPrototypePatch.put(\"name\", toolName);\n",
                      "toolPrototypePatch.put(\"parameters\", toolParameters);\n",
                      "UpdateToolOptions updateToolOptions = new UpdateToolOptions.Builder()\n",
                      "    .toolId(toolId)\n",
                      "    .toolchainId(toolchainId)\n",
                      "    .toolchainToolPrototypePatch(toolPrototypePatch)\n",
                      "    .build();\n",
                      "Response<ToolchainToolPatch> updateToolResponse = service.updateTool(updateToolOptions).execute();\n",
                      "ToolchainToolPatch updatedTool = updateToolResponse.getResult();"
                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ResourceGroupIdParam": {
        "maxLength": 32,
        "minLength": 32,
        "pattern": "^[0-9a-f]{32}$",
        "type": "string",
        "description": "Filters the result list to only include toolchains with the specified resource group ID.",
        "example": "6a9a01f2cff54a7f966f803d92877123"
      },
      "LimitParam": {
        "maximum": 200,
        "minimum": 1,
        "type": "integer",
        "description": "Limit the number of results",
        "default": 20
      },
      "StartParam": {
        "maxLength": 100,
        "minLength": 0,
        "pattern": "^([a-zA-Z0-9+=/])+$",
        "type": "string",
        "description": "Pagination token"
      },
      "NameParam": {
        "maxLength": 128,
        "minLength": 0,
        "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
        "type": "string",
        "description": "Exact name of toolchain to look up. This parameter is case sensitive",
        "example": "TestToolchainV2"
      },
      "ToolchainCollection": {
        "required": [
          "first",
          "last",
          "limit",
          "total_count"
        ],
        "type": "object",
        "properties": {
          "total_count": {
            "type": "integer",
            "description": "Total number of toolchains found in collection",
            "x-terraform-exclude": true
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of toolchains returned from collection",
            "x-terraform-exclude": true
          },
          "first": {
            "$ref": "#/components/schemas/ToolchainCollectionFirst"
          },
          "previous": {
            "$ref": "#/components/schemas/ToolchainCollectionPrevious"
          },
          "next": {
            "$ref": "#/components/schemas/ToolchainCollectionNext"
          },
          "last": {
            "$ref": "#/components/schemas/ToolchainCollectionLast"
          },
          "toolchains": {
            "maxItems": 200,
            "minItems": 0,
            "type": "array",
            "description": "Toolchain results returned from the collection",
            "items": {
              "$ref": "#/components/schemas/ToolchainModel"
            }
          }
        },
        "description": "Response structure for GET toolchains",
        "example": {
          "limit": 3,
          "total_count": 12,
          "first": {
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3"
          },
          "next": {
            "start": "eyJ0b29sY2hhaW5fZ3VpZCI6ImVhZGVmNGYzLThlMzktNDY2OS04NmY0LWU1NTA1MWExMjMzOCJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6ImVhZGVmNGYzLThlMzktNDY2OS04NmY0LWU1NTA1MWExMjMzOCJ9"
          },
          "previous": {
            "start": "eyJ0b29sY2hhaW5fZ3VpZCI6IjA4NDFlYTMxLTEzMDMtNDJiZC1hYmMyLTQzMjYzZDg0YmU0OSJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6IjA4NDFlYTMxLTEzMDMtNDJiZC1hYmMyLTQzMjYzZDg0YmU0OSJ9"
          },
          "last": {
            "start": "eyJ0b29sY2hhaW5fZ3VpZCI6ImYxNTI3ZjkyLTQyOTAtNGUzZi1iMmIzLTc3ODg5YTE0NDkzOCJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6ImYxNTI3ZjkyLTQyOTAtNGUzZi1iMmIzLTc3ODg5YTE0NDkzOCJ9"
          },
          "toolchains": [
            {
              "id": "62935028-0202-48fe-b877-7e99c817b856",
              "name": "TestToolchainV2-2",
              "description": "A second sample toolchain",
              "account_id": "f2337426699b4041bc50f1d45042f777",
              "location": "us-south",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:62935028-0202-48fe-b877-7e99c817b856::",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/62935028-0202-48fe-b877-7e99c817b856",
              "created_at": "2021-05-05T17:07:09.354Z",
              "updated_at": "2022-01-01T13:13:07.968Z",
              "created_by": "IBMid-123456AB7C"
            },
            {
              "id": "a8334cb6-87a2-4308-8bf0-681f7b418f37",
              "name": "TestToolchainV2-3",
              "description": "A third sample toolchain",
              "account_id": "f2337426699b4041bc50f1d45042f777",
              "location": "us-south",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:a8334cb6-87a2-4308-8bf0-681f7b418f37::",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/a8334cb6-87a2-4308-8bf0-681f7b418f37",
              "created_at": "2021-05-05T17:07:09.354Z",
              "updated_at": "2022-01-01T13:13:07.968Z",
              "created_by": "IBMid-123456AB7C"
            },
            {
              "id": "eadef4f3-8e39-4669-86f4-e55051a12338",
              "name": "TestToolchainV2-1",
              "description": "A sample toolchain",
              "account_id": "f2337426699b4041bc50f1d45042f777",
              "location": "us-south",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:eadef4f3-8e39-4669-86f4-e55051a12338::",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/eadef4f3-8e39-4669-86f4-e55051a12338",
              "created_at": "2021-05-05T17:07:09.354Z",
              "updated_at": "2022-01-01T13:13:07.968Z",
              "created_by": "IBMid-123456AB7C"
            }
          ]
        },
        "x-data-source-name": "cd_toolchains",
        "x-data-source-collection": "toolchains"
      },
      "ToolchainCollectionFirst": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "URI that can be used to get first results from the collection"
          }
        },
        "description": "Information about retrieving first toolchain results from the collection",
        "example": {
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3"
        },
        "x-terraform-exclude": true
      },
      "ToolchainCollectionPrevious": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be set as the 'start' query parameter to get the previous set of toolchain collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get previous results from the collection"
          }
        },
        "description": "Information about retrieving previous toolchain results from the collection",
        "example": {
          "start": "eyJ0b29sY2hhaW5fZ3VpZCI6IjA4NDFlYTMxLTEzMDMtNDJiZC1hYmMyLTQzMjYzZDg0YmU0OSJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6IjA4NDFlYTMxLTEzMDMtNDJiZC1hYmMyLTQzMjYzZDg0YmU0OSJ9"
        },
        "x-terraform-exclude": true
      },
      "ToolchainCollectionNext": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be set as the 'start' query parameter to get the next set of toolchain collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get next results from the collection"
          }
        },
        "description": "Information about retrieving next toolchain results from the collection",
        "example": {
          "start": "eyJ0b29sY2hhaW5fZ3VpZCI6ImVhZGVmNGYzLThlMzktNDY2OS04NmY0LWU1NTA1MWExMjMzOCJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6ImVhZGVmNGYzLThlMzktNDY2OS04NmY0LWU1NTA1MWExMjMzOCJ9"
        },
        "x-terraform-exclude": true
      },
      "ToolchainCollectionLast": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be set as the 'start' query parameter to get the last set of toolchain collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get last results from the collection"
          }
        },
        "description": "Information about retrieving last toolchain results from the collection",
        "example": {
          "start": "eyJ0b29sY2hhaW5fZ3VpZCI6ImYxNTI3ZjkyLTQyOTAtNGUzZi1iMmIzLTc3ODg5YTE0NDkzOCJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains?resource_group_id=6a9a01f2cff54a7f966f803d92877123&limit=3&start=eyJ0b29sY2hhaW5fZ3VpZCI6ImYxNTI3ZjkyLTQyOTAtNGUzZi1iMmIzLTc3ODg5YTE0NDkzOCJ9"
        },
        "x-terraform-exclude": true
      },
      "ErrorBadRequest": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              400
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 400,
          "errors": [
            {
              "code": "invalid_request",
              "message": "The request contained an invalid body or one or more invalid parameters"
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ErrorItem": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error code describing the error",
            "enum": [
              "invalid_request",
              "not_found_or_accessible",
              "conflict",
              "precondition_failed",
              "unknown"
            ]
          },
          "message": {
            "type": "string",
            "description": "Details about the origin of the error"
          },
          "more_info": {
            "type": "string",
            "description": "URL to learn more about the error"
          }
        },
        "example": {
          "code": "invalid_request",
          "message": "Descriptive message about error"
        }
      },
      "ErrorUnauthorized": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              401
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 401,
          "errors": [
            {
              "code": "authentication_error",
              "message": "An error occured during authentication. Try again in a few minutes."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ErrorNotFound": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              404
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 404,
          "errors": [
            {
              "code": "not_found_or_accessible",
              "message": "The requested resource was not found or is not accessible."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ErrorInternalServer": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              500
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 500,
          "errors": [
            {
              "code": "unknown",
              "message": "Oops! Something went wrong. The system might be experiencing problems. Try again in a few minutes."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ToolchainPrototype": {
        "required": [
          "name",
          "resource_group_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "Toolchain name",
            "example": "TestToolchainV2"
          },
          "description": {
            "maxLength": 500,
            "minLength": 0,
            "pattern": "^(.*?)$",
            "type": "string",
            "description": "Describes the toolchain",
            "example": "A sample toolchain to test the API"
          },
          "resource_group_id": {
            "maxLength": 32,
            "minLength": 32,
            "pattern": "^[0-9a-f]{32}$",
            "type": "string",
            "description": "Resource group where toolchain will be created",
            "example": "6a9a01f2cff54a7f966f803d92877123",
            "x-terraform-force-new": true
          }
        },
        "additionalProperties": false,
        "description": "Body structure for creating a toolchain."
      },
      "ToolchainPost": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolchainModel"
          },
          {
            "type": "object",
            "properties": {},
            "description": "Response structure for POST toolchain"
          }
        ]
      },
      "toolchain_id": {
        "$ref": "#/components/schemas/UuidV4"
      },
      "UuidV4": {
        "maxLength": 36,
        "minLength": 36,
        "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$",
        "type": "string"
      },
      "Toolchain": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolchainModel"
          },
          {
            "type": "object",
            "description": "Response structure for GET toolchains",
            "x-resource-name": "cd_toolchain",
            "x-resource-operations": {
              "create": "create_toolchain",
              "read": "get_toolchain_by_id",
              "delete": "delete_toolchain",
              "update": "update_toolchain"
            },
            "x-data-source-name": "cd_toolchain",
            "x-data-source-operations": {
              "read": "get_toolchain_by_id"
            }
          }
        ]
      },
      "ToolchainPrototypePatch": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "The name of the toolchain",
            "example": "newToolchainName"
          },
          "description": {
            "maxLength": 500,
            "minLength": 0,
            "pattern": "^(.*?)$",
            "type": "string",
            "description": "An optional description",
            "example": "New toolchain description"
          }
        },
        "additionalProperties": false,
        "description": "Body structure for the update toolchain PATCH request."
      },
      "ToolchainPatch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolchainModel"
          },
          {
            "type": "object",
            "properties": {},
            "description": "Response structure for PATCH toolchain",
            "example": {
              "id": "ec58a911-c217-4e56-a40b-93482cd18706",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:ec58a911-c217-4e56-a40b-93482cd18706::",
              "location": "us-south",
              "account_id": "f2337426699b4041bc50f1d45042f777",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/ec58a911-c217-4e56-a40b-93482cd18706",
              "name": "newToolchainName",
              "description": "New toolchain description",
              "created_at": "2021-05-05T17:07:09.354Z",
              "created_by": "IBMid-123456AB7C",
              "updated_at": "2022-01-01T13:13:07.968Z"
            }
          }
        ]
      },
      "ErrorForbidden": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              403
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 403,
          "errors": [
            {
              "code": "insufficient_permissions",
              "message": "You do not have the necessary permissions to complete this action. To request permissions for a resource group, contact the administrator of the resource or resource group."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ToolchainEventPrototype": {
        "required": [
          "content_type",
          "description",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 256,
            "minLength": 0,
            "pattern": "^(.*?)$",
            "type": "string",
            "description": "Event title",
            "example": "My-custom-event"
          },
          "description": {
            "maxLength": 1000,
            "minLength": 0,
            "pattern": "^(.*?)$",
            "type": "string",
            "description": "Describes the event",
            "example": "This is my custom event"
          },
          "content_type": {
            "type": "string",
            "description": "The content type of the attached data. Supported values are `text/plain`, `application/json`, and `none`",
            "example": "application/json",
            "enum": [
              "application/json",
              "text/plain",
              "none"
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ToolchainEventPrototypeData"
          }
        },
        "additionalProperties": false,
        "description": "Body structure for creating a toolchain event."
      },
      "ToolchainEventPrototypeData": {
        "type": "object",
        "properties": {
          "application_json": {
            "$ref": "#/components/schemas/ToolchainEventPrototypeData_application_json"
          },
          "text_plain": {
            "$ref": "#/components/schemas/TextPlainObject"
          }
        },
        "additionalProperties": false,
        "description": "Additional data to be added with the event. The format must correspond to the value of `content_type`."
      },
      "ToolchainEventPrototypeApplicationJsonContent": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "JSON-formatted key-value pairs representing any additional information to be included with the event. The payload is constrained to a maximum depth of 5, and keys that must satisfy the pattern ^[a-zA-Z0-9-_]+$",
        "example": {
          "customKey1": "myCustomData",
          "customKey2": 123,
          "customKey3": {
            "nestedKey": "moreData"
          }
        }
      },
      "TextPlainObject": {
        "required": [
          "content"
        ],
        "type": "object",
        "properties": {
          "content": {
            "maxLength": 10000,
            "minLength": 0,
            "pattern": "^([\\s\\S]*)$",
            "type": "string",
            "description": "The text data to send in the event.",
            "example": "This event is dispatched because the pipeline failed"
          }
        },
        "description": "Contains text data to be added with the event. `content_type` must be set to `text/plain`.",
        "example": {
          "content": "This event is dispatched because the pipeline failed"
        }
      },
      "ToolchainEventPost": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$",
            "type": "string",
            "description": "Event ID"
          }
        },
        "description": "Response structure for POST toolchain event",
        "example": {
          "id": "59ed5e54-93c0-4c24-964a-400c9fd4e7bb"
        }
      },
      "ErrorExceededMaxPayload": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              413
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 413,
          "errors": [
            {
              "code": "exceeded_max_payload",
              "message": "The request body exceeded the maximum size."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ErrorTooManyRequests": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              429
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 429,
          "errors": [
            {
              "code": "too_many_requests",
              "message": "Too many requests have been made within a given time window."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "LimitParam_1": {
        "maximum": 150,
        "minimum": 1,
        "type": "integer",
        "description": "Limit the number of results",
        "default": 20
      },
      "ToolchainToolCollection": {
        "required": [
          "first",
          "last",
          "limit",
          "tools",
          "total_count"
        ],
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum number of tools returned from collection"
          },
          "total_count": {
            "type": "integer",
            "description": "Total number of tools found in collection"
          },
          "first": {
            "$ref": "#/components/schemas/ToolchainToolCollectionFirst"
          },
          "previous": {
            "$ref": "#/components/schemas/ToolchainToolCollectionPrevious"
          },
          "next": {
            "$ref": "#/components/schemas/ToolchainToolCollectionNext"
          },
          "last": {
            "$ref": "#/components/schemas/ToolchainToolCollectionLast"
          },
          "tools": {
            "maxItems": 200,
            "minItems": 0,
            "type": "array",
            "description": "Tool results returned from the collection",
            "items": {
              "$ref": "#/components/schemas/ToolModel"
            }
          }
        },
        "description": "Response structure for GET tools",
        "example": {
          "limit": 3,
          "total_count": 12,
          "first": {
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3"
          },
          "previous": {
            "start": "eyJpbnN0YW5jZV9pZCI6IjEzODgxYTZkLWI1ZDktNDQwNi05MzFmLWM4NTc1NDc0MmQ1NSJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6IjEzODgxYTZkLWI1ZDktNDQwNi05MzFmLWM4NTc1NDc0MmQ1NSJ9"
          },
          "next": {
            "start": "eyJpbnN0YW5jZV9pZCI6IjlkZDBjNDc3LWYxNzMtNGMzZi1hN2NmLWQyNzAyNmFjZTM3OSJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6IjlkZDBjNDc3LWYxNzMtNGMzZi1hN2NmLWQyNzAyNmFjZTM3OSJ9"
          },
          "last": {
            "start": "eyJpbnN0YW5jZV9pZCI6ImQzYzkxMDYwLTcwOWMtNGZmZi1hODUwLTllZDFkZWMwMGYxYiJ9",
            "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6ImQzYzkxMDYwLTcwOWMtNGZmZi1hODUwLTllZDFkZWMwMGYxYiJ9"
          },
          "tools": [
            {
              "id": "2983b160-fc37-4c45-8a8f-e616ad7e470b",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e:tool:2983b160-fc37-4c45-8a8f-e616ad7e470b",
              "name": "MyTool-1",
              "toolchain_id": "d02d29f1-e7bb-4977-8a6f-26d7b7bb893e",
              "toolchain_crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e::",
              "tool_type_id": "slack",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools/2983b160-fc37-4c45-8a8f-e616ad7e470b",
              "referent": {
                "ui_href": "https://team-one.slack.com/messages/channel-one"
              },
              "updated_at": "2022-01-01T13:13:07.968Z",
              "parameters": {
                "label": "#channel-one",
                "channel_name": "channel-one",
                "team_url": "team-one",
                "apikey": "hash:SHA3-512:5bad9f13ac3580162ddb2980909fe3375a64e61b5c3d78d819cc02e84f98810dc5f8b848e07babedeaaabf78cfcbb71fe6098ea294b702a9deff904836322bd2"
              },
              "state": "configured"
            },
            {
              "id": "93f7a2b1-a1cb-46f2-9ab7-dc2e3443dd3e",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e:tool:93f7a2b1-a1cb-46f2-9ab7-dc2e3443dd3e",
              "name": "MyTool-3",
              "toolchain_id": "d02d29f1-e7bb-4977-8a6f-26d7b7bb893e",
              "toolchain_crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e::",
              "tool_type_id": "slack",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools/93f7a2b1-a1cb-46f2-9ab7-dc2e3443dd3e",
              "referent": {
                "ui_href": "https://team-three.slack.com/messages/channel-three"
              },
              "updated_at": "2022-01-01T13:13:07.968Z",
              "parameters": {
                "label": "#channel-three",
                "channel_name": "channel-three",
                "team_url": "team-three",
                "apikey": "hash:SHA3-512:44c285cc194a392cb55bae8f306a8a2778477bff07759a75739d00d24a8a3d41ef1acfa88571075b67afc53cc1ec37cb4ee1e2589debc99b4e7b4d283ede06ce"
              },
              "state": "configured"
            },
            {
              "id": "9dd0c477-f173-4c3f-a7cf-d27026ace379",
              "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e:tool:9dd0c477-f173-4c3f-a7cf-d27026ace379",
              "name": "MyTool-2",
              "toolchain_id": "d02d29f1-e7bb-4977-8a6f-26d7b7bb893e",
              "toolchain_crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e::",
              "tool_type_id": "slack",
              "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
              "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools/9dd0c477-f173-4c3f-a7cf-d27026ace379",
              "referent": {
                "ui_href": "https://team-two.slack.com/messages/channel-two"
              },
              "updated_at": "2022-01-01T13:13:07.968Z",
              "parameters": {
                "label": "#channel-two",
                "channel_name": "channel-two",
                "team_url": "team-two",
                "apikey": "hash:SHA3-512:3c0ec55cc85421e41aeffcdd2c94a637af1f189deb5f0e8682d2c339ee7e72ed287648ce0a5f529bae5dce36c0e80669ceadf9ea495a4350f70a12fa58d1a4fe"
              },
              "state": "configured"
            }
          ]
        }
      },
      "ToolchainToolCollectionFirst": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "URI that can be used to get first results from the collection"
          }
        },
        "description": "Information about retrieving first tool results from the collection",
        "example": {
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3"
        }
      },
      "ToolchainToolCollectionPrevious": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be used to get the previous set of tool collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get previous results from the collection"
          }
        },
        "description": "Information about retrieving previous tool results from the collection",
        "example": {
          "start": "eyJpbnN0YW5jZV9pZCI6IjEzODgxYTZkLWI1ZDktNDQwNi05MzFmLWM4NTc1NDc0MmQ1NSJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6IjEzODgxYTZkLWI1ZDktNDQwNi05MzFmLWM4NTc1NDc0MmQ1NSJ9"
        }
      },
      "ToolchainToolCollectionNext": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be used to get the next set of tool collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get next results from the collection"
          }
        },
        "description": "Information about retrieving next tool results from the collection",
        "example": {
          "start": "eyJpbnN0YW5jZV9pZCI6IjlkZDBjNDc3LWYxNzMtNGMzZi1hN2NmLWQyNzAyNmFjZTM3OSJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6IjlkZDBjNDc3LWYxNzMtNGMzZi1hN2NmLWQyNzAyNmFjZTM3OSJ9"
        }
      },
      "ToolchainToolCollectionLast": {
        "required": [
          "href"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Cursor that can be used to get the last set of tool collections"
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to get last results from the collection"
          }
        },
        "description": "Information about retrieving last tool results from the collection",
        "example": {
          "start": "eyJpbnN0YW5jZV9pZCI6ImQzYzkxMDYwLTcwOWMtNGZmZi1hODUwLTllZDFkZWMwMGYxYiJ9",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools?limit=3&start=eyJpbnN0YW5jZV9pZCI6ImQzYzkxMDYwLTcwOWMtNGZmZi1hODUwLTllZDFkZWMwMGYxYiJ9"
        }
      },
      "ToolchainToolPrototype": {
        "required": [
          "tool_type_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "Name of the tool"
          },
          "tool_type_id": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[a-zA-Z_]+$",
            "type": "string",
            "description": "The unique short name of the tool that should be provisioned. A table of `tool_type_id` values corresponding to each tool integration can be found in the <a href=\"https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-integrations\">Configuring tool integrations page</a>",
            "example": "draservicebroker",
            "x-terraform-exclude": true
          },
          "parameters": {
            "$ref": "#/components/schemas/ToolModelParameters"
          }
        },
        "additionalProperties": false,
        "description": "Details on the new tool"
      },
      "ToolchainToolPost": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolModel"
          },
          {
            "type": "object",
            "properties": {},
            "description": "POST tool response body"
          }
        ]
      },
      "tool_id": {
        "$ref": "#/components/schemas/UuidV4"
      },
      "ToolchainTool": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolModel"
          },
          {
            "type": "object",
            "description": "Response structure for GET tool",
            "x-resource-name": "cd_toolchain_tool",
            "x-resource-operations": {
              "create": "create_tool",
              "read": "get_tool_by_id",
              "delete": "delete_tool",
              "update": "update_tool"
            },
            "x-data-source-name": "cd_toolchain_tool",
            "x-data-source-operations": {
              "read": "get_tool_by_id"
            }
          }
        ]
      },
      "ToolchainToolPrototypePatch": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "Name of the tool",
            "example": "MyTool"
          },
          "tool_type_id": {
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[a-zA-Z_]+$",
            "type": "string",
            "description": "The unique short name of the tool that should be provisioned or updated. A table of `tool_type_id` values corresponding to each tool integration can be found in the <a href=\"https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-integrations\">Configuring tool integrations page</a>",
            "example": "draservicebroker",
            "x-terraform-exclude": true
          },
          "parameters": {
            "$ref": "#/components/schemas/ToolModelParameters"
          }
        },
        "additionalProperties": false,
        "description": "Details on the new tool"
      },
      "ToolchainToolPatch": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ToolModel"
          },
          {
            "type": "object",
            "properties": {},
            "description": "Response structure for PATCH tool"
          }
        ]
      },
      "ErrorConflict": {
        "type": "object",
        "properties": {
          "trace": {
            "type": "string",
            "description": "The request trace"
          },
          "errors": {
            "maxItems": 1,
            "minItems": 0,
            "type": "array",
            "description": "List of errors encountered in the request",
            "items": {
              "$ref": "#/components/schemas/ErrorItem"
            }
          },
          "status_code": {
            "type": "integer",
            "description": "HTTP status code returned by the error",
            "enum": [
              409
            ]
          }
        },
        "additionalProperties": false,
        "description": "Error object containing details of the error",
        "example": {
          "status_code": 409,
          "errors": [
            {
              "code": "conflict",
              "message": "The target resource is already in the requested state."
            }
          ],
          "trace": "3KADyw3zCjKvP5LkC1L3wM"
        }
      },
      "ToolchainModel": {
        "required": [
          "account_id",
          "created_at",
          "created_by",
          "crn",
          "description",
          "href",
          "id",
          "location",
          "name",
          "resource_group_id",
          "ui_href",
          "updated_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$",
            "type": "string",
            "description": "Toolchain ID"
          },
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "Toolchain name",
            "example": "TestToolchainV2"
          },
          "description": {
            "maxLength": 500,
            "minLength": 0,
            "pattern": "^(.*?)$",
            "type": "string",
            "description": "Describes the toolchain",
            "example": "A sample toolchain to test the API"
          },
          "account_id": {
            "type": "string",
            "description": "Account ID where toolchain can be found",
            "x-terraform-computed": true
          },
          "location": {
            "type": "string",
            "description": "Toolchain region",
            "x-terraform-computed": true
          },
          "resource_group_id": {
            "maxLength": 32,
            "minLength": 32,
            "pattern": "^[0-9a-f]{32}$",
            "type": "string",
            "description": "Resource group where the toolchain is located",
            "example": "6a9a01f2cff54a7f966f803d92877123",
            "x-terraform-force-new": true
          },
          "crn": {
            "type": "string",
            "description": "Toolchain CRN",
            "x-terraform-computed": true
          },
          "href": {
            "type": "string",
            "description": "URI that can be used to retrieve toolchain",
            "x-terraform-computed": true
          },
          "ui_href": {
            "type": "string",
            "description": "URL of a user-facing user interface for this toolchain",
            "x-terraform-computed": true
          },
          "created_at": {
            "type": "string",
            "description": "Toolchain creation timestamp",
            "format": "date-time",
            "x-terraform-computed": true
          },
          "updated_at": {
            "type": "string",
            "description": "Latest toolchain update timestamp",
            "format": "date-time",
            "x-terraform-computed": true
          },
          "created_by": {
            "type": "string",
            "description": "Identity that created the toolchain",
            "x-terraform-computed": true
          }
        },
        "description": "Model describing toolchain resource",
        "example": {
          "id": "ec58a911-c217-4e56-a40b-93482cd18706",
          "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:ec58a911-c217-4e56-a40b-93482cd18706::",
          "location": "us-south",
          "account_id": "f2337426699b4041bc50f1d45042f777",
          "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/ec58a911-c217-4e56-a40b-93482cd18706",
          "name": "TestToolchainV2",
          "description": "A sample toolchain to test the API",
          "created_at": "2021-05-05T17:07:09.354Z",
          "created_by": "IBMid-123456AB7C",
          "updated_at": "2021-05-05T17:07:09.354Z"
        }
      },
      "ToolModel": {
        "required": [
          "crn",
          "href",
          "id",
          "parameters",
          "referent",
          "resource_group_id",
          "state",
          "tool_type_id",
          "toolchain_crn",
          "toolchain_id",
          "updated_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[89abAB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$",
            "type": "string",
            "description": "Tool ID"
          },
          "resource_group_id": {
            "type": "string",
            "description": "Resource group where the tool is located",
            "x-terraform-computed": true
          },
          "crn": {
            "type": "string",
            "description": "Tool CRN",
            "x-terraform-computed": true
          },
          "tool_type_id": {
            "type": "string",
            "description": "The unique name of the provisioned tool. A table of `tool_type_id` values corresponding to each tool integration can be found in the <a href=\"https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-integrations\">Configuring tool integrations page</a>",
            "x-terraform-exclude": true
          },
          "toolchain_id": {
            "type": "string",
            "description": "ID of toolchain which the tool is bound to"
          },
          "toolchain_crn": {
            "type": "string",
            "description": "CRN of toolchain which the tool is bound to",
            "x-terraform-computed": true
          },
          "href": {
            "type": "string",
            "description": "URI representing the tool",
            "x-terraform-computed": true
          },
          "referent": {
            "$ref": "#/components/schemas/ToolModelReferent"
          },
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "pattern": "^([^\\x00-\\x7F]|[a-zA-Z0-9-._ ])+$",
            "type": "string",
            "description": "Name of the tool",
            "example": "MyTool"
          },
          "updated_at": {
            "type": "string",
            "description": "Latest tool update timestamp",
            "format": "date-time",
            "x-terraform-computed": true
          },
          "parameters": {
            "$ref": "#/components/schemas/ToolModelParameters"
          },
          "state": {
            "type": "string",
            "description": "Current configuration state of the tool",
            "enum": [
              "configured",
              "configuring",
              "misconfigured",
              "unconfigured"
            ],
            "x-terraform-computed": true
          }
        },
        "description": "Model describing tool resource",
        "example": {
          "id": "ec58a911-c217-4e56-a40b-93482cd18706",
          "crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e:tool:ec58a911-c217-4e56-a40b-93482cd18706",
          "name": "MyTool",
          "toolchain_id": "d02d29f1-e7bb-4977-8a6f-26d7b7bb893e",
          "toolchain_crn": "crn:v1:staging:public:toolchain:us-south:a/f2337426699b4041bc50f1d45042f777:d02d29f1-e7bb-4977-8a6f-26d7b7bb893e::",
          "tool_type_id": "slack",
          "resource_group_id": "6a9a01f2cff54a7f966f803d92877123",
          "href": "https://api.us-south.devops.cloud.ibm.com/toolchain/v2/toolchains/d02d29f1-e7bb-4977-8a6f-26d7b7bb893e/tools/ec58a911-c217-4e56-a40b-93482cd18706",
          "referent": {
            "ui_href": "https://my-team.slack.com/messages/my-channel"
          },
          "updated_at": "2022-01-01T13:13:07.968Z",
          "parameters": {
            "label": "#my-channel",
            "channel_name": "my-channel",
            "team_url": "my-team",
            "apikey": "hash:SHA3-512:5bad9f13ac3580162ddb2980909fe3375a64e61b5c3d78d819cc02e84f98810dc5f8b848e07babedeaaabf78cfcbb71fe6098ea294b702a9deff904836322bd2"
          },
          "state": "configured"
        }
      },
      "ToolModelReferent": {
        "type": "object",
        "properties": {
          "ui_href": {
            "type": "string",
            "description": "URI representing this resource through the UI"
          },
          "api_href": {
            "type": "string",
            "description": "URI representing this resource through an API"
          }
        },
        "description": "Information on URIs to access this resource through the UI or API",
        "example": {
          "ui_href": "https://my-team.slack.com/messages/my-channel"
        },
        "x-terraform-computed": true
      },
      "ToolModelParameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "Unique key-value pairs representing parameters to be used to create the tool. A list of parameters for each tool integration can be found in the <a href=\"https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-integrations\">Configuring tool integrations page</a>"
      },
      "ToolchainEventPrototypeData_application_json": {
        "required": [
          "content"
        ],
        "type": "object",
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ToolchainEventPrototypeApplicationJsonContent"
          }
        },
        "additionalProperties": false,
        "description": "Contains JSON data to be added with the event. `content_type` must be set to `application/json`.",
        "example": "{\"content\":{\"customKey1\":\"myCustomData\",\"customKey2\":123,\"customKey3\":{\"nestedKey\":\"moreData\"}}}"
      }
    },
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    },
    "links": {
      "toolchainId": {
        "operationId": "get_toolchain_by_id",
        "parameters": {
          "id": "$response.body#/id"
        },
        "description": "Link toolchain ID to subsequent operations"
      },
      "toolId": {
        "operationId": "get_tool_by_id",
        "parameters": {
          "id": "$response.body#/id"
        },
        "description": "Link tool ID to subsequent operations"
      }
    }
  }
}