code: def get_runinfo(galaxy_url, galaxy_apikey, run_folder, storedir):
      
      galaxy_api = GalaxyApiAccess(galaxy_url, galaxy_apikey)
      fc_name, fc_date = flowcell.parse_dirname(run_folder)
      galaxy_info = galaxy_api.run_details(fc_name, fc_date)
      if "error" in galaxy_info:
          return galaxy_info
      if not galaxy_info["run_name"].startswith(fc_date) and not galaxy_info["run_name"].endswith(fc_name):
          raise ValueError("Galaxy NGLIMS information %s does not match flowcell %s %s" %
                           (galaxy_info["run_name"], fc_date, fc_name))
      ldetails = _flatten_lane_details(galaxy_info)
      out = []
      for item in ldetails:
          # Do uploads for all non-controls
          if item["description"] != "control" or item["project_name"] != "control":
              item["upload"] = {"method": "galaxy", "run_id": galaxy_info["run_id"],
                                "fc_name": fc_name, "fc_date": fc_date,
                                "dir": storedir,
                                "galaxy_url": galaxy_url, "galaxy_api_key": galaxy_apikey}
              for k in ["lab_association", "private_libs", "researcher", "researcher_id", "sample_id",
                        "galaxy_library", "galaxy_role"]:
                  item["upload"][k] = item.pop(k, "")
          out.append(item)
      return out
docs: Retrieve flattened run information for a processed directory from Galaxy nglims API.