docs: def create_dialog_node(self,
                             workspace_id,
                             dialog_node,
                             description=None,
                             conditions=None,
                             parent=None,
                             previous_sibling=None,
                             output=None,
                             context=None,
                             metadata=None,
                             next_step=None,
                             title=None,
                             node_type=None,
                             event_name=None,
                             variable=None,
                             actions=None,
                             digress_in=None,
                             digress_out=None,
                             digress_out_slots=None,
                             user_label=None,
                             **kwargs):
          """
          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 str workspace_id: Unique identifier of the workspace.
          :param str dialog_node: 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 str description: 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 str conditions: 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 str parent: The ID of the parent dialog node. This property is omitted if
          the dialog node has no parent.
          :param str previous_sibling: The ID of the previous sibling dialog node. This
          property is omitted if the dialog node has no previous sibling.
          :param DialogNodeOutput output: 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 dict context: The context for the dialog node.
          :param dict metadata: The metadata for the dialog node.
          :param DialogNodeNextStep next_step: The next step to execute following this
          dialog node.
          :param str title: 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 str node_type: How the dialog node is processed.
          :param str event_name: How an `event_handler` node is processed.
          :param str variable: The location in the dialog context where output is stored.
          :param list[DialogNodeAction] actions: An array of objects describing any actions
          to be invoked by the dialog node.
          :param str digress_in: Whether this top-level dialog node can be digressed into.
          :param str digress_out: Whether this dialog node can be returned to after a
          digression.
          :param str digress_out_slots: Whether the user can digress to top-level nodes
          while filling out slots.
          :param str user_label: 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.
          :param dict headers: A `dict` containing the request headers
          :return: A `DetailedResponse` containing the result, headers and HTTP status code.
          :rtype: DetailedResponse
          """
  
          if workspace_id is None:
              raise ValueError('workspace_id must be provided')
          if dialog_node is None:
              raise ValueError('dialog_node must be provided')
          if output is not None:
              output = self._convert_model(output, DialogNodeOutput)
          if next_step is not None:
              next_step = self._convert_model(next_step, DialogNodeNextStep)
          if actions is not None:
              actions = [
                  self._convert_model(x, DialogNodeAction) for x in actions
              ]
  
          headers = {}
          if 'headers' in kwargs:
              headers.update(kwargs.get('headers'))
          sdk_headers = get_sdk_headers('conversation', 'V1',
                                        'create_dialog_node')
          headers.update(sdk_headers)
  
          params = {'version': self.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
          }
  
          url = '/v1/workspaces/{0}/dialog_nodes'.format(
              *self._encode_path_vars(workspace_id))
          response = self.request(
              method='POST',
              url=url,
              headers=headers,
              params=params,
              json=data,
              accept_json=True)
          return response