diff --git a/grid5000/objects.py b/grid5000/objects.py
index 01fb6a0f97420731e0de06c349a0797533671b22..55c37fe15285ff9ad47109521d92d73e8b389f42 100644
--- a/grid5000/objects.py
+++ b/grid5000/objects.py
@@ -27,6 +27,14 @@ class Metric(RESTObject):
             return super().__repr__()
 
 
+class Environment(RESTObject):
+    pass
+
+
+class Pdu(RESTObject):
+    pass
+
+
 class Server(RESTObject):
     pass
 
@@ -121,9 +129,11 @@ class Site(RESTObject):
     _managers = (
         ("clusters", "ClusterManager"),
         ("deployments", "DeploymentManager"),
+        ("environments", "EnvironmentManager"),
         ("jobs", "JobManager"),
         ("metrics", "SiteMetricManager"),
         ("network_equipments", "SiteNetworkEquipmentManager"),
+        ("pdus", "PduManager"),
         ("servers", "ServerManager"),
         ("status", "SiteStatusManager"),
         ("storage", "StorageManager"),
@@ -293,6 +303,12 @@ class DeploymentManager(NoUpdateMixin, BracketMixin, RESTManager):
     _from_parent_attrs = {"site": "uid"}
 
 
+class EnvironmentManager(RESTManager, BracketMixin, RetrieveMixin):
+    _path = "/sites/%(site)s/environments"
+    _obj_cls = Environment
+    _from_parent_attrs = {"site": "uid"}
+
+
 class VlanManager(RetrieveMixin, BracketMixin, RESTManager):
     _path = "/sites/%(site)s/vlans"
     _obj_cls = Vlan
@@ -389,6 +405,12 @@ class ClusterStatusManager(RESTManager, RetrieveMixin):
     _from_parent_attrs = {"site": "site", "cluster": "uid"}
 
 
+class PduManager(RESTManager, BracketMixin, RetrieveMixin):
+    _path = "/sites/%(site)s/pdus"
+    _obj_cls = Pdu
+    _from_parent_attrs = {"site": "uid"}
+
+
 class ServerManager(RESTManager, BracketMixin, RetrieveMixin):
     _path = "/sites/%(site)s/servers"
     _obj_cls = Server