openapi: 3.0.0

info:
  version: 1.2.2
  title: Nsmf_EventExposure
  description: |
    Session Management Event Exposure Service.  
    © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.

externalDocs:
  description: 3GPP TS 29.508 V17.10.0; 5G System; Session Management Event Exposure Service.
  url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/

servers:
  - url: '{apiRoot}/nsmf-event-exposure/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501

security:
  - {}
  - oAuth2ClientCredentials:
    - nsmf-event-exposure

paths:
  /subscriptions:
    post:
      operationId: CreateIndividualSubcription
      summary: Create an individual subscription for event notifications from the SMF
      tags:
        - Subscriptions (Collection)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NsmfEventExposure'
      responses:
        '201':
          description: Created.
          headers:
            Location:
              description: >
                Contains the URI of the newly created resource, according to the structure
                {apiRoot}/nsmf-event-exposure/v1/subscriptions/{subId}
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NsmfEventExposure'
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
      callbacks:
        myNotification:
          '{$request.body#/notifUri}': 
            post:
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/NsmfEventExposureNotification'
              responses:
                '204':
                  description: No Content, Notification was successful.
                '307':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/307'
                '308':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/308'
                '400':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'
              callbacks:
                afAcknowledgement:
                  '{request.body#/ackUri}':
                    post:
                      requestBody:  # contents of the callback message
                        required: true
                        content:
                          application/json:
                            schema:
                              $ref: '#/components/schemas/AckOfNotify'
                      responses:
                        '204':
                          description: No Content (successful acknowledgement)
                        '307':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/307'
                        '308':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/308'
                        '400':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                        '401':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                        '403':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                        '404':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                        '411':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                        '413':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                        '415':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                        '429':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                        '500':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                        '503':
                          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                        default:
                          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

  /subscriptions/{subId}:
    get:
      operationId: GetIndividualSubcription
      summary: Read an individual subscription for event notifications from the SMF
      tags:
        - IndividualSubscription (Document)
      parameters:
        - name: subId
          in: path
          description: Event Subscription ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK. Resource representation is returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NsmfEventExposure'
        '307':
          $ref: 'TS29571_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29571_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29571_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    put:
      operationId: ReplaceIndividualSubcription
      summary: Replace an individual subscription for event notifications from the SMF
      tags:
        - IndividualSubscription (Document)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NsmfEventExposure'
      parameters:
        - name: subId
          in: path
          description: Event Subscription ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK. Resource was successfully modified and representation is returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NsmfEventExposure'
        '204':
          description: No Content. Resource was successfully modified
        '307':
          $ref: 'TS29571_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29571_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    delete:
      operationId: DeleteIndividualSubcription
      summary: Delete an individual subscription for event notifications from the SMF
      tags:
        - IndividualSubscription (Document)
      parameters:
        - name: subId
          in: path
          description: Event Subscription ID
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content. Resource was successfully deleted
        '307':
          $ref: 'TS29571_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29571_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

components:

  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{nrfApiRoot}/oauth2/token'
          scopes:
            nsmf-event-exposure: Access to the Nsmf_EventExposure API

  schemas:

    NsmfEventExposure:
      description: >
        Represents an Individual SMF Notification Subscription resource. The serviveName property
        corresponds to the serviceName in the main body of the specification.
      type: object
      properties:
        supi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        anyUeInd:
          type: boolean
          description: >
            Any UE indication. This IE shall be present if the event subscription is applicable to 
            any UE. Default value "false" is used, if not present.
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
        pduSeId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId'
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        subId:
          $ref: '#/components/schemas/SubId'
        notifId:
          type: string
          description: Notification Correlation ID assigned by the NF service consumer.
        notifUri:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        altNotifIpv4Addrs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          description: Alternate or backup IPv4 address(es) where to send Notifications.
          minItems: 1
        altNotifIpv6Addrs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          description: Alternate or backup IPv6 address(es) where to send Notifications.
          minItems: 1
        altNotifFqdns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
          minItems: 1
          description: Alternate or backup FQDN(s) where to send Notifications.
        eventSubs:
          type: array
          items:
            $ref: '#/components/schemas/EventSubscription'
          minItems: 1
          description: Subscribed events
        eventNotifs:
          type: array
          items:
            $ref: '#/components/schemas/EventNotification'
          minItems: 1
        ImmeRep:
          type: boolean
        notifMethod:
          $ref: '#/components/schemas/NotificationMethod'
        maxReportNbr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        expiry:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        repPeriod:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        guami:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'
        serviveName:
          $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName'
        supportedFeatures:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        sampRatio:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio'
        partitionCriteria:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PartitioningCriteria'
          minItems: 1
          description: Criteria for partitioning the UEs before applying the sampling ratio.
        grpRepTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        notifFlag:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag'
      required:
        - notifId
        - notifUri
        - eventSubs

    NsmfEventExposureNotification:
      description: Represents notifications on events that occurred.
      type: object
      properties:
        notifId:
          type: string
          description: Notification correlation ID
        eventNotifs:
          type: array
          items:
            $ref: '#/components/schemas/EventNotification'
          minItems: 1
          description: Notifications about Individual Events
        ackUri:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
      required:
        - notifId
        - eventNotifs

    EventSubscription:
      description: Represents a subscription to a single event.
      type: object
      properties:
        event:
          $ref: '#/components/schemas/SmfEvent'
        dnaiChgType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType'
        dddTraDescriptors: 
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor'
          minItems: 1
        dddStati:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus'
          minItems: 1
        appIds:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId'
          minItems: 1
        targetPeriod:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow'
        transacDispInd:
          type: boolean
          description: >
            Indicates the subscription for UE transaction dispersion collectionon, if it is included
            and set to "true". Default value is "false".
        transacMetrics:
          type: array
          items:
            $ref: '#/components/schemas/TransactionMetric'
          description: Indicates Session Management Transaction metrics.
          minItems: 1
        ueIpAddr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
      required:
        - event

    EventNotification:
      description: Represents a notification related to a single event that occurred.
      type: object
      properties:
        event:
          $ref: '#/components/schemas/SmfEvent'
        timeStamp:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        supi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        ueIpAddr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
        transacInfos:
          type: array
          items:
            $ref: '#/components/schemas/TransactionInfo'
          description: Transaction Information.
          minItems: 1
        sourceDnai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
        targetDnai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
        dnaiChgType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType'
        sourceUeIpv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        sourceUeIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        targetUeIpv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        targetUeIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        sourceTraRouting:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
        targetTraRouting:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
        ueMac:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        adIpv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        adIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        reIpv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        reIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        accType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
        pduSeId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId'
        ratType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType'
        dddStatus:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus'
        dddTraDescriptor:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor'
        maxWaitTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        commFailure:
          $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CommunicationFailure'
        ipv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        ipv6Prefixes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
          minItems: 1
        ipv6Addrs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        pduSessType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType'
        qfi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi'
        appId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId'
        ethFlowDescs:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          description: >
            Descriptor(s) for non-IP traffic. It allows the encoding of multiple UL and/or DL flows.
            Each entry of the array describes a single Ethernet flow.
        ethfDescs:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          maxItems: 2
          description: >
            Contains the UL and/or DL Ethernet flows. Each entry of the array describes a single
            Ethernet flow.
        flowDescs:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription'
          minItems: 1
          description: >
            Descriptor(s) for IP traffic. It allows the encoding of multiple UL and/or DL flows.
            Each entry of the array describes a single IP flow.
        fDescs:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription'
          minItems: 1
          maxItems: 2
          description: >
            Contains the UL and/or DL IP flows. Each entry of the array describes a single
            IP flow.
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        ulDelays:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
          minItems: 1
        dlDelays:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
          minItems: 1
        rtDelays:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
          minItems: 1
        pdmf:
          type: boolean
          description: Represents the packet delay measurement failure indicator.
        timeWindow:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow'
        smNasFromUe:
          $ref: '#/components/schemas/SmNasFromUe'
        smNasFromSmf:
          $ref: '#/components/schemas/SmNasFromSmf'
        upRedTrans:
          type: boolean
          description: >
            Indicates whether the redundant transmission is setup or terminated. Set to "true" if 
            the redundant transmission is setup, otherwise set to "false" if the redundant 
            transmission is terminated. Default value is set to "false".
        ssId:
          type: string
        bssId:
          type: string
        startWlan:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        endWlan:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        pduSessInfos:
          type: array
          items:
            $ref: '#/components/schemas/PduSessionInformation'
          minItems: 1
        upfInfo:
          $ref: '#/components/schemas/UpfInformation'
      required:
        - event
        - timeStamp

    SubId:
      type: string
      format: SubId
      description: >
        Identifies an Individual SMF Notification Subscription. To enable that the value is used as
        part of a URI, the string shall only contain characters allowed according to the
        "lower-with-hyphen" naming convention defined in 3GPP TS 29.501. In an OpenAPI schema, the
        format shall be designated as "SubId".

    AckOfNotify:
      description: Represents an acknowledgement information of an event notification.
      type: object
      properties:
        notifId:
          type: string
        ackResult:
          $ref: 'TS29522_TrafficInfluence.yaml#/components/schemas/AfResultInfo'
        supi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
      required:
        - notifId
        - ackResult

    SmNasFromUe:
      description: >
        Represents information on the SM NAS messages that SMF receives from UE for PDU Session.
      type: object
      properties:
        smNasType:
          type: string
        timeStamp:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
      required:
        - smNasType
        - timeStamp

    SmNasFromSmf:
      description: >
        Represents information on the SM congestion control applied SM NAS messages that SMF sends 
        to UE for PDU Session.
      type: object
      properties:
        smNasType:
          type: string
        timeStamp:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        backoffTimer:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        appliedSmccType:
          $ref: '#/components/schemas/AppliedSmccType'
      required:
        - smNasType
        - timeStamp
        - backoffTimer
        - appliedSmccType

    TransactionInfo:
      description: Represents SMF Transaction Information.
      type: object
      properties:
        transaction:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        appIds:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId'
          minItems: 1
        transacMetrics:
          type: array
          items:
            $ref: '#/components/schemas/TransactionMetric'
          minItems: 1
      required:
        - transaction

    PduSessionInformation:
      description: Represents the PDU session related information.
      type: object
      properties:
        pduSessId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId'
        sessInfo:
          $ref: '#/components/schemas/PduSessionInfo'

    PduSessionInfo:
      description: Represents session information.
      type: object
      properties:
        n4SessId:
          type: string
          description: The identifier of the N4 session for the reported PDU Session.
        sessInactiveTimer:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        pduSessStatus:
          $ref: '#/components/schemas/PduSessionStatus'

    UpfInformation:
      description: Represents the ID/address/FQDN of the UPF.
      type: object
      properties:
        upfId:
          type: string
        upfAddr:
          $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn'

    SmfEvent:
      anyOf:
      - type: string
        enum:
          - AC_TY_CH
          - UP_PATH_CH
          - PDU_SES_REL
          - PLMN_CH
          - UE_IP_CH
          - RAT_TY_CH
          - DDDS
          - COMM_FAIL
          - PDU_SES_EST
          - QFI_ALLOC
          - QOS_MON
          - SMCC_EXP
          - DISPERSION
          - RED_TRANS_EXP
          - WLAN_INFO
          - UPF_INFO
          - UP_STATUS_INFO
      - type: string
        description: >
          This string provides forward-compatibility with future
          extensions to the enumeration but is not used to encode
          content defined in the present version of this API.
      description: |
        Possible values are:
        - AC_TY_CH: Access Type Change
        - UP_PATH_CH: UP Path Change
        - PDU_SES_REL: PDU Session Release
        - PLMN_CH: PLMN Change
        - UE_IP_CH: UE IP address change
        - RAT_TY_CH: RAT Type Change
        - DDDS: Downlink data delivery status
        - COMM_FAIL: Communication Failure
        - PDU_SES_EST: PDU Session Establishment
        - QFI_ALLOC: QFI allocation
        - QOS_MON: QoS Monitoring
        - SMCC_EXP: SM congestion control experience for PDU Session
        - DISPERSION: Session Management transaction dispersion
        - RED_TRANS_EXP: Redundant transmission experience for PDU Session
        - WLAN_INFO: WLAN information on PDU session for which Access Type is NON_3GPP_ACCESS and
          RAT Type is TRUSTED_WLAN
        - UPF_INFO: The UPF information, including the UPF ID/address/FQDN information.
        - UP_STATUS_INFO: The User Plane status information.

    NotificationMethod:
      anyOf:
      - type: string
        enum:
          - PERIODIC
          - ONE_TIME
          - ON_EVENT_DETECTION
      - type: string
        description: >
          This string provides forward-compatibility with future
          extensions to the enumeration but is not used to encode
          content defined in the present version of this API.
      description: |
        Possible values are:
        - PERIODIC
        - ONE_TIME
        - ON_EVENT_DETECTION

    AppliedSmccType:
      anyOf:
      - type: string
        enum:
          - DNN_CC
          - SNSSAI_CC
        description: >
          This string indicates the type of applied SM congestion control.
      - type: string
        description: >
          This string provides forward-compatibility with future
          extensions to the enumeration but is not used to encode
          content defined in the present version of this API.
      description: |
        Possible values are:
        - DNN_CC: Indicates the DNN based congestion control.
        - SNSSAI_CC: Indicates the S-NSSAI based congestion control.

    TransactionMetric:
      anyOf:
      - type: string
        enum:
          - PDU_SES_EST
          - PDU_SES_AUTH
          - PDU_SES_MODIF
          - PDU_SES_REL
      - type: string
        description: >
          This string Indicates Session Management Transaction metrics.
      description: |
        Possible values are:
        - PDU_SES_EST: PDU Session Establishment
        - PDU_SES_AUTH: PDU Session Authentication
        - PDU_SES_MODIF: PDU Session Modification
        - PDU_SES_REL: PDU Session Release

    PduSessionStatus:
      anyOf:
      - type: string
        enum:
          - ACTIVATED
          - DEACTIVATED
      - type: string
        description: >
          This string Indicates the status of the PDU Session.
      description: |
        Possible values are:
        - ACTIVATED: PDU Session status is activated.
        - DEACTIVATED: PDU Session status is deactivated.