Commit 7ca13024 authored by cintiarosa's avatar cintiarosa
Browse files

aligne stage 2 nd 3 nfservice

parent 3b78a27a
Loading
Loading
Loading
Loading
Loading
+153 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ module _3gpp-5g-common-yang-types {
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.541";

  revision 2026-03-25 { reference "CR-"; }  
  revision 2026-01-25 { reference "CR-0060"; }  // common for R19, R20
  revision 2025-11-07 { reference CR-1640 ; }
  revision 2025-11-02 { reference CR-1658 ; }
@@ -179,6 +180,77 @@ module _3gpp-5g-common-yang-types {
    }
  }

  grouping SupiRangeGrp {
    description "This <<dataType>> represents a range of SUPIs.";
    leaf start {
      description "First value identifying the start of a SUPI range.";
      type string {
        pattern '^[0-9]+$';
      }
    }
    leaf end {
      description "Last value identifying the end of a SUPI range.";
      type string {
        pattern '^[0-9]+$';
      }
    }
    leaf pattern {
      description "Pattern representing the set of SUPIs belonging to
        this range.";
      type string;
    }
  }

  grouping IdentityRangeGrp {
    description "This <<dataType>> represents a range of identities.";
    leaf start {
      description "First value identifying the start of an identity range.";
      type string {
        pattern '^[0-9]+$';
      }
    }
    leaf end {
      description "Last value identifying the end of an identity range.";
      type string;
    }
    leaf pattern {
      description "Pattern representing the set of identities belonging to
        this range.";
      type string;
    }
  }

  grouping SupportedVendorSpecificFeaturesGrp {
    description "This <<dataType>> represents a map of Vendor-Specific features,
      where the key of the map is the IANA-assigned SMI Network Management
      Private Enterprise Codes and the value of each entry of the map shall be
      a list (array) of VendorSpecificFeature objects as defined in clause 5.3.247.";
    reference "3GPP TS 29.510 clause 5.3.247";

    list supportedVendorSpecificFeatures {
      description "It indicates a map of Vendor-Specific features, where the
        key of the map is the IANA-assigned SMI Network Management Private
        Enterprise Codes and the value of each entry of the map shall be
        a list (array) of VendorSpecificFeature objects as defined
        in the clause 5.3.247.";
      key "enterpriseCode";

      leaf enterpriseCode {
        type uint32;
        description "IANA-assigned SMI Network Management Private
          Enterprise Code";
      }

      list vendorSpecificFeature {
        key "featureName";
        config false;
        description "VendorSpecificFeature objects as defined
          in the clause 5.3.247.";
        uses VendorSpecificFeatureGrp;
      }
    }
  }

  grouping SnssaiExtensionGrp {
    list sdRanges {
      min-elements 1;
@@ -596,6 +668,87 @@ module _3gpp-5g-common-yang-types {
      type inet:host; 
    }
  }
  grouping RuleSetGrp {
    description "This data type represents list of rules specifying whether
      access/scopes are allowed/denied for NF-Consumers.";
    reference "3GPP TS 29.510 clause 6.2.6.2.121";

    leaf priority {
      description "It indicates the unique Priority of the rule. Lower value
        means higher priority.";
      mandatory true;
      type uint32;
    }

    list plmns {
      description "It indicates PLMNs allowed/dis-allowed to access the
        service instance. When absent, NF-Consumers of all PLMNs are
        assumed to match this criteria.";
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }

    list snpns {
      description "It indicates SNPNs allowed/dis-allowed to access the
        service instance. When absent, NF-Consumers of all SNPNs are
        assumed to match this criteria.";
      key "mcc mnc";
      uses PlmnIdNid;
    }

    leaf-list nfTypes {
      description "It indicates type of the NFs allowed/dis-allowed to
        access the service instance. When absent, NF-Consumers of all
        nfTypes are assumed to match this criteria.";
      type types3gpp:NfType;
    }

    leaf-list nfDomains {
      description "It represents pattern (regular expression according to
        the ECMA-262 dialect) representing the NF domain names within the
        PLMN of the NRF allowed/dis-allowed to access the service instance.
        When absent, NF-Consumers of all nfDomains are assumed to match
        this criteria.";
      type string;
    }

    list nssais {
      description "It represents S-NSSAIs of the NF-Consumers
        allowed/dis-allowed to access the service instance. When absent,
        NF-Consumers of all slices are assumed to match this criteria.";
      key idx;
      leaf idx { type uint32; }
      uses ExtSnssaiGrp;
    }

    leaf-list nfInstances {
      description "It represents NF-Instance IDs of the NF-Consumers
        allowed/dis-allowed to access the NF/NF-Service instance. When
        absent, all the NF-Consumers are assumed to match this criteria.";
      type string;
    }

    leaf-list scopes {
      description "It represents list of scopes allowed or denied to the
        NF-Consumers matching the rule. The scopes shall be any of those
        defined in the API that defines the current service. When absent,
        the NF-Consumer is allowed or denied full access to all the
        resources/operations of service instance.";
      type string;
    }

    leaf action {
      description "It specifies whether the scopes/access mentioned are
        allowed or denied for a specific NF-Consumer.
        ALLOW: The NF consumer is allowed to access NF producer.
        DENY: The NF consumer is not allowed to access NF Producer.";
      mandatory true;
      type enumeration {
        enum ALLOW;
        enum DENY;
      }
    }
  }

  grouping LocationInfoGrp {
    description "This data type contains location information 
+369 −10
Original line number Diff line number Diff line
@@ -11,11 +11,12 @@ module _3gpp-5gc-nrm-nfservice {
  
  organization "3gpp SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "NF service class.
    Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, 
  description "NF service dataType.
    Copyright 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, 
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 29.510";
  
  revision 2026-01-25 { reference "C"; }  // common for R19, R20
  revision 2026-01-25 { reference "CR-0060"; }  // common for R19, R20
  revision 2025-01-25 { reference CR-1442; } 
  revision 2023-09-18 { reference CR-1043 ; } 
@@ -24,7 +25,8 @@ module _3gpp-5gc-nrm-nfservice {
  revision 2019-06-17 { reference "initial revision"; }
  
  grouping NFServiceGrp {
    description "Represents the NFService IOC";
    description "This data type represents the NF Service
     defined in TS 29.510 [23]";
    leaf serviceInstanceID {
      description 
        "Unique ID of the service instance within a given NF Instance.";
@@ -36,14 +38,16 @@ module _3gpp-5gc-nrm-nfservice {
      description "Name of the service instance (e.g. 'nudm-sdm').";
      mandatory true;
      type ServiceName;
      config false;
    }
    
    list versions { //check in review if key is ok (unique)
    list versions { 
      description "API versions supported by the NF Service and if available, 
        the corresponding retirement date of the NF Service.";
      min-elements 1;
      key "apiVersionInUri apiFullVersion";
      uses NFServiceVersion;
      config false;
    }
    
    leaf scheme {
@@ -135,7 +139,7 @@ module _3gpp-5gc-nrm-nfservice {
      type string;
    }
    
    list allowedNSSAI {
    list allowedNSSAIs {
      description "S-NSSAI of the allowed slices to access the service
      instance. The absence of this attribute indicates that any slice
      is allowed to access the service instance.";
@@ -144,6 +148,16 @@ module _3gpp-5gc-nrm-nfservice {
      key "sd sst";
      uses types5g3gpp:SNssai;
    }
    list allowedScopesRuleSet {
      description "It represents map of rules specifying scopes allowed or
        denied for NF-Consumers. This attribute may be present when the
        NF-Producer and the NRF support Allowed-ruleset feature as specified
        in clause 6.1.9 in TS 29.510.";
      //optional support
      key idx;
      leaf idx { type uint32; }
      uses types5g3gpp:RuleSetGrp;
    }
    leaf-list allowedOperationsPerNfType {
      description "It indicates the allowed operations on resources for
      each type of NF; the key of the map is the NF Type, and the value
@@ -168,18 +182,28 @@ module _3gpp-5gc-nrm-nfservice {
      for a given NF Instance ID take precedence over the scopes defined
      in attribute allowedOperationsPerNfType for the corresponding 
      NF type of the NF Instance associated to such NF Instance ID..";
      //optional support
    } 
    list sNssais {
      description "S-NSSAIs of the Network Function. If not
       provided, the NF can serve any S-NSSAI. When present
        this IE represents the list of S-NSSAIs supported in
         all the PLMNs listed in the plmnList IE.";
      //optional support
      min-elements 1;
      key "sst sd";
      uses types5g3gpp:SNssai;
    }    

    leaf-list oauth2Required {
    leaf oauth2Required {
      type boolean;
      max-elements 1;
      //optional support
      description "It indicates whether the NF Service Instance requires 
      Oauth2-based authorization";
    } 

    leaf-list sharedServiceDataId {
    leaf sharedServiceDataId {
      type string;
      max-elements 1;
      description "String uniquely identifying SharedServiceData. The format
      of the sharedServiceDataId shall be a Universally Unique Identifier 
      (UUID) version 4, as described in IETF RFC 4122 [44]. The hexadecimal
@@ -214,6 +238,129 @@ module _3gpp-5gc-nrm-nfservice {
      //optional support
      type string;
    }
    list callbackUriPrefixList {
      description "It indicates the optional path segment(s) used to construct
        the prefix of the Callback URIs during the reselection of an NF
        service consumer.";
      //optional support
      reference "3GPP TS 29.501 [23], clause 4.4.3.";
      key callbackUriPrefix;
      min-elements 1;
      uses CallbackUriPrefixItemGrp;
    }
    leaf supportedFeatures {
      description "It is a string, which indicates the features of the service
      corresponding to the subscribed default notification, which are supported
      by the NF (Service) instance acting as NF service consumer.";
      reference "3GPP TS 29.571 table 5.2.2-3";
      //optional
      type types3gpp:SupportedFeatures;
    }
    uses types5g3gpp:SupportedVendorSpecificFeaturesGrp;    
    leaf load {
      description "Latest known load information of the NF, percentage.";
      type types3gpp:Load;
      config false;
    }
    leaf loadTimeStamp {
      description "Timestamp of the reported load information.";
      type yang:date-and-time;
      config false;
    }
    leaf-list nfServiceSetIdList {
      description "This attribute represents a list of NF Service Set ID.
        At most one NF Service Set ID shall be indicated per PLMN-ID or
        SNPN of the NF.";
      type string;
      min-elements 1;
    }
    list perPlmnSnssaiList {
      description "It includes the S-NSSAIs supported by the Network Function
        for each PLMN supported by the Network Function. When present, it
        shall override sNssais IE.";
      key idx;
      leaf idx { type uint32; }
      uses PlmnSnssai;
    }

    leaf canaryRelease {
      description "This attribute indicates whether an NF instance whose
        nfStatus is set to REGISTERED is in Canary Release condition, i.e.
        it should only be selected by NF Service Consumers under the
        conditions indicated by the selectionConditions attribute.
        True: the NF is under Canary Release condition, even if the
        nfStatus is set to REGISTERED.
        False: the NF instance indicates its Canary Release condition
        via the nfStatus attribute.";
      //optional support
      type boolean;
      default false;
    }

    leaf exclusiveCanaryReleaseSelection {
      description "This attribute indicates whether an NF Service Consumer
        should only select an NF Service Producer in Canary Release condition.
        True: the consumer shall only select producers in Canary Release
        condition.
        False: the consumer may select producers not in Canary Release
        condition.";
      //optional support
      type boolean;
      default false;
    }

    leaf shutdownTime {
      description "This attribute may be present if the nfStatus is set to
        UNDISCOVERABLE due to scheduled shutdown. When present, it shall
        indicate the timestamp when the NF Instance is planned to be
        shut down.";
      //optional support
      type yang:date-and-time;
      config false;
    }

    leaf canaryPrecedenceOverPreferred {
      description "This attribute indicates whether the NRF shall prioritize
        the NF Service Producer in Canary Release condition over the
        preferences (preferred-xxx, ext-preferred-xxx) present in NF
        discovery requests.
        True: NRF shall prioritize NF Service Producers in Canary Release
        condition at NF discovery requests.
        False: NRF shall prioritize the NF Service Producers according to
        preferred-xxx and/or ext-preferred-xxx.";
      //optional support
      type boolean;
      default false;
    }

    list perPlmnOauth2ReqList {
      description "This attribute includes the Oauth2-based authorization
        requirement supported by the NF Service Instance per PLMN of the
        NF Service Consumer. This attribute may be included when the
        Oauth2.0 authorization requirement supported by the NF Service
        Instance for different PLMN is different. When the requester
        PLMN Id is available in perPlmnOauth2ReqList IE, this IE shall
        override the oauth2Required IE. If the requester PLMN ID is not
        present in perPlmnOauth2ReqList IE, then the value of
        oauth2Required IE shall be applicable if available.";
      //optional support
      key idx;
      leaf idx { type uint32; }
      max-elements 1;
      uses PlmnOauth2Grp;
    }

    list selectionConditions {
      description "This attribute includes the conditions under which an NF
        Instance with an NFStatus value set to CANARY_RELEASE, or with a
        canaryRelease attribute set to true, shall be selected by an NF
        Service Consumer.";
      //optional support
      key idx;
      leaf idx { type uint32; }
      max-elements 1;
      uses SelectionConditionsGrp;
    }
  }
  
  typedef SupportedFeatures {
@@ -243,6 +390,218 @@ module _3gpp-5gc-nrm-nfservice {
     uses types5g3gpp:VendorSpecificFeatureGrp;
     }      
  } 

  grouping CallbackUriPrefixItemGrp {
    description "This <<dataType>> represents Callback URI prefix value to
      be used for specific notification types.";
    reference "3GPP TS 29.510 clause 6.1.6.2.127";

    leaf callbackUriPrefix {
      description "It indicates the optional path segment(s) used to
        construct the prefix of the Callback URIs during the reselection
        of an NF service consumer.";
      mandatory true;
      type inet:uri;
      reference "3GPP TS 29.501 clause 4.4.3";
    }

    leaf-list notificationTypes {
      description "List of notification type values using the callback
        URI prefix of the callbackUriPrefix.";
      type string;
    }
  }

  grouping PlmnOauth2Grp {
    description "This <<dataType>> represents the per PLMN Oauth2.0
      indication.";
    reference "3GPP TS 29.510 clause 6.1.6.2.102";

    list oauth2RequiredPlmnIdList {
      description "List of PLMN IDs for which Oauth2.0 authorization is
        required.";
      //optional support
      min-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }

    list oauth2NotRequiredPlmnIdList {
      description "List of PLMN IDs for which Oauth2.0 authorization is
        not required.";
        //optional support
      min-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }
  }

  grouping PlmnSnssai {
    description "This data type represents the list of S-NSSAIs supported
      per PLMN.";
    list plmnId {
      description "PLMN ID for which list of supported S-NSSAI(s)
        is provided.";
      min-elements 1;
      max-elements 1;
      key "mcc mnc";
      uses types3gpp:PLMNId;
    }
    list sNssaiList {
      description "The specific list of S-NSSAIs supported
        by the given PLMN.";
      min-elements 1;
      max-elements 1;
      key "sst sd";
      uses types5g3gpp:SNssai;
    }
    leaf nid {
      description "Network Identity; Shall be present if PlmnIdNid
        identifies an SNPN.";
      reference "see clauses 5.30.2.3, 5.30.2.9, 6.3.4,
        and 6.3.8 in 3GPP TS 23.501";
      type string;
    }
  }

  grouping ConditionItemGrp {
    description "This <<dataType>> represents a single condition item that
      shall be evaluated to determine whether a discovered NF (Service)
      Instance shall be selected.";
    reference "3GPP TS 29.510 clause 6.1.6.2.124";

    leaf-list consumerNfTypes {
      description "It represents the NF types of the consumers for which
        the conditions included in this ConditionItem apply. If this
        attribute is absent, the conditions are applicable to all NF
        consumer types.";
      min-elements 1;
      type types3gpp:NfType;
    }
    leaf serviceFeature {
      description "It represents a feature number of that NF Service
        Instance, under CANARY_RELEASE status.";
      type uint32;
    }
    leaf vsServiceFeature {
      description "It represents a Vendor-Specific feature number of that
        NF Service Instance, under CANARY_RELEASE status.";
      type uint32;
    }
    list supiRangeList {
      description "It represents a set of SUPIs for which the NF (Service)
        instance under CANARY_RELEASE status shall be selected.";
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      uses types5g3gpp:SupiRangeGrp;
    }
    list gpsiRangeList {
      description "It represents a set of GPSIs for which the NF (Service)
        instance under CANARY_RELEASE status shall be selected.";
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      uses types5g3gpp:IdentityRangeGrp;
    }
    list impuRangeList {
      description "It represents a set of IMS Public Identities for which
        the NF (Service) instance under CANARY_RELEASE status shall be
        selected.";
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      uses types5g3gpp:IdentityRangeGrp;
    }
    list impiRangeList {
      description "It represents a set of IMS Private Identities for which
        the NF (Service) instance under CANARY_RELEASE status shall be
        selected.";
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      uses types5g3gpp:IdentityRangeGrp;
    }
    leaf-list peiList {
      description "It represents a set of PEIs of the UEs for which the
        NF (Service) instance under CANARY_RELEASE status shall be
        selected.";
      min-elements 1;
      type string;
    }
    list taiRangeList {
      description "It represents a set of TAIs where the NF (Service)
        instance under CANARY_RELEASE status shall be selected for a
        certain UE.";
      key idx;
      leaf idx { type uint32; }
      min-elements 1;
      uses types5g3gpp:TaiRangeGrp;
    }
    leaf-list dnnList {
      description "It represents a set of DNNs where the NF (Service)
        instance under CANARY_RELEASE status shall be selected.";
      min-elements 1;
      type string;
    }
  }

  grouping SelectionConditionsGrp {
    description "This <<dataType>> represents the list of conditions that
      shall be selected by an NF Service Consumer.";
    reference "3GPP TS 29.510 clause 6.1.6.2.123";

    list conditionItem {
      key "id";
      description "It represent a single condition item that shall be
        evaluated to determine whether a discovered NF (Service) Instance
        shall be selected.";
      leaf id { type string; }
      uses ConditionItemGrp;
    }

    list conditionGroup {
      description "It represents a group of conditions that shall be
        evaluated.";
      key idx;
      leaf idx { type uint32; }
      max-elements 1;
      // Note: ConditionGroup references SelectionConditions creating a
      // circular dependency. Inlined one level to avoid it.
      choice LogicalOperator {
        case and {
          list and {
            description "It represents a list of conditions where the
              overall evaluation is true only if all the conditions in
              the list are evaluated as true.";
            key idx;
            leaf idx { type uint32; }
            list conditionItem {
              key "id";
              description "Condition item to be evaluated.";
              leaf id { type string; }
              uses ConditionItemGrp;
            }
          }
        }
        case or {
          list or {
            description "It represents a list of conditions where the
              overall evaluation is true if at least one of the conditions
              in the list is evaluated as true.";
            key idx;
            leaf idx { type uint32; }
            list conditionItem {
              key "id";
              description "Condition item to be evaluated.";
              leaf id { type string; }
              uses ConditionItemGrp;
            }
          }
        }
      }
    }
  } 
  grouping ipEndPoint {
    choice address {
      leaf ipv4Address {
+18 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ module _3gpp-common-yang-types {
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.623";

  revision 2026-03-25 { reference "CR-xxxx"; }
  revision 2026-03-20 { reference "CR-0619"; }
  revision 2025-10-07 { reference "CR-0573 CR-0582 CR-583"; }
  revision 2025-10-01 { reference "CR-0578" ; }
@@ -799,6 +800,22 @@ module _3gpp-common-yang-types {
      range 0..100;
    }
  }
  typedef SupportedFeatures {
    type string {
      pattern '[A-Fa-f0-9]*';
    }
    description "It is a string, which indicates the features of the service
     corresponding to the subscribed default notification, which are supported
     by the NF (Service) instance acting as NF service consumer, when it is
     present of the attribute whose type is DefaultNotificationSubscription
     <<datatype>>. When it is present as the attribute of an NFService 
     instance, it indicates the supported features of the NF Service <datatype>
     A string containing a bitmask indicating supported features in hexadecimal
     representation. Each character in the string shall take
     a value of 0 to 9, a to f or A to F and shall represent the support
     of 4 features as described in table 5.2.2-3 of TS 29.571.";
    reference "3GPP TS 29.571";
  } 

  typedef N1MessageClass {
    type enumeration {
@@ -878,7 +895,7 @@ module _3gpp-common-yang-types {
      reference "shall represent the support of 4 features as described in
      table 5.2.2-3 of TS 29.571 [61].";
      //optional
      type string;
      type SupportedFeatures;
      config false;
    }
    leaf serviceInfoList {