openapi: 3.0.0 info: title: 3gpp-traffic-influence version: 1.3.0-alpha.4 description: | API for AF traffic influence © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. externalDocs: description: > 3GPP TS 29.522 V18.4.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' 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] - 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. 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' 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: | 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.