diff --git a/src/main/java/org/onosproject/cordvtn/CordVtn.java b/src/main/java/org/onosproject/cordvtn/CordVtn.java
index 6729774..a31917a 100644
--- a/src/main/java/org/onosproject/cordvtn/CordVtn.java
+++ b/src/main/java/org/onosproject/cordvtn/CordVtn.java
@@ -282,6 +282,14 @@
         return state != null && state.equals(NodeState.COMPLETE);
     }
 
+    @Override
+    public void createServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId) {
+    }
+
+    @Override
+    public void removeServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId) {
+    }
+
     /**
      * Returns state of a given cordvtn node.
      *
diff --git a/src/main/java/org/onosproject/cordvtn/CordVtnService.java b/src/main/java/org/onosproject/cordvtn/CordVtnService.java
index 5ab7baf..7bbc1e3 100644
--- a/src/main/java/org/onosproject/cordvtn/CordVtnService.java
+++ b/src/main/java/org/onosproject/cordvtn/CordVtnService.java
@@ -65,4 +65,20 @@
      * @return list of nodes
      */
     List<CordVtnNode> getNodes();
+
+    /**
+     * Creates a dependency between two services.
+     *
+     * @param tenantServiceId id of the service which has a dependency
+     * @param providerServiceId id of the service which provides dependency
+     */
+    void createServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId);
+
+    /**
+     * Removes a dependency between two services.
+     *
+     * @param tenantServiceId id of the service which has a dependency
+     * @param providerServiceId id of the service which provides dependency
+     */
+    void removeServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId);
 }
diff --git a/src/main/java/org/onosproject/cordvtn/Service.java b/src/main/java/org/onosproject/cordvtn/Service.java
new file mode 100644
index 0000000..2c31ccc
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/Service.java
@@ -0,0 +1,130 @@
+/*
+ * 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.cordvtn;
+
+import com.google.common.base.MoreObjects;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+
+import java.util.Objects;
+
+public final class Service {
+
+    enum ServiceType {
+        PRIVATE,
+        PRIVATE_DIRECT,
+        PRIVATE_INDIRECT,
+        PUBLIC_DIRECT,
+        PUBLIC_INDIRECT
+    }
+
+    private final ServiceId serviceId;
+    private final String networkId;
+    private final ServiceType serviceType;
+    private final IpPrefix serviceIpRange;
+    private final IpAddress serviceIp;
+
+    /**
+     * Default constructor.
+     *
+     * @param serviceId service id
+     * @param networkId OpenStack Neutron network id
+     * @param serviceType service type
+     * @param serviceIpRange service ip range
+     * @param serviceIp service ip
+     */
+    public Service(ServiceId serviceId, String networkId, ServiceType serviceType,
+                   IpPrefix serviceIpRange, IpAddress serviceIp) {
+        this.serviceId = serviceId;
+        this.networkId = networkId;
+        this.serviceType = serviceType;
+        this.serviceIpRange = serviceIpRange;
+        this.serviceIp = serviceIp;
+    }
+
+    /**
+     * Returns service ID.
+     *
+     * @return service id
+     */
+    public ServiceId serviceId() {
+        return serviceId;
+    }
+
+    /**
+     * Returns OpenStack Neutron network ID of this service.
+     *
+     * @return network id
+     */
+    public String networkId() {
+        return networkId;
+    }
+
+    /**
+     * Returns service type.
+     *
+     * @return service type
+     */
+    public ServiceType serviceType() {
+        return serviceType;
+    }
+
+    /**
+     * Returns service IP range.
+     *
+     * @return CIDR
+     */
+    public IpPrefix serviceIpRange() {
+        return serviceIpRange;
+    }
+
+    /**
+     * Returns service IP address.
+     *
+     * @return ip address
+     */
+    public IpAddress serviceIp() {
+        return serviceIp;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(serviceId);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof Service)) {
+            return false;
+        }
+        final Service other = (Service) obj;
+        return Objects.equals(this.serviceId, other.serviceId);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+                .add("serviceId", serviceId)
+                .add("networkId", networkId)
+                .add("serviceType", serviceType)
+                .add("serviceIpRange", serviceIpRange)
+                .add("serviceIp", serviceIp)
+                .toString();
+    }
+}
diff --git a/src/main/java/org/onosproject/cordvtn/ServiceId.java b/src/main/java/org/onosproject/cordvtn/ServiceId.java
new file mode 100644
index 0000000..0971692
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/ServiceId.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2014-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.cordvtn;
+
+import com.google.common.base.MoreObjects;
+
+import java.util.Objects;
+
+/**
+ * Representation of service identifier.
+ */
+public final class ServiceId {
+
+    private final long serviceId;
+
+    /**
+     * Default constructor.
+     *
+     * @param serviceId service identifier
+     */
+    private ServiceId(long serviceId) {
+        this.serviceId = serviceId;
+    }
+
+    /**
+     * Returns the ServiceId with value.
+     *
+     * @param serviceId service id
+     * @return ServiceId
+     */
+    public static ServiceId of(long serviceId) {
+        return new ServiceId(serviceId);
+    }
+
+    /**
+     * Returns service identifier.
+     *
+     * @return service id
+     */
+    public long serviceId() {
+        return serviceId;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(serviceId);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof ServiceId)) {
+            return false;
+        }
+        final ServiceId other = (ServiceId) obj;
+        return Objects.equals(this.serviceId, other.serviceId);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+                .add("serviceId", serviceId)
+                .toString();
+    }
+}
diff --git a/src/main/java/org/onosproject/cordvtn/rest/ApiDocRegistrator.java b/src/main/java/org/onosproject/cordvtn/rest/ApiDocRegistrator.java
new file mode 100644
index 0000000..b6e876f
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/rest/ApiDocRegistrator.java
@@ -0,0 +1,29 @@
+/*
+ * 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.cordvtn.rest;
+
+import org.apache.felix.scr.annotations.Component;
+import org.onosproject.rest.AbstractApiDocRegistrator;
+import org.onosproject.rest.ApiDocProvider;
+
+@Component(immediate = true)
+public class ApiDocRegistrator extends AbstractApiDocRegistrator {
+    public ApiDocRegistrator() {
+        super(new ApiDocProvider("/onos/cordvtn",
+                                 "CORD VTN Service REST API",
+                                 ApiDocRegistrator.class.getClassLoader()));
+    }
+}
diff --git a/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java b/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java
new file mode 100644
index 0000000..77822f2
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/rest/ServiceDependencyWebResource.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cordvtn.rest;
+
+import org.onosproject.rest.AbstractWebResource;
+
+import javax.ws.rs.Path;
+
+/**
+ * Manages service dependency.
+ */
+@Path("service-dependency")
+public class ServiceDependencyWebResource extends AbstractWebResource {
+}
diff --git a/src/main/java/org/onosproject/cordvtn/rest/package-info.java b/src/main/java/org/onosproject/cordvtn/rest/package-info.java
new file mode 100644
index 0000000..797a83f
--- /dev/null
+++ b/src/main/java/org/onosproject/cordvtn/rest/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+/**
+ * REST APIs for CORD VTN.
+ */
+package org.onosproject.cordvtn.rest;
\ No newline at end of file
