def create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, node_type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil)
      raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?

      raise ArgumentError.new("dialog_node must be provided") if dialog_node.nil?

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

      params = {
        "version" => @version
      }

      data = {
        "dialog_node" => dialog_node,
        "description" => description,
        "conditions" => conditions,
        "parent" => parent,
        "previous_sibling" => previous_sibling,
        "output" => output,
        "context" => context,
        "metadata" => metadata,
        "next_step" => next_step,
        "title" => title,
        "type" => node_type,
        "event_name" => event_name,
        "variable" => variable,
        "actions" => actions,
        "digress_in" => digress_in,
        "digress_out" => digress_out,
        "digress_out_slots" => digress_out_slots,
        "user_label" => user_label
      }

      method_url = "/v1/workspaces/%s/dialog_nodes" % [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 create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, node_type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil)
      raise ArgumentError.new("workspace_id must be provided") if workspace_id.nil?

      raise ArgumentError.new("dialog_node must be provided") if dialog_node.nil?

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

      params = {
        "version" => @version
      }

      data = {
        "dialog_node" => dialog_node,
        "description" => description,
        "conditions" => conditions,
        "parent" => parent,
        "previous_sibling" => previous_sibling,
        "output" => output,
        "context" => context,
        "metadata" => metadata,
        "next_step" => next_step,
        "title" => title,
        "type" => node_type,
        "event_name" => event_name,
        "variable" => variable,
        "actions" => actions,
        "digress_in" => digress_in,
        "digress_out" => digress_out,
        "digress_out_slots" => digress_out_slots,
        "user_label" => user_label
      }

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

      response = request(
        method: "POST",
        url: method_url,
        headers: headers,
        params: params,
        json: data,
        accept_json: true
      )
      response
    end
Dialog nodes


 @!method create_dialog_node(workspace_id:, dialog_node:, description: nil, conditions: nil, parent: nil, previous_sibling: nil, output: nil, context: nil, metadata: nil, next_step: nil, title: nil, node_type: nil, event_name: nil, variable: nil, actions: nil, digress_in: nil, digress_out: nil, digress_out_slots: nil, user_label: nil)
 Create dialog node.
 Create a new dialog node.

   This operation is limited to 500 requests per 30 minutes. For more information,
   see **Rate limiting**.
 @param workspace_id [String] Unique identifier of the workspace.
 @param dialog_node [String] The dialog node ID. This string must conform to the following restrictions:
   - It can contain only Unicode alphanumeric, space, underscore, hyphen, and dot
   characters.
   - It must be no longer than 1024 characters.
 @param description [String] The description of the dialog node. This string cannot contain carriage return,
   newline, or tab characters, and it must be no longer than 128 characters.
 @param conditions [String] The condition that will trigger the dialog node. This string cannot contain
   carriage return, newline, or tab characters, and it must be no longer than 2048
   characters.
 @param parent [String] The ID of the parent dialog node. This property is omitted if the dialog node has
   no parent.
 @param previous_sibling [String] The ID of the previous sibling dialog node. This property is omitted if the dialog
   node has no previous sibling.
 @param output [DialogNodeOutput] The output of the dialog node. For more information about how to specify dialog
   node output, see the
   [documentation](https://cloud.ibm.com/docs/services/assistant/dialog-overview.html#dialog-overview-responses).
 @param context [Hash] The context for the dialog node.
 @param metadata [Hash] The metadata for the dialog node.
 @param next_step [DialogNodeNextStep] The next step to execute following this dialog node.
 @param title [String] The alias used to identify the dialog node. This string must conform to the
   following restrictions:
   - It can contain only Unicode alphanumeric, space, underscore, hyphen, and dot
   characters.
   - It must be no longer than 64 characters.
 @param node_type [String] How the dialog node is processed.
 @param event_name [String] How an `event_handler` node is processed.
 @param variable [String] The location in the dialog context where output is stored.
 @param actions [Array[DialogNodeAction]] An array of objects describing any actions to be invoked by the dialog node.
 @param digress_in [String] Whether this top-level dialog node can be digressed into.
 @param digress_out [String] Whether this dialog node can be returned to after a digression.
 @param digress_out_slots [String] Whether the user can digress to top-level nodes while filling out slots.
 @param user_label [String] A label that can be displayed externally to describe the purpose of the node to
   users. This string must be no longer than 512 characters.
 @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.