A.3 Nudsf_Timer API
29.5983GPPRelease 18TSUnstructured data storage services
openapi: 3.0.0
info:
title: Nudsf_Timer
version: 1.1.0-alpha.1
description: |
Nudsf Timer Service.
© 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
All rights reserved.
externalDocs:
description: 3GPP TS 29.598 UDSF Services, V18.0.0.
url: ‘https://www.3gpp.org/ftp/Specs/archive/29_series/29.598/’
servers:
– url: ‘{apiRoot}/nudsf-timer/v1’
variables:
apiRoot:
default: https://example.com
description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501
security:
– {}
– oAuth2ClientCredentials:
– nudsf-timer
paths:
/{realmId}/{storageId}/timers:
summary: Access to all Timers of a Storage
description: >-
root of all Timers of a Storage
get:
summary: Timers search with get
description: Retrieve one or multiple TimerIDs based on filter
operationId: SearchTimer
tags:
– Timer Search
parameters:
– name: realmId
in: path
description: Identifier of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: filter
in: query
description: Query filter using conditions on tags
content:
application/json:
schema:
$ref: ‘TS29598_Nudsf_DataRepository.yaml#/components/schemas/SearchExpression’
– name: expired-filter
in: query
description: Used to query for expired timers.
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/NullValue’
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
responses:
‘200’:
description: Successful case. Response contains result of the search.
content:
application/json:
schema:
$ref: ‘#/components/schemas/TimerIdList’
‘204’:
description: >-
The search condition does not match any Timer.
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
delete:
summary: Delete one or multiple timers based on filter
operationId: DeleteTimers
tags:
– Timers Delete
parameters:
– name: realmId
in: path
description: Identifier(name) of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
– name: filter
in: query
description: A filter that determines the set of timers to be deleted
content:
application/json:
schema:
$ref: ‘TS29598_Nudsf_DataRepository.yaml#/components/schemas/SearchExpression’
– name: expired-filter
in: query
description: Presence indicates that only expired timers are to be deleted.
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/NullValue’
responses:
‘200’:
description: Successful case. Response contains result of the search.
content:
application/json:
schema:
$ref: ‘#/components/schemas/TimerIdList’
‘204’:
description: Successful case.
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
/{realmId}/{storageId}/timers/{timerId}:
summary: Access to a specific Timer, identified by its TimerId
description: >-
Access to a specific Timer
put:
summary: Create/Replace Timer
description: Create or Modify a Timer with a user provided TimerId
operationId: CreateOrModifyTimer
tags:
– Timer Start
parameters:
– name: realmId
in: path
description: Identifier(name) of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: timerId
in: path
description: Identifier of the Timer
required: true
schema:
$ref: ‘#/components/schemas/TimerId’
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
requestBody:
content:
application/json:
schema:
$ref: ‘#/components/schemas/Timer’
required: true
responses:
‘201’:
description: Timer successfully created
‘204’:
description: Timer successfully replaced
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
callbacks:
timerExpiry:
‘{request.body#/callbackReference}’:
post:
requestBody:
required: true
content:
application/json:
schema:
$ref: ‘#/components/schemas/Timer’
responses:
‘204’:
description: Callback executed successfully
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
patch:
summary: Timer modification
description: update a specific Timer
operationId: UpdateTimer
tags:
– Timer Update
parameters:
– name: realmId
in: path
description: Identifier of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: timerId
in: path
description: Identifier of the Timer
required: true
schema:
$ref: ‘#/components/schemas/TimerId’
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
requestBody:
description: Timer data to patch
content:
application/json-patch+json:
schema:
type: array
items:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/PatchItem’
minItems: 1
required: true
responses:
‘200’:
description: >-
One or more modification instructions have been discarded, the execution report is returned in response PatchResult.
content:
application/json:
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/PatchResult’
‘204’:
description: >-
Successful case. The timer has been successfully updated and no return is expected.
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
delete:
summary: Delete a Timer with an user provided TimerId
operationId: DeleteTimer
tags:
– Timer Stop
parameters:
– name: realmId
in: path
description: Identifier(name) of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: timerId
in: path
description: Identifier of the Timer
required: true
schema:
$ref: ‘#/components/schemas/TimerId’
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
responses:
‘204’:
description: Successful case.
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘503’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/503’
default:
$ref: ‘TS29571_CommonData.yaml#/components/responses/default’
get:
summary: Timer access
description: retrieve one specific Timer
operationId: GetTimer
tags:
– Timer Get
parameters:
– name: realmId
in: path
description: Identifier of the Realm
required: true
schema:
type: string
example: Realm01
– name: storageId
in: path
description: Identifier of the Storage
required: true
schema:
type: string
example: Storage01
– name: timerId
in: path
description: Identifier of the Timer
required: true
schema:
$ref: ‘#/components/schemas/TimerId’
– name: supported-features
in: query
description: Features required to be supported by the target NF
schema:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/SupportedFeatures’
responses:
‘200’ : #result ok
description: Successful case.
content:
application/json:
schema:
$ref: ‘#/components/schemas/Timer’
‘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’
‘502’:
$ref: ‘TS29571_CommonData.yaml#/components/responses/502’
‘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:
nudsf-timer: Access to the nudsf-timer API
schemas:
# COMPLEX TYPES:
Timer:
description: Represents a timer.
type: object
required:
– expires
properties:
timerId:
$ref: ‘#/components/schemas/TimerId’
expires:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/DateTime’
metaTags:
description: A map (list of key-value pairs where a tagName of type string serves as key) of tagValue lists
type: object
additionalProperties:
type: array
items:
type: string
minItems: 1
minProperties: 1
callbackReference:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/Uri’
deleteAfter:
$ref: ‘TS29571_CommonData.yaml#/components/schemas/Uinteger’
TimerIdList:
description: Represents a list of timer IDs.
type: object
required:
– timerIds
properties:
timerIds:
type: array
items:
$ref: ‘#/components/schemas/TimerId’
minItems: 1
# SIMPLE TYPES:
TimerId:
description: Represents the identifier of a timer.
type: string
Annex B (informative):
Search Examples
The conditional expression is defined by the following Extended Backus-Naur Form (EBNF) [18].
Figure B-1: Search Expression
Search_Expression ::= Search_Comparison | Search_Condition
Figure B-2: Search Comparison
Search_Comparison ::= Tag ( ‘EQ’ | ‘NEQ’ | ‘GT’ | ‘GTE’ | ‘LT’ | ‘LTE’ ) Value
Figure B-3: Search Condition
Search_Condition ::= Search_Expression ( ( ‘AND’ | ‘OR’ ) Search_Expression )+
Figure B-4: Search ConditionNot
Search_ConditionNot ::= ‘NOT’ Search_Expression
Example:
Find all records where the tag "ueId" is equal to "455345" OR the tag "supi" is equal to "imsi-999559807001001":
{
"cond": "OR",
"items": [
{
"op": "EQ",
"tag" : "ueId",
"value" : "455345"
},
{
"op": "EQ",
"tag" : "supi",
"value" : "imsi-999559807001001"
}
]
}
Annex C (informative):
HTTP Multipart Examples