diff --git a/models/tapi/src/main/yang/tapi-connectivity@2018-12-10.yang b/models/tapi/src/main/yang/tapi-connectivity@2018-12-10.yang
new file mode 100755
index 0000000..5b798c7
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-connectivity@2018-12-10.yang
@@ -0,0 +1,761 @@
+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
+        - 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 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 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 {
+                key 'uuid';
+                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";
+            }
+            container 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";
+            }
+            list end-point {
+                key 'local-id';
+                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";
+            }
+            container 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";
+            }
+        }
+    }
+    rpc get-connection-end-point-details {
+        description "none";
+        input {
+            leaf topology-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf node-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf nep-id-or-name {
+                type string;
+                description "none";
+            }
+            leaf cep-id-or-name {
+                type string;
+                description "none";
+            }
+        }
+        output {
+            container connection-end-point {
+                uses connection-end-point;
+                description "none";
+            }
+        }
+    }
+}
