diff --git a/power-supply/record_manager.cpp b/power-supply/record_manager.cpp
index c3f8984..ec6e917 100644
--- a/power-supply/record_manager.cpp
+++ b/power-supply/record_manager.cpp
@@ -94,6 +94,32 @@
     return true;
 }
 
+auto RecordManager::getAverageRecords() -> DBusRecordList
+{
+    DBusRecordList list;
+
+    for (const auto& r : records)
+    {
+        list.emplace_back(std::get<recTimePos>(r),
+                          std::get<recAvgPos>(r));
+    }
+
+    return list;
+}
+
+auto RecordManager::getMaximumRecords() -> DBusRecordList
+{
+    DBusRecordList list;
+
+    for (const auto& r : records)
+    {
+        list.emplace_back(std::get<recTimePos>(r),
+                          std::get<recMaxPos>(r));
+    }
+
+    return list;
+}
+
 size_t RecordManager::getRawRecordID(
         const std::vector<uint8_t>& data) const
 {
diff --git a/power-supply/record_manager.hpp b/power-supply/record_manager.hpp
index e1a2cfc..8504803 100644
--- a/power-supply/record_manager.hpp
+++ b/power-supply/record_manager.hpp
@@ -108,6 +108,24 @@
         bool add(const std::vector<uint8_t>& rawRecord);
 
         /**
+         * @brief Returns the history of average input power
+         *        in a representation used by D-Bus.
+         *
+         * @return DBusRecordList - A list of averages with
+         *         a timestamp for each entry.
+         */
+        DBusRecordList getAverageRecords();
+
+        /**
+         * @brief Returns the history of maximum input power
+         *        in a representation used by D-Bus.
+         *
+         * @return DBusRecordList - A list of maximums with
+         *         a timestamp for each entry.
+         */
+        DBusRecordList getMaximumRecords();
+
+        /**
          * @brief Converts a Linear Format power number to an integer
          *
          * The PMBus spec describes a 2 byte Linear Format
