class_docstr: OutputDispatcher is the base class to handle routing alerts to outputs
  
  Public methods:
      format_output_config: returns a formatted version of the outputs configuration
          that is to be written to disk
      get_user_defined_properties: returns any properties for this output that must be
          provided by the user. must be implemented by subclasses
      dispatch: handles the actual sending of alerts to the configured service. must
          be implemented by subclass
docstr: Base method for retrieving properties that should be hard-coded for this
  output service integration. This could include information such as a static
  url used for sending the alerts to this service, a static port, or other
  non-sensitive information.
  
  If information of this sort is needed, this should be overridden in output subclasses.
  
  NOTE: This should not contain any sensitive or use-case specific data. Information
  such as this should be retrieved from the user using `get_user_defined_properties()`
  so the user is prompted for the sensitive information at configuration time and said
  information is then sent to kms for encryption and s3 for storage.
  
  Returns:
      dict: Contains various default items for this output (ie: url)
docstr_tok: ["Base","method","for","retrieving","properties","that","should","be","hard-coded","for","this","output","service","integration",".","This","could","include","information","such","as","a","static","url","used","for","sending","the","alerts","to","this","service",",","a","static","port",",","or","other","non-sensitive","information",".","If","information","of","this","sort","is","needed",",","this","should","be","overridden","in","output","subclasses",".","NOTE",":","This","should","not","contain","any","sensitive","or","use-case","specific","data",".","Information","such","as","this","should","be","retrieved","from","the","user","using","`","get_user_defined_properties","(",")","`","so","the","user","is","prompted","for","the","sensitive","information","at","configuration","time","and","said","information","is","then","sent","to","kms","for","encryption","and","s3","for","storage",".","Returns",":","dict",":","Contains","various","default","items","for","this","output","(","ie",":","url",")"]
code: def _get_default_properties(cls):
      """Base method for retrieving properties that should be hard-coded for this
      output service integration. This could include information such as a static
      url used for sending the alerts to this service, a static port, or other
      non-sensitive information.
  
      If information of this sort is needed, this should be overridden in output subclasses.
  
      NOTE: This should not contain any sensitive or use-case specific data. Information
      such as this should be retrieved from the user using `get_user_defined_properties()`
      so the user is prompted for the sensitive information at configuration time and said
      information is then sent to kms for encryption and s3 for storage.
  
      Returns:
          dict: Contains various default items for this output (ie: url)
      """
  
imports: from abc import ABCMeta, abstractmethod
  from collections import namedtuple
  import requests
  from requests.exceptions import Timeout
  import urllib3
  import backoff
  from streamalert.alert_processor.outputs.credentials.provider import OutputCredentialsProvider
  from streamalert.shared.backoff_handlers import backoff_handler, success_handler, giveup_handler
  from streamalert.shared.helpers.boto import REGION
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 13 for calling the OutputDispatcher obj's underlying member method code with example usage: obj._get_default_properties(cls) without return types