diff --git a/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java b/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java
new file mode 100644
index 0000000..d19b9be
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/topo/NodeBadge.java
@@ -0,0 +1,149 @@
+/*
+ *  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.ui.topo;
+
+/**
+ * Designates a badge to be applied to a node in the topology view.
+ */
+public final class NodeBadge {
+
+    private static final String EMPTY = "";
+
+    /** Designates the type of badge. */
+    public enum Type {
+        INFO("i"),
+        WARN("w"),
+        ERROR("e"),
+        CHECK_MARK("/"),
+        X_MARK("X"),
+        NUMBER("n");
+
+        private String code;
+
+        Type(String code) {
+            this.code = code;
+        }
+
+        @Override
+        public String toString() {
+            return "{" + code + "}";
+        }
+
+        /** Returns the type's code in string form. */
+        public String code() {
+            return code;
+        }
+    }
+
+    private final Type type;
+    private final String message;
+
+    // only instantiated through static methods.
+    private NodeBadge(Type type, String message) {
+        this.type = type;
+        this.message = message;
+    }
+
+    @Override
+    public String toString() {
+        return "{Badge " + type + " \"" + message + "\"}";
+    }
+
+    /**
+     * Returns the badge type.
+     *
+     * @return badge type
+     */
+    public Type type() {
+        return type;
+    }
+
+    /**
+     * Returns the message associated with the badge.
+     *
+     * @return associated message
+     */
+    public String message() {
+        return message;
+    }
+
+    private static String nonNull(String s) {
+        return s == null ? EMPTY : s;
+    }
+
+    /**
+     * Returns an informational badge, with associated message.
+     *
+     * @param message the message
+     * @return INFO type node badge
+     */
+    public static NodeBadge info(String message) {
+        return new NodeBadge(Type.INFO, nonNull(message));
+    }
+
+    /**
+     * Returns a warning badge, with associated message.
+     *
+     * @param message the message
+     * @return WARN type node badge
+     */
+    public static NodeBadge warn(String message) {
+        return new NodeBadge(Type.WARN, nonNull(message));
+    }
+
+    /**
+     * Returns an error badge, with associated message.
+     *
+     * @param message the message
+     * @return ERROR type node badge
+     */
+    public static NodeBadge error(String message) {
+        return new NodeBadge(Type.ERROR, nonNull(message));
+    }
+
+    /**
+     * Returns a check-mark badge, with associated message.
+     *
+     * @param message the message
+     * @return CHECK_MARK type node badge
+     */
+    public static NodeBadge checkMark(String message) {
+        return new NodeBadge(Type.CHECK_MARK, nonNull(message));
+    }
+
+    /**
+     * Returns an X-mark badge, with associated message.
+     *
+     * @param message the message
+     * @return X_MARK type node badge
+     */
+    public static NodeBadge xMark(String message) {
+        return new NodeBadge(Type.X_MARK, nonNull(message));
+    }
+
+    /**
+     * Returns a numeric badge.
+     *
+     * @param n the number
+     * @return NUMBER type node badge
+     */
+    public static NodeBadge number(int n) {
+        // TODO: consider constraints, e.g. 1 <= n <= 99
+        return new NodeBadge(Type.NUMBER, Integer.toString(n));
+    }
+
+}
diff --git a/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java b/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java
new file mode 100644
index 0000000..12b0db6
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/ui/topo/NodeBadgeTest.java
@@ -0,0 +1,116 @@
+/*
+ *  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.ui.topo;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Unit tests for {@link NodeBadge}.
+ */
+public class NodeBadgeTest {
+
+    private static final String SOME_MSG = "a msg";
+    private static final String WR_T = "wrong type";
+    private static final String WR_M = "wrong message";
+    private static final String WR_SF = "wrong string format";
+
+    private NodeBadge badge;
+
+    private String expStr(String t) {
+        return "{Badge {" + t + "} \"" + SOME_MSG + "\"}";
+    }
+
+    private String expNumStr(String n) {
+        return "{Badge {n} \"" + n + "\"}";
+    }
+
+    @Test
+    public void info() {
+        badge = NodeBadge.info(SOME_MSG);
+        assertEquals(WR_T, NodeBadge.Type.INFO, badge.type());
+        assertEquals(WR_M, SOME_MSG, badge.message());
+        assertEquals(WR_SF, expStr("i"), badge.toString());
+    }
+
+    @Test
+    public void warn() {
+        badge = NodeBadge.warn(SOME_MSG);
+        assertEquals(WR_T, NodeBadge.Type.WARN, badge.type());
+        assertEquals(WR_M, SOME_MSG, badge.message());
+        assertEquals(WR_SF, expStr("w"), badge.toString());
+    }
+
+    @Test
+    public void error() {
+        badge = NodeBadge.error(SOME_MSG);
+        assertEquals(WR_T, NodeBadge.Type.ERROR, badge.type());
+        assertEquals(WR_M, SOME_MSG, badge.message());
+        assertEquals(WR_SF, expStr("e"), badge.toString());
+    }
+
+    @Test
+    public void checkMark() {
+        badge = NodeBadge.checkMark(SOME_MSG);
+        assertEquals(WR_T, NodeBadge.Type.CHECK_MARK, badge.type());
+        assertEquals(WR_M, SOME_MSG, badge.message());
+        assertEquals(WR_SF, expStr("/"), badge.toString());
+    }
+
+    @Test
+    public void xMark() {
+        badge = NodeBadge.xMark(SOME_MSG);
+        assertEquals(WR_T, NodeBadge.Type.X_MARK, badge.type());
+        assertEquals(WR_M, SOME_MSG, badge.message());
+        assertEquals(WR_SF, expStr("X"), badge.toString());
+    }
+
+    @Test
+    public void number0() {
+        badge = NodeBadge.number(0);
+        assertEquals(WR_T, NodeBadge.Type.NUMBER, badge.type());
+        assertEquals(WR_M, "0", badge.message());
+        assertEquals(WR_SF, expNumStr("0"), badge.toString());
+    }
+
+    @Test
+    public void number5() {
+        badge = NodeBadge.number(5);
+        assertEquals(WR_T, NodeBadge.Type.NUMBER, badge.type());
+        assertEquals(WR_M, "5", badge.message());
+        assertEquals(WR_SF, expNumStr("5"), badge.toString());
+    }
+
+    @Test
+    public void number99() {
+        badge = NodeBadge.number(99);
+        assertEquals(WR_T, NodeBadge.Type.NUMBER, badge.type());
+        assertEquals(WR_M, "99", badge.message());
+        assertEquals(WR_SF, expNumStr("99"), badge.toString());
+    }
+
+    @Test
+    public void badgeTypes() {
+        assertEquals(WR_SF, "i", NodeBadge.Type.INFO.code());
+        assertEquals(WR_SF, "w", NodeBadge.Type.WARN.code());
+        assertEquals(WR_SF, "e", NodeBadge.Type.ERROR.code());
+        assertEquals(WR_SF, "/", NodeBadge.Type.CHECK_MARK.code());
+        assertEquals(WR_SF, "X", NodeBadge.Type.X_MARK.code());
+        assertEquals(WR_SF, "n", NodeBadge.Type.NUMBER.code());
+    }
+}
