code: def test_project_activity_api(self):
      with self.repo.structured_db as db:
          db.create_experiment("My experiment")
  
      experiment_count = len(self.repo.structured_db.experiments())
      run_count = len(self.repo.structured_db.runs())
      client = self.client
      response = client.get("/api/projects/activity")
      self.assertEqual(200, response.status_code)
      data = response.json()
      today_gmt = (
          datetime.datetime.now()
          .astimezone(pytz.timezone("gmt"))
          .strftime("%Y-%m-%dT%H:00:00")
      )
      self.assertEqual(run_count, data["num_runs"])
      self.assertEqual(run_count, data["activity_map"][today_gmt])
      self.assertEqual(experiment_count, data["num_experiments"])
  
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 1 for calling the TestProjectApi obj's underlying member method code with example usage: obj.test_project_activity_api() without return types