def update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, append: nil)
      raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?

      headers = {
      }
      sdk_headers = Common.new.get_sdk_headers("conversation", "V1", "update_workspace")
      headers.merge!(sdk_headers)

      params = {
        "version" => @version,
        "append" => append
      }

      data = {
        "name" => name,
        "description" => description,
        "language" => language,
        "metadata" => metadata,
        "learning_opt_out" => learning_opt_out,
        "system_settings" => system_settings,
        "intents" => intents,
        "entities" => entities,
        "dialog_nodes" => dialog_nodes,
        "counterexamples" => counterexamples
      }

      method_url = "/v1/workspaces/%s" % [ERB::Util.url_encode(workspace_id)]

      response = request(
        method: "POST",
        url: method_url,
        headers: headers,
        params: params,
        json: data,
        accept_json: true
      )
      response
    end
def update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, append: nil)
      raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?

      headers = {
      }
      sdk_headers = Common.new.get_sdk_headers("conversation", "V1", "update_workspace")
      headers.merge!(sdk_headers)

      params = {
        "version" => @version,
        "append" => append
      }

      data = {
        "name" => name,
        "description" => description,
        "language" => language,
        "metadata" => metadata,
        "learning_opt_out" => learning_opt_out,
        "system_settings" => system_settings,
        "intents" => intents,
        "entities" => entities,
        "dialog_nodes" => dialog_nodes,
        "counterexamples" => counterexamples
      }

      method_url = "/v1/workspaces/%s" % [ERB::Util.url_encode(workspace_id)]

      response = request(
        method: "POST",
        url: method_url,
        headers: headers,
        params: params,
        json: data,
        accept_json: true
      )
      response
    end
@!method update_workspace(workspace_id:, name: nil, description: nil, language: nil, metadata: nil, learning_opt_out: nil, system_settings: nil, intents: nil, entities: nil, dialog_nodes: nil, counterexamples: nil, append: nil)
 Update workspace.
 Update an existing workspace with new or modified data. You must provide component
   objects defining the content of the updated workspace.

   This operation is limited to 30 request per 30 minutes. For more information, see
   **Rate limiting**.
 @param workspace_id [String] Unique identifier of the workspace.
 @param name [String] The name of the workspace. This string cannot contain carriage return, newline, or
   tab characters, and it must be no longer than 64 characters.
 @param description [String] The description of the workspace. This string cannot contain carriage return,
   newline, or tab characters, and it must be no longer than 128 characters.
 @param language [String] The language of the workspace.
 @param metadata [Hash] Any metadata related to the workspace.
 @param learning_opt_out [Boolean] Whether training data from the workspace (including artifacts such as intents and
   entities) can be used by IBM for general service improvements. `true` indicates
   that workspace training data is not to be used.
 @param system_settings [WorkspaceSystemSettings] Global settings for the workspace.
 @param intents [Array[CreateIntent]] An array of objects defining the intents for the workspace.
 @param entities [Array[CreateEntity]] An array of objects describing the entities for the workspace.
 @param dialog_nodes [Array[DialogNode]] An array of objects describing the dialog nodes in the workspace.
 @param counterexamples [Array[Counterexample]] An array of objects defining input examples that have been marked as irrelevant
   input.
 @param append [Boolean] Whether the new data is to be appended to the existing data in the workspace. If
   **append**=`false`, elements included in the new data completely replace the
   corresponding existing elements, including all subelements. For example, if the
   new data includes **entities** and **append**=`false`, all existing entities in
   the workspace are discarded and replaced with the new entities.

   If **append**=`true`, existing elements are preserved, and the new elements are
   added. If any elements in the new data collide with existing elements, the update
   request fails.
 @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.