code: def register_metadata(self, run_id, step_name, task_id, metadata):
      url = ServiceMetadataProvider._obj_path(
          self._flow_name, run_id, step_name, task_id
      )
      url += "/metadata"
      data = self._metadata_to_json(
          run_id, step_name, task_id, metadata
      )
      self._request(self._monitor, url, "POST", data)
  
imports: import os
  import random
  import requests
  import time
  from metaflow.exception import MetaflowException, MetaflowTaggingError, MetaflowInternalError
  from metaflow.metaflow_config import SERVICE_RETRY_COUNT, SERVICE_HEADERS, SERVICE_URL
  from metaflow.metadata import MetadataProvider
  from metaflow.metadata.heartbeat import HB_URL_KEY
  from metaflow.sidecar import Message, MessageTypes, Sidecar
  from metaflow.util import version_parse
label_desc: Use image node_id 15 for calling the ServiceMetadataProvider obj's underlying member method code with example usage: obj.register_metadata(run_id, step_name, task_id, metadata) without return types