diff --git a/models/tapi/src/main/yang/tapi-topology@2018-12-10.yang b/models/tapi/src/main/yang/tapi-topology@2018-12-10.yang
new file mode 100755
index 0000000..0d35d85
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-topology@2018-12-10.yang
@@ -0,0 +1,716 @@
+module tapi-topology {
+    namespace "urn:onf:otcc:yang:tapi-topology";
+    prefix tapi-topology;
+    import tapi-common {
+        prefix tapi-common;
+    }
+    organization "ONF OTCC (Open Transport Configuration & Control) Project";
+    contact "
+         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
+         Project List: <mailto:transport-api@opennetworking.org>
+         Editor: Karthik Sethuraman
+                 <mailto:karthik.sethuraman@necam.com>";
+    description "
+        This module contains TAPI Topology Model definitions.
+        Source: TapiTopology.uml
+        - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
+        - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
+          <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
+          and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
+          <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
+        - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
+          As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
+        - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
+          The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
+          YANG models included in this release may not be backward compatible with previous TAPI releases.
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    revision 2018-12-10 {
+        description "ONF Transport API version 2.1.1.
+                   Changes included in this TAPI release (v2.1.1) are listed in
+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
+    }
+    revision 2018-10-16 {
+        description "ONF Transport API version 2.1.0.
+                   Changes included in this TAPI release (v2.1.0) are listed in
+                   <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
+    }
+    revision 2018-03-07 {
+        description "ONF Transport API version 2.0.2
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
+    }
+    revision 2018-02-16 {
+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
+    }
+    revision 2018-01-02 {
+        description "ONF Transport API version 2.0.0
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
+    }
+    augment "/tapi-common:context" {
+        container topology-context {
+            uses topology-context;
+            description "Augments the base TAPI Context with TopologyService information";
+        }
+        description "Augments the base TAPI Context with TopologyService information";
+    }
+
+   /**************************
+    * definitions of refrences
+    **************************/
+    grouping topology-ref {
+        leaf topology-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+    grouping link-ref {
+        uses topology-ref;
+        leaf link-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+    grouping node-ref {
+        uses topology-ref;
+        leaf node-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+    grouping node-edge-point-ref {
+        uses node-ref;
+        leaf node-edge-point-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+    grouping node-rule-group-ref {
+        uses node-ref;
+        leaf node-rule-group-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+
+   /**************************
+    * package object-classes
+    **************************/
+    grouping link {
+        list node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            config false;
+            min-elements 2;
+            description "none";
+        }
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        leaf direction {
+            type tapi-common:forwarding-direction;
+            config false;
+            description "The directionality of the Link.
+                Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).
+                Is not present in more complex cases.";
+        }
+        container resilience-type {
+            uses resilience-type;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-integrity-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        uses validation-pac;
+        uses layer-protocol-transition-pac;
+        description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
+    }
+    grouping node {
+        list owned-node-edge-point {
+            key 'uuid';
+            config false;
+            uses node-edge-point;
+            description "none";
+        }
+        list aggregated-node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            config false;
+            description "none";
+        }
+        list node-rule-group {
+            key 'uuid';
+            uses node-rule-group;
+            description "none";
+        }
+        container encap-topology {
+            uses topology-ref;
+            config false;
+            description "none";
+        }
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-integrity-pac;
+        uses transfer-timing-pac;
+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
+    }
+    grouping topology {
+        list node {
+            key 'uuid';
+            config false;
+            uses node;
+            description "none";
+        }
+        list link {
+            key 'uuid';
+            config false;
+            uses link;
+            description "none";
+        }
+        leaf-list layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            min-elements 1;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
+            At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
+    }
+    grouping layer-protocol-transition-pac {
+        leaf-list transitioned-layer-protocol-name {
+            type string;
+            min-elements 2;
+            description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
+        }
+        description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.
+            This abstraction is relevant when considering multi-layer routing. 
+            The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
+            This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
+            Links that included details in this Pac are often referred to as Transitional Links.";
+    }
+    grouping node-edge-point {
+        leaf layer-protocol-name {
+            type tapi-common:layer-protocol-name;
+            config false;
+            description "none";
+        }
+        leaf-list supported-cep-layer-protocol-qualifier {
+            type tapi-common:layer-protocol-qualifier;
+            min-elements 1;
+            description "none";
+        }
+        list aggregated-node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            config false;
+            description "none";
+        }
+        list mapped-service-interface-point {
+            uses tapi-common:service-interface-point-ref;
+            key 'service-interface-point-uuid';
+            config false;
+            description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";
+        }
+        leaf link-port-direction {
+            type tapi-common:port-direction;
+            config false;
+            description "The orientation of defined flow at the LinkEnd.";
+        }
+        leaf link-port-role {
+            type tapi-common:port-role;
+            config false;
+            description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:admin-state-pac;
+        uses tapi-common:termination-pac;
+        uses tapi-common:capacity-pac;
+        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
+            The structure of LTP supports all transport protocols including circuit and packet forms.";
+    }
+    grouping risk-parameter-pac {
+        list risk-characteristic {
+            key 'risk-characteristic-name';
+            config false;
+            min-elements 1;
+            uses risk-characteristic;
+            description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
+        }
+        description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.
+            The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
+            A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
+            The realization can be partitioned into segments which have some relevant common failure modes.
+            There is a risk of failure/degradation of each segment of the underlying realization.
+            Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
+            Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
+            Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
+            The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
+            A segment has one or more risk characteristic.
+            Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
+            Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
+    }
+    grouping transfer-cost-pac {
+        list cost-characteristic {
+            key 'cost-name';
+            config false;
+            min-elements 1;
+            uses cost-characteristic;
+            description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
+        }
+        description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.
+            They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
+            There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.
+            Using an entity will incur a cost. ";
+    }
+    grouping transfer-integrity-pac {
+        leaf error-characteristic {
+            type string;
+            config false;
+            description "Describes the degree to which the signal propagated can be errored.
+                Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
+        }
+        leaf loss-characteristic {
+            type string;
+            config false;
+            description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
+                Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
+        }
+        leaf repeat-delivery-characteristic {
+            type string;
+            config false;
+            description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).
+                It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
+        }
+        leaf delivery-order-characteristic {
+            type string;
+            config false;
+            description "Describes the degree to which packets will be delivered out of sequence.
+                Does not apply to TDM as the TDM protocols maintain strict order.";
+        }
+        leaf unavailable-time-characteristic {
+            type string;
+            config false;
+            description "Describes the duration for which there may be no valid signal propagated.";
+        }
+        leaf server-integrity-process-characteristic {
+            type string;
+            config false;
+            description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
+        }
+        description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
+            It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
+            Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
+    }
+    grouping transfer-timing-pac {
+        list latency-characteristic {
+            key 'traffic-property-name';
+            config false;
+            min-elements 1;
+            uses latency-characteristic;
+            description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
+        }
+        description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
+    }
+    grouping validation-pac {
+        list validation-mechanism {
+            key 'validation-mechanism';
+            config false;
+            min-elements 1;
+            uses validation-mechanism;
+            description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
+        }
+        description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
+    }
+    grouping network-topology-service {
+        list topology {
+            uses topology-ref;
+            key 'topology-uuid';
+            config false;
+            description "none";
+        }
+        uses tapi-common:service-spec;
+        description "none";
+    }
+    grouping topology-context {
+        container nw-topology-service {
+            config false;
+            uses network-topology-service;
+            description "none";
+        }
+        list topology {
+            key 'uuid';
+            config false;
+            uses topology;
+            description "none";
+        }
+        description "none";
+    }
+    grouping inter-rule-group {
+        list rule {
+            key 'local-id';
+            min-elements 1;
+            uses rule;
+            description "none";
+        }
+        list associated-node-rule-group {
+            uses node-rule-group-ref;
+            key 'topology-uuid node-uuid node-rule-group-uuid';
+            min-elements 2;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        description "none";
+    }
+    grouping node-rule-group {
+        list rule {
+            key 'local-id';
+            min-elements 1;
+            uses rule;
+            description "none";
+        }
+        list node-edge-point {
+            uses node-edge-point-ref;
+            key 'topology-uuid node-uuid node-edge-point-uuid';
+            min-elements 1;
+            description "none";
+        }
+        list composed-rule-group {
+            uses node-rule-group-ref;
+            key 'topology-uuid node-uuid node-rule-group-uuid';
+            description "none";
+        }
+        list inter-rule-group {
+            key 'uuid';
+            uses inter-rule-group;
+            description "none";
+        }
+        uses tapi-common:resource-spec;
+        uses tapi-common:capacity-pac;
+        uses transfer-cost-pac;
+        uses transfer-timing-pac;
+        uses risk-parameter-pac;
+        description "none";
+    }
+    grouping rule {
+        leaf rule-type {
+            type rule-type;
+            description "none";
+        }
+        leaf forwarding-rule {
+            type forwarding-rule;
+            description "none";
+        }
+        leaf override-priority {
+            type uint64;
+            description "none";
+        }
+        uses tapi-common:local-class;
+        description "none";
+    }
+
+   /**************************
+    * package type-definitions
+    **************************/
+    grouping cost-characteristic {
+        leaf cost-name {
+            type string;
+            description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
+        }
+        leaf cost-value {
+            type string;
+            description "The specific cost.";
+        }
+        leaf cost-algorithm {
+            type string;
+            description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
+        }
+        description "The information for a particular cost characteristic.";
+    }
+    grouping latency-characteristic {
+        leaf traffic-property-name {
+            type string;
+            description "The identifier of the specific traffic property to which the queuing latency applies.";
+        }
+        leaf fixed-latency-characteristic {
+            type string;
+            config false;
+            description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
+        }
+        leaf queing-latency-characteristic {
+            type string;
+            description "The specific queuing latency for the traffic property.";
+        }
+        leaf jitter-characteristic {
+            type string;
+            config false;
+            description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
+                Applies to TDM systems (and not packet).";
+        }
+        leaf wander-characteristic {
+            type string;
+            config false;
+            description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
+                Applies to TDM systems (and not packet).";
+        }
+        description "Provides information on latency characteristic for a particular stated trafficProperty.";
+    }
+    grouping risk-characteristic {
+        leaf risk-characteristic-name {
+            type string;
+            description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.
+                For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
+                Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
+        }
+        leaf-list risk-identifier-list {
+            type string;
+            min-elements 1;
+            description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
+        }
+        description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
+    }
+    grouping validation-mechanism {
+        leaf validation-mechanism {
+            type string;
+            description "Name of mechanism used to validate adjacency";
+        }
+        leaf layer-protocol-adjacency-validated {
+            type string;
+            description "State of validatiion";
+        }
+        leaf validation-robustness {
+            type string;
+            description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
+        }
+        description "Identifies the validation mechanism and describes the characteristics of that mechanism";
+    }
+    typedef forwarding-rule {
+        type enumeration {
+            enum MAY_FORWARD_ACROSS_GROUP {
+                description "none";
+            }
+            enum MUST_FORWARD_ACROSS_GROUP {
+                description "none";
+            }
+            enum CANNOT_FORWARD_ACROSS_GROUP {
+                description "none";
+            }
+            enum NO_STATEMENT_ON_FORWARDING {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef rule-type {
+        type enumeration {
+            enum FORWARDING {
+                description "none";
+            }
+            enum CAPACITY {
+                description "none";
+            }
+            enum COST {
+                description "none";
+            }
+            enum TIMING {
+                description "none";
+            }
+            enum RISK {
+                description "none";
+            }
+            enum GROUPING {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    grouping resilience-type {
+        leaf restoration-policy {
+            type restoration-policy;
+            description "none";
+        }
+        leaf protection-type {
+            type protection-type;
+            description "none";
+        }
+        description "none";
+    }
+    typedef restoration-policy {
+        type enumeration {
+            enum PER_DOMAIN_RESTORATION {
+                description "none";
+            }
+            enum END_TO_END_RESTORATION {
+                description "none";
+            }
+            enum NA {
+                description "none";
+            }
+        }
+        description "none";
+    }
+    typedef protection-type {
+        type enumeration {
+            enum NO_PROTECTON {
+                description "none";
+            }
+            enum ONE_PLUS_ONE_PROTECTION {
+                description "none";
+            }
+            enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
+                description "none";
+            }
+            enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
+                description "none";
+            }
+            enum ONE_FOR_ONE_PROTECTION {
+                description "none";
+            }
+            enum DYNAMIC_RESTORATION {
+                description "none";
+            }
+            enum PRE_COMPUTED_RESTORATION {
+                description "none";
+            }
+        }
+        description "none";
+    }
+
+   /**************************
+    * package interfaces
+    **************************/
+    rpc get-topology-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container topology {
+                uses topology;
+                description "none";
+            }
+        }
+    }
+    rpc get-node-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf node-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container node {
+                uses node;
+                description "none";
+            }
+        }
+    }
+    rpc get-node-edge-point-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf node-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf ep-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container node-edge-point {
+                uses node-edge-point;
+                description "none";
+            }
+        }
+    }
+    rpc get-link-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf link-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container link {
+                uses link;
+                description "none";
+            }
+        }
+    }
+    rpc get-topology-list {
+        description "none";
+        output {
+            list topology {
+                key 'uuid';
+                uses topology;
+                description "none";
+            }
+        }
+    }
+}
