We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Improve metadata description for catalog metadata
### User Story

<!-- A user story to describe why a user wants to do something, who the user is and what they want to do -->

So that I can understand more about the catalog metadata for the Geostore, as an external data analyst or developer, I want a good description and other relevant metadata in the catalog.json files.

<!-- optional: Instead of [existing behaviour] -->

#### Acceptance Criteria

<!-- Required artifacts to accept this feature as completed. -->

- [x] Given the bucket is deployed, when a dataset is created, then the title should read "LINZ Geostore"
- [x] Given the bucket is deployed, when a dataset is created, then the description should read:
`The Geospatial Data Store (Geostore) contains all the important geospatial data and metadata held by Land Information New Zealand (LINZ).<br/>Please browse this catalog to find and access our data.<br/>For more information see: TODO - add URL to help page.`
- [ ] Given a dataset, when a new version is created, the description of the dataset 'catalog.json' should be updated from the collection.json description
- [ ] Given a dataset, when a new version is created, the title in the dataset 'catalog.json' should be updated to the title from the collection.json

#### Additional context

Note: see old data lake root catalog for ideas. See other nicely described catalogs on the web for ideas (AWS Open Data Registry for example).

<!-- Add any other context or mocked CLI commands or screenshots about the feature request here.-->

#### Tasks

<!-- Tasks needed to complete this enabler -->

- [ ] Possibly want to change dataset endpoint change 'title' to 'directory-name' (or something), update documentation (Confluence as well as Github) as well
- [ ] 

#### Definition of Ready

- [ ] This story is **ready** to work on, according to the
      [team's definition](https://confluence.linz.govt.nz/pages/viewpage.action?pageId=87930423)

#### Definition of Done

- [ ] This story is **done**, according to the
      [team's definition](https://confluence.linz.govt.nz/pages/viewpage.action?pageId=87930423)


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `backend/populate_catalog/task.py`
Content:
```
1 from json import dumps
2 from typing import TYPE_CHECKING
3 
4 import boto3
5 from pystac import STAC_IO, Catalog, CatalogType, Collection, Item  # type: ignore[import]
6 from pystac.layout import HrefLayoutStrategy  # type: ignore[import]
7 
8 from ..api_keys import EVENT_KEY
9 from ..api_responses import BODY_KEY
10 from ..log import set_up_logging
11 from ..pystac_io_methods import read_method, write_method
12 from ..resources import ResourceName
13 from ..s3 import S3_URL_PREFIX
14 from ..sqs_message_attributes import (
15     MESSAGE_ATTRIBUTE_TYPE_DATASET,
16     MESSAGE_ATTRIBUTE_TYPE_KEY,
17     MESSAGE_ATTRIBUTE_TYPE_ROOT,
18     STRING_VALUE_KEY_LOWER,
19 )
20 from ..types import JsonObject
21 
22 if TYPE_CHECKING:
23     # When type checking we want to use the third party package's stub
24     from mypy_boto3_s3 import S3Client
25 else:
26     # In production we want to avoid depending on a package which has no runtime impact
27     S3Client = object
28 
29 STAC_IO.write_text_method = write_method
30 STAC_IO.read_text_method = read_method
31 
32 S3_CLIENT: S3Client = boto3.client("s3")
33 
34 ROOT_CATALOG_ID = "root_catalog"
35 ROOT_CATALOG_TITLE = "Geostore Root Catalog"
36 ROOT_CATALOG_DESCRIPTION = "The root catalog which links to all dataset catalogues in Geostore"
37 CATALOG_KEY = "catalog.json"
38 CONTENTS_KEY = "Contents"
39 RECORDS_KEY = "Records"
40 MESSAGE_ATTRIBUTES_KEY = "messageAttributes"
41 
42 LOGGER = set_up_logging(__name__)
43 
44 
45 def lambda_handler(event: JsonObject, _context: bytes) -> JsonObject:
46     """Main Lambda entry point."""
47 
48     LOGGER.debug(dumps({EVENT_KEY: event}))
49 
50     for message in event[RECORDS_KEY]:
51         if (
52             message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]
53             == MESSAGE_ATTRIBUTE_TYPE_ROOT
54         ):
55             handle_root(message[BODY_KEY])
56         elif (
57             message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]
58             == MESSAGE_ATTRIBUTE_TYPE_DATASET
59         ):
60             handle_dataset(message[BODY_KEY])
61         else:
62             raise UnhandledSQSMessageException("Unhandled SQS message type")
63 
64     return {}
65 
66 
67 class UnhandledSQSMessageException(Exception):
68     pass
69 
70 
71 class GeostoreSTACLayoutStrategy(HrefLayoutStrategy):
72     def get_catalog_href(self, cat: Catalog, parent_dir: str, is_root: bool) -> str:
73         return str(cat.get_self_href())
74 
75     def get_collection_href(self, col: Collection, parent_dir: str, is_root: bool) -> str:
76         assert not is_root
77         return str(col.get_self_href())
78 
79     def get_item_href(self, item: Item, parent_dir: str) -> str:
80         return str(item.get_self_href())
81 
82 
83 def handle_dataset(version_metadata_key: str) -> None:
84     """Handle writing a new dataset version to the dataset catalog"""
85     storage_bucket_path = f"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}"
86     dataset_prefix = version_metadata_key.split("/", maxsplit=1)[0]
87     dataset_catalog = Catalog.from_file(f"{storage_bucket_path}/{dataset_prefix}/{CATALOG_KEY}")
88 
89     dataset_version_metadata = STAC_IO.read_stac_object(
90         f"{storage_bucket_path}/{version_metadata_key}"
91     )
92 
93     dataset_catalog.add_child(dataset_version_metadata, strategy=GeostoreSTACLayoutStrategy())
94 
95     dataset_catalog.normalize_hrefs(
96         f"{storage_bucket_path}/{dataset_prefix}", strategy=GeostoreSTACLayoutStrategy()
97     )
98     dataset_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)
99 
100 
101 def handle_root(dataset_prefix: str) -> None:
102     """Handle writing a new dataset to the root catalog"""
103     results = S3_CLIENT.list_objects(
104         Bucket=ResourceName.STORAGE_BUCKET_NAME.value, Prefix=CATALOG_KEY
105     )
106 
107     # create root catalog if it doesn't exist
108     if CONTENTS_KEY in results:
109         root_catalog = Catalog.from_file(
110             f"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}"
111         )
112 
113     else:
114         root_catalog = Catalog(
115             id=ROOT_CATALOG_ID,
116             title=ROOT_CATALOG_TITLE,
117             description=ROOT_CATALOG_DESCRIPTION,
118             catalog_type=CatalogType.SELF_CONTAINED,
119         )
120         root_catalog.set_self_href(
121             f"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}"
122         )
123 
124     dataset_path = f"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{dataset_prefix}"
125     dataset_catalog = Catalog.from_file(f"{dataset_path}/{CATALOG_KEY}")
126 
127     root_catalog.add_child(dataset_catalog, strategy=GeostoreSTACLayoutStrategy())
128     root_catalog.normalize_hrefs(
129         f"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}",
130         strategy=GeostoreSTACLayoutStrategy(),
131     )
132 
133     root_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)
134
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/backend/populate_catalog/task.py b/backend/populate_catalog/task.py
--- a/backend/populate_catalog/task.py
+++ b/backend/populate_catalog/task.py
@@ -32,8 +32,12 @@
 S3_CLIENT: S3Client = boto3.client("s3")
 
 ROOT_CATALOG_ID = "root_catalog"
-ROOT_CATALOG_TITLE = "Geostore Root Catalog"
-ROOT_CATALOG_DESCRIPTION = "The root catalog which links to all dataset catalogues in Geostore"
+ROOT_CATALOG_TITLE = "LINZ Geostore"
+ROOT_CATALOG_DESCRIPTION = (
+    "The LINZ Geospatial Data Store (Geostore) contains all the important "
+    "geospatial data held by Land Information New Zealand (LINZ).<br/>"
+    "Please browse this catalog to find and access our data."
+)
 CATALOG_KEY = "catalog.json"
 CONTENTS_KEY = "Contents"
 RECORDS_KEY = "Records"

{"golden_diff": "diff --git a/backend/populate_catalog/task.py b/backend/populate_catalog/task.py\n--- a/backend/populate_catalog/task.py\n+++ b/backend/populate_catalog/task.py\n@@ -32,8 +32,12 @@\n S3_CLIENT: S3Client = boto3.client(\"s3\")\n \n ROOT_CATALOG_ID = \"root_catalog\"\n-ROOT_CATALOG_TITLE = \"Geostore Root Catalog\"\n-ROOT_CATALOG_DESCRIPTION = \"The root catalog which links to all dataset catalogues in Geostore\"\n+ROOT_CATALOG_TITLE = \"LINZ Geostore\"\n+ROOT_CATALOG_DESCRIPTION = (\n+    \"The LINZ Geospatial Data Store (Geostore) contains all the important \"\n+    \"geospatial data held by Land Information New Zealand (LINZ).<br/>\"\n+    \"Please browse this catalog to find and access our data.\"\n+)\n CATALOG_KEY = \"catalog.json\"\n CONTENTS_KEY = \"Contents\"\n RECORDS_KEY = \"Records\"\n", "issue": "Improve metadata description for catalog metadata\n### User Story\n\n<!-- A user story to describe why a user wants to do something, who the user is and what they want to do -->\n\nSo that I can understand more about the catalog metadata for the Geostore, as an external data analyst or developer, I want a good description and other relevant metadata in the catalog.json files.\n\n<!-- optional: Instead of [existing behaviour] -->\n\n#### Acceptance Criteria\n\n<!-- Required artifacts to accept this feature as completed. -->\n\n- [x] Given the bucket is deployed, when a dataset is created, then the title should read \"LINZ Geostore\"\n- [x] Given the bucket is deployed, when a dataset is created, then the description should read:\n`The Geospatial Data Store (Geostore) contains all the important geospatial data and metadata held by Land Information New Zealand (LINZ).<br/>Please browse this catalog to find and access our data.<br/>For more information see: TODO - add URL to help page.`\n- [ ] Given a dataset, when a new version is created, the description of the dataset 'catalog.json' should be updated from the collection.json description\n- [ ] Given a dataset, when a new version is created, the title in the dataset 'catalog.json' should be updated to the title from the collection.json\n\n#### Additional context\n\nNote: see old data lake root catalog for ideas. See other nicely described catalogs on the web for ideas (AWS Open Data Registry for example).\n\n<!-- Add any other context or mocked CLI commands or screenshots about the feature request here.-->\n\n#### Tasks\n\n<!-- Tasks needed to complete this enabler -->\n\n- [ ] Possibly want to change dataset endpoint change 'title' to 'directory-name' (or something), update documentation (Confluence as well as Github) as well\n- [ ] \n\n#### Definition of Ready\n\n- [ ] This story is **ready** to work on, according to the\n      [team's definition](https://confluence.linz.govt.nz/pages/viewpage.action?pageId=87930423)\n\n#### Definition of Done\n\n- [ ] This story is **done**, according to the\n      [team's definition](https://confluence.linz.govt.nz/pages/viewpage.action?pageId=87930423)\n\n", "before_files": [{"content": "from json import dumps\nfrom typing import TYPE_CHECKING\n\nimport boto3\nfrom pystac import STAC_IO, Catalog, CatalogType, Collection, Item  # type: ignore[import]\nfrom pystac.layout import HrefLayoutStrategy  # type: ignore[import]\n\nfrom ..api_keys import EVENT_KEY\nfrom ..api_responses import BODY_KEY\nfrom ..log import set_up_logging\nfrom ..pystac_io_methods import read_method, write_method\nfrom ..resources import ResourceName\nfrom ..s3 import S3_URL_PREFIX\nfrom ..sqs_message_attributes import (\n    MESSAGE_ATTRIBUTE_TYPE_DATASET,\n    MESSAGE_ATTRIBUTE_TYPE_KEY,\n    MESSAGE_ATTRIBUTE_TYPE_ROOT,\n    STRING_VALUE_KEY_LOWER,\n)\nfrom ..types import JsonObject\n\nif TYPE_CHECKING:\n    # When type checking we want to use the third party package's stub\n    from mypy_boto3_s3 import S3Client\nelse:\n    # In production we want to avoid depending on a package which has no runtime impact\n    S3Client = object\n\nSTAC_IO.write_text_method = write_method\nSTAC_IO.read_text_method = read_method\n\nS3_CLIENT: S3Client = boto3.client(\"s3\")\n\nROOT_CATALOG_ID = \"root_catalog\"\nROOT_CATALOG_TITLE = \"Geostore Root Catalog\"\nROOT_CATALOG_DESCRIPTION = \"The root catalog which links to all dataset catalogues in Geostore\"\nCATALOG_KEY = \"catalog.json\"\nCONTENTS_KEY = \"Contents\"\nRECORDS_KEY = \"Records\"\nMESSAGE_ATTRIBUTES_KEY = \"messageAttributes\"\n\nLOGGER = set_up_logging(__name__)\n\n\ndef lambda_handler(event: JsonObject, _context: bytes) -> JsonObject:\n    \"\"\"Main Lambda entry point.\"\"\"\n\n    LOGGER.debug(dumps({EVENT_KEY: event}))\n\n    for message in event[RECORDS_KEY]:\n        if (\n            message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]\n            == MESSAGE_ATTRIBUTE_TYPE_ROOT\n        ):\n            handle_root(message[BODY_KEY])\n        elif (\n            message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]\n            == MESSAGE_ATTRIBUTE_TYPE_DATASET\n        ):\n            handle_dataset(message[BODY_KEY])\n        else:\n            raise UnhandledSQSMessageException(\"Unhandled SQS message type\")\n\n    return {}\n\n\nclass UnhandledSQSMessageException(Exception):\n    pass\n\n\nclass GeostoreSTACLayoutStrategy(HrefLayoutStrategy):\n    def get_catalog_href(self, cat: Catalog, parent_dir: str, is_root: bool) -> str:\n        return str(cat.get_self_href())\n\n    def get_collection_href(self, col: Collection, parent_dir: str, is_root: bool) -> str:\n        assert not is_root\n        return str(col.get_self_href())\n\n    def get_item_href(self, item: Item, parent_dir: str) -> str:\n        return str(item.get_self_href())\n\n\ndef handle_dataset(version_metadata_key: str) -> None:\n    \"\"\"Handle writing a new dataset version to the dataset catalog\"\"\"\n    storage_bucket_path = f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}\"\n    dataset_prefix = version_metadata_key.split(\"/\", maxsplit=1)[0]\n    dataset_catalog = Catalog.from_file(f\"{storage_bucket_path}/{dataset_prefix}/{CATALOG_KEY}\")\n\n    dataset_version_metadata = STAC_IO.read_stac_object(\n        f\"{storage_bucket_path}/{version_metadata_key}\"\n    )\n\n    dataset_catalog.add_child(dataset_version_metadata, strategy=GeostoreSTACLayoutStrategy())\n\n    dataset_catalog.normalize_hrefs(\n        f\"{storage_bucket_path}/{dataset_prefix}\", strategy=GeostoreSTACLayoutStrategy()\n    )\n    dataset_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)\n\n\ndef handle_root(dataset_prefix: str) -> None:\n    \"\"\"Handle writing a new dataset to the root catalog\"\"\"\n    results = S3_CLIENT.list_objects(\n        Bucket=ResourceName.STORAGE_BUCKET_NAME.value, Prefix=CATALOG_KEY\n    )\n\n    # create root catalog if it doesn't exist\n    if CONTENTS_KEY in results:\n        root_catalog = Catalog.from_file(\n            f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}\"\n        )\n\n    else:\n        root_catalog = Catalog(\n            id=ROOT_CATALOG_ID,\n            title=ROOT_CATALOG_TITLE,\n            description=ROOT_CATALOG_DESCRIPTION,\n            catalog_type=CatalogType.SELF_CONTAINED,\n        )\n        root_catalog.set_self_href(\n            f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}\"\n        )\n\n    dataset_path = f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{dataset_prefix}\"\n    dataset_catalog = Catalog.from_file(f\"{dataset_path}/{CATALOG_KEY}\")\n\n    root_catalog.add_child(dataset_catalog, strategy=GeostoreSTACLayoutStrategy())\n    root_catalog.normalize_hrefs(\n        f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}\",\n        strategy=GeostoreSTACLayoutStrategy(),\n    )\n\n    root_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)\n", "path": "backend/populate_catalog/task.py"}], "after_files": [{"content": "from json import dumps\nfrom typing import TYPE_CHECKING\n\nimport boto3\nfrom pystac import STAC_IO, Catalog, CatalogType, Collection, Item  # type: ignore[import]\nfrom pystac.layout import HrefLayoutStrategy  # type: ignore[import]\n\nfrom ..api_keys import EVENT_KEY\nfrom ..api_responses import BODY_KEY\nfrom ..log import set_up_logging\nfrom ..pystac_io_methods import read_method, write_method\nfrom ..resources import ResourceName\nfrom ..s3 import S3_URL_PREFIX\nfrom ..sqs_message_attributes import (\n    MESSAGE_ATTRIBUTE_TYPE_DATASET,\n    MESSAGE_ATTRIBUTE_TYPE_KEY,\n    MESSAGE_ATTRIBUTE_TYPE_ROOT,\n    STRING_VALUE_KEY_LOWER,\n)\nfrom ..types import JsonObject\n\nif TYPE_CHECKING:\n    # When type checking we want to use the third party package's stub\n    from mypy_boto3_s3 import S3Client\nelse:\n    # In production we want to avoid depending on a package which has no runtime impact\n    S3Client = object\n\nSTAC_IO.write_text_method = write_method\nSTAC_IO.read_text_method = read_method\n\nS3_CLIENT: S3Client = boto3.client(\"s3\")\n\nROOT_CATALOG_ID = \"root_catalog\"\nROOT_CATALOG_TITLE = \"LINZ Geostore\"\nROOT_CATALOG_DESCRIPTION = (\n    \"The LINZ Geospatial Data Store (Geostore) contains all the important \"\n    \"geospatial data held by Land Information New Zealand (LINZ).<br/>\"\n    \"Please browse this catalog to find and access our data.\"\n)\nCATALOG_KEY = \"catalog.json\"\nCONTENTS_KEY = \"Contents\"\nRECORDS_KEY = \"Records\"\nMESSAGE_ATTRIBUTES_KEY = \"messageAttributes\"\n\nLOGGER = set_up_logging(__name__)\n\n\ndef lambda_handler(event: JsonObject, _context: bytes) -> JsonObject:\n    \"\"\"Main Lambda entry point.\"\"\"\n\n    LOGGER.debug(dumps({EVENT_KEY: event}))\n\n    for message in event[RECORDS_KEY]:\n        if (\n            message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]\n            == MESSAGE_ATTRIBUTE_TYPE_ROOT\n        ):\n            handle_root(message[BODY_KEY])\n        elif (\n            message[MESSAGE_ATTRIBUTES_KEY][MESSAGE_ATTRIBUTE_TYPE_KEY][STRING_VALUE_KEY_LOWER]\n            == MESSAGE_ATTRIBUTE_TYPE_DATASET\n        ):\n            handle_dataset(message[BODY_KEY])\n        else:\n            raise UnhandledSQSMessageException(\"Unhandled SQS message type\")\n\n    return {}\n\n\nclass UnhandledSQSMessageException(Exception):\n    pass\n\n\nclass GeostoreSTACLayoutStrategy(HrefLayoutStrategy):\n    def get_catalog_href(self, cat: Catalog, parent_dir: str, is_root: bool) -> str:\n        return str(cat.get_self_href())\n\n    def get_collection_href(self, col: Collection, parent_dir: str, is_root: bool) -> str:\n        assert not is_root\n        return str(col.get_self_href())\n\n    def get_item_href(self, item: Item, parent_dir: str) -> str:\n        return str(item.get_self_href())\n\n\ndef handle_dataset(version_metadata_key: str) -> None:\n    \"\"\"Handle writing a new dataset version to the dataset catalog\"\"\"\n    storage_bucket_path = f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}\"\n    dataset_prefix = version_metadata_key.split(\"/\", maxsplit=1)[0]\n    dataset_catalog = Catalog.from_file(f\"{storage_bucket_path}/{dataset_prefix}/{CATALOG_KEY}\")\n\n    dataset_version_metadata = STAC_IO.read_stac_object(\n        f\"{storage_bucket_path}/{version_metadata_key}\"\n    )\n\n    dataset_catalog.add_child(dataset_version_metadata, strategy=GeostoreSTACLayoutStrategy())\n\n    dataset_catalog.normalize_hrefs(\n        f\"{storage_bucket_path}/{dataset_prefix}\", strategy=GeostoreSTACLayoutStrategy()\n    )\n    dataset_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)\n\n\ndef handle_root(dataset_prefix: str) -> None:\n    \"\"\"Handle writing a new dataset to the root catalog\"\"\"\n    results = S3_CLIENT.list_objects(\n        Bucket=ResourceName.STORAGE_BUCKET_NAME.value, Prefix=CATALOG_KEY\n    )\n\n    # create root catalog if it doesn't exist\n    if CONTENTS_KEY in results:\n        root_catalog = Catalog.from_file(\n            f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}\"\n        )\n\n    else:\n        root_catalog = Catalog(\n            id=ROOT_CATALOG_ID,\n            title=ROOT_CATALOG_TITLE,\n            description=ROOT_CATALOG_DESCRIPTION,\n            catalog_type=CatalogType.SELF_CONTAINED,\n        )\n        root_catalog.set_self_href(\n            f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{CATALOG_KEY}\"\n        )\n\n    dataset_path = f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}/{dataset_prefix}\"\n    dataset_catalog = Catalog.from_file(f\"{dataset_path}/{CATALOG_KEY}\")\n\n    root_catalog.add_child(dataset_catalog, strategy=GeostoreSTACLayoutStrategy())\n    root_catalog.normalize_hrefs(\n        f\"{S3_URL_PREFIX}{ResourceName.STORAGE_BUCKET_NAME.value}\",\n        strategy=GeostoreSTACLayoutStrategy(),\n    )\n\n    root_catalog.save(catalog_type=CatalogType.SELF_CONTAINED)\n", "path": "backend/populate_catalog/task.py"}]}