Loading yang-models/_3gpp-common-subscription-control.yang +171 −2 Original line number Diff line number Diff line Loading @@ -5,12 +5,14 @@ module _3gpp-common-subscription-control { import _3gpp-common-top { prefix top3gpp; } import _3gpp-common-yang-extensions { prefix yext3gpp; } import _3gpp-common-yang-types { prefix types3gpp; } import ietf-yang-types { prefix yang; } organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines IOCs for subscription and heartbeat control. Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.623 Generic Network Resource Model (NRM) Loading @@ -18,6 +20,7 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; revision 2025-01-19 { reference CR-xxxx ; } revision 2024-05-18 { reference CR-0359 ; } revision 2024-01-18 { reference "CR-0309 CR-0329" ; } revision 2023-09-18 { reference CR-0271 ; } Loading @@ -27,6 +30,38 @@ module _3gpp-common-subscription-control { revision 2020-08-26 { reference "CR-0106"; } revision 2019-11-29 { reference "S5-197648 S5-197647 S5-197829 S5-197828"; } feature ReliableNotificationTransfer { description "Reliable notification transfer allows a consumer to detect missing notifications and in some cases retrieve them."; } typedef NotificationTypes { description "An extensible enumeration of notification types"; type union { type enumeration { enum NOTIFY_MOI_CREATION; enum NOTIFY_MOI_DELETION; enum NOTIFY_MOI_ATTRIBUTE_VALUE_CHANGES; enum NOTIFY_MOI_CHANGES; enum NOTIFY_EVENT; enum NOTIFY_NEW_ALARM; enum NOTIFY_CHANGED_ALARM; enum NOTIFY_ACKSTATE_CHANGED; enum NOTIFY_COMMENTS; enum NOTIFY_CORRELATED_NOTIFICATION_CHANGED; enum NOTIFY_CHANGED_ALARM_GENERAL; enum NOTIFY_CLEARED_ALARM; enum NOTIFY_ALARMLIST_REBUILT; enum NOTIFY_POTENTIAL_FAULTY_ALARMLIST; enum NOTIFY_FILEREADY; enum NOTIFY_FILE_PREPARATION_ERROR; enum NOTIFY_THRESHOLD_CROSSING; enum NOTIFY_NOTIFICATION_ERROR; } type string; } } grouping ScopeGrp { description "This <<dataType>> allows to select data nodes in an object tree whose root is identified by the so called base managed object Loading Loading @@ -103,7 +138,7 @@ module _3gpp-common-subscription-control { } leaf-list notificationTypes { type string; type NotificationTypes; description "Defines the types of notifications that are candidates for being forwarded to the notification recipient. If the notificationTypes attribute is not supported or not present Loading Loading @@ -132,6 +167,81 @@ module _3gpp-common-subscription-control { JSON expressions (Jex) 'JexConditionsExpr'"; reference "3GPP TS 32.161"; } leaf operationalState { if-feature ReliableNotificationTransfer; type types3gpp:OperationalState; mandatory true; config false; } leaf-list availabilityStatus { if-feature ReliableNotificationTransfer; type types3gpp:AvailabilityStatus; config false; description "Provides additional information about the operation status of a resource. "; } leaf-list missedNotificationTypes { if-feature ReliableNotificationTransfer; type NotificationTypes; config false; description "If a producer knows or suspects that it failed to prepare some notifications, the types of these notifications should be listed here."; } } grouping SentNotificationsGrp { description "Attributes of SentNotifications."; leaf oldestSequenceNo { type uint64 ; config false; description "The sequence number of the oldest notification in the sentNotificationList."; } leaf oldestEventTime { type yang:date-and-time; config false; description "The eventTime of the oldest notification in the sentNotificationList"; } leaf newestSequenceNo { type uint64 ; config false; description "The sequence number of the newest notification in the sentNotificationList."; } leaf newestEventTime { type yang:date-and-time; config false; description "The eventTime of the newest notification in the sentNotificationList."; } leaf numberOfStoredNotifications { type uint32 ; config false; description "The number of notifications in the sentNotificationList."; } leaf-list sentNotificationList { type string ; config false; description "An in-sequence, ordered set of notification messages, each containing the representation of a notification as encoded in the HTTP body (excluding the HTTP headers). The order shall be oldest first. Note: Whether a filtered retrival is needed is FFS. In that case the attribute may have a strucutured type."; } } grouping HeartbeatControlGrp { Loading Loading @@ -223,6 +333,38 @@ module _3gpp-common-subscription-control { the last notification sent related to the subscription shall report the deletion of the NtfSubscriptionControl instance. If multiple NtfSubscriptionControl instances are configured to send the same notification to the same notificationRecipientAddress, then a separate notification message shall be sent according to each such NtfSubscriptionControl instance. The 'reliable notification transfer feature' ensures detection of failure of notification transfer. It handles two separate error cases: - the notification was prepared by the producer, but could not be delivered to the consumer - the producer could not prepare the notification e.g. due to overload or internal error. If the feature is supported this implies support for all of the following: - operationalState, availabilityStatus and missedNotificationTypes attributes - all notifications carry the sequenceNo and the subscriptionId parameters - the IOC SentNotifications is supported. - the notification notifyNotificationError is supported If notifications are prepared by the producer but their delivery to the recipient is unsuccessful, the consumer should detect this based on the sequenceNo and the subscriptionId and retrieve the missing notifications from the SentNotifications MOI. If MnS producer is not able to prepare notifications this is indicated by the operationalState, availabilityStatus and missedNotificationTypes attributes and the notifyNotificationError notification. The notifyNotificationError notification type notifyNotificationError shall be automatically included in all subscriptions. Creation and deletion of NtfSubscriptionControl instances by MnS consumers is optional; when not supported, the NtfSubscriptionControl instances may be created and deleted by the system or be Loading Loading @@ -282,6 +424,33 @@ module _3gpp-common-subscription-control { uses HeartbeatControlGrp; } } list SentNotifications { if-feature ReliableNotificationTransfer; description "This IOC represents the set of notifications prepared for a specific NtfSubscriptionControl subscription. Notifications are available independent whether they are successfully delivered to the consumer or not. The MnS producers shall always maintain an in-sequence continuous set of notifications for the subscription starting with the newest notification, and may limit the number of notifications. It is the responsibility of the consumer to create the MOI and thus enable its functionality. If the MOI is present the producer will update the attributes. The IOC shall be supported if and only if the reliable notification transfer feature supported."; yext3gpp:notNotifyable; max-elements 1; key id; uses top3gpp:Top_Grp; container attributes { uses SentNotificationsGrp; } } } } Loading Loading
yang-models/_3gpp-common-subscription-control.yang +171 −2 Original line number Diff line number Diff line Loading @@ -5,12 +5,14 @@ module _3gpp-common-subscription-control { import _3gpp-common-top { prefix top3gpp; } import _3gpp-common-yang-extensions { prefix yext3gpp; } import _3gpp-common-yang-types { prefix types3gpp; } import ietf-yang-types { prefix yang; } organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; description "Defines IOCs for subscription and heartbeat control. Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.623 Generic Network Resource Model (NRM) Loading @@ -18,6 +20,7 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; revision 2025-01-19 { reference CR-xxxx ; } revision 2024-05-18 { reference CR-0359 ; } revision 2024-01-18 { reference "CR-0309 CR-0329" ; } revision 2023-09-18 { reference CR-0271 ; } Loading @@ -27,6 +30,38 @@ module _3gpp-common-subscription-control { revision 2020-08-26 { reference "CR-0106"; } revision 2019-11-29 { reference "S5-197648 S5-197647 S5-197829 S5-197828"; } feature ReliableNotificationTransfer { description "Reliable notification transfer allows a consumer to detect missing notifications and in some cases retrieve them."; } typedef NotificationTypes { description "An extensible enumeration of notification types"; type union { type enumeration { enum NOTIFY_MOI_CREATION; enum NOTIFY_MOI_DELETION; enum NOTIFY_MOI_ATTRIBUTE_VALUE_CHANGES; enum NOTIFY_MOI_CHANGES; enum NOTIFY_EVENT; enum NOTIFY_NEW_ALARM; enum NOTIFY_CHANGED_ALARM; enum NOTIFY_ACKSTATE_CHANGED; enum NOTIFY_COMMENTS; enum NOTIFY_CORRELATED_NOTIFICATION_CHANGED; enum NOTIFY_CHANGED_ALARM_GENERAL; enum NOTIFY_CLEARED_ALARM; enum NOTIFY_ALARMLIST_REBUILT; enum NOTIFY_POTENTIAL_FAULTY_ALARMLIST; enum NOTIFY_FILEREADY; enum NOTIFY_FILE_PREPARATION_ERROR; enum NOTIFY_THRESHOLD_CROSSING; enum NOTIFY_NOTIFICATION_ERROR; } type string; } } grouping ScopeGrp { description "This <<dataType>> allows to select data nodes in an object tree whose root is identified by the so called base managed object Loading Loading @@ -103,7 +138,7 @@ module _3gpp-common-subscription-control { } leaf-list notificationTypes { type string; type NotificationTypes; description "Defines the types of notifications that are candidates for being forwarded to the notification recipient. If the notificationTypes attribute is not supported or not present Loading Loading @@ -132,6 +167,81 @@ module _3gpp-common-subscription-control { JSON expressions (Jex) 'JexConditionsExpr'"; reference "3GPP TS 32.161"; } leaf operationalState { if-feature ReliableNotificationTransfer; type types3gpp:OperationalState; mandatory true; config false; } leaf-list availabilityStatus { if-feature ReliableNotificationTransfer; type types3gpp:AvailabilityStatus; config false; description "Provides additional information about the operation status of a resource. "; } leaf-list missedNotificationTypes { if-feature ReliableNotificationTransfer; type NotificationTypes; config false; description "If a producer knows or suspects that it failed to prepare some notifications, the types of these notifications should be listed here."; } } grouping SentNotificationsGrp { description "Attributes of SentNotifications."; leaf oldestSequenceNo { type uint64 ; config false; description "The sequence number of the oldest notification in the sentNotificationList."; } leaf oldestEventTime { type yang:date-and-time; config false; description "The eventTime of the oldest notification in the sentNotificationList"; } leaf newestSequenceNo { type uint64 ; config false; description "The sequence number of the newest notification in the sentNotificationList."; } leaf newestEventTime { type yang:date-and-time; config false; description "The eventTime of the newest notification in the sentNotificationList."; } leaf numberOfStoredNotifications { type uint32 ; config false; description "The number of notifications in the sentNotificationList."; } leaf-list sentNotificationList { type string ; config false; description "An in-sequence, ordered set of notification messages, each containing the representation of a notification as encoded in the HTTP body (excluding the HTTP headers). The order shall be oldest first. Note: Whether a filtered retrival is needed is FFS. In that case the attribute may have a strucutured type."; } } grouping HeartbeatControlGrp { Loading Loading @@ -223,6 +333,38 @@ module _3gpp-common-subscription-control { the last notification sent related to the subscription shall report the deletion of the NtfSubscriptionControl instance. If multiple NtfSubscriptionControl instances are configured to send the same notification to the same notificationRecipientAddress, then a separate notification message shall be sent according to each such NtfSubscriptionControl instance. The 'reliable notification transfer feature' ensures detection of failure of notification transfer. It handles two separate error cases: - the notification was prepared by the producer, but could not be delivered to the consumer - the producer could not prepare the notification e.g. due to overload or internal error. If the feature is supported this implies support for all of the following: - operationalState, availabilityStatus and missedNotificationTypes attributes - all notifications carry the sequenceNo and the subscriptionId parameters - the IOC SentNotifications is supported. - the notification notifyNotificationError is supported If notifications are prepared by the producer but their delivery to the recipient is unsuccessful, the consumer should detect this based on the sequenceNo and the subscriptionId and retrieve the missing notifications from the SentNotifications MOI. If MnS producer is not able to prepare notifications this is indicated by the operationalState, availabilityStatus and missedNotificationTypes attributes and the notifyNotificationError notification. The notifyNotificationError notification type notifyNotificationError shall be automatically included in all subscriptions. Creation and deletion of NtfSubscriptionControl instances by MnS consumers is optional; when not supported, the NtfSubscriptionControl instances may be created and deleted by the system or be Loading Loading @@ -282,6 +424,33 @@ module _3gpp-common-subscription-control { uses HeartbeatControlGrp; } } list SentNotifications { if-feature ReliableNotificationTransfer; description "This IOC represents the set of notifications prepared for a specific NtfSubscriptionControl subscription. Notifications are available independent whether they are successfully delivered to the consumer or not. The MnS producers shall always maintain an in-sequence continuous set of notifications for the subscription starting with the newest notification, and may limit the number of notifications. It is the responsibility of the consumer to create the MOI and thus enable its functionality. If the MOI is present the producer will update the attributes. The IOC shall be supported if and only if the reliable notification transfer feature supported."; yext3gpp:notNotifyable; max-elements 1; key id; uses top3gpp:Top_Grp; container attributes { uses SentNotificationsGrp; } } } } Loading