diff --git a/src/datastore_access.hpp b/src/datastore_access.hpp
index 29253ce..addd9f8 100644
--- a/src/datastore_access.hpp
+++ b/src/datastore_access.hpp
@@ -44,7 +44,7 @@
 public:
     using Tree = std::vector<std::pair<std::string, leaf_data_>>;
     virtual ~DatastoreAccess() = 0;
-    virtual Tree getItems(const std::string& path) = 0;
+    virtual Tree getItems(const std::string& path) const = 0;
     virtual void setLeaf(const std::string& path, leaf_data_ value) = 0;
     virtual void createItem(const std::string& path) = 0;
     virtual void deleteItem(const std::string& path) = 0;
diff --git a/src/netconf_access.cpp b/src/netconf_access.cpp
index bcf6fb4..dccec1c 100644
--- a/src/netconf_access.cpp
+++ b/src/netconf_access.cpp
@@ -16,7 +16,7 @@
 
 NetconfAccess::~NetconfAccess() = default;
 
-DatastoreAccess::Tree NetconfAccess::getItems(const std::string& path)
+DatastoreAccess::Tree NetconfAccess::getItems(const std::string& path) const
 {
     Tree res;
     auto config = m_session->get((path != "/") ? std::optional{path} : std::nullopt);
diff --git a/src/netconf_access.hpp b/src/netconf_access.hpp
index 3f45a27..924b2c2 100644
--- a/src/netconf_access.hpp
+++ b/src/netconf_access.hpp
@@ -33,7 +33,7 @@
     NetconfAccess(const std::string& socketPath);
     NetconfAccess(std::unique_ptr<libnetconf::client::Session>&& session);
     ~NetconfAccess() override;
-    Tree getItems(const std::string& path) override;
+    Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
diff --git a/src/sysrepo_access.cpp b/src/sysrepo_access.cpp
index 70b8823..e95d740 100644
--- a/src/sysrepo_access.cpp
+++ b/src/sysrepo_access.cpp
@@ -186,7 +186,7 @@
     }
 }
 
-DatastoreAccess::Tree SysrepoAccess::getItems(const std::string& path)
+DatastoreAccess::Tree SysrepoAccess::getItems(const std::string& path) const
 {
     using namespace std::string_literals;
     Tree res;
@@ -364,7 +364,7 @@
     return m_schema;
 }
 
-[[noreturn]] void SysrepoAccess::reportErrors()
+[[noreturn]] void SysrepoAccess::reportErrors() const
 {
     // I only use get_last_errors to get error info, since the error code from
     // sysrepo_exception doesn't really give any meaningful information. For
diff --git a/src/sysrepo_access.hpp b/src/sysrepo_access.hpp
index 4d87847..3150791 100644
--- a/src/sysrepo_access.hpp
+++ b/src/sysrepo_access.hpp
@@ -28,7 +28,7 @@
 public:
     ~SysrepoAccess() override;
     SysrepoAccess(const std::string& appname, const Datastore datastore);
-    Tree getItems(const std::string& path) override;
+    Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
@@ -43,7 +43,7 @@
 
 private:
     std::vector<ListInstance> listInstances(const std::string& path) override;
-    [[noreturn]] void reportErrors();
+    [[noreturn]] void reportErrors() const;
 
     std::string fetchSchema(const char* module, const char* revision, const char* submodule);
     std::vector<std::shared_ptr<sysrepo::Yang_Schema>> listSchemas();
diff --git a/src/yang_access.cpp b/src/yang_access.cpp
index 71aebf1..c509231 100644
--- a/src/yang_access.cpp
+++ b/src/yang_access.cpp
@@ -108,7 +108,7 @@
     m_datastore = lyWrap(datastore);
 }
 
-DatastoreAccess::Tree YangAccess::getItems(const std::string& path)
+DatastoreAccess::Tree YangAccess::getItems(const std::string& path) const
 {
     DatastoreAccess::Tree res;
     if (!m_datastore) {
diff --git a/src/yang_access.hpp b/src/yang_access.hpp
index 9f20b51..9b8a443 100644
--- a/src/yang_access.hpp
+++ b/src/yang_access.hpp
@@ -22,7 +22,7 @@
 public:
     YangAccess();
     ~YangAccess() override;
-    Tree getItems(const std::string& path) override;
+    Tree getItems(const std::string& path) const override;
     void setLeaf(const std::string& path, leaf_data_ value) override;
     void createItem(const std::string& path) override;
     void deleteItem(const std::string& path) override;
diff --git a/tests/datastoreaccess_mock.hpp b/tests/datastoreaccess_mock.hpp
index 8252d04..a495b99 100644
--- a/tests/datastoreaccess_mock.hpp
+++ b/tests/datastoreaccess_mock.hpp
@@ -19,7 +19,7 @@
 }
 
 class MockDatastoreAccess : public trompeloeil::mock_interface<DatastoreAccess> {
-    IMPLEMENT_MOCK1(getItems);
+    IMPLEMENT_CONST_MOCK1(getItems);
     IMPLEMENT_MOCK2(setLeaf);
     IMPLEMENT_MOCK1(createItem);
     IMPLEMENT_MOCK1(deleteItem);
