A.2 TrafficInfluence API

29.5223GPP5G SystemNetwork Exposure Function Northbound APIsRelease 18Stage 3TS

openapi: 3.0.0

info:

title: 3gpp-traffic-influence

version: 1.2.1

description: |

API for AF traffic influence

© 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).

All rights reserved.

externalDocs:

description: >

3GPP TS 29.522 V17.7.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’

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’

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.

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

suppFeat:

$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’

allOf:

– oneOf:

– required: [afAppId]

– required: [trafficFilters]

– required: [ethTrafficFilters]

– 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

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.

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’

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’

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’

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

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: |

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: |

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.