openapi: 3.0.0
info:
description: UE Policy Control Service API
version: "1.0.1"
title: Npcf_UEPolicyControl
externalDocs:
description: 3GPP TS 29.525 V15.0.0; 5G System; UE Policy Control Service.
url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.525/'
servers:
- url: '{apiRoot}/npcf-ue-policy-control/v1'
variables:
apiRoot:
default: https://example.com
description: apiRoot as defined in subclause subclause 4.4 of 3GPP TS 29.501
security:
- {}
- oAuth2ClientCredentials:
- npcf-ue-policy-control
paths:
/policies:
post:
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyAssociationRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyAssociation'
headers:
Location:
description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/npcf-ue-policy-control/v1/policies/{polAssoId}'
required: true
schema:
type: string
'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:
policyUpdateNotification:
'{$request.body#/notificationUri}/update':
post:
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyUpdate'
responses:
'204':
description: No Content, Notification was succesfull
'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'
policyAssocitionTerminationRequestNotification:
'{$request.body#/notificationUri}/terminate':
post:
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TerminationNotification'
responses:
'204':
description: No Content, Notification was succesfull
'307':
description: temporary redirect
'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'
/policies/{polAssoId}:
get:
parameters:
- name: polAssoId
in: path
description: Identifier of a policy association
required: true
schema:
type: string
responses:
'200':
description: OK. Resource representation is returned
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyAssociation'
'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'
delete:
parameters:
- name: polAssoId
in: path
description: Identifier of a policy association
required: true
schema:
type: string
responses:
'204':
description: No Content. Resource was succesfully deleted
'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'
/policies/{polAssoId}/update:
post:
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyAssociationUpdateRequest'
parameters:
- name: polAssoId
in: path
description: Identifier of a policy association
required: true
schema:
type: string
responses:
'200':
description: OK. Updated policies are returned
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyUpdate'
'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'
components:
securitySchemes:
oAuth2ClientCredentials:
type: oauth2
flows:
clientCredentials:
tokenUrl: '{nrfApiRoot}/oauth2/token'
scopes:
npcf-ue-policy-control: Access to the Npcf_AMPolicyControl API
schemas:
PolicyAssociation:
type: object
properties:
request:
$ref: '#/components/schemas/PolicyAssociationRequest'
uePolicy:
$ref: '#/components/schemas/UePolicy'
triggers:
type: array
items:
$ref: '#/components/schemas/RequestTrigger'
minItems: 1
description: Request Triggers that the PCF subscribes. Only values "LOC_CH" and "PRA_CH" are permitted.
pras:
type: object
additionalProperties:
$ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo'
minProperties: 1
suppFeat:
$ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
required:
- suppFeat
PolicyAssociationRequest:
type: object
properties:
notificationUri:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
altNotifIpv4Addrs:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
minItems: 1
description: Alternate or backup IPv4 Address(es) where to send Notifications.
altNotifIpv6Addrs:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
minItems: 1
description: Alternate or backup IPv6 Address(es) where to send Notifications.
supi:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
gpsi:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
accessType:
$ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
pei:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Pei'
userLoc:
$ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation'
timeZone:
$ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone'
servingPlmn:
$ref: 'TS29571_CommonData.yaml#/components/schemas/NetworkId'
ratType:
$ref: 'TS29571_CommonData.yaml#/components/schemas/RatType'
groupIds:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
minItems: 1
hPcfId:
type: string
description: H-PCF Identifier. Shall be provided when available.
uePolReq:
$ref: '#/components/schemas/UePolicyRequest'
guami:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'
serviveName:
type: string
description: If the NF service consumer is an AMF, it should provide the name of a service produced by the AMF that makes use of information received within the Npcf_UEPolicyControl_UpdateNotify service operation.
servingNfId:
$ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
suppFeat:
$ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
required:
- notificationUri
- suppFeat
- supi
PolicyAssociationUpdateRequest:
type: object
properties:
notificationUri:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
altNotifIpv4Addrs:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
minItems: 1
description: Alternate or backup IPv4 Address(es) where to send Notifications.
altNotifIpv6Addrs:
type: array
items:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
minItems: 1
description: Alternate or backup IPv6 Address(es) where to send Notifications.
triggers:
type: array
items:
$ref: '#/components/schemas/RequestTrigger'
minItems: 1
description: Request Triggers that the NF service consumer observes.
praStatuses:
type: object
additionalProperties:
$ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo'
description: Map of PRA status information.
minProperties: 1
userLoc:
$ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation'
uePolDelResult:
$ref: '#/components/schemas/UePolicyDeliveryResult'
servingNfId:
$ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
PolicyUpdate:
type: object
properties:
resourceUri:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
uePolicy:
$ref: '#/components/schemas/UePolicy'
triggers:
type: array
items:
$ref: '#/components/schemas/RequestTrigger'
minItems: 1
nullable: true
description: Request Triggers that the PCF subscribes. Only values "LOC_CH" and "PRA_CH" are permitted.
pras:
type: object
additionalProperties:
$ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo'
description: Map of PRA information.
minProperties: 1
nullable: true
required:
- resourceUri
TerminationNotification:
type: object
properties:
resourceUri:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
cause:
$ref: '#/components/schemas/PolicyAssociationReleaseCause'
required:
- resourceUri
- cause
UePolicy:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes'
UePolicyDeliveryResult:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes'
UePolicyRequest:
$ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes'
RequestTrigger:
anyOf:
- type: string
enum:
- LOC_CH
- PRA_CH
- UE_POLICY
- 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
- LOC_CH: Location change (tracking area). The tracking area of the UE has changed.
- PRA_CH: Change of UE presence in PRA. The UE is entering/leaving a Presence Reporting Area.
- UE_POLICY: A MANAGE UE POLICY COMPLETE message or a MANAGE UE POLICY COMMAND REJECT message, as defined in Annex D.5 of 3GPP TS 24.501, has been received by the AMF and is being forwarded.
PolicyAssociationReleaseCause:
anyOf:
- type: string
enum:
- UNSPECIFIED
- UE_SUBSCRIPTION
- INSUFFICIENT_RES
- 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
- UNSPECIFIED: This value is used for unspecified reasons.
- UE_SUBSCRIPTION: This value is used to indicate that the session needs to be terminated because the subscription of UE has changed (e.g. was removed).
- INSUFFICIENT_RES: This value is used to indicate that the server is overloaded and needs to abort the session.