6 API Definitions
29.5983GPPRelease 18TSUnstructured data storage services
6.1 Nudsf_DataRepository Service API
6.1.1 Introduction
The Nudsf_DataRepository service shall use the Nudsf_DataRepository API.
The API URI of the Nudsf_DataRepository API shall be:
{apiRoot}/<apiName>/<apiVersion>/
The request URI used in HTTP requests from the NF service consumer towards the NF service producer shall have the Resource URI structure defined in clause 4.4.1 of 3GPP TS 29.501 [5], i.e.:
{apiRoot}/<apiName>/<apiVersion>/<apiSpecificResourceUriPart>
with the following components:
– The {apiRoot} shall be set as described in 3GPP TS 29.501 [5].
– The <apiName> shall be "nudsf-dr".
– The <apiVersion> shall be "v1".
– The <apiSpecificResourceUriPart> shall be set as described in clause 6.1.3.
6.1.2 Usage of HTTP
6.1.2.1 General
HTTP/2, IETF RFC 7540 [11], shall be used as specified in clause 5 of 3GPP TS 29.500 [4].
HTTP/2 shall be transported as specified in clause 5.3 of 3GPP TS 29.500 [4].
The OpenAPI [6] specification of HTTP messages and content bodies for the Nudsf_DataRepository API is contained in Annex A.
6.1.2.2 HTTP standard headers
6.1.2.2.1 General
See clause 5.2.2 of 3GPP TS 29.500 [4] for the usage of HTTP standard headers.
6.1.2.2.2 Content type
The following content types shall be supported:
– JSON, IETF RFC 8259 [12], shall be used as content type of the HTTP bodies specified in the present specification as specified in clause 5.4 of 3GPP TS 29.500 [4]. The use of the JSON format shall be signalled by the content type "application/json".
– "Problem Details" JSON object shall be used to indicate additional details of the error in a HTTP response body and shall be signalled by the content type "application/problem+json", as defined in IETF RFC 7807 [13].
– JSON Patch (IETF RFC 6902 [14]). The use of the JSON Patch format in a HTTP request body shall be signalled by the content type "application/json-patch+json".
Multipart messages shall also be supported possibly indicating other content-types as described in clause 6.1.2.4.
6.1.2.2.3 Cache-Control
As described in IETF RFC 7234 [17] clause 5.2, a "Cache-Control" header should be included in HTTP responses carrying a representation of cacheable resources. If it is included, it shall contain a "max-age" value, indicating the amount of time in seconds after which the received response is considered stale.
The "max-age" value shall be configurable by operator policy.
6.1.2.2.4 ETag
As described in IETF RFC 7232 [16] clause 2.3, an "ETag" (entity-tag) header should be included in HTTP responses carrying a representation of cacheable or modifiable resources to allow an NF Service Consumer performing a conditional GET request with an "If-None-Match" header or a conditional PUT/PATCH/DELETE request with an "If-Match" header. If it is included, it shall contain a server-generated strong validator, that allows further matching of this value (included in subsequent client requests) with a given resource representation stored in the server or in a cache.
6.1.2.2.5 If-None-Match
As described in IETF RFC 7232 [16] clause 3.2, an NF Service Consumer may issue conditional GET or PUT requests towards UDSF by including an "If-None-Match" header in HTTP requests containing one or several entity tags received in previous responses for the same resource.
If the If-None-Match header is included with the PUT method, it shall be used with a value of "*" to prevent the inadvertent modification of an existing representation of the target resource when the client believes that the resource does not have a current representation.
6.1.2.2.6 If-Match
As described in IETF RFC 7232 [16] clause 3.1, an NF Service Consumer may issue conditional PUT/PATCH/DELETE request towards UDSF by including an "If-Match" header in HTTP requests containing an entity tag received in previous responses for the same resource.
6.1.2.2.7 Last-Modified
As described in IETF RFC 7232 [16] clause 2.2, a "Last-Modified" header should be included in HTTP responses carrying a representation of cacheable resources to allow an NF Service Consumer performing a conditional request with "If-Modified-Since" header.
6.1.2.2.8 If-Modified-Since
As described in IETF RFC 7232 [16] clause 3.3, an NF Service Consumer may issue conditional GET request towards UDSF, by including an "If-Modified-Since" header in HTTP requests.
6.1.2.2.9 When to Use Entity-Tags and Last-Modified Dates
Both "ETag" and "Last-Modified" headers should be sent in the same HTTP response as stated in IETF RFC 7232 [16] clause 2.4.
NOTE: "ETag" is a stronger validator than the "Last-Modified" and is preferred.
If the UDSF included an "ETag" header with the resource then a conditional GET request for this resource shall be performed with the "If-None-Match" header, and a PUT/PATCH/DELETE request for this resource shall be performed with the "If-Match" header.
6.1.2.2.10 Content-Location
As described in IETF RFC 7231 [15] clause 3.1.4.2, the UDSF shall include the Content-Location header set to the URI of the expired Record when sending a Notification to an NF Consumer.
6.1.2.3 HTTP custom headers
The mandatory HTTP custom header fields specified in clause 5.2.3.2 of 3GPP TS 29.500 [4] shall be applicable.
6.1.2.4 HTTP multipart messages
6.1.2.4.1 General
HTTP multipart messages shall be supported to transfer the opaque Record and Block Information in the following service operations (and HTTP messages):
– Record (PUT/GET/DELETE)
– BlockCollection (GET)
– RecordNotification (POST)
NOTE: In the clauses below, this specification deviates in the definition of the Content-Id header from IETF RFC 2045 [20] in that there is no need for the Content-Id to be "world unique", as in this specification the Content-Id is only required to be unique within the context of a Record, BlockCollection or RecordNotification.
6.1.2.4.2 Record
The Record is encoded as an HTTP multipart message with the multipart/mixed content-type as described in IETF RFC 2046 [21].
The boundary parameter is used to delimit each part (Start of parts to RecordMeta, RecordMeta to Block, Block to Block and Block to End of parts) and shall be set to a value as in accordance with IETF RFC 2046 [21].
The RecordMeta part shall be the first part, and shall always be present. It shall include a Content-Id header that may be set to an unquoted value of "meta" or any other suitable value, for example as described in IETF RFC 2045 [20], the Content-Type (see IETF RFC 2045 [20]) header set to "application/json" and include JSON content for the RecordMeta.
Zero or more Block parts may follow the RecordMeta Part. For each Block part in the HTTP multipart/mixed message, the Block part shall include a Content-Id header identifying the Block with the value of the blockId, a Content-Type (see IETF RFC 2045 [20]) header indicating the MIME type of the Block (any value), e.g. application/octet-stream, application/json or another applicable MIME type and the Content-Transfer-Encoding (see IETF RFC 2045 [20]) header with an appropriate value.
6.1.2.4.3 BlockCollection
The BlockCollection is encoded as an HTTP multipart message with the multipart/parallel content-type as described in IETF RFC 2046 [21].
The boundary parameter is used to delimit each part (Start of parts to Block, Block to Block and Block to End of parts) and shall be set to a value as in accordance with IETF RFC 2046 [21].
For the BlockCollection, zero or more Block parts may be included. For each Block part in the HTTP multipart/parallel message, the Block part shall include a Content-Id header identifying the Block with the value of the blockId, a Content-Type header indicating the MIME type of the Block (any value) e.g. application/octet-stream, application/json or another applicable MIME type and the Content-Transfer-Encoding (see IETF RFC 2045 [20]) header with an appropriate value.
6.1.2.4.4 RecordNotification
The RecordNotification is encoded as an HTTP multipart message with the multipart/mixed content-type as described in IETF RFC 2046 [21].
The boundary parameter is used to delimit each part (Start of parts to RecordNotification, RecordNotification to RecordMeta, RecordMeta to Block, Block to Block and Block to End of parts) and shall be set to a value in accordance with IETF RFC 2046 [21].
The RecordNotification shall be the first part, and shall always be present. It shall include a Content-Id header set to an unquoted value of "meta" or any other suitable value, for example as described in IETF RFC 2045 [20], the Content-Type (see IETF RFC 2045 [20]) header set to "application/json" and include JSON content for the NotificationDescription.
The RecordMeta part shall be the second part, and shall always be present. It shall include a Content-Id header set to an unquoted value of "meta" or any other suitable value, for example as described in IETF RFC 2045 [20], the Content-Type (see IETF RFC 2045 [20]) header set to "application/json" and include JSON content for the RecordMeta.
Zero or more Block parts may follow the RecordMeta Part. For each Block part in the HTTP multipart/mixed message, the Block part shall include a Content-Id header identifying the Block with the value of the blockId, a Content-Type (see IETF RFC 2045 [20]) header indicating the MIME type of the Block (any value), e.g. application/octet-stream, application/json or another applicable MIME type and the Content-Transfer-Encoding (see IETF RFC 2045 [20]) header with an appropriate value.
6.1.3 Resources
6.1.3.1 Overview
Figure 6.1.3.1-1: Resource URI structure of the nudsf-dr API
Table 6.1.3.1-1 provides an overview of the resources and applicable HTTP methods.
Table 6.1.3.1-1: Resources and methods overview
Resource name |
Resource URI |
HTTP method or custom operation |
Description |
RecordCollection (Collection) |
/{realmId}/{storageId}/records |
GET |
Search for records |
DELETE |
Delete records |
||
Record (Document) |
/{realmId}/{storageId}/records/{recordId} |
GET |
Retrieve a record |
PUT |
Create or update a record |
||
DELETE |
Delete a record |
||
Meta (Document) |
/{realmId}/{storageId}/records/{recordId}/meta |
GET |
Retrieve the meta of a record |
PATCH |
Modify the meta of a record |
||
BlockCollection (Collection) |
/{realmId}/{storageId}/records/{recordId}/blocks |
GET |
Retrieve all the blocks of a record |
Block (Document) |
/{realmId}/{storageId}/records/{recordId}/blocks/{blockId} |
GET |
Retrieve a block |
PUT |
Create or update a block |
||
DELETE |
Delete a block |
||
NotificationSubscriptions (Collection) |
/{realmId}/{storageId}/subs-to-notify |
GET |
Retrieve existing subscriptions |
Individual NotificationSubscription (Document) |
/{realmId}/{storageId}/subs-to-notify/{subscriptionId} |
DELETE |
Delete the subscription identified by {subscriptionId}, i.e. unsubscribe to notification for change of data |
PATCH |
Update an individual Subscription to notification |
||
PUT |
Create or update a subscription to notification, |
||
GET |
Retrieve an individual Subscription to notification |
||
Meta Schema (Document) |
/{realmId}/{storageId}/meta-schemas/{schemaId} |
GET |
Retrieve a Meta Schema |
PUT |
Create or update a Meta Schema |
||
DELETE |
Delete a Meta Schema |
6.1.3.2 Resource: RecordCollection (Collection)
6.1.3.2.1 Description
This resource represents the collection of records within a storage. It can be used to search for specific records matching specific filter criteria.
6.1.3.2.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/records
This resource shall support the resource URI variables defined in table 6.1.3.2.2-1.
Table 6.1.3.2.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id. |
storageId |
Represents the storage Id. |
6.1.3.2.3 Resource Standard Methods
6.1.3.2.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.2.3.1-1.
Table 6.1.3.2.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
filter |
SearchExpression |
O |
0..1 |
The filter criteria for searching the records of the storage. |
|
limit-range |
Uinteger |
C |
0..1 |
When set, the returned response shall contain at the most the number of record references specified by the parameter value. If the count-indicator parameter is set in the request, this parameter shall be ignored. |
|
count-indicator |
boolean |
O |
0..1 |
If this parameter is set, the number of records that matched the criteria shall be returned and no record references shall be returned. |
|
retrieve-records |
RetrieveRecords |
O |
0..1 |
If this parameter is set, the content of records that matched the criteria shall be returned. If count-indicator is set, this parameter shall not be set. |
CombinedSearchRetrieve |
max-payload-size |
Uinteger |
O |
0..1 |
Maximum payload size (before compression, if any) of the response, expressed in kilo octets. When present, the UDSF shall limit the number of Records or Meta returned in the response so as not to exceed the maximum payload size indicated in the request. |
CombinedSearchRetrieve |
This method shall support the request data structures specified in table 6.1.3.2.3.1-2 and the response data structures and response codes specified in table 6.1.3.2.3.1-3.
Table 6.1.3.2.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.2.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
RecordSearchResult |
M |
1 |
200 OK |
The search result containing the record references matching the filter. |
n/a |
204 No Content |
The search did not result in any matching record references. |
||
NOTE: The manadatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.2.3.2 DELETE
This method shall support the URI query parameters specified in table 6.1.3.2.3.2-1.
Table 6.1.3.2.3.2-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
filter |
SearchExpression |
M |
1 |
The filter criteria for identifying the records to be deleted. |
BulkOperations |
This method shall support the request data structures specified in table 6.1.3.2.3.2-2 and the response data structures and response codes specified in table 6.1.3.2.3.2-3.
Table 6.1.3.2.3.2-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.2.3.2-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
The bulk deletion request did not result in any matching records to be deleted. |
||
RecordIdList |
M |
1 |
200 OK |
Contains the list of record IDs identifying the deleted records. |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.3 Resource: Record (Document)
6.1.3.3.1 Description
This resource represents a record within a storage.
6.1.3.3.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/records/{recordId}
This resource shall support the resource URI variables defined in table 6.1.3.3.2-1.
Table 6.1.3.3.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id where the record is stored |
storageId |
Represents the storage Id where the record is stored |
recordId |
Represents the record Id of the record |
6.1.3.3.3 Resource Standard Methods
6.1.3.3.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.3.3.1-1.
Table 6.1.3.3.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6. |
This method shall support the request data structures specified in table 6.1.3.3.3.1-2 and the response data structures and response codes specified in table 6.1.3.3.3.1-3.
Table 6.1.3.3.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.3.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
RecordBody |
M |
1 |
200 OK |
A response body containing the record. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.3.3.2 PUT
This method shall support the URI query parameters specified in table 6.1.3.3.3.2-1.
Table 6.1.3.3.3.2-1: URI query parameters supported by the PUT method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
get-previous |
boolean |
O |
0..1 |
Request to return the previous record content if a record already exists in the targeted storage for the same record identifier. |
When creating or replacing the record, meta and zero or more blocks shall be included. The record meta information shall be the first part and is mandatory. The remaining parts of the body (if any) shall be the blocks to be updated or created. See clause 6.1.2.4 for details on the encoding.
If the operation updates an existing record, then the existing record and its blocks shall be discarded and replaced by the meta and blocks supplied with the request. This also applies to the case when no new blocks are included, i.e. the old blocks (if any) shall be deleted from the record.
This method shall support the request data structures specified in table 6.1.3.3.3.2-2 and the response data structures and response codes specified in table 6.1.3.3.3.2-3.
Table 6.1.3.3.3.2-2: Data structures supported by the PUT Request Body on this resource
Data type |
P |
Cardinality |
Description |
Record |
M |
1 |
The record that is to be created including meta and zero or more blocks. |
Table 6.1.3.3.3.2-3: Data structures supported by the PUT Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
RecordBody |
M |
1 |
200 OK |
Upon successful update of a record, a response body containing the previous record value (if get-previous was indicated in the request, and if one exists) will be returned |
RecordBody |
O |
0..1 |
201 Created |
Upon successful creation of a record, a response body of the created record shall be returned. If due to operator’s policy the value of the ttl (if any) in the request exceeded a maximum allowed ttl value with the ttl set to the value applied by the UDSF. |
n/a |
204 No Content |
Upon successful update of a record, an empty response is returned or if no previous record value was requested. |
||
ProblemDetails |
O |
0..1 |
403 FORBIDDEN |
If the UDSF (based on operator policy), determines to apply a ttl value of the recordMeta different from the ttl value (if any) of the request, the get-previous query-parameter is present in the request and the request applies to a record that already exists in the UDSF, the "cause" attribute shall be set to one of the following application errors: -TTL_VALUE_NOT_ALLOWED |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
RecordBody |
O |
0..1 |
412 Precondition Failed |
If one or more conditions given in the request header fields evaluated to false and get-previous was indicated in the request, the UDSF shall include the RecordBody in the response. |
NOTE: The mandatory HTTP error status code for the PUT method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.3.3.3 DELETE
This method shall support the URI query parameters specified in table 6.1.3.3.3.3-1.
Table 6.1.3.3.3.3-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
get-previous |
boolean |
O |
0..1 |
Request to return the record content if a record exists in the targeted storage for the same record identifier. |
This method shall support the request data structures specified in table 6.1.3.3.3.3-2 and the response data structures and response codes specified in table 6.1.3.3.3.3-3.
Table 6.1.3.3.3.3-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.3.3.3-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
RecordBody |
O |
0..1 |
200 OK |
Upon success, and a response body containing the record value with meta and associated blocks (if any), if get-previous was indicated in the request. |
n/a |
204 No Content |
Upon success and no response body containing the record was requested. |
||
RecordBody |
O |
0..1 |
412 Precondition Failed |
If one or more conditions given in the request header fields evaluated to false and get-previous was indicated in the request, the UDSF shall include the RecordBody in the response. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.4 Resource: Meta (Document)
6.1.3.4.1 Description
This resource represents the meta associated with a record.
6.1.3.4.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/records/{recordId}/meta
This resource shall support the resource URI variables defined in table 6.1.3.4.2-1.
Table 6.1.3.4.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id where the record is stored |
storageId |
Represents the storage Id where the record is stored |
recordId |
Represents the record Id of the record |
6.1.3.4.3 Resource Standard Methods
6.1.3.4.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.4.3.1-1.
Table 6.1.3.4.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.4.3.1-2 and the response data structures and response codes specified in table 6.1.3.4.3.1-3.
Table 6.1.3.4.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.4.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
RecordMeta |
M |
1 |
200 OK |
A response body containing the record meta will be returned. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.4.3.2 PATCH
This method shall support the URI query parameters specified in table 6.1.3.4.3.2-1.
Table 6.1.3.4.3.2-1: URI query parameters supported by the PATCH method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.4.3.2-2 and the response data structures and response codes specified in table 6.1.3.4.3.2-3.
Table 6.1.3.4.3.2-2: Data structures supported by the PATCH Request Body on this resource
Data type |
P |
Cardinality |
Description |
array(patchItem) |
M |
1..N |
A collection of patch items to apply on the record meta. |
Table 6.1.3.4.3.2-3: Data structures supported by the PATCH Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon successful modification, there is no body in the response message. (NOTE 2) |
||
PatchResult |
M |
1 |
200 OK |
If one or more modification instructions have been discarded, the execution report is returned. (NOTE 2) |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute maybe used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND |
NOTE 1: In addition common data structures as listed in table 6.1.7.3-1are supported. NOTE 2: If all the modification instructions in the PATCH request have been implemented, the UDSF shall respond with 204 No Content response; if some of the modification instructions in the PATCH request have been discarded, the UDSF shall respond with PatchResult. |
6.1.3.5 Resource: BlockCollection (Collection)
6.1.3.5.1 Description
This resource represents the collection of blocks of associated with a record.
6.1.3.5.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/records/{recordId}/blocks
This resource shall support the resource URI variables defined in table 6.1.3.5.2-1.
Table 6.1.3.5.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id where the record is stored |
storageId |
Represents the storage Id where the record is stored |
recordId |
Represents the record Id of the record |
6.1.3.5.3 Resource Standard Methods
6.1.3.5.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.5.3.1-1.
Table 6.1.3.5.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.5.3.1-2 and the response data structures and response codes specified in table 6.1.3.5.3.1-3.
Table 6.1.3.5.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.5.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
array(Block) |
M |
1..N |
200 OK |
A response body containing one or more blocks. |
n/a |
204 No Content |
The BlockCollection did not contain any blocks. |
||
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.6 Resource: Block (Document)
6.1.3.6.1 Description
This resource represents a record within a storage.
6.1.3.6.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/records/{recordId}/blocks/{blockId}
This resource shall support the resource URI variables defined in table 6.1.3.6.2-1.
Table 6.1.3.6.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id where the record is stored |
storageId |
Represents the storage Id where the record is stored |
recordId |
Represents the record Id of the record |
blockId |
Represents the block Id of the block |
6.1.3.6.3 Resource Standard Methods
6.1.3.6.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.6.3.1-1.
Table 6.1.3.6.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.6.3.1-2 and the response data structures and response codes specified in table 6.1.3.6.3.1-3.
Table 6.1.3.6.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.6.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
BlockBody |
M |
1 |
200 OK |
Upon success, a response body containing the requested block is returned. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute maybe used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND -BLOCK_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.6.3.2 PUT
This method shall support the URI query parameters specified in table 6.1.3.6.3.2-1.
Table 6.1.3.6.3.2-1: URI query parameters supported by the PUT method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
get-previous |
boolean |
O |
0..1 |
Request to return the previous block content if a block already exists in the targeted storage for the same block identifier. |
If the operation updates an existing block, then the existing block shall be discarded and replaced by the block supplied with the request.
This method shall support the request data structures specified in table 6.1.3.6.3.2-2 and the response data structures and response codes specified in table 6.1.3.6.3.2-3.
Table 6.1.3.6.3.2-2: Data structures supported by the PUT Request Body on this resource
Data type |
P |
Cardinality |
Description |
Block |
M |
1 |
The block definition that shall be created. A Content-Type http header can be set to specify the media type of the block’s opaque content. If the media-type is not included, the media-type shall be set to application/octet-stream. |
Table 6.1.3.6.3.2-3: Data structures supported by the PUT Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
BlockBody |
M |
1 |
200 OK |
Upon successful update of a block, a response body containing the previous record value ((if get-previous was indicated in the request and if one exists) will be returned |
n/a |
201 Created |
Upon successful creation of a record, an empty response shall be returned. |
||
n/a |
204 No Content |
Upon successful update of a record, an empty response is returned if no previous record value was requested. |
||
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND |
BlockBody |
O |
0..1 |
412 Precondition Failed |
If one or more conditions given in the request header fields evaluated to false and get-previous was indicated in the request, the UDSF shall include the BlockBody in the response. |
NOTE: The mandatory HTTP error status code for the PUT method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.6.3.3 DELETE
This method shall support the URI query parameters specified in table 6.1.3.6.3.3-1.
Table 6.1.3.6.3.3-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
get-previous |
boolean |
O |
0..1 |
Request to return the previous block content (if any). |
This method shall support the request data structures specified in table 6.1.3.6.3.3-2 and the response data structures and response codes specified in table 6.1.3.6.3.3-3.
Table 6.1.3.6.3.3-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.6.3.3-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
BlockBody |
O |
0..1 |
200 OK |
Upon success, and a response body containing the block was requested. |
n/a |
204 No Content |
Upon success, and no response body containing the block was requested. |
||
BlockBody |
O |
0..1 |
412 Precondition Failed |
If one or more conditions given in the request header fields evaluated to false and get-previous was indicated in the request, the UDSF shall include the BlockBody in the response. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -RECORD_NOT_FOUND -BLOCK_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.7 Resource: NotificationSubscriptions
6.1.3.7.1 Description
This resource is used to represent notification subscriptions.
6.1.3.7.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/subs-to-notify
This resource shall support the resource URI variables defined in table 6.1.3.7.2-1.
Table 6.1.3.7.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id. |
storageId |
Represents the storage Id. |
6.1.3.7.3 Standard Methods
6.1.3.7.3.2 GET
This method shall support the URI query parameters specified in table 6.1.3.7.3.2-1.
Table 6.1.3.7.3.2-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
limit-range |
Uinteger |
C |
0..1 |
When set, the returned response shall contain at the most the number of Notification Subscriptions specified by the parameter value. |
This method shall support the request data structures specified in table 6.1.3.7.3.2-2 and the response data structures and response codes specified in table 6.1.3.7.3.2-3.
Table 6.1.3.7.3.2-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.7.3.2-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
array(NotificationSubscription) |
M |
0..N |
200 OK |
Upon success, a response body containing the individual subscriptions shall be returned. |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
NOTE: The manadatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.8 Resource: IndividualNotificationSubscription
6.1.3.8.1 Description
This resource is used to represent an individual subscriber data subscriptions to notifications.
6.1.3.8.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/subs-to-notify/{subscriptionId}
This resource shall support the resource URI variables defined in table 6.1.3.8.2-1.
Table 6.1.3.8.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id. |
storageId |
Represents the storage Id. |
subscriptionId |
The subscriptionId identifies an individual NotficiationSubscription. |
6.1.3.8.3 Resource Standard Methods
6.1.3.8.3.1 DELETE
This method shall support the URI query parameters specified in table 6.1.3.8.3.1-1.
Table 6.1.3.8.3.1-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
client-id |
ClientId |
M |
1 |
The client-id is used by the UDSF to guard against deletion of notification subscriptions that do not belong to the same NF or NFSet. |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
get-previous |
boolean |
O |
0..1 |
Request to return the associated NotificationSubscription if it exist. |
This method shall support the request data structures specified in table 6.1.3.8.3.1-2 and the response data structures and response codes specified in table 6.1.3.8.3.1-3.
Table 6.1.3.8.3.1-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
The request body shall be empty. |
Table 6.1.3.8.1-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
NotificationSubscription |
O |
0..1 |
200 OK |
Upon successful delete of a NotificationSubscription, a response body containing the NotificationSubscription value before the delete shall be returned if get-previous was indicated in the request. |
n/a |
204 NO CONTENTt |
Upon success, an empty response body shall be returned. |
||
ProblemDetails |
O |
0..1 |
403 FORBIDDEN |
If the client-id query parameter does not match the clientId of the existing resource, 403 FORBIDDEN shall be returned and the "cause" attribute may be used to indicate one of the following application errors: – SUBSCRIPTION_EXISTS |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -SUBSCRIPTION_NOT_FOUND |
NotificationSubscription |
O |
0..1 |
412 PRECONDITION FAILED |
412 PRECONDITION FAILED is returned if one or more conditions given in the request header fields evaluated to false. If get-previous was indicated in the request, the UDSF shall include the NotificationSubscription in the response. |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.8.3.2 PATCH
This method shall support the URI query parameters specified in table 6.1.3.8.3.2-1.
Table 6.1.3.8.3.2-1: URI query parameters supported by the PATCH method on this resource
Name |
Data type |
P |
Cardinality |
Description |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.8.3.2-2 and the response data structures and response codes specified in table 6.1.3.8.3.2-3.
Table 6.1.3.8.3.2-2: Data structures supported by the PATCH Request Body on this resource
Data type |
P |
Cardinality |
Description |
array(PatchItem) |
M |
1..N |
Contains the delta data of the Notification Subscription to be updated. |
Table 6.1.3.8.3.2-3: Data structures supported by the PATCH Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 NO CONTENT |
Upon successful modification, there is no body in the response message. (NOTE 2) |
||
PatchResult |
M |
1 |
200 OK |
Upon success, the execution report is returned. (NOTE 2) |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -SUBSCRIPTION_NOT_FOUND |
NOTE 1: In addition common data structures as listed in table 6.1.7.3-1are supported. NOTE 2: If all the modification instructions in the PATCH request have been implemented, the UDSF shall respond with 204 No Content response; if some of the modification instructions in the PATCH request have been discarded, the UDSF shall respond with 200 OK and include the PatchResult. |
6.1.3.8.3.3 GET
This method shall support the URI query parameters specified in table 6.1.3.8.3.3-1.
Table 6.1.3.8.3.3-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6. |
This method shall support the request data structures specified in table 6.1.3.8.3.3-2 and the response data structures and response codes specified in table 6.1.3.8.3.3-3.
Table 6.1.3.8.3.3-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
The request body shall be empty. |
Table 6.1.3.8.3.3-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
NotificationSubscription |
M |
1 |
200 OK |
Upon success, a response body containing the individual subscriptions shall be returned. |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -SUBSCRIPTION_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.8.3.4 PUT
This method shall support the URI query parameters specified in table 6.1.3.8.3.4-1.
Table 6.1.3.8.3.4-1: URI query parameters supported by the PUT method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.1.3.8.3.4-2 and the response data structures and response codes specified in table 6.1.3.8.3.4-3.
Table 6.1.3.8.3.4-2: Data structures supported by the PUT Request Body on this resource
Data type |
P |
Cardinality |
Description |
NotificationSubscription |
M |
1 |
The Notification Subscription. |
Table 6.1.3.8.3.4-3: Data structures supported by the PUT Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
NotificationSubscription |
M |
1 |
201 CREATED |
Upon success, the created NotificationSubscription is returned. The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created resource. |
NotificationSubscription |
M |
1 |
200 OK |
Upon success, the updated NotificationSubscription is returned. |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
ProblemDetails |
O |
0..1 |
403 FORBIDDEN |
If the clientId of the PUT request does not match the clientId of the existing resource, 403 FORBIDDEN shall be returned and the "cause" attribute may be used to indicate one of the following application errors: – SUBSCRIPTION_EXISTS |
array(Uri) |
O |
1..N |
409 CONFLICT |
If one or more monitoredResourceUris from the request don’t exist in the UDSF, 409 CONFLICT shall be returned together with the non-existing monitoredResourceUris. |
NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.9 Resource: Meta Schema (Document)
6.1.3.9.1 Description
This resource represents a meta schema within a storage.
6.1.3.9.2 Resource Definition
Resource URI: {apiRoot}/nudsf-dr/v1/{realmId}/{storageId}/meta-schemas/{schemaId}
This resource shall support the resource URI variables defined in table 6.1.3.9.2-1.
Table 6.1.3.9.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id where the schema is stored |
storageId |
Represents the storage Id where the schema is stored |
schemaId |
Represents the schema Id of the schema |
6.1.3.9.3 Resource Standard Methods
6.1.3.9.3.1 GET
This method shall support the URI query parameters specified in table 6.1.3.9.3.1-1.
Table 6.1.3.9.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6. |
Meta Schema |
This method shall support the request data structures specified in table 6.1.3.9.3.1-2 and the response data structures and response codes specified in table 6.1.3.9.3.1-3.
Table 6.1.3.9.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.9.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
MetaSchema |
M |
1 |
200 OK |
A response body containing the meta schema. |
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -SCHEMA_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.3.9.3.2 PUT
This method shall support the URI query parameters specified in table 6.1.3.9.3.2-1.
Table 6.1.3.9.3.2-1: URI query parameters supported by the PUT method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
Meta Schema |
get-previous |
boolean |
O |
0..1 |
Request to return the previous meta schema content if the meta schema already exists in the targeted storage for the same schema identifier. |
Meta Schema |
This method shall support the request data structures specified in table 6.1.3.9.3.2-2 and the response data structures and response codes specified in table 6.1.3.9.3.2-3.
Table 6.1.3.9.3.2-2: Data structures supported by the PUT Request Body on this resource
Data type |
P |
Cardinality |
Description |
MetaSchema |
M |
1 |
The schema that is to be created/updated. |
Table 6.1.3.9.3.2-3: Data structures supported by the PUT Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
MetaSchema |
M |
1 |
200 OK |
Upon successful update of a schema, a response body containing the previous schema value (if get-previous was indicated in the request, and if one exists) will be returned |
MetaSchema |
M |
1 |
201 Created |
Upon successful creation of a schema, a response body of the created schema schall be returned. The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created resource. |
n/a |
204 No Content |
Upon successful update of a schema, an empty response is returned if no previous schema value was requested. |
||
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the PUT method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
Table 6.1.3.9.3.2-4: Headers supported by the 201 Response Code on this resource
Name |
Data type |
P |
Cardinality |
Description |
Location |
string |
M |
1 |
Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudsf-dr/<apiVersion>/{realmId}/{storageId}/meta-schemas/{schemaId} |
6.1.3.9.3.3 DELETE
This method shall support the URI query parameters specified in table 6.1.3.9.3.3-1.
Table 6.1.3.9.3.3-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
Meta Schema |
get-previous |
boolean |
O |
0..1 |
Request to return the schema content if a schema exists in the targeted storage for the same schema identifier. |
Meta Schema |
This method shall support the request data structures specified in table 6.1.3.9.3.3-2 and the response data structures and response codes specified in table 6.1.3.9.3.3-3.
Table 6.1.3.9.3.3-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.1.3.9.3.3-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
MetaSchema |
O |
0..1 |
200 OK |
Upon success, a response body containing the schema value, if get-previous was indicated in the request. |
n/a |
204 No Content |
Upon success, if get-previous was not indicated in the request.. |
||
ProblemDetails |
O |
0..1 |
404 Not Found |
The "cause" attribute may be used to indicate one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -SCHEMA_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.4 Custom Operations without associated resources
None.
6.1.5 Notifications
6.1.5.1 General
Notifications shall comply to clause 6.2 of 3GPP TS 29.500 [4] and clause 4.6.2.3 of 3GPP TS 29.501 [5].
6.1.5.2 Timer Expiry Notification
6.1.5.2.1 Description
The Timer Expiry Notification is used by the NF service producer to report to an NF Consumer that the Record has expired as indicated by the ttl attribute (if set) of RecordMeta and if a callbackReference was set in the RecordMeta.
6.1.5.2.2 Target URI
The Callback URI "{callbackReference}" shall be used with the callback URI variables defined in table 6.1.5.2.2-1.
Table 6.1.5.2.2-1: Target URI variables for this resource
Name |
Definition |
callbackReference |
string formatted as URI with the Callback Uri |
6.1.5.2.3 Standard Methods
6.1.5.2.3.1 POST
This method shall support the request data structures specified in table 6.1.5.2.3.1-1 and the response data structures and response codes specified in table 6.1.5.2.3.1-1.
Table 6.1.5.2.3.1-2: Data structures supported by the POST Request Body on this resource
Data type |
P |
Cardinality |
Description |
RecordBody |
M |
1 |
The RecordBody of the record that was deleted. |
Table 6.1.5.2.3.1-3: Data structures supported by the POST Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon success, an empty response body shall be returned. |
||
NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.5.3 Notification due to Data Change
6.1.5.3.1 Description
The Notification due to Data Change is used by the UDSF to report to an NF Consumer that a Record that is part of a NotificationSubscription has been updated or deleted.
6.1.5.3.2 Target URI
The Callback URI "{callbackReference}" shall be used with the callback URI variables defined in table 6.1.5.3.2-1.
Table 6.1.5.3.2-1: Callback URI variables for this resource
Name |
Definition |
callbackReference |
String formatted as URI with the Callback Uri |
6.1.5.3.3 Standard Methods
6.1.5.3.3.1 POST
This method shall support the request data structures specified in table 6.1.5.3.3.1-1 and the response data structures and response codes specified in table 6.1.5.3.3.1-1.
Table 6.1.5.3.3.1-2: Data structures supported by the POST Request Body on this resource
Data type |
P |
Cardinality |
Description |
RecordNotification |
M |
1 |
The notification with the record information. |
Table 6.1.5.3.3.1-3: Data structures supported by the POST Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 NO CONTENT |
Upon success, an empty response body shall be returned. |
||
NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.5.4 Subscription Expiry Notification
6.1.5.4.1 Description
The Subscription Expiry Notification is used by the UDSF to report to an NF Consumer that a Subscription to Notification due to Data Change has expired or is about to expire.
6.1.5.4.2 Target URI
The Callback URI "{expiryCallbackReference}" shall be used with the callback URI variables defined in table 6.1.5.4.2-1.
Table 6.1.5.4.2-1: Callback URI variables for this resource
Name |
Definition |
expiryCallbackReference |
String formatted as URI with the Callback URI |
6.1.5.4.3 Standard Methods
6.1.5.4.3.1 POST
This method shall support the request data structures specified in table 6.1.5.4.3.1-1 and the response data structures and response codes specified in table 6.1.5.4.3.1-1.
Table 6.1.5.4.3.1-2: Data structures supported by the POST Request Body on this resource
Data type |
P |
Cardinality |
Description |
NotificationInfo |
M |
1 |
The notification info with expired subscriptions. |
Table 6.1.5.4.3.1-3: Data structures supported by the POST Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon success, an empty response body shall be returned. |
||
NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.1.6 Data Model
6.1.6.1 General
This clause specifies the application data model supported by the API.
Table 6.1.6.1-1 specifies the data types defined for the Nudsf service based interface protocol. For simple data types defined for the Nudsf_DataRepository service API see table 6.1.6.3.2-1.
Table 6.1.6.1-1: Nudsf specific Data Types
Data type |
Clause defined |
Description |
Applicability |
||||
RecordSearchResult |
6.1.6.2.2 |
Record Search Result |
|||||
RecordMeta |
6.1.6.2.3 |
Record Meta |
|||||
RecordBody |
6.1.6.2.4 |
Record Body |
|||||
Record |
6.1.6.2.5 |
Record |
|||||
BlockBody |
6.1.6.2.6 |
Block Body |
|||||
Block |
6.1.6.2.7 |
Block |
|||||
SearchCondition |
6.1.6.2.8 |
Search Condition |
|||||
SearchComparison |
6.1.6.2.9 |
Search Comparison |
|||||
ComparisonOperator |
6.1.6.3.3 |
Comparison Operator |
|||||
ConditionOperator |
6.1.6.3.4 |
Condition Operator |
|||||
SearchExpression |
6.1.6.4.1 |
Search Expression |
|||||
NotificationSubscription |
6.1.6.2.10 |
Notification Subscription |
|||||
RecordNotification |
6.1.6.2.11 |
Record Notification |
|||||
NotificationDescription |
6.1.6.2.12 |
Notification Description |
|||||
SubscriptionFilter |
6.1.6.2.13 |
Subscription Filter |
|||||
ClientId |
6.1.6.2.14 |
Client Identity |
|||||
MetaSchema |
6.1.6.2.15 |
Meta Schema |
Meta Schema |
||||
TagType |
6.1.6.2.16 |
Tag Type |
Meta Schema |
||||
RecordIdList |
6.1.6.2.17 |
List of Record IDs |
BulkOperations |
||||
NotificationInfo |
6.1.6.2.18 |
Notification Info |
|||||
RecordOperation |
6.1.6.3.5 |
Record Operation |
|||||
SchemaId |
6.1.6.3.2 |
Identifier of a Meta Schema |
Meta Schema |
||||
KeyType |
6.1.6.3.6 |
Key Type |
Meta Schema |
||||
RetrieveRecords |
6.1.6.3.7 |
Request to return matching records |
CombinedSearchRetrieve |
Table 6.1.6.1-2 specifies data types re-used by the Nudsf service based interface protocol from other specifications, including a reference to their respective specifications and when needed, a short description of their use within the Nudsf service based interface.
Table 6.1.6.1-2: Nudsf re-used Data Types
Data type |
Reference |
Comments |
Applicability |
SupportedFeatures |
3GPP TS 29.571 [19] |
see 3GPP TS 29.500 [4] clause 6.6. |
|
PatchItem |
3GPP TS 29.571 [19] |
Data structure used for JSON patch. |
|
PatchResult |
3GPP TS 29.571 [19] |
||
Uri |
3GPP TS 29.571 [19] |
||
DateTime |
3GPP TS 29.571 [19] |
||
NfInstanceId |
3GPP TS 29.571 [19] |
||
NfSetId |
3GPP TS 29.571 [19] |
6.1.6.2 Structured data types
6.1.6.2.1 Introduction
This clause defines the structures to be used in resource representations.
6.1.6.2.2 Type: RecordSearchResult
Table 6.1.6.2.2-1: Definition of type RecordSearchResult
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
count |
Uinteger |
M |
1 |
The number of records found by the search. |
|
references |
array(Uri) |
O |
1..N |
The Record references found by the search. |
|
supportedFeatures |
SupportedFeatures |
O |
0..1 |
See clause 6.1.8 |
|
matchingRecords |
map(Record) |
C |
1..N |
This attribute contains the records that match the search filters provided in the request. The key of the map is the recordId. It shall be present if the search request included an instruction to include record content in the response. The map may contain a subset of the matching records in the case where inclusion of more records would result in the payload size exceeding the max-payload-size received in the request (if any). |
CombinedSearchRetrieve |
6.1.6.2.3 Type: RecordMeta
Table 6.1.6.2.3-1: Definition of type RecordMeta
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
tags |
map(array(string)) |
O |
1..N(1..M) |
A map of tag name/values pairs, where the tag name is a unique string name that is the primary key of the map and is paired with an array of string values. |
|
ttl |
DateTime |
O |
0..1 |
ttl refers to the lifetime of the record. After the expiry, the record shall be deleted. |
|
callbackReference |
Uri |
O |
0..1 |
The Uri where the NF Service Consumer shall receive notification on the expiry of the Record as indicated by the ttl attribute if desired. |
|
schemaId |
SchemaId |
O |
0..1 |
Id of the MetaSchema to which the tags comply to |
Meta Schema |
6.1.6.2.4 Type: RecordBody
Table 6.1.6.2.4-1: Definition of type RecordBody
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
record |
Record |
M |
1 |
The record. |
6.1.6.2.5 Type: Record
Table 6.1.6.2.5-1: Definition of type Record
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
meta |
RecordMeta |
M |
1 |
The meta of a record. |
|
blocks |
array(Block) |
O |
1..N |
The block(s) (if any) making up the record. |
6.1.6.2.6 Type: BlockBody
Table 6.1.6.2.6-1: Definition of type BlockBody
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
n/a |
Block |
M |
1 |
The block. |
6.1.6.2.7 Type: Block
Table 6.1.6.2.7-1: Definition of type Block
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
value |
Any Type |
M |
1 |
The block value of any data type. |
6.1.6.2.8 Type: SearchCondition
Table 6.1.6.2.8-1: Definition of type SearchCondition
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
cond |
ConditionOperator |
M |
1 |
Logical operator ("AND", "OR" or "NOT") |
|
units |
array(SearchExpression) |
M |
1..N |
For the logical "NOT" operator indicated in the cond attribute, only one member shall be present in the array. For the logical "AND" or "OR" operators indicated in the cond attribute, at least two members shall be present in the array and all the members in the array shall be interpreted as logically concatenated with the logical operator. |
|
schemaId |
SchemaId |
O |
0..1 |
When included, the search is limited to records which have the given schemaId value stored in their RecordMeta |
Meta Schema |
6.1.6.2.9 SearchComparison
Table 6.1.6.2.9-1: Definition of type SearchComparison
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
op |
ComparisonOperator |
M |
1 |
Comparison operator |
|
tag |
string |
M |
1 |
This attribute contains the tag name of an array of strings. |
|
value |
string |
M |
1 |
The array of strings indicated in the tag attribute compares to the value of this attribute. |
6.1.6.2.10 Type: NotificationSubscription
Table 6.1.6.2.10-1: Definition of type NotificationSubscription
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
clientId |
ClientId |
M |
1 |
Identity of the NF or NFSet for which the subscription applies. |
|
callbackReference |
Uri |
M |
1 |
Identifies the NF or NF pool where the notification shall be sent. |
|
expiryCallbackReference |
Uri |
C |
0..1 |
Identifies the NF or NF pool where the expiry notification shall be sent. Shall be present if the expiryNotification is present. |
|
expiry |
DateTime |
C |
0..1 |
This IE shall be included in a subscription response, if, based on operator policy and taking into account the expiry time included in the request, the UDSF needs to include an expiry time. The expiry time, based on operator policy, may indicate a value that is sooner than the NF consumer requested. The absence of this attribute in the subscription response indicates that the subscription does not have an expiry time. |
|
expiryNotification |
Uinteger |
O |
0..1 |
This attribute when present in the request, indicates to the UDSF that the UDSF shall Notify the NF Consumer about the expiry of the subscription if this capability is supported by the UDSF. -A value of 0 in the subscription request indicates that the UDSF shall notify the NF Consumer upon subscription expiry. -A value greater than 0 in the subscription request, indicates the number of seconds before the expiry of the subscription that the UDSF shall notify the NF Consumer about the expiry. -A value that results in the notification to occur in the past shall be treated the same as a value of 0 was received. A UDSF that supports this capability shall include the attribute in the subscription response and in the Notification, set to the value received in the request (or set to 0 if the notification would occur in the past as described above). For example, if the expiry time in the subscription request indicates a time 100 seconds from now and the expiryNotification indicates 110 seconds, the UDSF shall return a value of 0 in the subscription response, meaning the NF Consumer will be notified upon subscription expiry. |
|
subFilter |
SubscriptionFilter |
O |
0..1 |
If not included, the subscription applies to all Create, Delete and Update events of the storage. |
|
supportedFeatures |
SupportedFeatures |
O |
0..1 |
Used to negotiate the applicability of optional features |
6.1.6.2.11 Type: RecordNotification
Table 6.1.6.2.11-1: Definition of type RecordNotification
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
descriptor |
NotificationDescription |
M |
1 |
The block value of any data type. |
|
meta |
RecordMeta |
M |
1 |
The meta of a record. |
|
blocks |
array(Block) |
O |
1..n |
The block(s) (if any) making up the record. |
6.1.6.2.12 Type: NotificationDescription
Table 6.1.6.2.12-1: Definition of type NotificationDescription
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
recordRef |
Uri |
M |
1 |
The reference of the record triggering the Notification. |
|
operationType |
RecordOperation |
M |
1 |
The operation type. |
|
subscriptionId |
string |
O |
0..1 |
This IE shall contain the subscriptionId that uniquely identifies the subscription to notification within a storage when present. |
6.1.6.2.13 Type: SubscriptionFilter
Table 6.1.6.2.13-1: Definition of type SubscriptionFilter
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
|
monitoredResourceUris |
array(Uri) |
O |
1..N |
A set of URIs that identify the records for which a modification of the representation triggers a notification. The URI shall take the form of either an absolute URI or an absolute-path reference as defined in IETF RFC 3986 [22], also see NOTE 1. The monitored resource shall indicate an existing record. If not present, the subscription is applied to all records within the storage and a modification of the representation of any record within the storage triggers a notification. |
||
operations |
array(RecordOperation) |
O |
0..3 |
The operations that shall generate a notification. If the monitoredResourceUris is present, only "UPDATED" and "DELETED" are allowed values, any other value shall be ignored. If the attribute is not present, all applicable operations shall apply to the subscription. |
||
NOTE 1: The UDSF should handle only the relative-path part (apiSpecificResourceUriPart, see 3GPP TS 29.501 [5] clause 4.4.1) and ignore possible inconsistencies (caused by e.g. an SCP) in the base URI part. |
6.1.6.2.14 Type: ClientId
Table 6.1.6.2.14-1: Definition of type ClientId
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
nfId |
NfInstanceId |
C |
0..1 |
The NF Instance Id uniquely identifying the NF Consumer. Shall be present if the nfSetId is absent. |
|
nfSetId |
NfSetId |
C |
0..1 |
The NF Set Id of the NF Consumer. Shall be present if the nfId is absent. |
6.1.6.2.15 Type: MetaSchema
Table 6.1.6.2.15-1: Definition of type MetaSchema
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
schemaId |
SchemaId |
M |
1 |
Id of the schema. Used as reference. |
Meta Schema |
metaTags |
array(TagType) |
M |
1..N |
Array of tag types that describe the schema |
Meta Schema |
6.1.6.2.16 Type: TagType
Table 6.1.6.2.16-1: Definition of type TagType
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
tagName |
string |
M |
1 |
Name of the tag. Used as reference. Refers to the unique tag string name that is the primary key of the map and is paired with an array of string values in the RecordMeta tags IE |
Meta Schema |
keyType |
KeyType |
M |
1 |
Type of key |
Meta Schema |
sort |
boolean |
C |
0..1 |
Shall be present if keyType is "SEARCH_KEY" or "SEARCH_AND_COUNT_KEY" true: indicates that searches based on "GT", "GTE", "LT" and / or "LTE" are expected. |
Meta Schema |
presence |
boolean |
O |
0..1 |
true: indicates that presence of the tag is mandatory in the RecordMeta |
Meta Schema |
6.1.6.2.17 Type: RecordIdList
Table 6.1.6.2.17-1: Definition of type RecordIdList
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
recordIdList |
array(string) |
M |
1..N |
List of Record IDs to be retrieved |
BulkOperations |
6.1.6.2.18 Type: NotificationInfo
Table 6.1.6.2.18-1: Definition of type NotificationInfo
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
expiredSubscriptions |
array(NotificationSubscription) |
M |
1 |
An array of one or more expired subscriptions. |
6.1.6.3 Simple data types and enumerations
6.1.6.3.1 Introduction
This clause defines simple data types and enumerations that can be referenced from data structures defined in the previous clauses.
6.1.6.3.2 Simple data types
The simple data types defined in table 6.1.6.3.2-1 shall be supported.
Table 6.1.6.3.2-1: Simple data types
Type Name |
Type Definition |
Description |
Applicability |
SchemaId |
string |
Id of the schema. Used as reference. |
Meta Schema |
6.1.6.3.3 Enumeration: ComparisonOperator
The enumeration ComparisonOperator represents the comparison of an array of strings to a string value. The comparison shall be based on lexicographical order. It shall comply with the provisions defined in table 6.1.6.3.3-1.
Table 6.1.6.3.3-1: Enumeration ComparisonOperator
Enumeration value |
Description |
Applicability |
"EQ" |
The array contains the string value. |
|
"NEQ" |
The array does not contain the string value. |
AdvancedQuery |
"GT" |
The array contains a string that is greater than the string value. |
AdvancedQuery |
"GTE" |
The array contains a string that is greater than or equal to the string value. |
AdvancedQuery |
"LT" |
The array contains a string that is less than the string value. |
AdvancedQuery |
"LTE" |
The array contains a string that is less than or equal to the string value. |
AdvancedQuery |
NOTE: It’s recommended to use GT/GTE/LT/LTE on single value tags. If not, the logical operator "NOT" applied over the comparison operator "GT" evaluates to "true" if there are no members in the array that are greater than the value.
6.1.6.3.4 Enumeration: ConditionOperator
Table 6.1.6.3.4-1: Enumeration ConditionOperator
Enumeration value |
Description |
Applicability |
"AND" |
Logical "AND" |
|
"OR" |
Logical "OR" |
|
"NOT" |
Logical "NOT" |
6.1.6.3.5 Enumeration: RecordOperation
Table 6.1.6.3.5-1: Enumeration RecordOperation
Enumeration value |
Description |
Applicability |
"CREATED" |
Indicates a Create record operation |
|
"UPDATED" |
Indicates an Update record operation |
|
"DELETED" |
Indicates a Delete record operation |
6.1.6.3.6 Enumeration: KeyType
Table 6.1.6.3.6-1: Enumeration KeyType
Enumeration value |
Description |
Applicability |
"UNIQUE_KEY" |
Tags with this key type may be used for search and will result in no or one matching records. |
Meta Schema |
"SEARCH_KEY" |
Tags with this key type may be used for search and will result in no, one or more matching records. |
Meta Schema |
"COUNT_KEY" |
Tags with this key type may be used for count. |
Meta Schema |
"SEARCH_AND_COUNT_KEY" |
Tags with this key type may be used for seach and count. |
Meta Schema |
"OTHER_TAG" |
Tags with this key type may not be used for search or count. |
Meta Schema |
6.1.6.3.7 Enumeration: RetrieveRecords
Table 6.1.6.3.7-1: Enumeration RetrieveRecords
Enumeration value |
Description |
Applicability |
"ONLY_META" |
Only the META of matching records are requested to be included in the RecordSearchResult. |
CombinedSearchRetrieve |
"META_AND_BLOCKS" |
META and BLOCKS of matching records are requested to be included in the RecordSearchResult. |
CombinedSearchRetrieve |
6.1.6.4 Data types describing alternative data types or combinations of data types
6.1.6.4.1 Type: SearchExpression
Table 6.1.6.4.1-1: Definition of type SearchExpression as a list of mutually exclusive alternatives
Data type |
Cardinality |
Description |
Applicability |
SearchCondition |
1 |
A search expression with logic operators |
AdvancedQuery |
SearchComparison |
1 |
A minimum unit of the search expression |
|
RecordIdList |
1 |
List of Record IDs identifying records to be retrieved |
BulkOperations |
6.1.7 Error Handling
6.1.7.1 General
For the Nudsf_DataRepository API, HTTP error responses shall be supported as specified in clause 4.8 of 3GPP TS 29.501 [5]. Protocol errors and application errors specified in table 5.2.7.2-1 of 3GPP TS 29.500 [4] shall be supported for an HTTP method if the corresponding HTTP status codes are specified as mandatory for that HTTP method in table 5.2.7.1-1 of 3GPP TS 29.500 [4].
In addition, the requirements in the following clauses are applicable for the Nudsf_DataRepository API.
6.1.7.2 Protocol Errors
Protocol errors handling shall be supported as specified in clause 5.2.7 of 3GPP TS 29.500 [4].
6.1.7.3 Application Errors
The application errors defined for the Nudsf_DataRepository service are listed in Table 6.1.7.3-1.
Table 6.1.7.3-1: Application errors
Application Error |
HTTP status code |
Description |
|||
TTL_VALUE_NOT_ALLOWED |
403 Forbidden |
The ttl value indicated in the request exceeds the maximum value allowed in the UDSF. |
|||
SUBSCRIPTION_EXISTS |
403 Forbidden |
The subscription indicated in the HTTP/2 request is not authorized to be operated. |
|||
SCHEMA_IN_USE |
403 Forbidden |
The schema cannot be deleted as it is still referenced by existing records. |
|||
REALM_NOT_FOUND |
404 Not Found |
The realm indicated in the HTTP/2 request is unavailable in the UDSF. |
|||
STORAGE_NOT_FOUND |
404 Not Found |
The storage indicated in the HTTP/2 request is unavailable in the UDSF. |
|||
RECORD_NOT_FOUND |
404 Not Found |
The record indicated in the HTTP/2 request is unavailable in the UDSF. |
|||
BLOCK_NOT_FOUND |
404 Not Found |
The block indicated in the HTTP/2 request is unavailable in the UDSF. |
|||
SUBSCRIPTION_NOT_FOUND |
404 Not Found |
The subscription indicated in the HTTP/2 request is unavailable in the UDSF. |
|||
SCHEMA_NOT_FOUND |
404 Not Found |
The schema indicated in the HTTP/2 request is unavailable in the UDSF. |
6.1.8 Feature negotiation
The optional features in table 6.1.8-1 are defined for the Nudsf_DataRepository API. They shall be negotiated using the extensibility mechanism defined in clause 6.6 of 3GPP TS 29.500 [4].
Table 6.1.8-1: Supported Features
Feature number |
Feature Name |
Description |
1 |
AdvancedQuery |
If an NF consumer detects that the UDSF supports the AdvancedQuery feature, it may use values of the ComparisonOperator besides "EQ" and may also use the cond attribute of the SearchCondition. If an NF consumer detects that the UDSF does not support the AdvancedQuery feature, it shall only use a value of "EQ" of the ComparisonOperator and shall not use the cond attribute of the SearchCondition. |
2 |
Meta Schema |
This feature supports optimization of UDSF data storage and allows the UDSF to know in advance how data search access by the NF consumer is expected. If the NF consumer detects that the UDSF does not support the Meta Schema feature, it shall not make use of the procedures for storing, updating and deleting Meta Schemas. |
3 |
CombinedSearchRetrieve |
This feature supports optimization of search and retrieval of records stored in the UDSF. When searching records (see clause 5.2.2.2.6), consumers supporting this feature can instruct the supporting UDSF to return matching records in addition to the matching records’ URIs. If the NF consumer detects that the UDSF does not support the CombinedSearchRetrieve feature, it shall not include the query parameters retrieve-records and max-payload-size in record search requests. |
4 |
BulkOperations |
This feature supports optimization for retrieval/deletion of huge number of records identified by a list of record IDs. When the CombinedSearchRetrieve feature has been used to request retrieval of matching records but only a subset of matching records have been received due to maximum payload size limitations, the consumers supporting this feature can instruct the supporting UDSF to return remaining records identified by a recordIdList. If the NF consumer detects that the UDSF does not support the BulkOperations feature, it shall not include the RecordIdList in the filter query parameter in record search requests. |
6.1.9 Security
As indicated in 3GPP TS 33.501 [8] and 3GPP TS 29.500 [4], the access to the Nudsf_DataRepository API may be authorized by means of the OAuth2 protocol (see IETF RFC 6749 [9]), based on local configuration, using the "Client Credentials" authorization grant, where the NRF (see 3GPP TS 29.510 [10]) plays the role of the authorization server.
If OAuth2 is used, an NF Service Consumer, prior to consuming services offered by the <API Name> API, shall obtain a "token" from the authorization server, by invoking the Access Token Request service, as described in 3GPP TS 29.510 [10], clause 5.4.2.2.
NOTE: When multiple NRFs are deployed in a network, the NRF used as authorization server is the same NRF that the NF Service Consumer used for discovering the Nudsf_DataRepository service.
The Nudsf_DataRepository API defines a single scope "nudsf-dr" for the entire service, and it does not define any additional scopes at resource or operation level.
6.2 Nudsf_Timer Service API
6.2.1 Introduction
The Nudsf_Timer service shall use the Nudsf_Timer API.
The API URI of the Nudsf_Timer API shall be:
{apiRoot}/<apiName>/<apiVersion>/
The request URI used in HTTP requests from the NF service consumer towards the NF service producer shall have the Resource URI structure defined in clause 4.4.1 of 3GPP TS 29.501 [5], i.e.:
{apiRoot}/<apiName>/<apiVersion>/<apiSpecificResourceUriPart>
with the following components:
– The {apiRoot} shall be set as described in 3GPP TS 29.501 [5].
– The <apiName> shall be "nudsf-timer".
– The <apiVersion> shall be "v1".
– The <apiSpecificResourceUriPart> shall be set as described in clause 6.2.3.
6.2.2 Usage of HTTP
6.2.2.1 General
HTTP/2, IETF RFC 7540 [11], shall be used as specified in clause 5 of 3GPP TS 29.500 [4].
HTTP/2 shall be transported as specified in clause 5.3 of 3GPP TS 29.500 [4].
The OpenAPI [6] specification of HTTP messages and content bodies for the Nudsf_Timer API is contained in Annex A.
6.2.2.2 HTTP standard headers
6.2.2.2.1 General
See clause 5.2.2 of 3GPP TS 29.500 [4] for the usage of HTTP standard headers.
6.2.2.2.2 Content type
The following content types shall be supported:
– JSON, IETF RFC 8259 [12], shall be used as content type of the HTTP bodies specified in the present specification as specified in clause 5.4 of 3GPP TS 29.500 [4]. The use of the JSON format shall be signalled by the content type "application/json".
– "Problem Details" JSON object shall be used to indicate additional details of the error in a HTTP response body and shall be signalled by the content type "application/problem+json", as defined in IETF RFC 7807 [13].
– JSON Patch (IETF RFC 6902 [14]). The use of the JSON Patch format in a HTTP request body shall be signalled by the content type "application/json-patch+json".
6.2.2.3 HTTP custom headers
The mandatory HTTP custom header fields specified in clause 5.2.3.2 of 3GPP TS 29.500 [4] shall be applicable.
6.2.3 Resources
6.2.3.1 Overview
Figure 6.2.3.1-1: Resource URI structure of the nudsf-timer API
Table 6.2.3.1-1 provides an overview of the resources and applicable HTTP methods.
Table 6.2.3.1-1: Resources and methods overview
Resource name |
Resource URI |
HTTP method or custom operation |
Description |
Timers (Store) |
/{realmId}/{storageId}/timers |
GET |
Search and retrieve timers matching a filter |
DELETE |
Stop (delete) timers matching a filter |
||
Individual Timer (Document) |
/{realmId}/{storageId}/timers/{timerId} |
PUT |
Start (create) or update (replace) a timer |
PATCH |
Modify a timer |
||
DELETE |
Stop (delete) a timer |
||
GET |
Retrieve a timer |
6.2.3.2 Resource: Timers (Store)
6.2.3.2.1 Description
This resource represents the collection of timers within a storage. It can be used to search for specific timers matching specific filter criteria, and to delete specific timers matching specific filter criteria.
6.2.3.2.2 Resource Definition
Resource URI: {apiRoot}/nudsf-timer/<apiVersion>/{realmId}/{storageId}/timers
This resource shall support the resource URI variables defined in table 6.2.3.2.2-1.
Table 6.2.3.2.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id. |
storageId |
Represents the storage Id. |
6.2.3.2.3 Resource Standard Methods
6.2.3.2.3.1 GET
This method shall support the URI query parameters specified in table 6.2.3.2.3.1-1.
Table 6.2.3.2.3.1-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
filter |
SearchExpression |
C |
0..1 |
The filter criteria for searching the timers of the storage. Shall be present if expired-filter is absent; otherwise may be present. |
|
expired-filter |
NullValue |
C |
0..1 |
A timer matches the expired-filter if the timer’s expiry time is earlier than the current time. Shall be present if filter is absent; otherwise may be present. |
|
NOTE: If the query parameters filter and expired-filter are both present in the request, the result shall contain all timers that match both query parameters. |
This method shall support the request data structures specified in table 6.2.3.2.3.1-2 and the response data structures and response codes specified in table 6.2.3.2.3.1-3.
Table 6.2.3.2.3.1-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.2.3.2.3.1-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
|||
TimerIdList |
M |
1 |
200 OK |
The search result containing the IDs of timers matching the filter. |
|||
n/a |
204 No Content |
The search did not result in any matching timers. |
|||||
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
|||
NOTE: The manadatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.3.2.3.2 DELETE
This method shall support the URI query parameters specified in table 6.2.3.2.3.2-1.
Table 6.2.3.2.3.2-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
|
filter |
SearchExpression |
C |
0..1 |
The filter criteria for identifying the timers of the storage that are to be deleted. Shall be present if expired-filter is absent; otherwise may be present. |
|
expired-filter |
NullValue |
C |
0..1 |
Presence of this query parameter indicates that only expired timers are to be deleted. Shall be present if filter is absent; otherwise may be present. |
|
NOTE: If the query parameters filter and expired-filter are both present in the request, all timers that match both query parameters shall be deleted. |
This method shall support the request data structures specified in table 6.2.3.2.3.2-2 and the response data structures and response codes specified in table 6.2.3.2.3.2-3.
Table 6.2.3.2.3.2-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.2.3.2.3.2-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
|||
TimerIdList |
M |
1 |
200 OK |
Contains the list of timer IDs identifying the deleted timers. |
|||
n/a |
204 No Content |
The search did not result in any matching timers. |
|||||
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
|||
NOTE: The manadatory HTTP error status code for the GET method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.3.3 Resource: Individual Timer (Document)
6.2.3.3.1 Description
This resource represents an individual timer within a storage.
6.2.3.3.2 Resource Definition
Resource URI: {apiRoot}/nudsf-timer/<apiVersion>/{realmId}/{storageId}/timers/{timerId}
This resource shall support the resource URI variables defined in table 6.2.3.3.2-1.
Table 6.2.3.3.2-1: Resource URI variables for this resource
Name |
Definition |
apiRoot |
See clause 6.1.1 |
realmId |
Represents the realm Id. |
storageId |
Represents the storage Id. |
timerId |
Represents the timer Id. |
6.2.3.3.3 Resource Standard Methods
6.2.3.3.3.1 PUT
This method shall support the URI query parameters specified in table 6.2.3.3.3.1-1.
Table 6.2.3.3.3.1-1: URI query parameters supported by the PUT method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.2.3.3.3.1-2 and the response data structures and response codes specified in table 6.2.3.3.3.1-3.
Table 6.2.3.3.3.1-2: Data structures supported by the PUT Request Body on this resource
Data type |
P |
Cardinality |
Description |
Timer |
M |
1 |
The timer to be created or replaced. |
Table 6.2.3.3.3.1-3: Data structures supported by the PUT Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
|||
n/a |
201 Created |
Upon successful creation of a timer, an empty response shall be returned. |
|||||
n/a |
204 No Content |
Upon successful replacement of a timer, an empty response shall be returned. |
|||||
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND |
|||
NOTE: The manadatory HTTP error status code for the PUT method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.3.3.3.2 PATCH
This method shall support the URI query parameters specified in table 6.2.3.3.3.2-1.
Table 6.2.3.3.3.2-1: URI query parameters supported by the PATCH method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.2.3.3.3.2-2 and the response data structures and response codes specified in table 6.2.3.3.3.2-3.
Table 6.2.3.3.3.2-2: Data structures supported by the PATCH Request Body on this resource
Data type |
P |
Cardinality |
Description |
array(PatchItem) |
M |
1..N |
Contains the delta data of the Timer to be updated. |
Table 6.2.3.3.3.2-3: Data structures supported by the PATCH Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon successful modification of a timer, an empty response shall be returned. |
||
PatchResult |
M |
1 |
200 OK |
Upon success, the execution report is returned. (NOTE 2) |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -TIMER_NOT_FOUND |
NOTE 1: In addition common data structures as listed in table 6.1.7.3-1 are supported. NOTE 2: If all the modification instructions in the PATCH request have been implemented, the UDSF shall respond with 204 No Content response; if some of the modification instructions in the PATCH request have been discarded, the UDSF shall respond with 200 OK and include the PatchResult. |
6.2.3.3.3.3 DELETE
This method shall support the URI query parameters specified in table 6.2.3.3.3.3-1.
Table 6.2.3.3.3.3-1: URI query parameters supported by the DELETE method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.2.3.3.3.3-2 and the response data structures and response codes specified in table 6.2.3.3.3.3-3.
Table 6.2.3.3.3.3-2: Data structures supported by the DELETE Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.2.3.3.3.3-3: Data structures supported by the DELETE Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon successful deletion of a timer, an empty response shall be returned. |
||
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -TIMER_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.3.3.3.4 GET
This method shall support the URI query parameters specified in table 6.2.3.3.3.4-1.
Table 6.2.3.3.3.4-1: URI query parameters supported by the GET method on this resource
Name |
Data type |
P |
Cardinality |
Description |
Applicability |
supported-features |
SupportedFeatures |
O |
0..1 |
see 3GPP TS 29.500 [4] clause 6.6 |
This method shall support the request data structures specified in table 6.2.3.3.3.4-2 and the response data structures and response codes specified in table 6.2.3.3.3.4-3.
Table 6.2.3.3.3.4-2: Data structures supported by the GET Request Body on this resource
Data type |
P |
Cardinality |
Description |
n/a |
Table 6.2.3.3.3.4-3: Data structures supported by the GET Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
Timer |
M |
1 |
200 OK |
Upon success the timer shall be returned. |
ProblemDetails |
O |
0..1 |
404 NOT FOUND |
The "cause" attribute shall be set to one of the following application errors: -REALM_NOT_FOUND -STORAGE_NOT_FOUND -TIMER_NOT_FOUND |
NOTE: The mandatory HTTP error status code for the DELETE method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.4 Custom Operations without associated resources
None.
6.2.5 Notifications
6.2.5.1 General
Notifications shall comply to clause 6.2 of 3GPP TS 29.500 [4] and clause 4.6.2.3 of 3GPP TS 29.501 [5].
6.2.5.2 Timer Expiry Notification
6.2.5.2.1 Description
The Timer Expiry Notification is used by the NF service producer to report to an NF Consumer that the Timer has expired as indicated by the expires attribute of Timer and if a callbackReference was set in the Timer.
6.2.5.2.2 Target URI
The Callback URI "{callbackReference}" shall be used with the callback URI variables defined in table 6.2.5.2.2-1.
Table 6.2.5.2.2-1: Target URI variables for this resource
Name |
Definition |
callbackReference |
string formatted as URI with the Callback Uri |
6.2.5.2.3 Standard Methods
6.2.5.2.3.1 POST
This method shall support the request data structures specified in table 6.2.5.2.3.1-1 and the response data structures and response codes specified in table 6.2.5.2.3.1-1.
Table 6.2.5.2.3.1-2: Data structures supported by the POST Request Body on this resource
Data type |
P |
Cardinality |
Description |
Timer |
M |
1 |
The timer that expired |
Table 6.2.5.2.3.1-3: Data structures supported by the POST Response Body on this resource
Data type |
P |
Cardinality |
Response codes |
Description |
n/a |
204 No Content |
Upon success, an empty response body shall be returned. |
||
NOTE: The mandatory HTTP error status codes for the POST method listed in Table 5.2.7.1-1 of 3GPP TS 29.500 [4] also apply. |
6.2.6 Data Model
6.2.6.1 General
This clause specifies the application data model supported by the API.
Table 6.2.6.1-1 specifies the data types defined for the Nudsf_Timer service API. For simple data types defined for the Nudsf_Timer service API see table 6.2.6.3.2-1.
Table 6.2.6.1-1: Nudsf_Timer specific Data Types
Data type |
Clause defined |
Description |
Applicability |
Timer |
6.2.6.2.2 |
Timer |
Table 6.2.6.1-2 specifies data types re-used by the Nudsf_Timer service API from other specifications, including a reference to their respective specifications and when needed, a short description of their use within the Nudsf_Timer service API.
Table 6.2.6.1-2: Nudsf_Timer re-used Data Types
Data type |
Reference |
Comments |
Applicability |
SupportedFeatures |
3GPP TS 29.571 [19] |
see 3GPP TS 29.500 [4] clause 6.6. |
|
PatchItem |
3GPP TS 29.571 [19] |
Data structure used for JSON patch. |
|
PatchResult |
3GPP TS 29.571 [19] |
||
Uri |
3GPP TS 29.571 [19] |
||
DateTime |
3GPP TS 29.571 [19] |
||
NullValue |
3GPP TS 29.571 [19] |
||
SearchExpression |
6.1.6.4.1 |
6.2.6.2 Structured data types
6.2.6.2.1 Introduction
This clause defines the structures to be used in resource representations.
6.2.6.2.2 Type: Timer
Table 6.2.6.2.2-1: Definition of type Timer
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
timerId |
TimerId |
C |
0..1 |
Identifier of the timer; shall be present in Notification request messages; otherwise shall be absent. |
|
expires |
DateTime |
M |
1 |
Point in time of expiry |
|
metaTags |
map(array(string)) |
O |
1..N |
A map (list of key-value pairs where tagName serves as key) of tagValue lists. |
|
callbackReference |
Uri |
O |
0..1 |
The URI where the NF Service Consumer shall receive notification on the expiry of the Timer. Shall be absent from Notification request messages. |
|
deleteAfter |
Uinteger |
O |
0..1 |
If specified, the timer resource will be deleted following a period after the expires time of the number of seconds defined by the deleteAfter value. If not specified, the timer shall be deleted immediately after the expires time. |
6.2.6.2.3 Type: TimerIdList
Table 6.2.6.2.3-1: Definition of type TimerIdList
Attribute name |
Data type |
P |
Cardinality |
Description |
Applicability |
timerIds |
array(TimerId) |
M |
1..N |
List of Timer IDs |
6.2.6.3 Simple data types and enumerations
6.2.6.3.1 Introduction
This clause defines simple data types and enumerations that can be referenced from data structures defined in the previous clauses.
6.2.6.3.2 Simple data types
The simple data types defined in table 6.2.6.3.2-1 shall be supported.
Table 6.2.6.3.2-1: Simple data types
Type Name |
Type Definition |
Description |
Applicability |
TimerId |
string |
Id of a timer. Used as reference. |
6.2.7 Error Handling
6.2.7.1 General
For the Nudsf_Timer API, HTTP error responses shall be supported as specified in clause 4.8 of 3GPP TS 29.501 [5]. Protocol errors and application errors specified in table 5.2.7.2-1 of 3GPP TS 29.500 [4] shall be supported for an HTTP method if the corresponding HTTP status codes are specified as mandatory for that HTTP method in table 5.2.7.1-1 of 3GPP TS 29.500 [4].
In addition, the requirements in the following clauses are applicable for the Nudsf_Timer API.
6.2.7.2 Protocol Errors
Protocol errors handling shall be supported as specified in clause 5.2.7 of 3GPP TS 29.500 [4].
6.2.7.3 Application Errors
The application errors defined for the Nudsf_Timer service are listed in Table 6.2.7.3-1.
Table 6.2.7.3-1: Application errors
Application Error |
HTTP status code |
Description |
REALM_NOT_FOUND |
404 Not Found |
The realm indicated in the HTTP/2 request is unavailable in the UDSF. |
STORAGE_NOT_FOUND |
404 Not Found |
The storage indicated in the HTTP/2 request is unavailable in the UDSF. |
TIMER_NOT_FOUND |
404 Not Found |
The Timer indicated in the HTTP/2 request is unavailable in the UDSF. |
EXPIRES_VALUE_NOT_ALLOWED |
403 Forbidden |
The timer could not be started as the expires time is in the past. |
6.2.8 Feature negotiation
The optional features in table 6.1.8-1 are defined for the Nudsf_Timer API. They shall be negotiated using the extensibility mechanism defined in clause 6.6 of 3GPP TS 29.500 [4].
Table 6.2.8-1: Supported Features
Feature number |
Feature Name |
Description |
n/a |
6.2.9 Security
As indicated in 3GPP TS 33.501 [8] and 3GPP TS 29.500 [4], the access to the Nudsf_Timer API may be authorized by means of the OAuth2 protocol (see IETF RFC 6749 [9]), based on local configuration, using the "Client Credentials" authorization grant, where the NRF (see 3GPP TS 29.510 [10]) plays the role of the authorization server.
If OAuth2 is used, an NF Service Consumer, prior to consuming services offered by the Nudsf_Timer API, shall obtain a "token" from the authorization server, by invoking the Access Token Request service, as described in 3GPP TS 29.510 [10], clause 5.4.2.2.
NOTE: When multiple NRFs are deployed in a network, the NRF used as authorization server is the same NRF that the NF Service Consumer used for discovering the Nudsf_Timer service.
The Nudsf_Timer API defines a single scope "nudsf-timer" for the entire service, and it does not define any additional scopes at resource or operation level.
Annex A (normative):
OpenAPI specification