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
        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 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";
                }
            }
        }

}
