openapi: 3.0.0

info:
  title: 3gpp-traffic-influence
  version: 1.3.0
  description: |
    API for AF traffic influence  
    © 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.

externalDocs:
  description: >
    3GPP TS 29.522 V18.6.0; 5G System; Network Exposure Function Northbound APIs.
  url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/'

security:
  - {}
  - oAuth2ClientCredentials: []

servers:
  - url: '{apiRoot}/3gpp-traffic-influence/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122.

paths:
  /{afId}/subscriptions:
    parameters:
      - name: afId
        in: path
        description: Identifier of the AF
        required: true
        schema:
          type: string
    get:
      summary: read all of the active subscriptions for the AF
      operationId: ReadAllSubscriptions
      tags:
        - Traffic Influence Subscription
      responses:
        '200':
          description: OK. 
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TrafficInfluSub'
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29122_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    post:
      summary: Creates a new subscription resource 
      operationId: CreateNewSubscription
      tags:
        - Traffic Influence Subscription
      requestBody:
        description: Request to create a new subscription resource
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrafficInfluSub'
      callbacks:
        notificationDestination:
          '{$request.body#/notificationDestination}':
            post:
              requestBody:  # contents of the callback message
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/EventNotification'
              callbacks:
                afAcknowledgement:
                  '{$request.body#/afAckUri}':
                    post:
                      requestBody:  # contents of the callback message
                        required: true
                        content:
                          application/json:
                            schema:
                              $ref: '#/components/schemas/AfAckInfo'
                      responses:
                        '204':
                          description: No Content (successful acknowledgement)
                        '307':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
                        '308':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
                        '400':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
                        '401':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
                        '403':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
                        '404':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
                        '411':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
                        '413':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
                        '415':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
                        '429':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
                        '500':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
                        '503':
                          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
                        default:
                          $ref: 'TS29122_CommonData.yaml#/components/responses/default'
              responses:
                '204':
                  description: No Content (successful notification)
                '307':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/307'
                '308':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/308'
                '400':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29122_CommonData.yaml#/components/responses/default'
      responses:
        '201':
          description: Created (Successful creation of subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficInfluSub'
          headers:
            Location:
              description: Contains the URI of the newly created resource.
              required: true
              schema:
                type: string
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

  /{afId}/subscriptions/{subscriptionId}:
    parameters:
      - name: afId
        in: path
        description: Identifier of the AF
        required: true
        schema:
          type: string
      - name: subscriptionId
        in: path
        description: Identifier of the subscription resource
        required: true
        schema:
          type: string
    get:
      summary: read an active subscriptions for the SCS/AS and the subscription Id
      operationId: ReadAnSubscription
      tags:
        - Individual Traffic Influence Subscription
      responses:
        '200':
          description: OK (Successful get the active subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficInfluSub'
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29122_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    put:
      summary: Fully updates/replaces an existing subscription resource
      operationId: FullyUpdateAnSubscription
      tags:
        - Individual Traffic Influence Subscription
      requestBody:
        description: Parameters to update/replace the existing subscription
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrafficInfluSub'
      responses:
        '200':
          description: OK (Successful update of the subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficInfluSub'
        '204':
          description: No Content
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    patch:
      summary: Partially updates/replaces an existing subscription resource
      operationId: PartialUpdateAnSubscription
      tags:
        - Individual Traffic Influence Subscription
      requestBody:
        required: true
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/TrafficInfluSubPatch'
      responses:
        '200':
          description: OK. The subscription was modified successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficInfluSub'
        '204':
          description: No Content
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    delete:
      summary: Deletes an already existing subscription
      operationId: DeleteAnSubscription
      tags:
        - Individual Traffic Influence Subscription
      responses:
        '204':
          description: No Content (Successful deletion of the existing subscription)
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{tokenUrl}'
          scopes: {}

  schemas: 
    TrafficInfluSub:
      description: Represents a traffic influence subscription.
      type: object
      properties:
        afServiceId:
          type: string
          description: Identifies a service on behalf of which the AF is issuing the request.
        afAppId:
          type: string
          description: Identifies an application.
        afTransId:
          type: string
          description: Identifies an NEF Northbound interface transaction, generated by the AF.
        appReloInd:
          type: boolean
          description: >
            Identifies whether an application can be relocated once a location of
            the application has been selected.
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        externalGroupId:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId'
        externalGroupIds:
          type: array
          items:
             $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId'
          minItems: 1
          description: Each element identifies a group of users.
        extSubscCats:
          type: array
          items:
            type: string
          minItems: 1
        anyUeInd:
          type: boolean
          description: >
            Identifies whether the AF request applies to any UE. This attribute shall
            set to "true" if applicable for any UE, otherwise, set to "false".
        subscribedEvents:
          type: array
          items:
            $ref: '#/components/schemas/SubscribedEvent'
          minItems: 1
          description: Identifies the requirement to be notified of the event(s).
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        ipv4Addr:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr'
        ipDomain:
          type: string
        ipv6Addr:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr'
        macAddr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        dnaiChgType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType'
        notificationDestination:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        requestTestNotification:
          type: boolean
          description: >
            Set to true by the SCS/AS to request the NEF to send a test notification
            as defined in clause 5.2.5.3. Set to false or omitted otherwise.
        websockNotifConfig:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig'
        self:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        trafficDataSets:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/TrafficDataSet'
          minProperties: 2
          description: >
            Contains multiple sets of traffic filters with the corresponding N6 traffic 
            routing requirements. The key of the map shall be the value of the setId attribute of 
            the TrafficDataSet data structure.
        trafficFilters:
          type: array
          items:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo'
          minItems: 1
          description: Identifies IP packet filters.
        ethTrafficFilters:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          description: Identifies Ethernet packet filters.
        trafficRoutes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
          description: Identifies the N6 traffic routing requirement.
        sfcIdDl:
          type: string
          description: >
            Reference to a pre-configured steering of user traffic to service function chain in
            downlink.
        sfcIdUl:
          type: string
          description: >
            Reference to a pre-configured steering of user traffic to service function chain in
            uplink.
        metadata:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata'
        tfcCorrInd:
          type: boolean
        tempValidities:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity'
        validGeoZoneIds:
          type: array
          items:
            type: string
          minItems: 1
          description: >
            Identifies a geographic zone that the AF request applies only to the traffic
            of UE(s) located in this specific zone.
          deprecated: true
        geoAreas:
          type: array
          items:
            $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea'
          minItems: 1
          description: Identifies geographical areas within which the AF request applies.
        afAckInd:
          type: boolean
        addrPreserInd:
          type: boolean
        simConnInd:
          type: boolean
          description: >
            Indicates whether simultaneous connectivity should be temporarily
            maintained for the source and target PSA.
        simConnTerm:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        maxAllowedUpLat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        easIpReplaceInfos:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo'
          minItems: 1
          description: Contains EAS IP replacement information.
        easRedisInd:
          type: boolean
          description: >
            Indicates the EAS rediscovery is required for the application if it is included
            and set to "true".
        eventReq:
          $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation'
        eventReports:
          type: array
          items:
            $ref: '#/components/schemas/EventNotification'
          minItems: 1
        candDnaiInd:
          type: boolean
          description: >
            Indication of reporting candidate DNAI(s). If it is included and set to "true", the
            candidate DNAI(s) for the PDU session need to be reported. Otherwise set to "false" or
            omitted.
        tfcCorreInfo:
          $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo'
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        portNumber:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Port'
        suppFeat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
      allOf:
        - oneOf:
          - required: [afAppId]
          - required: [trafficFilters]
          - required: [ethTrafficFilters]
          - required: [trafficDataSets]
        - oneOf:
          - required: [ipv4Addr]
          - required: [ipv6Addr]
          - required: [macAddr]
          - required: [gpsi]
          - required: [externalGroupId]
          - required: [anyUeInd]
      anyOf:
        - not:
            required: [subscribedEvents]
        - required: [notificationDestination]

    TrafficInfluSubPatch:
      description: >
        Represents parameters to request the modification of a traffic influence
        subscription resource.
      type: object
      properties:
        appReloInd:
          type: boolean
          description: >
            Identifies whether an application can be relocated once a location of
            the application has been selected.
          nullable: true
        trafficDataSets:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/TrafficDataSetRm'
          minProperties: 1
          description: >
            Contains one or several set(s) of traffic filters with the corresponding N6 traffic 
            routing requirements. The key of the map shall be the value of the setId attribute of 
            the TrafficDataSet data structure.
        trafficFilters:
          type: array
          items:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo'
          minItems: 1
          description: Identifies IP packet filters.
        ethTrafficFilters:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          description: Identifies Ethernet packet filters.
        trafficRoutes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
          description: Identifies the N6 traffic routing requirement.
        sfcIdDl:
          type: string
          description: >
            Reference to a pre-configured steering of user traffic to service function chain in
            downlink.
          nullable: true
        sfcIdUl:
          type: string
          description: >
            Reference to a pre-configured steering of user traffic to service function chain in
            uplink.
          nullable: true
        metadata:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata'
        tfcCorrInd:
          type: boolean
          nullable: true
        tempValidities:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity'
          minItems: 1
          nullable: true
        validGeoZoneIds:
          type: array
          items:
            type: string
          minItems: 1
          description: >
            Identifies a geographic zone that the AF request applies only to the traffic
            of UE(s) located in this specific zone.
          nullable: true
          deprecated: true
        geoAreas:
          type: array
          items:
            $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea'
          minItems: 1
          description: Identifies geographical areas within which the AF request applies.
          nullable: true
        afAckInd:
          type: boolean
          nullable: true
        addrPreserInd:
          type: boolean
          nullable: true
        simConnInd:
          type: boolean
          description: >
            Indicates whether simultaneous connectivity should be temporarily maintained
            for the source and target PSA.
        simConnTerm:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        maxAllowedUpLat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm'
        easIpReplaceInfos:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo'
          minItems: 1
          description: Contains EAS IP replacement information.
          nullable: true
        easRedisInd:
          type: boolean
          description: >
            Indicates the EAS rediscovery is required for the application if it is included
            and set to "true".
        notificationDestination:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        eventReq:
          $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation'
        tfcCorreInfo:
          $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo'

    EventNotification:
      description: Represents a traffic influence event notification.
      type: object
      properties:
        afTransId:
          type: string
          description: Identifies an NEF Northbound interface transaction, generated by the AF.
        dnaiChgType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType'
        sourceTrafficRoute:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
        subscribedEvent:
          $ref: '#/components/schemas/SubscribedEvent'
        targetTrafficRoute:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
        sourceDnai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
        targetDnai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
        candidateDnais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
          minItems: 1
          description: The candidate DNAI(s) for the PDU Session.
        candDnaisPrioInd:
          type: boolean
          description: >
            If provided and set to true, it indicates that the candidate DNAIs provided
            in the candidateDnais attribute are in descending priority order, i.e.,
            the lower the array index the higher the priority of the respective DNAI.
            If omitted, the default value is false.
        easRediscoverInd:
          type: boolean
          description: >
            Indication of EAS re-discovery. If present and set to "true", it indicates the EAS
            re-discovery is performed, e.g. due to change of common EAS. Default value is "false" if
            omitted. May be included for event "UP_PATH_CHANGE".
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        srcUeIpv4Addr:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr'
        srcUeIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        tgtUeIpv4Addr:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr'
        tgtUeIpv6Prefix:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        ueMac:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        afAckUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        offloadPlmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        hDnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        hSnssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        suppFeatures:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
      required:
        - dnaiChgType
        - subscribedEvent

    AfResultInfo:
      description: Identifies the result of application layer handling.
      type: object
      properties:
        afStatus:
          $ref: '#/components/schemas/AfResultStatus'
        trafficRoute:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
        upBuffInd:
          type: boolean
          description: >
            If present and set to "true" it indicates that buffering of uplink traffic
            to the target DNAI is needed.
        easIpReplaceInfos:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo'
          minItems: 1
          description: Contains EAS IP replacement information.
      required:
        - afStatus

    AfAckInfo:
      description: Represents acknowledgement information of a traffic influence event notification.
      type: object
      properties:
        afTransId:
          type: string
        ackResult:
          $ref: '#/components/schemas/AfResultInfo'
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
      required:
        - ackResult

    TrafficDataSet:
      description: >
        Represents a set of traffic filters and the corresponding N6 traffic routing requirements.
      properties:
        setId:
          type: string
        trafficFilters:
          type: array
          items:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo'
          minItems: 1
        ethTrafficFilters:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
        trafficRoutes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
      required:
        - setId
        - trafficRoutes
      oneOf:
        - required: [trafficFilters]
        - required: [ethTrafficFilters]

    TrafficDataSetRm:
      description: >
        This data type is defined in the same way as the TrafficDataSet data, but with the OpenAPI
        nullable property set to true. Removable attributes trafficFilters and ethTrafficFilters and
        trafficRoutes are defined as nullable in the OpenAPI.
      properties:
        setId:
          type: string
        trafficFilters:
          type: array
          items:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo'
          minItems: 1
          nullable: true
        ethTrafficFilters:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          nullable: true
        trafficRoutes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
          nullable: true
      nullable: true
      required:
        - setId

    SubscribedEvent:
      anyOf:
      - type: string
        enum:
          - UP_PATH_CHANGE
      - 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: |
        Represents the type of UP path management events for which the AF requests to be notified.  
        Possible values are:
        - UP_PATH_CHANGE: The AF requests to be notified when the UP path changes for
          the PDU session.

    AfResultStatus:
      anyOf:
        - type: string
          enum:
            - SUCCESS
            - TEMPORARY_CONGESTION
            - RELOC_NO_ALLOWED
            - OTHER
        - 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: |
        Represents the status of application handling result.  
        Possible values are:
        - SUCCESS: The application layer is ready or the relocation is completed.
        - TEMPORARY_CONGESTION: The application relocation fails due to temporary congestion.
        - RELOC_NO_ALLOWED: The application relocation fails because application relocation
          is not allowed.
        - OTHER: The application relocation fails due to other reason.
