diff --git a/core/api/src/main/java/org/onosproject/net/Direction.java b/core/api/src/main/java/org/onosproject/net/Direction.java
new file mode 100644
index 0000000..22cbc4b
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/Direction.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2016 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.net;
+
+/**
+ * Represents a direction. Typically applied to links or ports.
+ */
+public enum Direction {
+    ALL,
+    INGRESS,
+    EGRESS
+}
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/PowerConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/PowerConfig.java
new file mode 100644
index 0000000..8094f5b
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/PowerConfig.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2016 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.net.behaviour;
+
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.driver.HandlerBehaviour;
+
+import java.util.Optional;
+
+/**
+ * Behavior for handling port power configurations.
+ *
+ * Power operations act on a network port and a component thereof.
+ * Supported components are either the full directed port ({@link org.onosproject.net.Direction})
+ * or a wavelength on a port ({@link org.onosproject.net.OchSignal}).
+ *
+ * Power levels are specified with a long and unit .01 dBm.
+ */
+public interface PowerConfig<T> extends HandlerBehaviour {
+
+    /**
+     * Get the target power on the component.
+     *
+     * @param port the port
+     * @param component the port component
+     * @return target power in .01 dBm
+     */
+    Optional<Long> getTargetPower(PortNumber port, T component);
+
+    /**
+     * Set the target power on the component.
+     *
+     *
+     * @param port the port
+     * @param component the port component
+     * @param power target power in .01 dBm
+     */
+    void setTargetPower(PortNumber port, T component, long power);
+
+    /**
+     * Get the current power on the component.
+     *
+     * @param port the port
+     * @param component the port component
+     * @return power power in .01 dBm
+     */
+    Optional<Long> currentPower(PortNumber port, T component);
+}
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
index edf9f02..abbe0ac 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/LinksWebResource.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.rest.resources;
 
+import org.onosproject.net.Direction;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Link;
@@ -35,12 +36,6 @@
 @Path("links")
 public class LinksWebResource extends AbstractWebResource {
 
-    enum Direction {
-        ALL,
-        INGRESS,
-        EGRESS
-    }
-
     /**
      * Get infrastructure links.
      * Returns array of all links, or links for the specified device or port.
