class_docstr: JiraOutput handles all alert dispatching for Jira
class_docstr_tok: ["JiraOutput","handles","all","alert","dispatching","for","Jira"]
docstr: Get properties that must be assigned by the user when configuring a new Jira
  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.
  
  Jira requires a api key, URL, project key, and issue type for alert dispatching.
  These values should be masked during input and are credential requirements.
  
  An additional parameter 'aggregate' is used to determine if alerts are aggregated into a
  single Jira issue based on the StreamAlert rule.
  
  Returns:
      OrderedDict: Contains various OutputProperty items
docstr_tok: ["Get","properties","that","must","be","assigned","by","the","user","when","configuring","a","new","Jira","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",".","Jira","requires","a","api","key",",","URL",",","project","key",",","and","issue","type","for","alert","dispatching",".","These","values","should","be","masked","during","input","and","are","credential","requirements",".","An","additional","parameter","'aggregate","'","is","used","to","determine","if","alerts","are","aggregated","into","a","single","Jira","issue","based","on","the","StreamAlert","rule",".","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 Jira
      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.
  
      Jira requires a api key, URL, project key, and issue type for alert dispatching.
      These values should be masked during input and are credential requirements.
  
      An additional parameter 'aggregate' is used to determine if alerts are aggregated into a
      single Jira issue based on the StreamAlert rule.
  
      Returns:
          OrderedDict: Contains various OutputProperty items
      """
      return OrderedDict(
          [
              (
                  "descriptor",
                  OutputProperty(
                      description="a short and unique descriptor for this "
                      "Jira integration"
                  ),
              ),
              (
                  "api_key",
                  OutputProperty(
                      description="the Jira api key"
                      "generated at https://id.atlassian.com/manage/api-tokens",
                      mask_input=True,
                      cred_requirement=True,
                  ),
              ),
              (
                  "user_name",
                  OutputProperty(
                      description="The jira username for the api key"
                      'example "username@company.com"',
                      mask_input=False,
                      cred_requirement=True,
                  ),
              ),
              (
                  "url",
                  OutputProperty(
                      description="Base URL of your Jira instance"
                      "example https://company.atlassian.net",
                      mask_input=False,
                      input_restrictions={},
                      cred_requirement=True,
                  ),
              ),
              (
                  "project_key",
                  OutputProperty(
                      description="Jira project KEY where issues should be created",
                      mask_input=False,
                      cred_requirement=True,
                  ),
              ),
              (
                  "issue_type",
                  OutputProperty(
                      description="the Jira issue type please note this is case sensitive"
                      'example ("Task" not "task)"',
                      mask_input=False,
                      cred_requirement=True,
                  ),
              ),
              (
                  "aggregate",
                  OutputProperty(
                      description="the Jira aggregation behavior to aggregate "
                      "alerts by rule name (yes/no)",
                      mask_input=False,
                      cred_requirement=True,
                  ),
              ),
          ]
      )
  
file_path: streamalert/streamalert/alert_processor/outputs/jira_v2.py
imports: from collections import OrderedDict
  import os
  import json
  import base64
  from streamalert.alert_processor.helpers import compose_alert
  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 2 for calling the JiraOutput obj's underlying member method code with example usage: obj.get_user_defined_properties(cls) and returns: OrderedDict