diff --git a/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java b/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java
new file mode 100644
index 0000000..a0f0648
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/PartitionInfo.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.service;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * Contains information about a database partition.
+ */
+public class PartitionInfo {
+    private final String name;
+    private final long term;
+    private final List<String> members;
+    private final String leader;
+
+    /**
+     * Class constructor.
+     *
+     * @param name partition name
+     * @param term term number
+     * @param members partition members
+     * @param leader leader name
+     */
+    public PartitionInfo(String name, long term, List<String> members, String leader) {
+        this.name = name;
+        this.term = term;
+        this.members = ImmutableList.copyOf(members);
+        this.leader = leader;
+    }
+
+    /**
+     * Returns the name of the partition.
+     *
+     * @return partition name
+     */
+    public String name() {
+        return name;
+    }
+
+    /**
+     * Returns the term number.
+     *
+     * @return term number
+     */
+    public long term() {
+        return term;
+    }
+
+    /**
+     * Returns the list of partition members.
+     *
+     * @return partition members
+     */
+    public List<String> members() {
+        return members;
+    }
+
+    /**
+     * Returns the partition leader.
+     *
+     * @return partition leader
+     */
+    public String leader() {
+        return leader;
+    }
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java b/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java
new file mode 100644
index 0000000..427b953
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageAdminService.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.service;
+
+import java.util.List;
+
+/**
+ * Service for administering storage instances.
+ */
+public interface StorageAdminService {
+
+    /**
+     * Returns information about all partitions in the system.
+     *
+     * @return list of partition information
+     */
+    List<PartitionInfo> getPartitionInfo();
+}
