module tapi-notification {
    namespace "urn:onf:otcc:yang:tapi-notification";
    prefix tapi-notification;
    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 Notification Model definitions.
        Source: TapiNotification.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 notification-context {
            uses notification-context;
            description "Augments the base TAPI Context with NotificationService information";
        }
        description "Augments the base TAPI Context with NotificationService information";
    }

   /**************************
    * package object-classes
    **************************/
    grouping notification-subscription-service {
        list notification {
            key 'uuid';
            config false;
            uses notification;
            description "none";
        }
        container notification-channel {
            uses notification-channel;
            description "none";
        }
        container subscription-filter {
            uses subscription-filter;
            description "none";
        }
        leaf subscription-state {
            type subscription-state;
            description "none";
        }
        leaf-list supported-notification-types {
            type notification-type;
            config false;
            min-elements 1;
            description "none";
        }
        leaf-list supported-object-types {
            type object-type;
            config false;
            min-elements 1;
            description "none";
        }
        uses tapi-common:service-spec;
        description "none";
    }
    grouping subscription-filter {
        leaf-list requested-notification-types {
            type notification-type;
            config false;
            description "none";
        }
        leaf-list requested-object-types {
            type object-type;
            config false;
            description "none";
        }
        leaf-list requested-layer-protocols {
            type tapi-common:layer-protocol-name;
            config false;
            description "none";
        }
        leaf-list requested-object-identifier {
            type tapi-common:uuid;
            config false;
            description "none";
        }
        leaf include-content {
            type boolean;
            config false;
            description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";
        }
        uses tapi-common:local-class;
        description "none";
    }
    notification notification {
        uses notification;
        description "none";
    }
    grouping notification {
        leaf notification-type {
            type notification-type;
            description "none";
        }
        leaf target-object-type {
            type object-type;
            description "none";
        }
        leaf target-object-identifier {
            type tapi-common:uuid;
            description "none";
        }
        list target-object-name {
            key 'value-name';
            min-elements 1;
            uses tapi-common:name-and-value;
            description "none";
        }
        leaf event-time-stamp {
            type tapi-common:date-and-time;
            description "none";
        }
        leaf sequence-number {
            type uint64;
            config false;
            description "A monotonous increasing sequence number associated with the notification.
                The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
        }
        leaf source-indicator {
            type source-indicator;
            description "none";
        }
        leaf layer-protocol-name {
            type tapi-common:layer-protocol-name;
            description "none";
        }
        list changed-attributes {
            key 'value-name';
            uses name-and-value-change;
            description "none";
        }
        list additional-info {
            key 'value-name';
            uses tapi-common:name-and-value;
            description "none";
        }
        leaf additional-text {
            type string;
            description "none";
        }
        container tca-info {
            uses tca-info;
            description "none";
        }
        container alarm-info {
            uses alarm-info;
            description "none";
        }
        uses tapi-common:resource-spec;
        description "none";
    }
    grouping notification-channel {
        leaf stream-address {
            type string;
            config false;
            description "The address/location/URI of the channel/stream to which the subscribed notifications are published.
                This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";
        }
        leaf next-sequence-no {
            type uint64;
            config false;
            description "The sequence number of the next notification that will be published on the channel";
        }
        uses tapi-common:local-class;
        description "none";
    }
    grouping notification-context {
        list notif-subscription {
            key 'uuid';
            uses notification-subscription-service;
            description "none";
        }
        list notification {
            key 'uuid';
            config false;
            uses notification;
            description "none";
        }
        description "none";
    }
    grouping alarm-info {
        leaf is-transient {
            type boolean;
            config false;
            description "none";
        }
        leaf perceived-severity {
            type perceived-severity-type;
            config false;
            description "none";
        }
        leaf probable-cause {
            type string;
            config false;
            description "none";
        }
        leaf service-affecting {
            type service-affecting;
            description "none";
        }
        description "none";
    }
    grouping tca-info {
        leaf is-transient {
            type boolean;
            config false;
            description "none";
        }
        leaf threshold-crossing {
            type threshold-crossing-type;
            description "none";
        }
        leaf threshold-parameter {
            type string;
            config false;
            description "none";
        }
        leaf threshold-value {
            type uint64;
            config false;
            description "none";
        }
        leaf perceived-severity {
            type perceived-tca-severity;
            description "none";
        }
        leaf measurement-interval {
            type tapi-common:date-and-time;
            description "none";
        }
        leaf suspect-interval-flag {
            type boolean;
            description "none";
        }
        description "none";
    }

   /**************************
    * package type-definitions
    **************************/
    grouping name-and-value-change {
        leaf value-name {
            type string;
            description "The name of the value. The value need not have a name.";
        }
        leaf old-value {
            type string;
            description "The value";
        }
        leaf new-value {
            type string;
            description "The value";
        }
        description "A scoped name-value triple, including old value and new value";
    }
    typedef notification-type {
        type enumeration {
            enum OBJECT_CREATION {
                description "Not a normal state. The system is unable to determine the correct value.";
            }
            enum OBJECT_DELETION {
                description "none";
            }
            enum ATTRIBUTE_VALUE_CHANGE {
                description "none";
            }
            enum ALARM_EVENT {
                description "none";
            }
            enum THRESHOLD_CROSSING_ALERT {
                description "none";
            }
        }
        description "List of supported Notifications types.";
    }
    typedef object-type {
        type enumeration {
            enum TOPOLOGY {
                description "none";
            }
            enum NODE {
                description "none";
            }
            enum LINK {
                description "none";
            }
            enum CONNECTION {
                description "none";
            }
            enum PATH {
                description "none";
            }
            enum CONNECTIVITY_SERVICE {
                description "none";
            }
            enum VIRTUAL_NETWORK_SERVICE {
                description "none";
            }
            enum PATH_COMPUTATION_SERVICE {
                description "none";
            }
            enum NODE_EDGE_POINT {
                description "none";
            }
            enum SERVICE_INTERFACE_POINT {
                description "none";
            }
            enum CONNECTION_END_POINT {
                description "none";
            }
            enum MAINTENANCE_ENTITY_GROUP {
                description "none";
            }
            enum MAINTENANCE_ENTITY {
                description "none";
            }
            enum MEG_END_POINT {
                description "none";
            }
            enum MEG_INTERMEDIATE_POINT {
                description "none";
            }
            enum SWITCH_CONTROL {
                description "none";
            }
            enum SWITCH {
                description "none";
            }
            enum ROUTE {
                description "none";
            }
            enum NODE_RULE_GROUP {
                description "none";
            }
            enum INTER_RULE_GROUP {
                description "none";
            }
            enum RULE {
                description "none";
            }
            enum OAM_JOB {
                description "none";
            }
        }
        description "The list of TAPI Global Object Class types on which Notifications can be raised.";
    }
    typedef source-indicator {
        type enumeration {
            enum RESOURCE_OPERATION {
                description "none";
            }
            enum MANAGEMENT_OPERATION {
                description "none";
            }
            enum UNKNOWN {
                description "none";
            }
        }
        description "none";
    }
    typedef subscription-state {
        type enumeration {
            enum SUSPENDED {
                description "none";
            }
            enum ACTIVE {
                description "none";
            }
        }
        description "none";
    }
    typedef perceived-severity-type {
        type enumeration {
            enum CRITICAL {
                description "none";
            }
            enum MAJOR {
                description "none";
            }
            enum MINOR {
                description "none";
            }
            enum WARNING {
                description "none";
            }
            enum CLEARED {
                description "none";
            }
        }
        description "none";
    }
    typedef threshold-crossing-type {
        type enumeration {
            enum THRESHOLD_ABOVE {
                description "none";
            }
            enum THRESHOLD_BELOW {
                description "none";
            }
            enum CLEARED {
                description "none";
            }
        }
        description "none";
    }
    typedef service-affecting {
        type enumeration {
            enum SERVICE_AFFECTING {
                description "none";
            }
            enum NOT_SERVICE_AFFECTING {
                description "none";
            }
            enum UNKNOWN {
                description "none";
            }
        }
        description "none";
    }
    typedef perceived-tca-severity {
        type enumeration {
            enum WARNING {
                description "none";
            }
            enum CLEAR {
                description "none";
            }
        }
        description "none";
    }

   /**************************
    * package interfaces
    **************************/
    rpc get-supported-notification-types {
        description "none";
        output {
            leaf-list supported-notification-types {
                type notification-type;
                min-elements 1;
                description "none";
            }
            leaf-list supported-object-types {
                type object-type;
                min-elements 1;
                description "none";
            }
        }
    }
    rpc create-notification-subscription-service {
        description "none";
        input {
            container subscription-filter {
                uses subscription-filter;
                description "none";
            }
            leaf subscription-state {
                type subscription-state;
                description "none";
            }
        }
        output {
            container subscription-service {
                uses notification-subscription-service;
                description "none";
            }
        }
    }
    rpc update-notification-subscription-service {
        description "none";
        input {
            leaf subscription-id-or-name {
                type string;
                description "none";
            }
            container subscription-filter {
                uses subscription-filter;
                description "none";
            }
            leaf subscription-state {
                type subscription-state;
                description "none";
            }
        }
        output {
            container subscription-service {
                uses notification-subscription-service;
                description "none";
            }
        }
    }
    rpc delete-notification-subscription-service {
        description "none";
        input {
            leaf subscription-id-or-name {
                type string;
                description "none";
            }
        }
        output {
            container subscription-service {
                uses notification-subscription-service;
                description "none";
            }
        }
    }
    rpc get-notification-subscription-service-details {
        description "none";
        input {
            leaf subscription-id-or-name {
                type string;
                description "none";
            }
        }
        output {
            container subscription-service {
                uses notification-subscription-service;
                description "none";
            }
        }
    }
    rpc get-notification-subscription-service-list {
        description "none";
        output {
            list subscription-service {
                key 'uuid';
                uses notification-subscription-service;
                description "none";
            }
        }
    }
    rpc get-notification-list {
        description "none";
        input {
            leaf subscription-id-or-name {
                type string;
                description "none";
            }
            leaf time-period {
                type string;
                description "none";
            }
        }
        output {
            list notification {
                key 'uuid';
                uses notification;
                description "none";
            }
        }
    }    
}
