docs: def convert_nsarg(
      nsarg: str,
      api_url: str = None,
      namespace_targets: Mapping[str, List[str]] = None,
      canonicalize: bool = False,
      decanonicalize: bool = False,
  ) -> str:
      """[De]Canonicalize NSArg
  
      Args:
          nsarg (str): bel statement string or partial string (e.g. subject or object)
          api_url (str): BEL.bio api url to use, e.g. https://api.bel.bio/v1
          namespace_targets (Mapping[str, List[str]]): formatted as in configuration file example
          canonicalize (bool): use canonicalize endpoint/namespace targets
          decanonicalize (bool): use decanonicalize endpoint/namespace targets
  
      Results:
          str: converted NSArg
      """
  
      if not api_url:
          api_url = config["bel_api"]["servers"]["api_url"]
          if not api_url:
              log.error("Missing api url - cannot convert namespace")
              return None
  
      params = None
      if namespace_targets:
          namespace_targets_str = json.dumps(namespace_targets)
          params = {"namespace_targets": namespace_targets_str}
  
      if not namespace_targets:
          if canonicalize:
              api_url = api_url + "/terms/{}/canonicalized"
          elif decanonicalize:
              api_url = api_url + "/terms/{}/decanonicalized"
          else:
              log.warning("Missing (de)canonical flag - cannot convert namespaces")
              return nsarg
      else:
  
          api_url = (
              api_url + "/terms/{}/canonicalized"
          )  # overriding with namespace_targets
  
      request_url = api_url.format(url_path_param_quoting(nsarg))
  
      r = get_url(request_url, params=params, timeout=10)
  
      if r and r.status_code == 200:
          nsarg = r.json().get("term_id", nsarg)
      elif not r or r.status_code == 404:
          log.error(f"[de]Canonicalization endpoint missing: {request_url}")
  
      return nsarg