diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
new file mode 100644
index 0000000..f4c0606
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-10-16.yang
@@ -0,0 +1,734 @@
+module tapi-connectivity {
+    namespace "urn:onf:otcc:yang:tapi-connectivity";
+    prefix tapi-connectivity;
+    import tapi-common {
+        prefix tapi-common;
+    }
+    import tapi-topology {
+        prefix tapi-topology;
+    }
+    import tapi-path-computation {
+        prefix tapi-path-computation;
+    }
+    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 Connectivity Model definitions.
+        Source: TapiConnectivity.uml
+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
+        License: This module is distributed under the Apache License 2.0";
+    revision 2018-10-16 {
+        description "ONF Transport API version 2.1.0.
+          - The TAPI YANG models included in this TAPI release (v2.1.0) 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 are not backward compatible with previous TAPI releases.
+          - 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 connectivity-context {
+            uses connectivity-context;
+            description "Augments the base TAPI Context with ConnectivityService information";
+        }
+        description "Augments the base TAPI Context with ConnectivityService information";
+    }
+    augment "/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
+    	container cep-list {
+            uses cep-list;
+            description "none";
+        }
+        description "none";
+    }
+
+    /*************************
+    * definitions of references
+    *************************/
+    grouping connectivity-service-ref {
+        leaf connectivity-service-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+
+    grouping connectivity-service-end-point-ref {
+    	uses connectivity-service-ref;
+    	leaf connectivity-service-end-point-local-id {
+	    	type leafref {
+	            path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
+	        }
+	    	description "none";
+    	}
+    	description "none";
+    }
+    grouping connection-end-point-ref {
+        uses tapi-topology:node-edge-point-ref;
+        leaf connection-end-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-connectivity:cep-list/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+
+    grouping connection-ref {
+        leaf connection-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+
+    grouping switch-control-ref {
+        uses connection-ref;
+        leaf switch-control-uuid {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
+            }
+            description "none";
+        }
+        description "none";
+    }
+    
+    grouping route-ref {
+    	uses connection-ref;
+        leaf route-local-id {
+            type leafref {
+                path '/tapi-common:context/tapi-connectivity:connectivity-context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
+            }
+            description "none";
+        }
+        description "none";
+    }
+
+    /***********************
+    * package object-classes
+    **********************/ 
+        grouping connection {
+            list connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+                config false;
+                min-elements 2;
+                description "none";
+            }
+            list lower-connection {
+                uses connection-ref;
+                key 'connection-uuid';
+                config false;
+                description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
+                    Aggregation is used as for the Node/Topology  to allow changes in hierarchy. 
+                    Connection aggregation reflects Node/Topology aggregation. 
+                    The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
+            }
+            list supported-client-link {
+            	uses tapi-topology:link-ref;
+                key 'topology-uuid link-uuid';
+                config false;
+                description "none";
+            }
+            list route {
+                key 'local-id';
+                config false;
+                uses route;
+                description "none";
+            }
+            list switch-control {
+                key 'uuid';
+                config false;
+                uses switch-control;
+                description "none";
+            }
+            leaf direction {
+                type tapi-common:forwarding-direction;
+                config false;
+                description "none";
+            }
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
+                config false;
+                description "none";
+            }
+            uses tapi-common:resource-spec;
+            uses tapi-common:operational-state-pac;
+            description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
+                At the lowest level of recursion, a FC represents a cross-connection within an NE.";
+        }
+        grouping connection-end-point {
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
+                config false;
+                description "none";
+            }
+            leaf layer-protocol-qualifier {
+                type tapi-common:layer-protocol-qualifier;
+                config false;
+                description "none";
+            }
+            container parent-node-edge-point {
+            	uses tapi-topology:node-edge-point-ref;
+                config false;
+                description "none";
+            }
+            list client-node-edge-point {
+                uses tapi-topology:node-edge-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid';
+                config false;
+                description "none";
+            }
+            list aggregated-connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+                config false;
+                description "none";
+            }
+            leaf connection-port-direction {
+                type tapi-common:port-direction;
+                config false;
+                description "The orientation of defined flow at the EndPoint.";
+            }
+            leaf connection-port-role {
+                type tapi-common:port-role;
+                config false;
+                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+            }
+            uses tapi-common:resource-spec;
+            uses tapi-common:operational-state-pac;
+            uses tapi-common:termination-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 connectivity-constraint {
+            leaf service-layer {
+                type tapi-common:layer-protocol-name;
+                description "none";
+            }
+            leaf service-type {
+                type service-type;
+                description "none";
+            }
+            leaf service-level {
+                type string;
+                description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
+            }
+            container requested-capacity {
+                uses tapi-common:capacity;
+                description "none";
+            }
+            leaf connectivity-direction {
+                type tapi-common:forwarding-direction;
+                description "none";
+            }
+            container schedule {
+                uses tapi-common:time-range;
+                description "none";
+            }
+            container coroute-inclusion {
+            	uses connectivity-service-ref;
+                description "none";
+            }
+            list diversity-exclusion {
+            	uses connectivity-service-ref;
+                key 'connectivity-service-uuid';
+                description "none";
+            }
+            description "none";
+        }
+        grouping connectivity-service {
+            list end-point {
+                key 'local-id';
+                min-elements 2;
+                uses connectivity-service-end-point;
+                description "none";
+            }
+            list connection {
+                uses connection-ref;
+                key 'connection-uuid';
+                config false;
+                description "none";
+            }
+            uses tapi-common:service-spec;
+            uses connectivity-constraint;
+            uses tapi-path-computation:routing-constraint;
+            uses tapi-path-computation:topology-constraint;
+            uses resilience-constraint;
+            uses tapi-common:admin-state-pac;
+            description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
+                At the lowest level of recursion, a FC represents a cross-connection within an NE.";
+        }
+        grouping connectivity-service-end-point {
+            leaf layer-protocol-name {
+                type tapi-common:layer-protocol-name;
+                description "none";
+            }
+            leaf layer-protocol-qualifier {
+                type tapi-common:layer-protocol-qualifier;
+                description "none";
+            }
+            container service-interface-point {
+                uses tapi-common:service-interface-point-ref;
+                description "none";
+            }
+            list connection-end-point {
+            	uses connection-end-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+                config false;
+                description "none";
+            }
+            container capacity {
+                uses tapi-common:capacity;
+                description "none";
+            }
+            leaf direction {
+                type tapi-common:port-direction;
+                description "The orientation of defined flow at the EndPoint.";
+            }
+            leaf role {
+                type tapi-common:port-role;
+                description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
+            }
+            leaf protection-role {
+                type protection-role;
+                description "To specify the protection role of this Port when create or update ConnectivityService.";
+            }
+            uses tapi-common:local-class;
+            uses tapi-common:admin-state-pac;
+            description "The association of the FC to LTPs is made via EndPoints.
+                The EndPoint (EP) object class models the access to the FC function. 
+                The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
+                In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC. 
+                It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
+                The EP replaces the Protection Unit of a traditional protection model. 
+                The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
+        }
+        grouping route {
+            list connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+                config false;
+                min-elements 2;
+                description "none";
+            }
+            uses tapi-common:local-class;
+            description "The FC Route (FcRoute) object class models the individual routes of an FC. 
+                The route of an FC object is represented by a list of FCs at a lower level. 
+                Note that depending on the service supported by an FC, an the FC can have multiple routes.";
+        }
+        grouping connectivity-context {
+            list connectivity-service {
+                key 'uuid';
+                uses connectivity-service;
+                description "none";
+            }
+            list connection {
+                key 'uuid';
+                config false;
+                uses connection;
+                description "none";
+            }
+            description "none";
+        }
+        grouping switch {
+            list selected-connection-end-point {
+                uses connection-end-point-ref;
+                key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
+                min-elements 1;
+                description "none";
+            }
+            list selected-route {
+                uses route-ref;
+                key 'connection-uuid route-local-id';
+                min-elements 1;
+                description "none";
+            }
+            leaf selection-control {
+                type selection-control;
+                description "Degree of administrative control applied to the switch selection.";
+            }
+            leaf selection-reason {
+                type selection-reason;
+                config false;
+                description "The reason for the current switch selection.";
+            }
+            leaf switch-direction {
+                type tapi-common:port-direction;
+                description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
+            }
+            uses tapi-common:local-class;
+            description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection). 
+                If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
+                The FC switch represents and defines a protection switch structure encapsulated in the FC. 
+                Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. 
+                One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
+                The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
+                It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
+                It may be locked out (prevented from switching), force switched or manual switched.
+                It will indicate switch state and change of state.
+                The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
+                The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
+                This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
+        }
+        grouping switch-control {
+            list sub-switch-control {
+                uses switch-control-ref;
+                key 'connection-uuid switch-control-uuid';
+                description "none";
+            }
+            list switch {
+                key 'local-id';
+                uses switch;
+                description "none";
+            }
+            uses tapi-common:resource-spec;
+            uses resilience-constraint;
+            description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
+        }
+        grouping resilience-constraint {
+            container resilience-type {
+                uses tapi-topology:resilience-type;
+                description "none";
+            }
+            leaf restoration-coordinate-type {
+                type coordinate-type;
+                description " The coordination mechanism between multi-layers.";
+            }
+            leaf restore-priority {
+                type uint64;
+                description "none";
+            }
+            leaf reversion-mode {
+                type reversion-mode;
+                description "Indcates whether the protection scheme is revertive or non-revertive.";
+            }
+            leaf wait-to-revert-time {
+                type uint64;
+                default "15";
+                description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
+            }
+            leaf hold-off-time {
+                type uint64;
+                description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
+            }
+            leaf is-lock-out {
+                type boolean;
+                description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
+                    This overrides all other protection control states including forced.
+                    If the item is locked out then it cannot be used under any circumstances.
+                    Note: Only relevant when part of a protection scheme.";
+            }
+            leaf is-frozen {
+                type boolean;
+                description "Temporarily prevents any switch action to be taken and, as such, freezes the current state. 
+                    Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
+                    All administrative controls of any aspect of protection are rejected.";
+            }
+            leaf is-coordinated-switching-both-ends {
+                type boolean;
+                description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
+            }
+            leaf max-switch-times {
+                type uint64;
+                description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
+            }
+            leaf-list preferred-restoration-layer {
+                type tapi-common:layer-protocol-name;
+                description "Indicate which layer this resilience parameters package configured for.";
+            }
+            description "A list of control parameters to apply to a switch.";
+        }
+        grouping cep-list {
+            list connection-end-point {
+                key 'uuid';
+                uses connection-end-point;
+                description "none";
+            }
+            description "none";
+        }
+
+    /***********************
+    * package type-definitions
+    **********************/ 
+        typedef service-type {
+            type enumeration {
+                enum POINT_TO_POINT_CONNECTIVITY {
+                    description "none";
+                }
+                enum POINT_TO_MULTIPOINT_CONNECTIVITY {
+                    description "none";
+                }
+                enum MULTIPOINT_CONNECTIVITY {
+                    description "none";
+                }
+                enum ROOTED_MULTIPOINT_CONNECTIVITY {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef reversion-mode {
+            type enumeration {
+                enum REVERTIVE {
+                    description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
+                }
+                enum NON-REVERTIVE {
+                    description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
+                }
+            }
+            description "The reversion mode associated with protection.";
+        }
+        typedef selection-control {
+            type enumeration {
+                enum LOCK_OUT {
+                    description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
+                        This overrides all other protection control states including forced.
+                        If the item is locked out then it cannot be used under any circumstances.
+                        Note: Only relevant when part of a protection scheme.";
+                }
+                enum NORMAL {
+                    description "none";
+                }
+                enum MANUAL {
+                    description "none";
+                }
+                enum FORCED {
+                    description "none";
+                }
+            }
+            description "Possible degrees of administrative control applied to the Route selection.";
+        }
+        typedef selection-reason {
+            type enumeration {
+                enum LOCKOUT {
+                    description "none";
+                }
+                enum NORMAL {
+                    description "none";
+                }
+                enum MANUAL {
+                    description "none";
+                }
+                enum FORCED {
+                    description "none";
+                }
+                enum WAIT_TO_REVERT {
+                    description "none";
+                }
+                enum SIGNAL_DEGRADE {
+                    description "none";
+                }
+                enum SIGNAL_FAIL {
+                    description "none";
+                }
+            }
+            description "The cause of the current route selection.";
+        }
+        typedef coordinate-type {
+            type enumeration {
+                enum NO_COORDINATE {
+                    description "none";
+                }
+                enum HOLD_OFF_TIME {
+                    description "none";
+                }
+                enum WAIT_FOR_NOTIFICATION {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+        typedef protection-role {
+            type enumeration {
+                enum WORK {
+                    description "none";
+                }
+                enum PROTECT {
+                    description "none";
+                }
+                enum PROTECTED {
+                    description "none";
+                }
+                enum NA {
+                    description "none";
+                }
+                enum WORK_RESTORE {
+                    description "none";
+                }
+                enum PROTECT_RESTORE {
+                    description "none";
+                }
+            }
+            description "none";
+        }
+
+    /***********************
+    * package interfaces
+    **********************/ 
+        rpc get-connection-details {
+            description "none";
+            input {
+                leaf service-id-or-name {
+                    type string;
+                    description "none";
+                }
+                leaf connection-id-or-name {
+                    type string;
+                    description "none";
+                }
+            }
+            output {
+                container connection {
+                    uses connection;
+                    description "none";
+                }
+            }
+        }
+        rpc get-connectivity-service-list {
+            description "none";
+            output {
+                list service {
+                    uses connectivity-service;
+                    description "none";
+                }
+            }
+        }
+        rpc get-connectivity-service-details {
+            description "none";
+            input {
+                leaf service-id-or-name {
+                    type string;
+                    description "none";
+                }
+            }
+            output {
+                container service {
+                    uses connectivity-service;
+                    description "none";
+                }
+            }
+        }
+        rpc create-connectivity-service {
+            description "none";
+            input {
+                list end-point {
+                    key 'local-id';
+                    min-elements 2;
+                    uses connectivity-service-end-point;
+                    description "none";
+                }
+                container connectivity-constraint {
+                    uses connectivity-constraint;
+                    description "none";
+                }
+                container routing-constraint {
+                    uses tapi-path-computation:routing-constraint;
+                    description "none";
+                }
+                container topology-constraint {
+                    uses tapi-path-computation:topology-constraint;
+                    description "none";
+                }
+                list resilience-constraint {
+                    uses resilience-constraint;
+                    description "none";
+                }
+                leaf state {
+                    type string;
+                    description "none";
+                }
+            }
+            output {
+                container service {
+                    uses connectivity-service;
+                    description "none";
+                }
+            }
+        }
+        rpc update-connectivity-service {
+            description "none";
+            input {
+                leaf service-id-or-name {
+                    type string;
+                    description "none";
+                }
+                container end-point {
+                    uses connectivity-service-end-point;
+                    description "none";
+                }
+                container connectivity-constraint {
+                    uses connectivity-constraint;
+                    description "none";
+                }
+                container routing-constraint {
+                    uses tapi-path-computation:routing-constraint;
+                    description "none";
+                }
+                container topology-constraint {
+                    uses tapi-path-computation:topology-constraint;
+                    description "none";
+                }
+                list resilience-constraint {
+                    uses resilience-constraint;
+                    description "none";
+                }
+                leaf state {
+                    type string;
+                    description "none";
+                }
+            }
+            output {
+                container service {
+                    uses connectivity-service;
+                    description "none";
+                }
+            }
+        }
+        rpc delete-connectivity-service {
+            description "none";
+            input {
+                leaf service-id-or-name {
+                    type string;
+                    description "none";
+                }
+            }
+        }
+
+}
