code: def decode_endpoint_props(input_props):
      # type: (Dict) -> Dict[str, Any]
      
      ed_props = decode_osgi_props(input_props)
      ed_props[ECF_ENDPOINT_CONTAINERID_NAMESPACE] = input_props[
          ECF_ENDPOINT_CONTAINERID_NAMESPACE
      ]
      ed_props[ECF_RSVC_ID] = int(input_props[ECF_RSVC_ID])
      ed_props[ECF_ENDPOINT_ID] = input_props[ECF_ENDPOINT_ID]
      ed_props[ECF_ENDPOINT_TIMESTAMP] = int(input_props[ECF_ENDPOINT_TIMESTAMP])
      target_id = input_props.get(ECF_ENDPOINT_CONNECTTARGET_ID, None)
      if target_id:
          ed_props[ECF_ENDPOINT_CONNECTTARGET_ID] = target_id
      id_filters = decode_list(input_props, ECF_ENDPOINT_IDFILTER_IDS)
      if id_filters:
          ed_props[ECF_ENDPOINT_IDFILTER_IDS] = id_filters
      rs_filter = input_props.get(ECF_ENDPOINT_REMOTESERVICE_FILTER, None)
      if rs_filter:
          ed_props[ECF_ENDPOINT_REMOTESERVICE_FILTER] = rs_filter
      async_intfs = input_props.get(ECF_SERVICE_EXPORTED_ASYNC_INTERFACES, None)
      if async_intfs:
          if async_intfs == "*":
              ed_props[ECF_SERVICE_EXPORTED_ASYNC_INTERFACES] = async_intfs
          else:
              async_intfs = decode_list(
                  input_props, ECF_SERVICE_EXPORTED_ASYNC_INTERFACES
              )
              if async_intfs:
                  ed_props[ECF_SERVICE_EXPORTED_ASYNC_INTERFACES] = async_intfs
  
      for key in input_props.keys():
          if not is_reserved_property(key):
              val = input_props.get(key, None)
              if val:
                  ed_props[key] = val
      return ed_props
docs: Decodes the endpoint properties from the given dictionary