openapi: 3.0.0 info: title: 3gpp-analyticsexposure version: 1.0.0.alpha-1 description: | API for Analytics Exposure. © 2019, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. externalDocs: description: 3GPP TS 29.522 V16.2.0; 5G System; Network Exposure Function Northbound APIs. url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' security: - {} - oAuth2ClientCredentials: [] servers: - url: '{apiRoot}/3gpp-analyticsexposure/v1' variables: apiRoot: default: https://example.com description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. paths: /{afId}/subscriptions: get: summary: read all of the active subscriptions for the AF tags: - AF level GET Operation parameters: - name: afId in: path description: Identifier of the AF required: true schema: type: string responses: '200': description: OK (Successful get all of the active subscriptions for the AF) content: application/json: schema: type: array items: $ref: '#/components/schemas/AnalyticsExposureSubsc' minItems: 0 '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 tags: - subscription level POST Operation parameters: - name: afId in: path description: Identifier of the AF required: true schema: type: string requestBody: description: new subscription creation required: true content: application/json: schema: $ref: '#/components/schemas/AnalyticsExposureSubsc' callbacks: notification: '{request.body#/notifUri}': post: requestBody: # contents of the callback message required: true content: application/json: schema: $ref: '#/components/schemas/AnalyticsEventNotification' responses: '204': description: No Content (successful notification) '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) content: application/json: schema: $ref: '#/components/schemas/AnalyticsExposureSubsc' headers: Location: description: 'Contains the URI of the newly created resource' required: true schema: type: string '204': description: Successful case. The resource has been successfully created and no additional content is to be sent in the response message. '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}: get: summary: read an active subscription for the AF and the subscription Id tags: - Subscription level GET Operation 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 responses: '200': description: OK (Successful get the active subscription) content: application/json: schema: $ref: '#/components/schemas/AnalyticsExposureSubsc' '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: Updates/replaces an existing subscription resource tags: - Subscription level PUT Operation 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 requestBody: description: Parameters to update/replace the existing subscription required: true content: application/json: schema: $ref: '#/components/schemas/AnalyticsExposureSubsc' responses: '200': description: OK (Successful deletion of the existing subscription) content: application/json: schema: $ref: '#/components/schemas/AnalyticsExposureSubsc' '204': description: Successful case. The resource has been successfully updated and no additional content is to be sent in the response message. '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 tags: - Subscription level DELETE Operation 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 responses: '204': description: No Content (Successful deletion of the existing subscription) '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' /fetch: post: summary: Fetch analytics information requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AnalyticsRequest' responses: '200': description: The requested information was returned successfully. content: application/json: schema: $ref: '#/components/schemas/AnalyticsData' '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' components: securitySchemes: oAuth2ClientCredentials: type: oauth2 flows: clientCredentials: tokenUrl: '{tokenUrl}' scopes: {} schemas: AnalyticsExposureSubsc: type: object properties: analyEventsSubs: type: array items: $ref: '#/components/schemas/AnalyticsEventSubsc' minItems: 1 analyRepInfo: $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventReportingRequirement' notifUri: $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' notifId: type: string suppFeat: $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' required: - analyEventsSubs - analyRepInfo - notifUri - notifId AnalyticsEventNotification: type: object properties: notifId: type: string analyEventNotifs: type: array items: $ref: '#/components/schemas/AnalyticsEventNotif' minItems: 1 AnalyticsEventNotif: type: object properties: analyEvent: $ref: '#/components/schemas/AnalyticsEvent' timeStamp: $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' ueMobilityInfos: type: array items: $ref: '#/components/schemas/UeMobilityExposure' minItems: 1 ueCommInfos: type: array items: $ref: '#/components/schemas/UeCommunicationExposure' minItems: 1 abnormalInfo: type: string congestInfo: type: string required: - analyEvent - timeStamp AnalyticsEventSubsc: type: object properties: analyEvent: $ref: '#/components/schemas/AnalyticsEvent' analyEventFilter: $ref: '#/components/schemas/AnalyticsEventFilterSubsc' required: - analyEvent AnalyticsEventFilterSubsc: type: object properties: tgtUe: $ref: '#/components/schemas/TargetUeId' TargetUeId: type: object properties: anyUeInd: type: boolean gpsi: $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' exterGroupId: $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' UeMobilityExposure: type: object properties: gpsi: $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' ueTrajs: type: array items: $ref: '#/components/schemas/UeTrajectoryInfo' minItems: 1 required: - ueTrajs UeTrajectoryInfo: type: object properties: ts: $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' recurringTime: $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' duration: $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' locInfo: type: array items: $ref: '#/components/schemas/UeLocationInfo' minItems: 1 required: - duration - locInfo UeLocationInfo: type: object properties: loc: $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' ratio: $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' confidence: $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' required: - loc UeCommunicationExposure: type: object properties: gpsi: $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' comms: type: array items: $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Communication' minItems: 1 required: - comms AnalyticsRequest: type: object properties: analyEvent: $ref: '#/components/schemas/AnalyticsEvent' analyEventFilter: $ref: '#/components/schemas/AnalyticsEventFilter' analyRep: $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/AnalyticsReportingRequirement' tgtUe: $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TargetUeInformation' suppFeat: $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' required: - analyEvent - tgtUe - suppFeat AnalyticsEventFilter: type: object properties: locArea: $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' maxAnaEntry: $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' AnalyticsData: type: object properties: ueMobilityInfos: type: array items: $ref: '#/components/schemas/UeMobilityExposure' minItems: 1 ueCommInfos: type: array items: $ref: '#/components/schemas/UeCommunicationExposure' minItems: 1 suppFeat: $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' required: - suppFeat AnalyticsEvent: anyOf: - type: string enum: - UE_MOBILITY - UE_COMM - ABNORMAL_BEHAVIOR - CONGESTION - 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 - UE_MOBILITY: The AF requests to be notified about analytics information of UE mobility. - UE_COMM: The AF requests to be notified about analytics information of UE communication. - ABNORMAL_BEHAVIOR: The AF requests to be notified about analytics information of UE’s abnormal behavior. - CONGESTION: The AF requests to be notified about analytics information of user data congestion information.