code: def list_images(self) -> List[str]:
      image_ids: List[str] = []
  
      response = self._request_get(
          f"{self.api_url}/data/projects?format=json"
      )
      for p in response.json().get("ResultSet", {}).get("Result", []):
          project = p.get("ID")
          if self.projects and project not in self.projects:
              continue
  
          response = self._request_get(
              f"{self.api_url}/data/projects/{quote_plus(project)}/experiments?format=json"
          )
          for e in (
              response.json().get("ResultSet", {}).get("Result", [])
          ):
              experiment = e.get("ID")
  
              response = self._request_get(
                  f"{self.api_url}/data/experiments/{quote_plus(experiment)}?format=xml"
              )
              tree = ElementTree.fromstring(response.content)
              s = tree.find(".//xnat:subject_ID", namespaces=xnat_ns)
              if s is None:
                  continue
  
              subject = s.text
              for n in tree.findall(".//xnat:scan", namespaces=xnat_ns):
                  scan = n.get("ID")
                  image_ids.append(
                      f"{project}/{subject}/{experiment}/{scan}"
                  )
  
      return image_ids
  
imports: import io
  import logging
  import os
  import pathlib
  import shutil
  import time
  from typing import Any, Dict, List, Optional
  from urllib.parse import quote_plus
  from xml.etree import ElementTree
  import requests
  from requests.auth import HTTPBasicAuth
  from monailabel.datastore.utils.convert import nifti_to_dicom_seg
  from monailabel.interfaces.datastore import Datastore
  from monailabel.utils.others.generic import md5_digest
label_desc: Use image node_id 17 for calling the XNATDatastore obj's underlying member method code with example usage: obj.list_images() and returns: image_ids