code: def test_project_params_api(self):
      client = self.client
      response = client.get("/api/projects/params")
      self.assertEqual(200, response.status_code)
      data = response.json()
      self.assertIn("params", data)
      self.assertIn("metric", data)
      self.assertIn("images", data)
      self.assertEqual({}, data["images"])
      self.assertSetEqual({"accuracy", "loss"}, set(data["metric"]))
      self.assertIn("hparams", data["params"])
      self.assertIn("batch_size", data["params"]["hparams"])
      self.assertIn("lr", data["params"]["hparams"])
      self.assertIn("name", data["params"])
      self.assertIn("run_index", data["params"])
      self.assertIn("start_time", data["params"])
  
file_path: aim/tests/api/test_project_api.py
imports: import pytz
  from tests.base import PrefilledDataApiTestBase, ApiTestBase
  from tests.utils import generate_image_set
  from parameterized import parameterized
  import datetime
  from aim.sdk.run import Run
label_desc: Use image node_id 2 for calling the TestProjectApi obj's underlying member method code with example usage: obj.test_project_params_api() without return types