class_docstr: SlackOutput handles all alert dispatching for Slack
class_docstr_tok: ["SlackOutput","handles","all","alert","dispatching","for","Slack"]
docstr: Get properties that must be assigned by the user when configuring a new Slack
  output.  This should be sensitive or unique information for this use-case that needs
  to come from the user.
  
  Every output should return a dict that contains a 'descriptor' with a description of the
  integration being configured.
  
  Slack also requires a user provided 'webhook' url that is comprised of the slack api url
  and the unique integration key for this output. This value should be should be masked
  during input and is a credential requirement.
  
  Returns:
      OrderedDict: Contains various OutputProperty items
docstr_tok: ["Get","properties","that","must","be","assigned","by","the","user","when","configuring","a","new","Slack","output",".","This","should","be","sensitive","or","unique","information","for","this","use-case","that","needs","to","come","from","the","user",".","Every","output","should","return","a","dict","that","contains","a","'descriptor","'","with","a","description","of","the","integration","being","configured",".","Slack","also","requires","a","user","provided","'webhook","'","url","that","is","comprised","of","the","slack","api","url","and","the","unique","integration","key","for","this","output",".","This","value","should","be","should","be","masked","during","input","and","is","a","credential","requirement",".","Returns",":","OrderedDict",":","Contains","various","OutputProperty","items"]
code: def get_user_defined_properties(cls):
      """Get properties that must be assigned by the user when configuring a new Slack
      output.  This should be sensitive or unique information for this use-case that needs
      to come from the user.
  
      Every output should return a dict that contains a 'descriptor' with a description of the
      integration being configured.
  
      Slack also requires a user provided 'webhook' url that is comprised of the slack api url
      and the unique integration key for this output. This value should be should be masked
      during input and is a credential requirement.
  
      Returns:
          OrderedDict: Contains various OutputProperty items
      """
      return OrderedDict(
          [
              (
                  "descriptor",
                  OutputProperty(
                      description="a short and unique descriptor for this Slack integration "
                      "(ie: channel, group, etc)"
                  ),
              ),
              (
                  "url",
                  OutputProperty(
                      description="the full Slack webhook url, including the secret",
                      mask_input=True,
                      input_restrictions={" "},
                      cred_requirement=True,
                  ),
              ),
          ]
      )
  
file_path: streamalert/streamalert/alert_processor/outputs/slack.py
imports: import html
  from collections import OrderedDict
  from streamalert.alert_processor.helpers import compose_alert, elide_string_middle
  from streamalert.alert_processor.outputs.output_base import OutputDispatcher, OutputProperty, OutputRequestFailure, StreamAlertOutput
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 1 for calling the SlackOutput obj's underlying member method code with example usage: obj.get_user_defined_properties(cls) and returns: OrderedDict