diff --git a/redfish-core/lib/thermal_subsystem.hpp b/redfish-core/lib/thermal_subsystem.hpp
index 390b294..d86e3c3 100644
--- a/redfish-core/lib/thermal_subsystem.hpp
+++ b/redfish-core/lib/thermal_subsystem.hpp
@@ -24,6 +24,10 @@
         messages::resourceNotFound(asyncResp->res, "Chassis", chassisId);
         return;
     }
+
+    asyncResp->res.addHeader(
+        boost::beast::http::field::link,
+        "</redfish/v1/JsonSchemas/ThermalSubsystem/ThermalSubsystem.json>; rel=describedby");
     asyncResp->res.jsonValue["@odata.type"] =
         "#ThermalSubsystem.v1_0_0.ThermalSubsystem";
     asyncResp->res.jsonValue["Name"] = "Thermal Subsystem";
@@ -36,16 +40,40 @@
     asyncResp->res.jsonValue["Status"]["Health"] = "OK";
 }
 
-inline void handleThermalSubsystemCollectionGet(
+inline void handleThermalSubsystemCollectionHead(
     App& app, const crow::Request& req,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
-    const std::string& param)
+    const std::string& chassisId)
 {
     if (!redfish::setUpRedfishRoute(app, req, asyncResp))
     {
         return;
     }
-    const std::string& chassisId = param;
+
+    auto respHandler = [asyncResp, chassisId](
+                           const std::optional<std::string>& validChassisPath) {
+        if (!validChassisPath)
+        {
+            messages::resourceNotFound(asyncResp->res, "Chassis", chassisId);
+            return;
+        }
+        asyncResp->res.addHeader(
+            boost::beast::http::field::link,
+            "</redfish/v1/JsonSchemas/ThermalSubsystem/ThermalSubsystem.json>; rel=describedby");
+    };
+    redfish::chassis_utils::getValidChassisPath(asyncResp, chassisId,
+                                                std::bind_front(respHandler));
+}
+
+inline void handleThermalSubsystemCollectionGet(
+    App& app, const crow::Request& req,
+    const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+    const std::string& chassisId)
+{
+    if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+    {
+        return;
+    }
 
     redfish::chassis_utils::getValidChassisPath(
         asyncResp, chassisId,
@@ -55,6 +83,11 @@
 inline void requestRoutesThermalSubsystem(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/ThermalSubsystem/")
+        .privileges(redfish::privileges::headThermalSubsystem)
+        .methods(boost::beast::http::verb::head)(std::bind_front(
+            handleThermalSubsystemCollectionHead, std::ref(app)));
+
+    BMCWEB_ROUTE(app, "/redfish/v1/Chassis/<str>/ThermalSubsystem/")
         .privileges(redfish::privileges::getThermalSubsystem)
         .methods(boost::beast::http::verb::get)(std::bind_front(
             handleThermalSubsystemCollectionGet, std::ref(app)));
