2 SCP Configuration Using REST APIs
This chapter provides information about how to configure Oracle Communications Cloud Native Core, Service Communication Proxy (SCP) using REST APIs.
SCP can be configured using Helm and REST configurations. Some configurations are performed during SCP installation using Helm and a few configurations are modified using REST APIs. REST configurations can also be performed using the Oracle Communications Cloud Native Configuration Console (CNC Console).
- For Helm configuration: Oracle Communications Cloud Native Core, Service Communication Proxy Installation, Upgrade, and Fault Recovery Guide.
- For REST configurations using the CNC Console: Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.
SCP uses GET, PUT, DELETE, and so on HTTP methods to retrieve, update, and remove REST API configuration data.
Note:
- The PUT method for multiple rules as a single payload through a single API is not allowed unless specified explicitly.
- If the query parameter is incorrect, SCP does not return an error response but considers an API call without any query parameter, and therefore the GET ALL output is returned in the response.
SCP Service Interfaces
SCP provides the following service interfaces:
- Signaling Interface: The signaling interface is exposed by SCP data plane called SCP-Worker. This interface is used to receive all 5G signaling traffic.
- Config Interface: The config interface is exposed by SCP control plane called SCPC-Config. This interface is used to receive all SCP configuration traffic.
SCP Signaling Service
SCP provides the following Signaling services:
- FQDN
- Consumer NFs may use SCP
Signaling service's FQDN to send 5G signaling traffic to SCP for
routing. The Kubernetes service FQDN is of the following format:
fqdn = scp-worker.<namespace>.<domain>. Where, namespace is Kubernetes namespace as provided during the Helm installation, and domain is as provided in the Helm chart (values.yaml) while installation.- If user NFs are deployed outside of Kubernetes cluster, then operator must ensure that this FQDN is resolvable by consumer NFs.
- Operator can specify
the public or Kubernetes-cluster FQDN of SCP in the Helm chart
(
values.yaml, scpInfo.fqdn" = <releaseName>-scp-worker.<Namespace>.<domain>) during installation.
- Consumer NFs may use SCP
Signaling service's FQDN to send 5G signaling traffic to SCP for
routing. The Kubernetes service FQDN is of the following format:
- IP
Address
- Consumer NFs may use SCP Signaling service's IP address to send the 5G signaling traffic to SCP for routing.
- IP is
<global.publicSignalingIP>as provided in the Helm chart (values.yaml) during SCP installation.Note:
Only IPv4 is supported.
- Port
- Consumer NFs require port information along with FQDN or IP address to send 5G signaling traffic to SCP for routing.
- Port is
<global.publicSignalingPort>as provided in the Helm chart (values.yaml) during SCP installation.
SCP Config Service
SCP provides the following Config service:
- FQDN
- Operator may use SCP Config service's FQDN to configure SCP for routing.
- The Kubernetes service FQDN is
of the following format:
fqdn = scpc-config-svc.<namespace>.<domain>. Where,<namespace>is Kubernetes namespace as provided during the Helm installation, and<domain>is as provided in the Helm chart (values.yaml) during SCP installation.- Operators must ensure that this FQDN is resolvable if operating from outside of the Kubernetes cluster.
- IP Address
- Consumer NFs may use SCP Config service's IP Address to configure SCP for routing.
- IP is
<scpc-soothsayer.configService.publicConfigIP>as provided in the Helm chart (values.yaml) during SCP installation.
- Port
- Operators require port information along with FQDN or IP address to configure SCP for routing.
- Port is 8081 that is a fixed port and cannot be configured.
2.1 Configuring SCP Features
This section provides REST API configurations to enable SCP features.
Resources
The following table describes the resource name to retrieve, add, or update SCP features.
Table 2-1 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| scp-features | /ocscp/scpc-configuration/v1/scp-features | GET | Retrieves all the SCP features configured list at SCP or specific records based on the query parameters. |
| scp-features | /ocscp/scpc-configuration/v1/scp-features/{featureName} | GET |
Retrieves records based on featureName as a path variable. |
| scp-features | /ocscp/scpc-configuration/v1/scp-features/{featureName} | PUT | Updates the feature-specific information based on the provided feature name in the Resource URI. |
Data Model
Request Body
The following table describes the field names of the SCPFeaturesWrapper data type.
Table 2-2 SCPFeaturesWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| featureName | String | M |
Indicates the unique feature name as per the requirement. Supported values are:
|
| enabled | Boolean | M | Enables or disables a feature.
The values can be true or false. By default, this value is false. |
| featureSpecificConfig | customObject | O | Indicates feature specific configuration objects. |
Table 2-3 Mapping of FeatureSpecificConfig per Feature
| Feature(featureName) | featureSpecificConfig | Description |
|---|---|---|
| global_egress_ratelimit |
|
This parameter enables or disables the Global Egress
Rate Limiting feature.
Type: Boolean
|
| modeld_routing | featureSpecificConfig:{ "caching": "true",
"enforceReqSpecificSvcDiscovery": "true" ,
"cacheCfgForNrfNotification": { "cacheUpdateMode": [
"LOCAL_REFRESH", "NRF_REFRESH" ] , "useCachedRecordOnError":
307, 308, 429, 5xx, empty2xx } } |
This parameter enables or disables the Model D
Indirect 5G SBI Communication feature.
The following values are supported:
The allowed values
include:
|
mediation |
"featureSpecificConfig": {
"userDefinedVariable": { "enabled": false,
"maxUserDefinedVariableSize": 1024,
"maxUserDefinedVariableCount": 100 } } |
userDefinedVariable: Configuration wrapper for
the userDefinedVariable feature; it contains three fields.
|
interplmn_routing |
|
customRoamingProxySupport: This
parameter specifies if custom roaming proxy nfType is supported for
inter-PLMN routing.
By default, this parameter is set to false. If set to false, the default roaming proxy (SEPP) is considered only for inter-PLMN routing. If set to true, custom roaming proxies along with SEPP are considered only for inter-PLMN routing. The usage of roaming proxy type depends on the roaming proxy mode rule. |
enhanced_nf_status_processing |
featureSpecificConfig : {
"enhancedSuspendedStateRouting": "["AMF", PCF"]" ,
"suspendedStateRouting": ["UDM"] } |
This parameter enables or disables the NF Status
Processing feature.
Type: array(NFType) Note: To specify all NFTypes for Mode-3, the list
has to be specified with the wildcard Example: featureSpecificConfig : {
"enhancedSuspendedStateRouting": "["*"]",
"suspendedStateRouting": [] }Note:
|
scp_user_agent_info |
"featureSpecificConfig": {
"userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN", "uniqueID":
"string/text input" } |
This parameter enables or disables addition of
"User-Agent" header in the SCP originated messages towards
NRF.
uniqueID: This parameter is applicable only
for NFTYPE-UNIQUEID. If you configure
userAgentHeaderFormat as NFTYPE-UNIQUEID, you
must configureuniqueID.
|
lci |
"featureSpecificConfig": {
"scpLciConveyanceEnable": false, "relayPeerLci": true,
"scpLciConveyanceInterval": 5000,
"scpLciConveyanceMinLoadChange": 5,
"scpLciConveyanceMinLoadThreshold": 30,
"scpLciConveyancetoUnknownPeer": false,
"peerLciProcessingMinLoadChange": 5, "unknownPeerLciExpiry": 300
} |
scpLciConveyanceEnable: This
parameter enables SCP to add its LCI in request and response.
relayPeerLci: This parameter allows
SCP to forward the received LCI header from producer NF.
scpLciConveyanceInterval: This
parameter indicates periodic intervals for reporting SCP LCI to
a peer NF. For each interval, SCP's LCI is reported to the peer
NF irrespective of any change to SCP LCI. Sending SCP LCI
periodically ensures that the peer NF has not missed earlier
reported SCP LCI. The SCP LCI load value is measured by SCP as
the current load value of SCP if the load is more than
configured scpLciConveyanceMinLoadThreshold or
0 if the load is less than
scpLciConveyanceMinLoadThreshold.
Note:
scpLciConveyanceMinLoadChange: This
parameter indicates the minimum delta change in load to convey
LCI. It is applicable when SCP Load value goes beyond the
scpLciConveyanceMinLoadThreshold value.
Example:
scpLciConveyanceMinLoadThreshold:
This parameter indicates that SCP considers this parameter as a
starting point for updating its original load value to peers.
Note: If the SCP load value is less than the
scpLciConveyancetoUnknownPeer: This
parameter is boolean that denotes whether SCP should convey its
LCI to unknown peers or not. When it is enabled, SCP includes
its Load LCI in every message which is going to that unknown
peer.
Note: If the SCP load value is less than the
peerLciProcessingMinLoadChange:
This parameter indicates minimum load change threshold in peer
NF's load as indicated in LCI or from NRF notification that
should trigger LCI processing at SCP for that peer NF.
unknownPeerLciExpiry: This
parameter indicates the existence of unknown peer LCI in SCP.
The unknown peer represents inter PLMN NFs. When SCP receives
LCI load value from inter PLMN NFs, it caches this LCI load
value for the period of
unknownPeerLciExpiry.
|
traffic_feed |
NA | The featureSpecificConfig field is
not applicable for traffic_feed. You must keep its value empty, for
example, featureSpecificConfig: {}
|
egress_host_preference |
"featureSpecificConfig": { "hostPreference":
{ "request": { "apiRootHdrPresent": "passThrough",
"apiRootHdrNotPresent": "ip", "scpGeneratedNrfMsg": "ip" },
"response": { "headers": "followRequest" } }, "fqdnResolution":
{ "fqdn": "nfProfile", "interPlmnFqdn": "dns" }
} |
If set as:
If set as:
If set as:
Note: If the location header contains absolute URI, SCP does not update the authority in absolute URI.
If set as:
If set as:
|
location_hdr_update_for_host_mismatch |
NA | It is applicable when the "Location" header in
the "201 Created" response has authority (FQDN or IP) different
from the producer's authority ( FQDN or IP) where the message is
sent.
The featureSpecificConfig field is not applicable for location_hdr_update_for_host_mismatch Keep this field blank. For
example, |
cca_header_validation |
{ "featureSpecificConfig": {
"validations": [ { "type": "subject",
"errorProfileName": "ccaVerificationError",
"producerNfTypes": ["UDM", "AMF"] }, {
"type": "headerPresence", "errorProfileName":
"ccaHeaderNotPresentError", "producerNfTypes": ["UDM",
"AMF"] } ], "tls_crt_san": {
"preferred_validation_order": [ "URI-ID-URN",
"DNS-ID" ], "max_entries_to_process": 30 } }
} |
validations: This parameter indicates the list
of all the validations that SCP performs on
3gpp-Sbi-Client-Credentials header.
type: This paremeter indicates the type of
validation:
errorProfileName: This parameter is used to
generate an error response if the corresponding validation
fails. Error profiles can be configured using the REST
API:
/ocscp/scpc-configuration/{version}/errorProfileConfig.
producerNFTypes: This parameter mentions the
name of the producer NF Type.
tls_crt_san.preferred_validation_order: This
parameter indicates the order format-wise from which SCP picks
SAN from the client's TLS certificate for verification of the
"subject" type of validation.
tls_crt_san.max_entries_to_process: This
parameter indicates the maximum number of SANs from the client's
TLS certificate that SCP picks for validation.
|
health_check |
featureSpecificConfig: "v1": scpHealthAPI:
successRspType: "200WithEmptyPayload", overload:
avgScpLoadThresholdValue: 75, overloadRspProfile:
"healthCheckErrorProfile" nextHopSCP:
isScpHealthCheckSvcEnabled: false requestTimeout: 1000
pollingInterval: 1000 consecutiveErrorResp: 3
conseutiveSuccessResp: 3 |
This parameter enables the SCP Health Check API feature, which is the default configuration. avgScpLoadThresholdValue: This parameter
provides the overall average SCP load threshold value.
successRspType: This
parameter indicates successful responses for a healthy SCP.
Default
value: Sample healthCheckErrorProfile: { "name":
"healthCheckErrorProfile", "errorProfile": { "status": 503,
"cause": "NF_CONGESTION", "title": "NF service is
overloaded/congested", "detail": "NF service is
overloaded/congested" }isScpHealthCheckSvcEnabled: This parameter
enables or disables the SCP health check API feature in
inter-scp scenarios.
pollingInterval: This
parameter indicates the duration to control the periodicity of
health check requests in inter-scp scenarios.
requestTimeout: This
parameter indicates the timer to monitor the waiting time for
health check response in inter-scp scenarios.
noOfConsecutiveErrorResp: This parameter
indicates the total number of consecutive failure responses that
leads to failover in inter-scp scenarios.
noOfConsecutiveSuccessResp: This parameter
indicates the total number of consecutive successful responses
that leads to fallback in inter-scp scenarios.
|
oauth2_support |
"featureSpecificConfig": {
"scpAccessTokenCapability ": [ "INDIRECT_COM_WITH_DELEG_DISC",
"INDIRECT_COM_WITHOUT_DELEG_DISC" ], "accessTokenConveyance":
true, "oauth2AccessTokenValidation": false,
"accessTokenValidationTypes": ["TYPE1"],
"accessTokenRefreshGuardTime": 60000,
"accessTokenValidityGuardTime": 30000,
"accessTokenCleanUpPostExpiry": 900000,
"accessTokenHistorySize": 10, "accessTokenCacheSize": 50000,
"requesterInfo": [ "DISCOVERY-HEADERS", "CCA-HEADER",
"USER-AGENT-HEADER" ], "cacheEnabled": false } |
This parameter enables or disables the OAuth2.0 (Open Authorization) access tokens feature.
Possible values: [INDIRECT_COM_WITH_DELEG_DISC,
INDIRECT_COM_WITHOUT_DELEG_DISC]
accessTokenConveyance: This parameter conveys
acquired access token in the "3gpp-Sbi-Access-Token" header
in service response to consumer NFs.
oauth2AccessTokenValidation: This parameter
enables or disables validation of OAuth2 access token from
consumer NFs.
accessTokenValidationTypes: This
parameter configures the list of required validation types in
the network.
accessTokenRefreshGuardTime: This parameter
initiates proactive refresh of cached access token when the
configured time expires. The proactive refresh occurs if the
relevant SBI messages are in exchange.
accessTokenValidityGuardTime: This parameter
indicates the time before the access token expiry when SCP
considers not to use the existing access token and obtains new
access token in the service request forwarded to producer
NFs.
accessTokenCleanUpPostExpiry : This parameter
indicates the duration to purge the token from cache.
accessTokenHistorySize: This parameter indicates
the number of access tokens signature history to identify
whether the access token initiated by SCP or not.
accessTokenCacheSize: This parameter indicates
the number of access tokens that can be cached in SCP.
requesterInfo: This parameter indicates access
token requester (consumer NF) Info to generate the access token
request.
cacheEnabled: This parameter enables or disables
caching of access tokens.
|
nrf_bootstrap_info |
|
source: This field is used to select
whether the NRF Configuration Using DNS SRV Resolution feature
should be enabled or disabled. SCP will enable the feature if
the source is DNS_SRV.
deRegisterScpDuringMigration: In the
migration from static to DNS SRV task, if static and DNS SRV NRF
configurations are the same, then this parameter will be used to
deregister SCP with the old or static NRFset.
|
oci |
|
If this parameter is set to true, SCP sends the
olcHSupportInd parameter in SCP NF profile when
registering with NRF (NFRegister) or updating NRF (NFUpdate) to
indicate that SCP supports the Overload Control Information feature
based on the 3gpp-Sbi-Oci header.
Note: OCI is sent to peer NFs only if there is a message for that NF. scpOciRecoveryValidityPeriod: This
parameter indicates the value of the validity period to be sent
in the OCI header to peers when SCP recovers from a congestion
state. SCP sends OCI to peers with the reduction metric set to
0.
nextHopRoamingProxyOci.nfType:
Indicates the roaming proxy NF type. All NF types configured in
the nfTypes-nfServices REST API with the NF role set to
"CUSTOM_5G_ROAMING_PROXY", "SEPP", and
"*".
nextHopRoamingProxyOci.enabled: If this
parameter is set to true, the OCI enforcement is enabled for
roaming proxy NF type.
nextHopRoamingProxyOci.ruleName: If
this parameter is set to true, OCI feature enforcement is
performed based on the OCI configuration referenced by the rule
name specified as the value of this parameter.
Note: The OCI config rule configured for
nextHopProxyOci.nfType:
Indicates SCP NF type.
nextHopProxyOci.enabled: If set to
true, OCI enforcement is enabled for SCP.
nextHopProxyOci.ruleName: If set to
true, OCI feature enforcement is performed based on the OCI
configuration referenced by the rule name specified as this
parameter’s value.
Note: The OCI config rule configured for
Note: When ociConfigRule is configured for nextHopScpOciRuleName, set relayPeerOci to false and ociEnforcement to true.
Note: When ociConfigRule is configured for nextHopSeppOciRuleName, set relayPeerOci to false and ociEnforcement to true.
|
ignore_unknown_nfservice |
NA | The featureSpecificConfig field is
not applicable for ignore_unknown_nfservice. You must keep its value
empty, for example, featureSpecificConfig: {}
|
enhanced_error_rsp |
|
This parameter adds routing attempt information to
ProblemDetails when SCP generates error
responses. It enables SCP to combine all the error responses from
both internal and external sources, such as error responses
generated by SCP and error responses received from producer NFs
while performing alternate routing.
|
additional_logging |
|
This parameter appends additional log attributes,
such as errorStatus, errorTitle,
errorDetails, errorCause, and
sender, to error response logs generated by SCP
for WARN level logs.
Note:
|
log_subscriber_info |
|
This parameter appends User Equipment (UE) identity
or subscriber ID to error logs.
Note:
|
timestamp_headers_support |
|
To enable or disable the timestamp_headers_support
feature.
|
enhanced_notifications_handling |
|
To enable or disable the Enhanced Notifications
Handling
feature.
This parameter can have
the following values:
|
ingress_rate_limit |
NA | This is not applicable for
ingress_rate_limit. You must keep it empty,
that is, featureSpecificConfig: {}.
|
egress_rate_limit |
NA | This is not applicable for
egress_rate_limit. You must keep it empty,
that is, featureSpecificConfig: {}.
|
nf_discovery_enhancement |
|
|
nf_selection_enhancement |
NA | This is not applicable for
nf_selection_enhancement. You must keep it
empty, that is, featureSpecificConfig: {}.
|
Response Body
The following table describes response body data models that varies based on the REST operation status.
Table 2-4 Response Body Data Type
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SCPFeaturesWrapper) | M | 1 | 200 OK | Indicates the list of SCP features (SCPFeaturesWrapper) matching criteria. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
[
{
"featureName": "string",
"enabled": false,
"featureSpecificConfig": {
}
},{
....
...
}
]Resource Definition
GET REST API
This resource fetches the SCP feature details (SCPFeaturesWrapper) based on the query parameters.
If no query parameter is provided, all the SCP feature detail are returned.
Resource URI: /ocscp/scpc-configuration/v1/scp-features
The following table describes the URI query parameters supported by the GET method on this resource.Table 2-5 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| featureName | String | O | Specifies the identity of featureName for which SCP features are fetched. |
Note:
featureName is a valid combination of query parameter or path variable.Table 2-6 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SCPFeaturesWrapper) | M | 1 | 200 OK | Indicates the list of SCP features or specific record based on query parameters. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
Example
Successful response 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json"
[
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
"customRoamingProxySupport": false
},
"createdTimestamp": "2025-11-26 00:04:42.0",
"updatedTimestamp": "2025-11-27 03:15:13.0"
}
]
Successful response 2
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/interplmn_routing" -H "accept: application/json"
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
"customRoamingProxySupport": true
},
"createdTimestamp": "2025-11-26 00:04:42.0",
"updatedTimestamp": "2025-11-27 03:15:13.0"
}Successful response 3
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=interplmn_routing" -H "accept: application/json"
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
"customRoamingProxySupport": false
},
"createdTimestamp": "2025-11-26 00:04:42.0",
"updatedTimestamp": "2025-11-27 03:15:13.0"
}Successful response 4
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preference"-H "accept: application/json"
Code: 200
{
"featureName": "egress_host_preference",
"enabled": false,
"featureSpecificConfig": {
"fqdnResolution": {
"fqdn": "nfProfile",
"interPlmnFqdn": "dns"
},
"hostPreference": {
"request": {
"apiRootHdrPresent": "passThrough",
"scpGeneratedNrfMsg": "ip",
"apiRootHdrNotPresent": "ip"
},
"response": {
"headers": "followRequest"
}
}
}
}Successful response 5
$ curl -X 'GET' 'http://<localhost>:30472/ocscp/scpc-configuration/v1/scp-features/location_hdr_update_for_host_mismatch' -H 'accept: application/json' {
"featureName":"location_hdr_update_for_host_mismatch",
"enabled":false
} Successful response 6
$ curl -X 'GET' 'http://<localhost>:31109/ocscp/scpc-configuration/v1/scp-features/cca_header_validation' -H 'accept: application/json'
{
"featureName": "cca_header_validation",
"enabled": false,
"featureSpecificConfig": {
"validations": [
{
"type": "subject",
"errorProfileName": "ccaVerificationError",
"producerNfType": []
}
],
"tls_crt_san": {
"preferred_validation_order": [
"URI-ID-URN",
"DNS-ID",
"IP-ADDRESS",
"URI-ID-APIROOT"
],
"max_entries_to_process": 30
}
}
}Successful response 7
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_error_rsp' -H 'accept: application/json'
{
"featureName": "enhanced_error_rsp",
"enabled": true,
"featureSpecificConfig": {
"problemDetailsEnhancement": {
"errorDetailMaxSize": 2100
}
}
}Successful response 8
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_logging' -H 'accept: application/json'
{
"featureName": "additional_logging",
"enabled": false,
"featureSpecificConfig": {
"scpGeneratedErrorRspLogging": {
"enabled": false,
"scpServiceNames": [
"scp-worker"
]
}
}
}Successful response 9
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_subscriber_info' -H 'accept: application/json'{
"featureName": "log_subscriber_info",
"enabled": false,
"featureSpecificConfig": {
"scpServiceNames": [
"ALL"
]
}
}Successful response 10
$ curl -X GET "http://<localhost>:30454/ocscp/scpc-configuration/v1/scp-features/mediation" -H "accept: application/json"{
"featureName": "mediation",
"enabled": false,
"featureSpecificConfig": {
"userDefinedVariable": {
"enabled": false,
"maxUserDefinedVariableSize": 1024,
"maxUserDefinedVariableCount": 100
}
},
"createdTimestamp": "2024-11-13 10:28:24.0",
"updatedTimestamp": "2024-11-18 08:59:40.0"
}Successful response 11
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_support' -H 'accept: application/json'
{
"featureName": "timestamp_headers_support",
"enabled": false,
"featureSpecificConfig": {
"dynamicResponseTimeout": true,
"updateTimestampHeaders": true,
"responseTransitTime": {
"downstreamNF": 50,
"downstreamSCP": 100,
"downstreamSEPP": 300,
"downstreamRoamingProxy": 300
}
},
"createdTimestamp": "2025-12-22 13:21:00.0",
"updatedTimestamp": "2025-12-22 13:21:00.0"
}Successful response 12
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_notifications_handling' -H 'accept: application/json'
{
"featureName": "enhanced_notifications_handling",
"enabled": true,
"featureSpecificConfig": {
"alternateRoutingWithoutServName": true
}
}Successful response 13
$ curl -X 'GET' \
'http://<localhost>:31046/ocscp/scpc-configuration/v1/scp-features/nf_discovery_enhancement' \
-H 'accept: application/json'{
"featureName": "nf_discovery_enhancement",
"enabled": true,
"featureSpecificConfig": {
"nfStatusForLocalDiscRespCreation": [
"REGISTERED"
]
},
"createdTimestamp": "2025-10-30 08:27:48.0",
"updatedTimestamp": "2025-10-30 08:27:48.0"
}Successful response 14
$ curl -X 'GET' \
'http://<localhost>:31046/ocscp/scpc-configuration/v1/scp-features/nf_selection_enhancement' \
-H 'accept: application/json'
{
"featureName": "nf_selection_enhancement",
"enabled": true,
"createdTimestamp": "2025-10-30 08:27:48.0",
"updatedTimestamp": "2025-10-30 08:27:48.0"
}Failure case 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options" -H "accept: application/json"
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options",
"cause": "DATA_NOT_FOUND"
}Failure case 2
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1" -H "accept: application/json“
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1",
"cause": "DATA_NOT_FOUND"
}PUT REST API
This resource adds or updates the feature-specific information based on the provided feature name in the Resource URI.
Resource URI: /ocscp/scpc-configuration/v1/scp-features/{featureName}
Table 2-7 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| SCPFeaturesWrapper | M | 1 | 200 OK | Indicates the SCP feature configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1. |
Successful response 1:
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json"
[
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
}
}
]
Successful response 2:
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/interplmn_routing" -H "accept: application/json"{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
}
} Successful response 3:
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=interplmn_routing" -H "accept: application/json"{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
}
}
Successful response 4:
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preference"-H "accept: application/json"Code: 200
{
"featureName": "egress_host_preference",
"enabled": false,
"featureSpecificConfig": {
"fqdnResolution": {
"fqdn": "nfProfile",
"interPlmnFqdn": "dns"
},
"hostPreference": {
"request": {
"apiRootHdrPresent": "passThrough",
"scpGeneratedNrfMsg": "ip",
"apiRootHdrNotPresent": "ip"
},
"response": {
"headers": "followRequest"
}
}
}
}Successful response 5:
$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/location_hdr_update_for_host_mismatch' -H 'accept: application/json' {
"featureName":"location_hdr_update_for_host_mismatch",
"enabled":false
} Successful response 6:
$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/cca_header_validation' -H 'accept: application/json' {
"featureName": "cca_header_validation",
"enabled": false,
"featureSpecificConfig": {
"validations": [
{
"type": "subject",
"errorProfileName": "ccaVerificationError",
"producerNfType": []
}
],
"tls_crt_san": {
"preferred_validation_order": [
"URI-ID-URN",
"DNS-ID",
"IP-ADDRESS",
"URI-ID-APIROOT"
],
"max_entries_to_process": 30
}
}
}Successful response 7:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_error_rsp' -H 'accept: application/json' {
"featureName": "enhanced_error_rsp",
"enabled": true,
"featureSpecificConfig": {
"problemDetailsEnhancement": {
"errorDetailMaxSize": 2100
}
}
}Successful response 8:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_logging' -H 'accept: application/json' {
"featureName": "additional_logging",
"enabled": false,
"featureSpecificConfig": {
"scpGeneratedErrorRspLogging": {
"enabled": false,
"scpServiceNames": [
"scp-worker"
]
}
}
}Successful response 9:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_subscriber_info' -H 'accept: application/json' {
"featureName": "log_subscriber_info",
"enabled": false,
"featureSpecificConfig": {
"scpServiceNames": [
"ALL"
]
}
}Successful response 10:
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/mediation" -H "accept: application/json" {
"featureName": "mediation",
"enabled": false,
"featureSpecificConfig": {
"userDefinedVariable": {
"enabled": false,
"maxUserDefinedVariableSize": 1024,
"maxUserDefinedVariableCount": 100
}
},
"createdTimestamp": "2024-11-13 10:28:24.0",
"updatedTimestamp": "2024-11-18 08:59:40.0"
}Successful response 11:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_support' -H 'accept: application/json' {
"featureName": "timestamp_headers_support",
"enabled": true,
"featureSpecificConfig": {
"dynamicResponseTimeout": true,
"updateTimestampHeaders": true,
"responseTransitTime": {
"downstreamNF": 50,
"downstreamSCP": 100,
"downstreamSEPP": 300
}
}
}Successful response 12:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_notifications_handling'
-H 'accept:
application/json'{
"featureName": "enhanced_notifications_handling",
"enabled": true,
"featureSpecificConfig": {
"alternateRoutingWithoutServName": true
}
}
Failure case 1:
Note:
In case SCP is not configured with local or foreign PLMNs and invalid NF type is configured for this feature, you receive a Bad Request 400 with error message.$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options"-H "accept:
application/json"Response Body:{ "title":
"Not Found", "status": "404", "detail": "SCP Features configuration data not
found against given query parameter(s), Please refer to the User Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options", "cause": "DATA_NOT_FOUND"}Failure case 2:
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1"-H "accept: application/json“Response Body:{ "title":
"Not Found", "status": "404", "detail": "SCP Features configuration data not
found against given query parameter(s), Please refer to the User Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1", "cause": "DATA_NOT_FOUND"}Failure case 3:
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/cca_header_validation1'
-H 'accept:
application/json' Response Body:{ "title":
"Not Found", "status": "404", "detail": "SCP Features configuration data not
found against given query parameter(s), Please refer to the User Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features/cca_header_validation1", "cause": "DATA_NOT_FOUND"}Failure case 4:
curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_loggingxx'
-H 'accept:
application/json' Response Body:{ "title":
"Not Found", "status": "404", "detail": "SCP Features configuration data not
found against given query parameter(s), Please refer to the User Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features/additional_loggingxx", "cause": "DATA_NOT_FOUND"}Failure case 5:
curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_susbcriber_infoxx'
-H 'accept:
application/json' Response Body:{ "title":
"Not Found", "status": "404", "detail": "SCP Features configuration data not
found against given query parameter(s), Please refer to the User Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features/log_subscriber_infoxx", "cause": "DATA_NOT_FOUND"}Failure case 6:
$ curl -X 'GET' 'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_supportxx'
-H 'accept:
application/json'Response Body:{ "title":
"Not Found", "status": 404, "detail": "SCP Features
configuration data not found against given query parameter(s), Please refer to the User
Guide.", "instance": "/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_supportxx", "cause": "DATA_NOT_FOUND"}2.2 Configuring Routing Options Config
This section describes the routing-options-config REST API parameters to configure a routing option based on the following parameters:
messageTypenotificationTypenfTypenfServiceNamemethodapiSpecificResourceUrisenderNFTypenotificationSenderapiNameAxHeadingserviceOperation
This REST API provides a match criteria for selecting a routing option configuration. When SCP-Worker receives a message request, it extracts the above mentioned attributes from the message request and matches them to select a routing option.
Note:
You must configure message routing related parameters, such asmaxRoutingAttempts,
responseTimeout, and so on, as described in Configuring Routing Config Set.
Resources
The following table describes the resource name to retrieve, add, or update routing-options-config configuration data:
Table 2-8 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| routing-options-config | /ocscp/scpc-configuration/{version}/routing-options-config | GET |
Query parameters: configName, nfType, serviceName, messageType, notificationType, senderNFType, method, and apiSpecificResourceUri. |
| routing-options-config | /ocscp/scpc-configuration/{version}/routing-options-config/{configName} | GET | Retrieves routing options configuration for a given configName. |
| routing-options-config | /ocscp/scpc-configuration/{version}/routing-options-config/{configName} | PUT |
|
| routing-options-config | /ocscp/scpc-configuration/{version}/routing-options-config/{configName} | DELETE | Removes routing options configuration for a given
configName.
|
Sample Request Body:
{
"configName": "mbkmYqfZzxO5E3vEYeUCg_gmCesZ7g85HC9",
"routingOptionsConfigData": {
"messageType": [
"notification-message"
],
"notificationType": [
"N1_MESSAGES"
],
"nfType": "udm",
"nfServiceName": "nudm-uecm",
"method": [
"*"
],
"apiSpecificResourceUri": "udm-nudm-uecm",
"senderNFType": "*",
"routingConfigSetName": "r1",
"notificationSender": {
"apiNameAxHeading": "Nudm_UECM",
"serviceOperation": "Update"
}
}
}
Resource Definition
GET
This resource fetches all the routing-options-config configurations.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config
The following table describes the data structures supported by the GET response body on this resource:
Table 2-9 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
routingOptionsConfigDataWrapper |
M | 1..N | 200 OK | Indicates routing-options-config configurations. |
This resource fetches the routing-options-config configuration
based on the configName parameter.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{configName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-10 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Fetches configuration information for
configName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-11 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
routingOptionsConfigDataWrapper |
M | 1 | 200 OK | Indicates routing-options-config configurations. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
This resource fetches all the routing-options-config configuration based on queryParams: nfType, serviceName, notificationType, senderNFType, method, apiSpecificResourceUri, configName, and messageType.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config?nfType={value}&serviceName={value1}¬ificationType={value2}&senderNFType={value3}&method={value4}&apiSpecificResourceUri={value5}&configName={value6}&messageType={value7}
The following table describes the query parameters that can be matched to retrieve matching entries:
Table 2-12 Query Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
nfType |
String | O | Indicates the nfType to search.
The NF type of the producer NF or server for which routing options are configured. |
serviceName |
String | O | Indicates the serviceName to
search.
The NF service name of producer NF or server for which routing options are configured. |
notificationType |
String | O | Fetches configurations based on
notificationType.
|
senderNFType |
String | O | Fetches configurations based on NF type of the sender. |
method |
String | O | Fetches configurations on
method.
|
apiSpecificResourceUri |
String | O | Fetches configurations on
apiSpecificResourceUri.
|
configName |
String | O | Fetches configurations on
configName.
|
messageType |
String | O | Fetches configurations on
messageType.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-13 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
routingOptionsConfigDataWrapper |
M | 1..N | 200 OK | Indicates routing-options-config configurations. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test' \
-H 'accept: application/json'
{
"configName": "test",
"routingOptionsConfigData": {
"messageType": [
"notification-message"
],
"notificationType": [
"*"
],
"nfType": "PCF",
"nfServiceName": "*",
"method": [
"*"
],
"apiSpecificResourceUri": ".*",
"senderNFType": "*",
"routingConfigSetName": "notification_req_default_config_set",
"notificationSender": {
"apiNameAxHeading": "nudm_uecm",
"serviceOperation": "update"
}
},
"createdTimestamp": "2025-06-20 06:41:15",
"updatedTimestamp": "2025-06-20 06:41:15"
}Sample
of an Error GET
Responsecurl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test1' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Ocscp Routing Options Config data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-options-config/test1",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundPUT
This resource configures routing-options-config configuration for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{configName}
The following table describes the path parameter supported by this resource:
Table 2-14 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Key for configurations on routingOptionsConfig.
|
The following table describes the data structures supported by the PUT request body on this resource:
Table 2-15 Request Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
routingOptionsConfigDataWrapper |
M | 1 | Indicates nftypes-nfservices configurations to be added
or modified.
|
The following table describes data structures supported by the PUT response body on these resources:
Table 2-16 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
routingOptionsConfigDataWrapper |
M | 1 | 200 OK | Successfully updated routing-options-config data. |
routingOptionsConfigDataWrapper |
M | 1 | 201 Created | Successfully created routing-options-config data. |
ProblemDetails |
M | 1 | 400 Bad Request | Indicates problem details. |
ProblemDetails |
M | 1 | 403 Forbidden | Forbidden updating default values. |
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "test",
"routingOptionsConfigData": {
"messageType": [
"notification-message"
],
"notificationType": [
"*"
],
"nfType": "PCF",
"nfServiceName": "*",
"method": [
"*"
],
"apiSpecificResourceUri": ".*",
"senderNFType": "*",
"routingConfigSetName": "notification_req_default_config_set",
"notificationSender": {
"apiNameAxHeading": "Nudm_UECM",
"serviceOperation": "Update"
}
}
}'
{
"configName": "test",
"routingOptionsConfigData": {
"messageType": [
"notification-message"
],
"notificationType": [
"*"
],
"nfType": "PCF",
"nfServiceName": "*",
"method": [
"*"
],
"apiSpecificResourceUri": ".*",
"senderNFType": "*",
"routingConfigSetName": "notification_req_default_config_set",
"notificationSender": {
"apiNameAxHeading": "nudm_uecm",
"serviceOperation": "update"
}
},
"createdTimestamp": "2025-06-20 06:41:14",
"updatedTimestamp": "2025-06-20 06:41:14"
}
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config111",
"routingOptionsConfigData": {
"nfType": "CUSTOM_UDM",
"nfserviceName": "nudm-uecm",
"messageType": ["notification-message", "svc-request-message"],
"routingConfigSetName": "udm_nudm-uecm_routing_config_set",
"notificationType": ["N1_MESSAGES"],
"senderNFType": "*",
"method": ["*"],
"apiSpecificResourceUri": "imsi-111110000/registrations/amf-3gpp-access"
},
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}'{
"title": "Bad Request",
"status": 400,
"detail": "NfType NfService ServiceType/MessageType combination is not configured. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-options-config/config111",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Error: Bad RequestSample 2 of an Error PUT Response
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig' -H 'accept: application/json' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "defaultSvcRequestConfig",
"routingOptionsConfigData": {
"nfType": "CUSTOM_UDM",
"nfserviceName": "nudm-uecm",
"messageType": ["notification-message", "svc-request-message"],
"routingConfigSetName": "udm_nudm-uecm_routing_config_set",
"notificationType": ["N1_MESSAGES"],
"senderNFType": "*",
"method": ["*"],
"apiSpecificResourceUri": "imsi-111110000/registrations/amf-3gpp-access"
}
}'
{
"title": "Forbidden",
"status": 403,
"detail": "The default configuration cannot be updated. Please refer to the user guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig",
"cause": "MODIFICATION_NOT_ALLOWED"
}
403 Error: Forbidden
DELETE
This resource removes the routing-options-config configuration based on
configName.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{configName}
The following table describes the path parameter supported by this resource:
Table 2-17 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Removes configurations based on
configName.
|
The following table describes the data structures supported by the DELETE response body on this resource:
Table 2-18 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
ProblemDetails |
M | 1 | 403 Forbidden | Removes default data results |
ProblemDetails |
M | 1 | 404 Not Found | Indicates the problem details. |
| NA | - | 1 | 204 No Content | Successful removal of record. |
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \ -H 'accept:
application/json'204 No ContentSample of an Error DELETE Response
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Ocscp Routing Options Config data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-options-config/config111",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Sample 2 of an Error DELETE Response
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig' -H 'accept: application/json' \
-H 'accept: application/json'
{
"title": "Forbidden",
"status": 403,
"detail": "The default configuration cannot be deleted. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig",
"cause": "DATA_CANT_DELETED"
}
403 Error: Forbidden
Data Model
The following table describes data model for request or response:
Table 2-19 routingOptionsConfigDataWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Unique configName key to identify the records.
Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
routingOptionsConfigData |
JSON | M | User defined values for json data, structure is
predefined with keys as defined in
routingOptionsConfigData.
|
createdTimestamp |
String | Read Only | Timestamp of the created record. This is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes parameters of
routingOptionsConfigData:
Table 2-20 routingOptionsConfigData Parameters
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
nfType |
String | M | NA | Allowed character combinations should be alpha-numeric, hyphen, underscore, and *. | Indicates the NF type for which routing options are configured. This is
either 3GPP defined NFType as per TS 29.510 or custom NFType.
Entry for NFType SCP and SEPP is not allowed. "*" keyword is allowed to indicate any NFType match. Length: 100 |
nfServiceName |
String | M | NA | Allowed character combinations should be alpha-numeric, hyphen, underscore, and *. | Indicates the NF service name for which routing options are configured.
This is either 3GPP defined serviceName as per TS29.510 or any custom service name. If a
particular NFType does not have NF service, '*' keyword is used
for Length: 100 |
messageType |
Array(Enum) | M | NA | ["notification-message", "svc-request-message"] | Provides a list of message type, such as notifications and SBI-messages,
for which the routing configurations will apply.
|
routingConfigSetName |
String | M | NA | Allowed character combinations should be alpha-numeric, hyphen, and underscore. | Indicates the name of the Routing Config set record, a rule with this name must be available. |
notificationType |
Array(Enum) | O | * | N1_MESSAGES, N2_INFORMATION, LOCATION_NOTIFICATION,
DATA_REMOVAL_NOTIFICATION, DATA_CHANGE_NOTIFICATION, *,
LOCATION_UPDATE_NOTIFICATION, NSSA_REAUTH_NOTIFICATION, NSSA_REVOC_NOTIFICATION,MATCH_INFO_NOTIFICATION, DATA_RESTORATION_NOTIFICATION, TSCTS_NOTIFICATION,LCS_KEY_DELIVERY_NOTIFICATION, UUAA_MM_AUTH_NOTIFICATION |
Indicates the notification type.
If
If If If |
senderNFType |
String | O | * | * | Configures consumer NFType. It decides routing options based on the sender
or consumer NFType that sends the message to SCP for
routing.
NFType is obtained from the following headers in
order of precedence:
If Length: 100 |
method |
Array(Enum) | O | Array having the * value | *,GET,PUT,POST,PATCH,OPTIONS,TRACE,HEAD,CONNECT,DELETE | Indicates the method type. If no value is provided, '*' is configured for
method. This indicates that SCP-Worker will
match any method type from following list:
Note: Both |
apiSpecificResourceUri |
String | O | .* | - | REGEX expression which is used to validate
apiSpecificResourceUri in the RX
request.
REGEX should be valid as per Java regex validator. Sample: Ingress
request URI:
Not matched regex: "/"
is considered as part of Matched regex: Ingress request URI:
Matched regex: Note: Both |
notificationSender |
json | O | NA | NA | Specifies the notification sender details and is used
to identify the API that sends the notification.
If this parameter is not configured, it will be considered as a match-all, meaning any value for the parameter will be accepted during matching with the header attributes. |
notificationSender.apiNameAxHeading |
String | M | NA | Allowed values are the configured values of
apiNameAxHeading in the NFTypes-NFServices REST
API.
|
Indicates the service type of the consumer NF. The value of this parameter is the first part of the callback type values in the 3gpp-Sbi-Callback header in a notification message. For example, when |
notificationSender.serviceOperation |
String | O | NA | Allowed character combinations should be alpha-numeric, hyphen, and underscore. | Indicates the service operation type.
The value of this parameter is compared with the second part of the callback type values in the 3gpp-Sbi-Callback header when the NF service sends a notification message. For example, when
If this parameter is not configured, only values that match the range regular expression are permitted. |
Note:
- The "*" value for a parameter indicates that any value of the parameter is accepted when matching is done.
- Duplicate entries are rejected with error response 400, Bad Request.
2.3 Configuring Routing Config Set
maxRoutingAttempts,
responseTimeout, and so on. These parameters are mapped with
service operation related parameters in Configuring Routing Options Config. These routing
options parameters are applied to a certain message routing when matched with service
operation parameters.
Resources
The following table describes the resource name to retrieve, add, update, and remove routing config set configurations based on the query parameters:
Table 2-21 Resources
| Resource Name | Resource URI | HTTP Method | Query Parameter | Description |
|---|---|---|---|---|
| routing-config-set |
/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName> |
GET | None | Retrieves routing config set records based on
routingConfigSetName.
|
| routing-config-set |
/ocscp/scpc-configuration/<version>/routing-config-set/ |
GET | None | Retrieves all routing config set records. |
| routing-config-set |
/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName> |
PUT | None |
|
| routing-config-set |
/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName> |
DELETE | None |
|
Resource Definition
GET
This resource fetches the routing conifig set configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-22 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| routingConfigSetName | String | O | The name of the routing config set used to retrieve the respective configurations. |
Table 2-23 Data Structures
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| routingConfigSetWrapperV2 | M | 1 | 200 OK | The routing options with the rule name. |
| ProblemDetails | M | 1 | 404 Not Found | Problem details |
Example
Sample Successful Response
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set
HTTP / 1.1 200 OK
[{
"routingConfigSetName": "notification_req_default_config_set",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
},
"createdTimestamp": "2024-10-15 08:07:32",
"updatedTimestamp": "2024-10-15 08:07:32"
}, {
"routingConfigSetName": "svc_req_default_config_set",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
},
"createdTimestamp": "2024-10-15 08:07:32",
"updatedTimestamp": "2024-10-15 08:07:32"
}
]
Sample Failure Response
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
404 Not Found
{"title":"Not Found","status":"404","detail":"RoutingConfigSet data not found against given RoutingConfigSetName . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig","cause":"DATA_NOT_FOUND"}
This resource fetches the routing config set configurations for all rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set
Table 2-24 Data Structures
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| routingConfigSetWrapperV2 | M | 1..N | 200 OK | The routing options data with the rule name. |
Sample Routing Config Set Configurations for GET:
curl - v - H "Content-Type: application/json"--request GET http: //localhost:8081/ocscp/scpc-configuration/v1/routing-config-set
HTTP / 1.1 200 OK
[{
"routingConfigSetName": "notification_req_default_config_set",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
},
"createdTimestamp": "2024-10-15 08:07:32",
"updatedTimestamp": "2024-10-15 08:07:32"
}, {
"routingConfigSetName": "svc_req_default_config_set",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
},
"createdTimestamp": "2024-10-15 08:07:32",
"updatedTimestamp": "2024-10-15 08:07:32"
}
]
PUT
This resource creates or updates routing config set records for the
specified routingConfigSetName.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-25 URI Query Parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| routingConfigSetName | String | M | The name of the routing config set rule using which the respective routing config set is created or updated. |
Table 2-26 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| routingConfigSetWrapperV2 | M | 1 | 200 OK | This response is generated when an existing record is updated. |
| routingConfigSetWrapperV2 | M | 1 | 201 | This response is generated when a new record is created. |
| ProblemDetails | M | 1 | 400 Bad Request | Returns problem details. |
Sample Success Response of Routing Config Set Configurations for PUT:
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1 -d
'{"routingConfigSetName": "config1", "routingOptions": {"pod": {"maxRoutingAttempts": 1, "alternateRouting": True}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "totalTransactionLifetime": "6s", "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "responseTimeout": "1s", "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "exceptions": [{"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}], "reRouteConditionList": [{"statusCode": "connectionError"}]}}}'
HTTP/1.1 201 Created
{"routingConfigSetName": "config1", "routingOptions": {"srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "pod": {"alternateRouting": True, "maxRoutingAttempts": 1}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "totalTransactionLifetime": "6s", "responseTimeout": "1s", "reRouteConditionList": [{"statusCode": "connectionError"}, {"statusCode": "5xx"}, {"statusCode": "307"}, {"statusCode": "429"}, {"statusCode": "308"}, {"statusCode": "timeout"}], "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "connectionError"}], "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "connectionError"}, {"statusCode": "5xx"}, {"statusCode": "307"}, {"statusCode": "429"}, {"statusCode": "308"}, {"statusCode": "timeout"}], "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}]}, "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False}, "createdTimestamp": "2025-08-24 19:53:30", "updatedTimestamp": "2025-08-24 19:53:30"}
Sample Success Response 2 of Routing Config Set Configurations for PUT:
curl -X 'PUT' \
'http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '
"routingConfigSetName": "config1",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
}
}'
HTTP/1.1 201 Created
{
"routingConfigSetName": "config1",
"routingOptions": {
"srv": {
"maxRoutingAttempts": 3,
"alternateRouting": true
},
"pod": {
"alternateRouting": true,
"maxRoutingAttempts": 1
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"totalTransactionLifetime": "6s",
"responseTimeout": "1s",
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptionErrorResponses": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}, {
"name": "No_Response",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_response"
}, {
"name": "Connect_Failure",
"action": "Send_Answer",
"error_profile": "default_exception_error_connect_failure"
}, {
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Insufficient_Time",
"action": "Send_Answer",
"error_profile": "timeHdrInsufficientTimeErrorProfile"
}
],
"nextHopSCP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [{
"statusCode": "307"
}, {
"statusCode": "308"
}, {
"statusCode": "429"
}, {
"statusCode": "5xx"
}, {
"statusCode": "timeout"
}, {
"statusCode": "connectionError"
}
],
"exceptions": [{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
}, {
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false
},
"createdTimestamp": "2024-10-15 08:07:32",
"updatedTimestamp": "2024-10-15 08:07:32"
}
Sample Fail Response of Routing Config Set Configurations for PUT:
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1123 -d
{"routingConfigSetName": "config1", "routingOptions": {"pod": {"maxRoutingAttempts": 1, "alternateRouting": True}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "totalTransactionLifetime": "6s", "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "responseTimeout": "1s", "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "exceptions": [{"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}], "reRouteConditionList": [{"statusCode": "connectionError"}]}}}'
DELETE
This resource removes the routing config set configuration for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-27 URI Query Parameters Supported by the DELETE Method on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| routingOptionsConfigName | String | O | The name of the routing options configuration which should be removed. |
Table 2-28 Data Structures Supported by the Delete Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| NA | M | 1 | 204 No Content | Successful deletion of routing config set records. |
| ProblemDetails | M | 1 | 403 Forbidden | Indicates problem details. |
| ProblemDetails | M | 1 | 404 Not Found | Indicates problem details. |
Sample Successful Response of Routing Config Set Configurations for DELETE:
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
204 No Content
Sample Fail Response of Routing Config Set Configurations for DELETE:
curl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set
403 Forbidden
{"title":"Forbidden","status":403,"detail":"The default configuration cannot be deleted. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set","cause":"DATA_CANT_DELETED"}Sample Fail Response 2 of Routing Config Set Configurations for DELETE:
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1404 Not Found
{"title":"Not Found","status":404,"detail":"RoutingConfigSet data not found against given RoutingConfigSetName . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-config-set/config1","cause":"DATA_NOT_FOUND"}Data Model
Request or Response Body (PUT)
The following table describes the field names of the routingConfigSetWrapperV2 data type.
Table 2-29 routingConfigSetWrapperV2
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Values | Allowed Values | Description |
|---|---|---|---|---|---|
| routingConfigSetName | String | M | - | - | Unique name that identifies the routing config set.
This rule name is used in RoutingOptionsConfig as a
reference.
|
| routingOptionsroutingConfigSetWrapperV2 | JSON | M | - | - | This field defines the routing option configurations. |
| createdTimestamp | String | Read Only | - | - | Timestamp of the created record. This is not required in the request, but it is present in the response. |
| updatedTimestamp | String | Read Only | - | - | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes the RoutingOptionsV2 parameters:
Table 2-30 Parameters of RoutingOptionsV2
| Parameter Name | Mandatory (M) or Optional(O) | Default Values | Value Range | Description and Data Type | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| responseTimeout | M | 1 second | 100-10000 ms | Indicates the allotted time to
respond to a message request. When the response timeout expires, SCP
performs alternate rerouting to the available alternate NF or pod.
If no alternate NFs or pods are available, SCP sends an error
message.
Notes:
Data Type: string |
Yes | Yes |
| totalTransactionLifetime | M | 6 seconds | 100 - 240000 ms |
Indicates the total time allowed to forward a request, including the initial and all subsequent routing attempts. Note:
totalTransactionLifetime value should
be greater than the value obtained by multiplying
responseTimeout by the total maximum number
of attempts (pod level + service level).
Data Type: string |
Yes | Yes |
| pod | M | - | - | See Table 2-37.
Data Type: PodLevelRoutingOptionsV2 |
- | - |
| service | M | - | - | See Table 2-38.
Data Type: ServiceLevelRoutingOptionsV2 |
- | - |
| reRouteConditionList | O | - | 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx, "timeout", "connectionError". |
Example:
Data Type: array(ProblemData) |
No | Yes |
| exceptionErrorResponses | O | - | This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. |
Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted. Send an answer with the configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. Data Type: Array(ExceptionErrorResponse) |
Yes | No |
| exceptionErrorResponses | O | - | This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. |
No Producer Response Action: Action taken when the routing of a request is abandoned due to a response timeout. Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. Data Type: Array(ExceptionErrorResponse) |
Yes | No |
| exceptionErrorResponses | O | - | This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. |
Connection Failure Action: Action taken when the routing of a request is abandoned when the last egress connection selection fails Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. Data Type: Array(ExceptionErrorResponse) |
Yes | No |
| exceptionErrorResponses | O | - | This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. |
Host not found Action: Action taken when the routing of a request is abandoned due to FQDN of the host not being found Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. Data Type: Array(ExceptionErrorResponse) |
Yes | No |
| exceptionErrorResponses | O | - | This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. | Insufficient Processing Time Action:
The action taken when an SBI request received from a downstream
consumer NF or SCP has already timed out, based on the received
timestamp headers.
Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. Data Type: Array(ExceptionErrorResponse) |
Yes | No |
| assignPreferredLocality | O | false | true, false | SCP assigns its own locality as a
preferred locality for NF discovery if assignPreferredLocality is
enabled and the 3gpp-Sbi-Discovery-preferredlocality header is
absent in ingress service requests.
Data Type: boolean |
Yes | NA |
| overridePreferredLocality | O | false | true, false | SCP overrides the
3gpp-Sbi-Discoverypreferred-locality header received in the service
request and uses its own locality as preferred-locality for NF
discovery if overridePreferredLocality is enabled, and the
3gpp-Sbi-Discoverypreferred-locality header is present in ingress
service requests.
Data Type: boolean |
Yes | NA |
| forwardRevisedPreferredLocality | O | false | true, false | Controls the forwarding of assigned
or overridden values of 3gpp-Sbi-Discovery-preferred-locality
headers to the next hop SCP.
Data Type: boolean |
Yes | NA |
| nextHopSCP | M | - | - | See Table 2-32
Data Type: NextHopSCPV2 |
- | - |
| nextHopSEPP | M | - | - | See Table 2-35
Data Type: NextHopSEPPV2 |
- | - |
| alternateNFGroupRoutingOptions | M | NF_SET | NF_SET DNS_SRV NF_SET_FOLLOWED_BY_DNSSRV STATIC_CONFIG NF_SET_FOLLOWED_BY_STATIC_CONFIG | This parameter decides the alternate
routing mode, depending on which scp-worker derives the alternate
producer NF
Data Type: Enum(DNSSRVType) |
Yes | No |
Table 2-31 ExceptionErrorResponse
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| name |
Name of the exception. Data Type: String |
M | NA | NA | Yes | Yes |
| action |
Indicates the action to be taken when the exception name is received. Data Type: String |
M | Send_Answer | NA | Yes | Yes |
| error_profile |
Indicates the name of the error profile referenced in ERROR_PROFILE_CONFIG. If provided, the response will be generated based on the parameters defined in the error profile. Data Type: String |
M | NA | NA | Yes | Yes |
Table 2-32 NextHopSCPV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| service | See Table 2-33 Data Type: NextHopSCPServiceV2 |
M | - | - | Yes | Yes |
| serviceEndpoint | See Table 2-33 Data Type: NextHopSCPServiceEndpointV2 |
M | - | - | Yes | Yes |
| responseTimeout |
Indicates the allotted time to respond to a message request. When the response timeout expires, the SCP either reroutes the request to an available alternate NF or pod, or sends an error message. Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms. Data Type: String |
M | NA | 100 ms to 50,000 ms (or 1s to 50s) | Yes | Yes |
| reRouteConditionList | Indicates error conditions that prompt SCP to
attempt alternate routing.
If SCP encounters errors such as connectionError while routing to the upstream server, and if these errors are configured, SCP tries rerouting based on the configured alternate routing mechanism. Example: Data Type: String |
O | - | "connectionError" | No | Yes |
| totalTransactionLifetime |
Indicates that the time consumed in processing all retries should not exceed the total transaction lifetime. This refers to the total time allowed to forward a request, which includes the initial request and all subsequent routing attempts. Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms. Data Type: String |
M | NA | 100 ms to 240,000 ms (or 1s to 240s) | Yes | Yes |
| exceptions |
Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted. |
O | 504 |
Only one entry is allowed.
|
Yes | - |
Table 2-33 NextHopSCPServiceV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| maxRoutingAttempts |
Indicates the number of reroute attempts (retries) at the service level. This is the maximum number of times the SCP is allowed to forward a request message.
Data Type: Integer |
M | NA | 1-5 | Yes | Yes |
Table 2-34 NextHopSCPServiceEndpointV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| maxRoutingAttempts |
Indicates the number of re-route attempts (retries) at the NF/Pod level. This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.
Data Type: Integer |
M | NA | 1-5 | Yes | Yes |
Table 2-35 NextHopSEPPV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| responseTimeout |
Indicates the allotted time to respond to a message request. When the response timeout expires, the SCP either reroutes the request to an available alternate NF or pod, or sends an error message. Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms. Data Type: String |
M | NA | 100 ms to 50,000 ms (or 1s to 50s) | Yes | Yes |
| totalTransactionLifetime |
Indicates that the time consumed in processing all retries should not exceed the total transaction lifetime. This is the total time allowed to forward a request, including the initial request and all subsequent routing attempts. Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms. Data Type: String |
M | NA | 100ms to 240,000ms (or 1s to 240s) | Yes | Yes |
| reRouteConditionList | Indicates the HTTP response codes for which SCP will
attempt alternate routing. If the upstream server responds with any
of these configured response codes, SCP will reroute the request
based on the configured alternate routing mechanism.
If SCP encounters other errors such as connectionError or timeout while routing to the upstream server, and if these errors are configured, SCP tries rerouting based on the configured alternate routing mechanism. Example: Data Type: Array(ProblemData) |
O | - | 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx,"connectionError","timeout" | No | Yes |
| exceptions |
Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted. Data Type: Array(ExceptionErrorResponse) |
O | 504 |
This range is fixed, and you are not allowed to add any further entries to this list.
|
Yes | No |
| exceptions |
Host Not Found Action: The action taken when the routing of a request is abandoned due to the FQDN of the host not being found. |
O | 400 |
This range is fixed, and you are not allowed to add any further entries to this list.
|
Yes | No |
Table 2-36 ProblemData
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| statusCode |
Indicates the HTTP response codes for which SCP will attempt alternate routing. If the upstream server responds with any of these configured response codes, SCP will attempt to reroute the request based on the configured alternate routing mechanism. SCP will also attempt to reroute the request in the event of a response timeout, connection failure, refused stream, or when a GOAWAY frame is received on any connection. These events are not configurable and are supported by SCP by default. Example:
Data Type: String |
O | - | 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx | Yes | Yes |
Table 2-37 PodLevelRoutingOptionsV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| maxRoutingAttempts |
Indicates the number of re-route attempts (retries) at the NF/Pod level. This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.
Data Type: Integer |
M | NA | 1-5 | Yes | Yes |
| alternateRouting | This parameter determines whether SCP will attempt alternate
routing.
Data Type: Boolean |
M | true | true or false | - | - |
Table 2-38 ServiceLevelRoutingOptionsV2
| Parameter Name | Description and Data Type | Mandatory (M)/Optional (O) | Default Value | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF |
|---|---|---|---|---|---|---|
| maxRoutingAttempts |
Indicates the number of re-route attempts (retries) at the NF/Pod level. This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.
Data Type: Integer |
M | NA | 1-5 | Yes | Yes |
| alternateRouting | This parameter determines whether SCP will attempt alternate
routing based on the configured alternate NF selection
mechanism.
Data Type: Boolean |
M | true | true or false | - | - |
2.4 Configuring NF Service Feature Config
This section describes the nfservice-config REST API to configure NF Service Feature
Config for NFType and serviceName combinations.
Each entry points to an NF Service Feature Config Set name, which is configured
using the nfservice-config-set REST API.
Resources
The following table describes the resource name to retrieve, add, or remove nfservice-config configuration data:
Table 2-39 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| nfservice-config | /ocscp/scpc-configuration/{version}/nfservice-config | GET | Retrieves nfServiceConfig for given query
parameters if the record exists.
Retrieves all nfServiceConfig records if query parameter is not provided. Query parameters: nfType, serviceName, and configName. |
| nfservice-config | /ocscp/scpc-configuration/{version}/nfservice-config/{configName} | GET | Retrieves nfServiceConfig for a given configName if the record exists. |
| nfservice-config | /ocscp/scpc-configuration/{version}/nfservice-config/{configName} | PUT | Creates mapping of NF type and NF service to
nfServiceConfigSetName.
Mapping to nfServiceConfigSetName is possible only if that record is available. Ensure that provided nfType and serviceName records are available. Update nfServiceConfig if record exists:
|
| nfservice-config | /ocscp/scpc-configuration/{version}/nfservice-config/{configName} | DELETE |
Removes NF Services configurations for the given
The default record (defaultNfServiceConfig) cannot be removed. |
Resource Definition
GET
This resource fetches all the nfServiceConfig
configurations.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config
The following table describes the data structures supported by the GET response body on this resource:
Table 2-40 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1..N | 200 OK | Indicates successful retrieval of all
nfServiceConfigWrapper objects.
|
This resource fetches the nfServiceConfig configuration
based on configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config/{configName}
The following table describes the path parameter supported by this resource:
Table 2-41 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Fetches configuration information for
configName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-42 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | 200 OK | Indicates successful retrieval of all
nfServiceConfigWrapper objects.
|
| ProblemDetails | M | 1 | 404 Not Found | Indicates problem details. |
Sample of a Successful GET Response
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' -H 'accept: application/json'
{
"configName": "config1",
"nfServiceConfig": {
"nfType": "UDM",
"nfServiceName": "nudm-uecm",
"nfServiceConfigSetName": "udm_nudm_uecm_config1"
}
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}
Sample of an Error GET Response
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config2' -H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "NF Service Configuration data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config/c2342v",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures nfservice-config for given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config/{configName}
The following table describes the path parameter supported by this resource:
Table 2-43 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Key for PUT operation. |
The following table describes the data structures supported by the PUT request body on this resource:
Table 2-44 Request Body Parameter
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | 200 OK | Indicates nfServiceConfigWrapper configurations to be added or modified. |
The following table describes data structures supported by the PUT response body on these resources:
Table 2-45 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | 200 OK | Indicates successful update of nfServiceConfig configurations. |
| nfServiceConfigWrapper | M | 1 | 201 Created | Indicates successful creation of nfServiceConfig configurations. |
| ProblemDetails | M | 1 | 400 Bad Request | Indicates problem details. |
| ProblemDetails | M | 1 | 403 Forbidden | Updates the default data results. |
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config1",
"nfServiceConfig": {
"nfType": "UDM",
"nfServiceName": "nudm-uecm",
"nfServiceConfigSetName": "udm_nudm_uecm_config1"
}
}'
{
"configName": "config1",
"nfServiceConfig": {
"nfType": "UDM",
"nfServiceName": "nudm-uecm",
"nfServiceConfigSetName": "udm_nudm_uecm_config1"
},
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config2",
"nfServiceConfig": {
"nfType": "UDM",
"nfServiceName": "nudm-uecm",
"nfServiceConfigSetName": "udm_nudm_uecm_config2"
}
}' {
"title": "Bad Request",
"status": 400,
"detail": "NfServiceConfig should have unique combination of nfType and nfServiceName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config/c4",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Error: Bad RequestSample 2 of an Error PUT Response
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/defaultNfServiceConfig' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d ' {
"configName": "defaultNfServiceConfig",
"nfServiceConfig": {
"nfType": "UDM",
"nfServiceName": "*",
"nfServiceConfigSetName": "defaultNfServiceConfigSet"
}
}
'
{
"title": "Forbidden",
"status": 403,
"detail": "The default configuration cannot be updated. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config/defaultNfServiceConfig",
"cause": "MODIFICATION_NOT_ALLOWED"
}
403 Error: Forbidden
DELETE
This resource removes all the nfservice-config
configurations based on configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config/{configName}
The following table describes the path parameter supported by this resource:
Table 2-46 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Removes configurations based on combination of
configName.
|
The following table describes the data structures supported by the DELETE response body on this resource:
Table 2-47 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| n/a | M | 1 | 204 No Content | Removes the configuration of combination of
nfType and
nfServiceName.
|
| ProblemDetails | M | 1 | 404 Not Found | Indicates the problem details. |
| ProblemDetails | M | 1 | 403 Forbidden | Removes the default data results. |
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json204 No ContentSample of an Error DELETE Response
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config5' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "NF Service Configuration data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config/config5",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-48 nfServiceConfigWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Unique configName key to identify record.
Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
nfServiceConfig |
JSON | M | Provides configuration values of
nfType, nfServiceName, and
nfServiceConfigSetName.
|
createdTimestamp |
String | Read Only | Timestamp of the created record. This is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes parameters of
nfServiceConfig:
Table 2-49 nfServiceConfig Parameters
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
nfType |
String | M | NA | Allowed character combinations should be alpha- numeric, hyphen, underscore, and *. | The NF type for which routing options are configured.
This is either 3GPP defined NFType as per TS 29.510 or custom
NFType.
The '*' value is accepted to indicate any match. Length: 100 |
serviceName |
String | M | NA | Allowed character combinations should be alpha- numeric, hyphen, underscore, and *. | The NF service name for which routing options are
configured.
This is either 3GPP defined serviceName as per TS29.510 or any custom service name. If a
particular NFType does not have NF Service, the '*' keyword
should be provided for The '*' value is accepted to indicate any match. Length: 100 |
nfServiceConfigSetName |
String | M | NA | Allowed character combinations should be alpha- numeric, hyphen, underscore, and blank. | Indicates configName records that
are available.
|
Sample configuration of nfServiceConfig parameters:
{
configName: "config1",
nfServiceConfig{
"nfType": "UDM",
"nfServiceName": "nudm-uecm",
"nfServiceConfigSetName": "udm_nudm_uecm_config1"
}
}
2.5 Configuring NF Service Feature Config Set
configName. This configuration is mapped with
an NFType and serviceName combination using the
nfservice-config REST API as described in Configuring NF Service Feature Config.
Resources
The following table describes the resource name to retrieve, add, update, and remove nfservice config set configurations based on the query parameters:
Table 2-50 Resources
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| nfservice-config-set | /ocscp/scpc-configuration/{version}/nfservice-config-set | GET | Retrieves all stored NF services configuration records. |
| nfservice-config-set | /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} | GET | Get NF services configuration for given
configName.
|
| nfservice-config-set | /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} | PUT | Create new NF service config set.
Update
The default record (defaultNfServiceConfigSet) can be updated. New record cannot be created if rule mentioned in
|
| nfservice-config-set | /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} | DELETE | Removes NF service configuration data for the given
configName.
Removal of information can
proceed when no references of |
Resource Definition
GET
This resource fetches all the nfservice-config-set configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config-set
The following table describes the data structures supported by the GET response body on this resource:
Table 2-51 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigSetWrapper | M | 1..N | 200 OK | Indicates nfServiceConfigSet configuration. |
This resource fetches the nfservice-config-set configuration based on
configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}
The following table describes the path parameter supported by this resource:
Table 2-52 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Fetches configuration information for
configName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-53 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | 200 OK | Indicates nfServiceConfigSet
configurations.
|
| ProblemDetails | M | 1 | 404 Not Found | Indicates problem details. |
Sample of a Successful GET Response
curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config1' \
-H 'accept: application/json'
{
"configName": "udm_nudm_uecm_config1",
"nfServiceConfigSetData": {
"defaultPriority": 1,
"defaultCapacity": 65535,
"altRoutingDnsSrvModeSupported": false,
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRule",
"cbEnabled": false,
"cbRuleName": "defaultRule",
"odEnabled": false,
"odRuleName": "defaultRule",
"ociEnabled": false,
"ociRuleName": "defaultOciConfigRule",
"canaryReleaseEnabled": false,
"canaryReleaseConfigName": "default",
"nextHopSCP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
},
"nextHopSEPP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
}
},
"createdTimestamp": "2024-05-02 02:26:30.0",
"updatedTimestamp": "2024-05-02 02:26:30.0"
}
curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
-H 'accept: application/json'{
"title": "Not Found",
"status": 404,
"detail": "NF Service Config Set Data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundPUT
This resource configures nfservice-config-set configuration for given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}
The following table describes the path parameter supported by this resource:
Table 2-54 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Unique identifier of the records. |
The following table describes the data structures supported by the PUT request body on this resource:
Table 2-55 Request Body Parameter
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | Indicates nfServiceConfigWrapper configurations to be added or modified. |
The following table describes data structures supported by the PUT response body on these resources:
Table 2-56 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| nfServiceConfigWrapper | M | 1 | 200 OK | Indicates successful update or replacement of
nfServiceConfigSet configurations for
configName.
|
| nfServiceConfigSetWrapper | M | 1 | 201 Created | Indicates creation of
nfServiceConfigSet configurations for
configName.
|
| ProblemDetails | M | 1 | 400 Bad Request | Indicates problem details. |
curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "udm_nudm_uecm_config1",
"nfServiceConfigSetData": {
"defaultPriority": 1,
"defaultCapacity": 65535,
"altRoutingDnsSrvModeSupported": false,
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "r1",
"cbEnabled": false,
"cbRuleName": "defaultRule",
"odEnabled": false,
"odRuleName": "defaultRule",
"ociEnabled": false,
"ociRuleName": "defaultOciConfigRule",
"canaryReleaseEnabled": false,
"canaryReleaseConfigName": "default",
"nextHopSCP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
},
"nextHopSEPP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
}
}
}' {
"configName": "udm_nudm_uecm_config1",
"nfServiceConfigSetData": {
"defaultPriority": 1,
"defaultCapacity": 65535,
"altRoutingDnsSrvModeSupported": false,
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "r1",
"cbEnabled": false,
"cbRuleName": "defaultRule",
"odEnabled": false,
"odRuleName": "defaultRule",
"ociEnabled": false,
"ociRuleName": "defaultOciConfigRule",
"canaryReleaseEnabled": false,
"canaryReleaseConfigName": "default",
"nextHopSCP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
},
"nextHopSEPP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
}
},
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "udm_nudm_uecm_config1",
"nfServiceConfigSetData": {
"defaultPriority": 1,
"defaultCapacity": 70000,
"altRoutingDnsSrvModeSupported": false,
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "r1",
"cbEnabled": false,
"cbRuleName": "defaultRule",
"odEnabled": false,
"odRuleName": "defaultRule",
"ociEnabled": false,
"ociRuleName": "defaultOciConfigRule",
"canaryReleaseEnabled": false,
"canaryReleaseConfigName": "default",
"nextHopSCP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
},
"nextHopSEPP": {
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
}
}
}' {
"title": "Bad Request",
"status": 400,
"detail": "Field defaultCapacity cannot be more than '65535'",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config",
"cause": "INVALID_DATA"
}
400 Error: Bad RequestDELETE
This resource removes all the nfservice-config-set configuration based on
configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}
The following table describes the path parameter supported by this resource:
Table 2-57 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Removes configurations based on combination of
configName.
|
The following table describes the data structures supported by the DELETE response body on this resource:
Table 2-58 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| n/a | M | 1 | 204 No Content | Removes the configuration of combination of
nfType and
nfServiceName.
|
| ProblemDetails | M | 1 | 404 Not Found | Indicates the problem details. |
| ProblemDetails | M | 1 | 403 Forbidden | Indicates the error when trying to remove a record with a reference in the foreign table (OCSCP_NF_SERVICE_CONFIG) or the default record removal. |
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'204 No Contentcurl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'{
"title": "Not Found",
"status": 404,
"detail": "NF Service Config Set Data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundSample 2 of an Error DELETE Response
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/c1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
{
"title": "Forbidden",
"status": 403,
"detail": "The given configName is referred by 'NF Service Config' hence cannot be deleted. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/c1",
"cause": "DATA_CANT_DELETED"
}
403 Error: Forbidden
Data Model
The following table describes data model for request or response:
Table 2-59 nfServiceConfigSetWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Unique configName to identify the
records of nfServiceConfigSet.
Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
nfServiceConfigSetData |
JSON | M | Indicates JSON structure to hold different
NFService specific configurations.
|
createdTimestamp |
String | Read Only | Timestamp of the created record. This is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes parameters of
nfServiceConfigSetData:
Table 2-60 nfServiceConfigSetData
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
defaultPriority |
integer | M | NA | 0-65535 | Priority (relative to other NF Services of the same
type) in the range of 0-65535, to be used for NF Service selection.
The lower values indicate a higher priority. If priority is present
in either NF profile or nfServiceList parameters, those will have
precedence over this value.
This default priority value shall be used for NF service instance selection only if priority is not published by producer NFs while registering with NRF in NF profile (including both NF profile and nfServiceList parameters). |
defaultCapacity |
integer | M | NA | 0-65535 | Capacity information in the range of 0-65535,
expressed as a weight relative to other NF service instances of the
same type. If capacity is also present in either NF profile or
nfServiceList parameters, those will have precedence over this
value.
This default capacity value shall be used for NF service instance selection only if capacity is not published by producer NFs while registering with NRF in NF profile (including both NF profile and nfServiceList parameters). |
altRoutingDnsSrvModeSupported |
boolean | M | false | true or false | Indicates whether alternate routing is supported using DNS SRV. |
loadBasedCongestionControlEnabled |
boolean | M | true | true or false | Enables or disables congestion control for the associated service. |
nfServiceLoadBasedCongestionControlCfg |
String | O | NA | - | Name of the rule holding the configuration of congestion control. Based on the configuration under this rule, congestion control will be applied. |
cbEnabled |
boolean | M | false | true or false | Enables or disables circuit breaking for the associated service. |
cbRuleName |
String | O | NA | - |
Name of the rule holding the configuration of circuit breaking. Based on the configuration under this rule, circuit breaking is activated. |
odEnabled |
boolean | M | false | true or false | Enables or disables the Outlier Detection feature. |
odRuleName |
String | O | NA | - | Name of the rule holding the configuration of Outlier Detection. Based on the configuration under this rule, the Outlier Detection is activated. |
ociEnabled |
boolean | M | false | true or false | Enables or disables OCI for the associated
service.
Note: Ensure that the Overload Control
Information (OCI) feature is enabled through the
|
ociRuleName |
String | O | NA | - |
Name of the rule holding the configuration of OCI. Based on the configuration under this rule, OCI is activated. |
canaryReleaseEnabled |
boolean | M | false | true or false | Enables or disables canary traffic for the associated service. |
canaryReleaseConfigName |
String | O | NA | - | Name of the rule holding the configuration of canary traffic. Based on the configuration under this rule, canary traffic routing is activated. |
nextHopSCP |
Json | M | NA | - | Service specific configuration to apply when routing to the next hop SCP. |
nextHopSEPP |
Json | M | NA | - | Service specific configuration to apply when routing to the next hop SEPP. |
Table 2-61 nextHopSCP
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
loadBasedCongestionControlEnabled |
boolean | M | true | true or false | Enables or disables congestion control for the associated service for the next hop SCP. |
nfServiceLoadBasedCongestionControlCfg |
String | O | NA | - | Name of rule holding the configuration of congestion control. Based on configuration under this Rule, congestion control will be applied for next hop SCP. |
Table 2-62 nextHopSEPP
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
loadBasedCongestionControlEnabled |
boolean | M | true | true or false | Enables or disables congestion control for the associated service for the next hop SEPP. |
nfServiceLoadBasedCongestionControlCfg |
String | O | NA | - | Name of the rule holding the configuration of congestion control. Based on the configuration under this rule, congestion control is applied for the next hop SEPP. |
2.6 Configuring NFTypes-NFServices
Note:
- You must configure
NFTypeandNFServiceparameters before configuring routing related parameters and feature level parameters. apiName,NFType, andNFServicevalues are not case-sensitive irrespective of the scenarios they are configured.- SCP stores
NFTypevalue in uppercase,NFServiceandapiNamevalues in lowercase, irrespective of the scenarios they are configured. apiNamereceived in RX request is always case-insensitive.- You must configure
NFType,ServiceName, andApiNameas a valid combination of alphanumeric characters, hyphen, and underscore. - The keyword "default" is not allowed for
ServiceName. - You must check
APINameAxHeadingvalidation for details on validation supported on theapiNameAxHeadingfield.
Resources
The following table describes the resource name to retrieve, add, or update nftypes-nfservices configuration data:
Table 2-63 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
|
nftypes-nfservices |
/ocscp/scpc-configuration/{version}/nftypes-nfservices | GET |
Query parameters are: |
| nftypes-nfservices | /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} | GET | Retrieves NF type and NF service configuration for a
given configName.
|
| nftypes-nfservices | /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} | PUT |
|
| nftypes-nfservices | /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} | DELETE |
|
Resource Definition
GET
This resource fetches the nftypes-nfservices configuration based on the query parameters.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices
The following table describes the data structures supported by the GET response body on this resource:
Table 2-64 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfServiceWrapper |
M | 1..N | 200 OK | Indicates nftypes-nfservices configurations. |
This resource fetches the nftypes-nfservices configuration based on the
configName parameter.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}
The following table describes the path parameter supported by this resource:
Table 2-65 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Fetches configuration information for
configName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-66 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfServiceWrapper |
M | 1 | 200 OK | Indicates nftypes-nfservices configurations. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
This resource fetches all the nftypes-nfservices configurations based on
configName, nfType, and
serviceName, apiname, and
apinameaxheading query parameters.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices?configName={value}&nfType={value2}&serviceName={value3}
The following table describes the query parameters:
Table 2-67 Query Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | O |
|
nfType |
String | O | |
serviceName |
String | O | |
apiName |
String | O | |
nfRole |
String | O | |
apiNameAxHeading |
String | O |
The following table describes data structures supported by the GET response body on these resources:
Table 2-68 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfServiceWrapper |
M | 1 | 200 OK | Indicates nftypes-nfservices configurations. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
curl -X 'GET' \
'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices?nfType=&serviceName=&configName=&apiName=&nfRole=&apiNameAxHeading=' \
-H 'accept: application/json'
[
{
"configName": "5g_eir_n5g-eir-eic",
"nfServiceData": {
"nfType": "5G_EIR",
"serviceName": "n5g-eir-eic",
"apiName": "n5g-eir-eic",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "n5g-eir_equipmentidentitycheck",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "af",
"nfServiceData": {
"nfType": "AF",
"serviceName": "noservice",
"apiName": "",
"serviceType": [
"notification-message-service"
],
"apiNameAxHeading": "",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "amf_namf-comm",
"nfServiceData": {
"nfType": "AMF",
"serviceName": "namf-comm",
"apiName": "namf-comm",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "namf_communication",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "amf_namf-evts",
"nfServiceData": {
"nfType": "AMF",
"serviceName": "namf-evts",
"apiName": "namf-evts",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "namf_eventexposure",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "amf_namf-loc",
"nfServiceData": {
"nfType": "AMF",
"serviceName": "namf-loc",
"apiName": "namf-loc",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "namf_location",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "amf_namf-mt",
"nfServiceData": {
"nfType": "AMF",
"serviceName": "namf-mt",
"apiName": "namf-mt",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "namf_mt",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "ausf_nausf-auth",
"nfServiceData": {
"nfType": "AUSF",
"serviceName": "nausf-auth",
"apiName": "nausf-auth",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nausf_ueauthentication",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "ausf_nausf-sorprotection",
"nfServiceData": {
"nfType": "AUSF",
"serviceName": "nausf-sorprotection",
"apiName": "nausf-sorprotection",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nausf_sorprotection",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "ausf_nausf-upuprotection",
"nfServiceData": {
"nfType": "AUSF",
"serviceName": "nausf-upuprotection",
"apiName": "nausf-upuprotection",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nausf_upuprotection",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "bsf_nbsf-management",
"nfServiceData": {
"nfType": "BSF",
"serviceName": "nbsf-management",
"apiName": "nbsf-management",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nbsf_management",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "chf_nchf-convergedcharging",
"nfServiceData": {
"nfType": "CHF",
"serviceName": "nchf-convergedcharging",
"apiName": "nchf-convergedcharging",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nchf_convergedcharging",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "chf_nchf-spendinglimitcontrol",
"nfServiceData": {
"nfType": "CHF",
"serviceName": "nchf-spendinglimitcontrol",
"apiName": "nchf-spendinglimitcontrol",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nchf_spendinglimitcontrol",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "gmlc_ngmlc-loc",
"nfServiceData": {
"nfType": "GMLC",
"serviceName": "ngmlc-loc",
"apiName": "ngmlc-loc",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "ngmlc_location",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "lmf_nlmf-loc",
"nfServiceData": {
"nfType": "LMF",
"serviceName": "nlmf-loc",
"apiName": "nlmf-loc",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nlmf_location",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "n3iwf",
"nfServiceData": {
"nfType": "N3IWF",
"serviceName": "noservice",
"apiName": "",
"serviceType": [
"notification-message-service"
],
"apiNameAxHeading": "",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "nef_3gpp-as-session-with-qos",
"nfServiceData": {
"nfType": "NEF",
"serviceName": "3gpp-as-session-with-qos",
"apiName": "3gpp-as-session-with-qos",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "assessionwithqos",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "nef_3gpp-traffic-influence",
"nfServiceData": {
"nfType": "NEF",
"serviceName": "3gpp-traffic-influence",
"apiName": "3gpp-traffic-influence",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "trafficinfluence",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "nef_nnef-eventexposure",
"nfServiceData": {
"nfType": "NEF",
"serviceName": "nnef-eventexposure",
"apiName": "nnef-eventexposure",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnef_eventexposure",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "nef_nnef-pfdmanagement",
"nfServiceData": {
"nfType": "NEF",
"serviceName": "nnef-pfdmanagement",
"apiName": "nnef-pfdmanagement",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnef_pfdmanagement",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "nrf_nnrf-disc",
"nfServiceData": {
"nfType": "NRF",
"serviceName": "nnrf-disc",
"apiName": "nnrf-disc",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnrf_nfdiscovery",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "nrf_nnrf-nfm",
"nfServiceData": {
"nfType": "NRF",
"serviceName": "nnrf-nfm",
"apiName": "nnrf-nfm",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnrf_nfmanagement",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "nrf_nnrf-oauth2",
"nfServiceData": {
"nfType": "NRF",
"serviceName": "nnrf-oauth2",
"apiName": "nnrf-oauth2",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": null,
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:22:58"
},
{
"configName": "nssf_nnssf-nssaiavailability",
"nfServiceData": {
"nfType": "NSSF",
"serviceName": "nnssf-nssaiavailability",
"apiName": "nnssf-nssaiavailability",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnssf_nssaiavailability",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "nssf_nnssf-nsselection",
"nfServiceData": {
"nfType": "NSSF",
"serviceName": "nnssf-nsselection",
"apiName": "nnssf-nsselection",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnssf_nsselection",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "nwdaf_nnwdaf-analyticsinfo",
"nfServiceData": {
"nfType": "NWDAF",
"serviceName": "nnwdaf-analyticsinfo",
"apiName": "nnwdaf-analyticsinfo",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnwdaf_analyticsinfo",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "nwdaf_nnwdaf-eventssubscription",
"nfServiceData": {
"nfType": "NWDAF",
"serviceName": "nnwdaf-eventssubscription",
"apiName": "nnwdaf-eventssubscription",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nnwdaf_eventssubscription",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "pcf_npcf-am-policy-control",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-am-policy-control",
"apiName": "npcf-am-policy-control",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_ampolicycontrol",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "pcf_npcf-bdtpolicycontrol",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-bdtpolicycontrol",
"apiName": "npcf-bdtpolicycontrol",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_bdtpolicycontrol",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "pcf_npcf-eventexposure",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-eventexposure",
"apiName": "npcf-eventexposure",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_eventexposure",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "pcf_npcf-policyauthorization",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-policyauthorization",
"apiName": "npcf-policyauthorization",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_policyauthorization",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "pcf_npcf-smpolicycontrol",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-smpolicycontrol",
"apiName": "npcf-smpolicycontrol",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_smpolicycontrol",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "pcf_npcf-ue-policy-control",
"nfServiceData": {
"nfType": "PCF",
"serviceName": "npcf-ue-policy-control",
"apiName": "npcf-ue-policy-control",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "npcf_uepolicycontrol",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "scp",
"nfServiceData": {
"nfType": "SCP",
"serviceName": "noservice",
"apiName": "",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "",
"nfRole": "STANDARD_5G_NE"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "sepp",
"nfServiceData": {
"nfType": "SEPP",
"serviceName": "noservice",
"apiName": "",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "",
"nfRole": "STANDARD_5G_NE"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
},
{
"configName": "smf_nsmf-event-exposure",
"nfServiceData": {
"nfType": "SMF",
"serviceName": "nsmf-event-exposure",
"apiName": "nsmf-event-exposure",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nsmf_eventexposure",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "smf_nsmf-pdusession",
"nfServiceData": {
"nfType": "SMF",
"serviceName": "nsmf-pdusession",
"apiName": "nsmf-pdusession",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nsmf_pdusession",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "smsf_nsmsf-sms",
"nfServiceData": {
"nfType": "SMSF",
"serviceName": "nsmsf-sms",
"apiName": "nsmsf-sms",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nsmsf_smservice",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "udm_nudm-ee",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-ee",
"apiName": "nudm-ee",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudm_ee",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "udm_nudm-pp",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-pp",
"apiName": "nudm-pp",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudm_pp",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "udm_nudm-sdm",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-sdm",
"apiName": "nudm-sdm",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudm_sdm",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "udm_nudm-ueau",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-ueau",
"apiName": "nudm-ueau",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudm_ueau",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "udm_nudm-uecm",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-uecm",
"apiName": "nudm-uecm",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudm_uecm",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
},
{
"configName": "udr_nudr-dr",
"nfServiceData": {
"nfType": "UDR",
"serviceName": "nudr-dr",
"apiName": "nudr-dr",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudr_datarepository",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "udr_nudr-group-id-map",
"nfServiceData": {
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"apiName": "nudr-group-id-map",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudr_groupidmap",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:31",
"updatedTimestamp": "2026-03-13 11:12:31"
},
{
"configName": "udsf_nudsf-dr",
"nfServiceData": {
"nfType": "UDSF",
"serviceName": "nudsf-dr",
"apiName": "nudsf-dr",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nudsf_datarepository",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
},
{
"configName": "upf",
"nfServiceData": {
"nfType": "UPF",
"serviceName": "noservice",
"apiName": "",
"serviceType": [
"notification-message-service"
],
"apiNameAxHeading": "",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:32",
"updatedTimestamp": "2026-03-13 11:12:32"
}
]Sample of a Successful GET API with path Parameter
curl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices/config1' -H 'accept: application/json'
{
"configName": "config1",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-uecm",
"apiName": "apiName1",
"apiNameAxHeading": "apiNameAxHeading1",
"serviceType": ["notification-message-service", "request-message-service"],
"nfRole": STANDARD_5G_NF
},
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}
Sample of a Successful GET API with Query Parameters
curl -X 'GET' \
'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices?nfType=AUSF&serviceName=nausf-auth&configName=ausf_nausf-auth&apiName=&nfRole=&apiNameAxHeading=' \
-H 'accept: application/json'
[
{
"configName": "ausf_nausf-auth",
"nfServiceData": {
"nfType": "AUSF",
"serviceName": "nausf-auth",
"apiName": "nausf-auth",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "nausf_ueauthentication",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:33",
"updatedTimestamp": "2026-03-13 11:12:33"
}
]
curl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' -H 'accept: application/json'
{
"title": "Not Found",
"status": "404",
"detail": "NfTypes-NfServices data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Foundcurl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices?configName=config108' -H 'accept: application/json'
{
"title": "Not Found",
"status": "404",
"detail": "NfTypes-NfServices data not found against given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundPUT
This resource configures nftypes-nfservices for given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}
The following table describes the data structures supported by the PUT response body on this resource:
Table 2-69 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfServiceWrapper |
M | 1 | 200 OK | Indicates nftypes-nfservices configurations to be added or modified. |
This resource fetches the nftypes-nfservices configuration based on the
configName parameter.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}
The following table describes the path parameter supported by this resource:
Table 2-70 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Signifies a unique configuration name to identify the configuration. The name must be unique, as it serves as the key for the record. |
The following table describes data structures supported by the PUT response body on these resources:
Table 2-71 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfServiceWrapper |
M | 1 | 201 Created | Indicates new nftypes-nfservices configuration creation. |
NfServiceWrapper |
M | 1 | 200 OK | Updates the existing record. |
ProblemDetails |
M | 1 | 400 Bad Request | Indicates problem details. |
ProblemDetails |
M | 1 | 403 Forbidden | Updates the fields that cannot be modified. |
curl -X 'PUT' \
'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices/udm_nudm-uecm' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "udm_nudm-uecm",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-uecm",
"apiName": "apiName1",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "apiNameAxHeading1",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-13 11:12:34"
}' {
"configName": "udm_nudm-uecm",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-uecm",
"apiName": "apiname1",
"serviceType": [
"notification-message-service",
"request-message-service"
],
"apiNameAxHeading": "apinameaxheading1",
"nfRole": "STANDARD_5G_NF"
},
"createdTimestamp": "2026-03-13 11:12:34",
"updatedTimestamp": "2026-03-18 06:32:10"
}curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config2",
"nfServiceData": {
"nfType": "UDM",
"serviceName": "nudm-sdm",
"apiName": "apiName1",
"serviceType": [
"notification-message-service",
"request-message-service"
]
}
}' {
"title": "Bad Request",
"status": 400,
"detail": "ApiName is not unique. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config2",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Error: Bad RequestSample 2 of an Error PUT Response
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config1",
"nfServiceData": {
"nfType": "nfT2",
"serviceName": "nfsvc1",
"apiName": "something",
"serviceType": []
},
"createdTimestamp": "string",
"updatedTimestamp": "string"
}'
{
"title": "Forbidden",
"status": 403,
"detail": "NF Type and NF Service Name should not be modified for existing configuration. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config1",
"cause": "MODIFICATION_NOT_ALLOWED"
}
403 Error: Forbidden
DELETE
This resource removes the nftypes-nfservices configuration based on
configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}
The following table describes the path parameter supported by this resource:
Table 2-72 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Removes configurations based on configName. |
The following table describes the data structures supported by the DELETE response body on this resource:
Table 2-73 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
None |
- | 1 | 204 No Content | In successful cases, only response code is returned. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates the problem details. |
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'Response: 200 OK or 204 No
ContentSample of an Error DELETE Response
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "NfTypes-NfServices data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-74 NfServiceWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Signifies a unique configuration name to identify
the configuration. The name must be unique, as it serves as the key
for the record.
Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
nfServiceData |
JSON | M | Provides configuration values of nfType,
apiName, serviceName, and
serviceType.
|
createdTimestamp |
String | Read Only | Timestamp of the created record. This is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes parameters of nfServiceData:
Table 2-75 nfServiceData Parameters
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
nfType |
String | M | NA | Allowed character combinations should be alpha-numeric, hyphen, and underscore. | Indicates the NF type for which routing options are
configured. This is either 3GPP defined NFType as per TS 29.510 or
custom NFType.
Length: 100 |
serviceName |
String | M | NA | Allowed character combinations should be
alpha-numeric, hyphen, and underscore.
"default" is not supported as a service name. |
Indicates the NF service name for which routing
options are configured.
This is either 3GPP defined serviceName as per TS29.510 or any custom service name. For proxy network entities, such as SCP and SEPP,
Note:
Length: 100 |
apiName |
String | O | NA | Allowed character combinations should be alpha-numeric, hyphen, and underscore. | Ensure that the API name is unique across all
records.
In the absence of
When Note:
configName does not show any value for
apiName when nfType is not
configured. When any value is configured for
nfType, apiName is not
included in
configName:Length: 256 |
apiNameAxHeading |
String |
M | NA | Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
Configures the Its value is API name taken from the heading of the relevant annex A.x as defined in the corresponding 3GPP TS of that API. The value of this parameter is the first part of the callback type values in the 3gpp-Sbi-Callback header in a notification message. For example, when Validations:
Length: 256 |
serviceType |
Array(String) |
M |
|
["notification-message-service", "request-message-service"] | When this attribute is blank, serviceType is
automatically configured for both notification-message-service and
request-message-service.
When |
2.7 Configuring Canary Release Config Set
The canary-release REST API inspects the version (API version) attribute of the NF Service profile published by the NFs during NF registration or update. It can identify the release as a canary version if the version matches the configured value. There are two versions of API, Production version (older version) and Canary version (newer version) of the service instance. SCP distributes traffic between the Production version and the Canary versions based on operator configuration.
The following sample REST messages provide the details about the operations and parameters for CanarayRelease Options. The default values of parameters related to CanaryRelease are mentioned in the following samples, however, you can modify these values. These parameters are applicable at the pod level.
Resources
The following table describes the resource name to retrieve, add, or update canary-release configuration data:
Table 2-76 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
|
canary-release |
/ocscp/scpc-configuration/{version}/canary-release | GET |
Retrieves all stored canary release configuration data. |
|
canary-release |
/ocscp/scpc-configuration/{version}/canary-release/{configName} | GET |
Retrieves canary release configuration data for the given configName. |
|
canary-release |
/ocscp/scpc-configuration/{version}/canary-release/{configName} | PUT | Creates new canary release config data.
Updates canary release data if the record exists.
|
| canary-release | /ocscp/scpc-configuration/{version}/canary-release/{configName} | DELETE | Removes canary release configuration data for the
given configName.
Cannot remove the records if it is used in the OCSCP_NF_SERVICE_CONFIG_SET table. The default record (defaultCanaryConfigName) cannot be deleted. |
Resource Definition
GET
This resource fetches all the canary release configurations.
Resource URI:
/ocscp/scpc-configuration/{version}/canary-release
The following table describes the data structures supported by the GET response body on this resource:
Table 2-77 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| canaryReleaseData | M | 1..N | 200 OK | Fetches all canary release data record. |
This resource fetches the canary release configuration based on configName.
Resource URI:
/ocscp/scpc-configuration/{version}/canary-release/{configName}
The following table describes the path parameter supported by this resource:
Table 2-78 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Fetches configuration information for
configName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-79 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| canaryReleaseData | M | 1 | 200 OK | Indicates canaryReleaseData configurations. |
| ProblemDetails | M | 1 | 404 Not Found | Indicates problem details. |
curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json'{
"configName": "config1",
"canaryData": {
"apiFullVersion": "2.0.0",
"canaryTraffic": 5
},
"createdTimestamp": "2024-04-24 14:50:56.0",
"updatedTimestamp": "2024-04-24 14:50:56.0"
}Sample of an Error GET Response
curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Canary release data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures canary release configuration for given data.
Resource URI:
/ocscp/scpc-configuration/{version}/canary-release/{configName}
The following table describes the path parameter supported by this resource:
Table 2-80 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Unique identifier for the record
configName.
|
The following table describes the data structures supported by the PUT request body on this resource:
Table 2-81 Request Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
| canaryReleaseData | M | 1 | The canaryRelease data to be added or updated. |
The following table describes data structures supported by the PUT response body on these resources:
Table 2-82 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| canaryReleaseData | M | 1 | 200 OK | Indicates successful update of canary release configurations. |
| canaryReleaseData | M | 1 | 201 Created | Indicates successful creation of canary release configurations. |
| ProblemDetails | M | 1 | 400 Bad Request | Indicates the problem details. |
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config1",
"canaryData": {
"apiFullVersion": "2.0.0",
"canaryTraffic": 5
}
}' {
"configName": "config1",
"canaryData": {
"apiFullVersion": "2.0.0",
"canaryTraffic": 5
},
"createdTimestamp": "2024-08-02 09:47:12",
"updatedTimestamp": "2024-08-02 09:47:12"
}Sample of an Error PUT Response
curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "config1",
"canaryData": {
"apiFullVersion": "adfasdfldksfa;sdfk;asdlfasdfljsadf",
"canaryTraffic": 5
}
}'
{
"title": "Bad Request",
"status": 400,
"detail": "Field apiFullVersion format is incorrect. Please refer to the user guide.",
"instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
"cause": "INVALID_VALUE"
}
400 Error: Bad Request
DELETE
This resource removes all the canary release configuration based on
configName.
Resource URI:
/ocscp/scpc-configuration/{version}/canary-release/{configName}
The following table describes the path parameter supported by this resource:
Table 2-83 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| configName | String | M | Removes configurations based on configName. |
The following table describes the data structures supported by the DELETE response body on this resource:
Table 2-84 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| NA | M | 1 | 204 No Content | Successful deletion of nfServiceConfigData. |
| ProblemDetails | M | 1 | 404 Not Found | Indicates the problem details. |
| ProblemDetails | M | 1 | 403 Forbidden | Indicates the problem details. |
curl -X 'DELETE' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json'204 No Contentcurl -X 'DELETE' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
-H 'accept: application/json'{
"title": "Not Found",
"status": 404,
"detail": "Canary release data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundSample 2 of an Error DELETE Response
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/defaultCanaryConfigName' \
-H 'accept: application/json'
{
"title": "Forbidden",
"status": 403,
"detail": "The default configuration cannot be deleted. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/canary-release/defaultCanaryConfigName",
"cause": "DATA_CANT_DELETED"
}
403 Error: Forbidden
Data Model
The following table describes data model for request or response:
Table 2-85 canaryReleaseData
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Unique configName key to identify canary release
configuration.
Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
canaryData |
JSON | M | JSON containing apiFullVersion of canaryTraffic. |
createdTimestamp |
String | Read Only | Timestamp of the created record. This is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Timestamp of the updated record. This is not required in the request, but it is present in the response. |
The following table describes parameters of
canaryData:
Table 2-86 canaryData
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Range | Description |
|---|---|---|---|---|---|
apiFullVersion |
String | M | NA | - | API version to redirect requests. |
canaryTraffic |
int | M | NA | 0-100 | Represents percentage of traffic to be routed. |
2.8 Configuring Topology Source Info
preferredTopologySource.
This REST API operates in either AUTO (AUTONOMOUS) or USER mode. This setting determines how SCP behaves when using locally sourced topology information.
Resources
The following table describes the resource name to retrieve, add, or remove the topologysourceinfo configuration data:
Table 2-87 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Request Body, Query Parameters | Response Status Code, Body | Description |
|---|---|---|---|---|---|
| topologysourceinfo | /ocscp/scpc-configuration/v1/topologysourceinfo | GET | - | 200 | Reads the topology source information for all the NF types. |
| topologysourceinfo | /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} | PUT |
Body: TopologySource |
|
Creates or updates the topology source information for a specific NF type. |
| topologysourceinfo | /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} | DELETE |
Query Parameter: NFType |
|
Removes the topology source information for a specific NF type. |
| topologysourceinfo | /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} | GET |
Query Parameter: NFType |
|
Reads the topology source information for a specific NF type. |
Data Model
The following table describes data model for request or response:
Table 2-88 TopologySourceInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nftype |
String | M | Identifies the NF type to which this configuration
applies.
Length: 256 Default value: NA Allowed values: Any valid NF type as configured in Configuring NFTypes-NFServices or "*". |
topologysource |
Enumeration (TopologySource) | M | The source from which the NF profile is learned.
Default value: NA Allowed values:
|
preferredTopologySource |
Enumeration (TopologySourcePreference) | O | The preferred source is used when a profile with the
same instance ID is learned from both NRF and LOCAL.
The value of
this parameter depends on the Default value:
Allowed values: NRF, LOCAL
|
localNfTopologyCfgMode |
Enumeration(LocalNfTopologyConfigMode) | O | Indicates the mode to configure LOCAL NF topology.
Default value: USER Allowed values: AUTO,USER localNfTopologyCfgMode can be set to AUTO only when the topologySource is NRF or NRF_AND_LOCAL. |
localNfTopologyRetentionPeriod |
String | O | Indicates the local NF topology retention period
after an NF_DEREGISTERED request is received from NRF.
Default value: "7D" Allowed values: Any combination of number with M, H, and D in range 5M to 14D. Multiple units are not supported.
Note:
|
Table 2-89 TopologySource
| Topology Source Values | Description |
|---|---|
| NRF | The SCP 5G topology information source is NRF. |
| LOCAL | The SCP 5G topology information source is local, not NRF.
This configuration may result from an NF service failure and may trigger restoration procedures. For more information, see clause 6.2 of 3GPP TS 23.527.
|
| NRF_AND_LOCAL | The SCP 5G topology information source is both NRF and LOCAL. If
there is a conflicting instanceId, SCP selects routing rules based
on the configured preferredTopologySource.
|
Table 2-90 TopologySourcePreference
| Topology Source Preference Values | Description |
|---|---|
| NRF | When topologySource is NRF_AND_LOCAL and the
same instanceId is learned from both sources, the profile learned
from NRF takes precedence over the profile learned locally.
|
| LOCAL | When topologySource is NRF_AND_LOCAL and the
same instanceId is learned from both sources, the profile learned
locally through the SCP REST API takes precedence over the profile
learned from the NRF.
|
Table 2-91 LocalNfTopologyConfigMode
| Local NF Topology Mode | Description |
|---|---|
| AUTO | SCP creates a LOCAL NF topology based on topology learned from NRF. |
| USER | SCP does not create a LOCAL NF topology based on topology learned from the NRF. You can configure it. |
Note:
Any update to an SCP-owned profile through the NF Profile REST API reassigns ownership of that profile from SCP to USER.Table 2-92 Request Body
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
topologySourceInfo |
TopologySourceInfo | M | Indicates the topology source information. |
The response body data model varies based on the REST API operation status.
Table 2-93 Response Body
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Code | Description |
|---|---|---|---|---|
array(TopologySourceInfo ) |
M | 1 | 200 OK | Indicates a list of TopologySourceInfo
configurations.
|
ProblemDetails |
M | 1 | 400 BAD REQUEST | Returned when invalid input is provided. |
Resource Definition
GET ALL REST API
This resource fetches all the topology source configuration.
Resource URI: /ocscp/scpc-configuration/{version}/
topologysourceinfo
The following table describes the data model supported by the GET response body on this resource:
Table 2-94 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
List<TopologySourceInfo> |
M | 1 | 200 OK | Indicates the topology source info of nfType. |
GET REST API
This resource fetches the topology source configuration for nftype.
Resource URI: /ocscp/scpc-configuration/{version}/
topologysourceinfo/{nftype}
The following table describes the data structure supported by the GET response body on this resource:
Table 2-95 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
TopologySourceInfo |
M | 1 | 200 OK | Indicates the topology source info of nfType. |
ProblemDetails |
M | 1 | 404 Not Found | Returns when no matching entry is found. |
Sample of a Successful GET API
curl -X 'GET' 'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/UPF' -H 'accept: application/json'
{
"nftype": "UPF",
"topologysource": "NRF_AND_LOCAL",
"preferredTopologySource": "NRF",
"localNfTopologyCfgMode": "USER",
"localNfTopologyRetentionPeriod": "6M"
}
Sample of a Configuration Not Found
curl -X 'GET' \
'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF' \
-H 'accept: application/json'
{"title":"Not Found","status":404,"detail":"The nfType is not configured in Topology Source Info API. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/topologysourceinfo/SMF","cause":"DATA_NOT_FOUND"}
PUT
This resource adds or updates the topology source configuration using the request body.
Resource URI: /ocscp/scpc-configuration/{version}/
topologysourceinfo/{nftype}
The following table describes the data structure supported by PUT response body on this resource:
Table 2-96 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Code | Description |
|---|---|---|---|---|
TopologySourceInfo(json) |
M | 1 | 200 OK | Adds a new topology source configuration. |
TopologySourceInfo(json) |
M | 1 | 201 Created | Indicates updated existing topology source configuration. |
String |
M | 1 | 400 BAD REQUEST | Returns problem description when invalid input is provided. |
Sample of a Successful PUT API
curl -X 'PUT' \
'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/UPF' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"nftype": "UPF",
"topologysource": "NRF_AND_LOCAL",
"preferredTopologySource": "NRF",
"localNfTopologyCfgMode": "USER",
"localNfTopologyRetentionPeriod": "6m"
}'
{"nftype":"UPF","topologysource":"NRF_AND_LOCAL","preferredTopologySource":"NRF","localNfTopologyCfgMode":"USER","localNfTopologyRetentionPeriod":"6M"}
DELETE
This resource removes the topology source configuration.
Resource URI: /ocscp/scpc-configuration/{version}/
topologysourceinfo/{nftype}
The following table describes the data model supported by the DELETE response body on this resource:
Table 2-97 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
Default |
M | 1 | 204 OK | Indicates the topology source configuration removed for nfType. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates the problem details. |
Sample of a Successful of DELETE API
curl -v 'DELETE' 'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF' -H 'accept: application/json'
HTTP/1.1 204 No Content
Sample of an Error DELETE API
curl -v 'DELETE' 'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF' -H 'accept: application/json'
HTTP/1.1 404 Not Found
{"title":"Not Found","status":404,"detail":"The nfType is not configured in Topology Source Info API. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/topologysourceinfo/SMF","cause":"DATA_NOT_FOUND"}
2.9 Configuring System Options
These options are used to control system behavior per service. You can configure System Options by using GET and PUT operations.
Note:
- The default System Option values are provided for the following parameters
during the installation of SCP through Helm:
- tcp.connectTimeout
- tcp.tcpKeepalive
- tcp.enable
- tcp.probes
- tcp.time
- tcp.interval
- The same functionality is achieved using the
OutlierDetection(URI:/ocscp/scpc-configuration/{version}/outlier-detection) API to thenextHopScpODRulerule assigned toodScpRuleName.
REST Message Sample
Request_Type: GET and PUT
http://<SCP configuration FQDN/External
IP>:8081//ocscp/scpc-configuration/v1/systemoptions{
"nextHopProxyODConfig": [
{
"nfType": "SCP",
"odEnabled": false,
"odRuleName": "nextHopScpODRule"
}
],
"nextHopRoamingProxyODConfig": [
{
"nfType": "*",
"odEnabled": false,
"odRuleName": "defaultRule"
}
],
"nextHopProxyCBConfig": [
{
"nfType": "SCP",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"nextHopRoamingProxyCBConfig": [
{
"nfType": "*",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"forwardNfDiscoveryHeaders": true,
"viaHeaderCheckEnabled": true,
"interPlmnFqdnValidationEnabled": false,
"trafficPolicy": {
"connectionPool": {
"http": {
"idleTimeout": "600s"
},
"https": {
"idleTimeout": "600s"
},
"tcp": {
"connectTimeout": "250ms",
"tcpKeepalive": {
"enable": true,
"probes": 9,
"time": "180s",
"interval": "1s"
}
}
}
},
"ttl": "900s",
"dnsQueryTimeout": "5000ms"
}The following table describes System Options parameters:
Table 2-98 Configuring Parameters for System Options
| Parameter | Value | Description |
|---|---|---|
| odEnabled | Boolean | Provides information whether the Outlier Detection
feature is enabled. The default value is false.
For more information, see Outlier Detection Configuration. Default value: false |
| odScpRuleName | String | Indicates the name of the rule holding the
configuration of outlier detection for next Hop SCP. The Outlier Detection feature for
next Hop SCP works based on configuration under this rule.
For more information, see Outlier Detection Configuration. Default value: nextHopScpODRule |
| odSeppEnabled | Boolean | Enables or disables the Outlier Detection feature for
the next Hop SEPP.
For more information, see Outlier Detection Configuration. Default value: false |
| odSeppRuleName | String | Indicates the name of the rule holding the
configuration of outlier detection for next Hop SEPP. The Outlier Detection feature
for next Hop SEPP works based on configuration under this rule.
For more information, see Outlier Detection Configuration. Default value: defaultRule |
| cbScpEnabled | Boolean | Enables or disables circuit breaking for next Hop SCP.
The default value is false.
For more information, see Circuit Breaking Configurations. Default value: false |
| cbScpRuleName | String | Name of the rule holding the configuration of outlier
detection for next Hop SCP. Based on configuration under this rule, circuit breaking
for next Hop SCP will work. The default value is "defaultRule"
string. { "ruleName": "defaultRule", "data": { "v1": { "http2MaxRequests":
1000 } } }For more information, see Circuit Breaking Configurations. Default value: defaultRule |
| cbSeppEnabled | Boolean | Enables or disables circuit breaking for next Hop
SEPP. The default value is false.
For more information, see Circuit Breaking Configurations. Default value: false |
| cbSeppRuleName | String | Name of the rule holding the configuration of circuit
breaking for next Hop SEPP. Based on configuration under this Rule, circuit breaking
for next Hop SEPP will work. The default value is "defaultRule"
string.{ "ruleName": "defaultRule", "data": { "v1": { "http2MaxRequests":
1000 } } }For more information, see Circuit Breaking Configurations. Default value: defaultRule |
| forwardNfDiscoveryHeaders | Boolean | Enables or disables the forwarding of discovery
headers to next hop SCP.
Default value: true |
| trafficPolicy.connectionPool.http.idleTimeout | String | The idle timeout for upstream connection pool
connections. The idle timeout is defined as the period in which there are no active
requests. If not set, there is no idle timeout. When the idle timeout is reached the
connection will be closed. Note that request based timeouts mean that HTTPS/2 PINGs
will not keep the connection alive..
Default value: 600s |
| trafficPolicy.connectionPool.https.idleTimeout | String | The idle timeout for upstream connection pool
connections is defined as the period in which there are no active requests. If not
set, there is no idle timeout. When the idle timeout is reached, the connection will
be closed. Note that request-based timeouts mean that HTTP/2 PINGs will not keep the
connection alive.
Default value: 600s |
| trafficPolicy.connectionPool.tcp.connectTimeout | String | TCP Connection timeout. The valid time units are ns,
us (or µs), ms, s. For example: 300ms.
Default value: 250ms |
| trafficPolicy.connectionPool.tcp.tcpKeepalive | TcpKeepalive | Contains the TcpKeepalive information. If set, enables TCP Keepalives to upstream peer. All the parameters of tcpkeepAlive are required if this information is configured. |
| trafficPolicy.connectionPool.tcp.tcpKeepalive.enable | Boolean | Enables or disables tcp keepalive for upstream
connections.
Default value: true |
| trafficPolicy.connectionPool.tcp.tcpKeepalive.probes | Integer |
Maximum number of keepalive probes to send without response before deciding the connection is dead. For example: 9 The default value is 9, minimum value is 1, and maximum value is 16. |
| trafficPolicy.connectionPool.tcp.tcpKeepalive.time | String |
The time duration a connection needs to be idle before keep-alive probes are sent. The valid time unit is second. For example: 180s The default value is 180 seconds, minimum value is 1 second, and maximum value is 7200 seconds. |
| trafficPolicy.connectionPool.tcp.tcpKeepalive.interval | String |
The time duration between keep-alive probes. The valid time unit is seconds. For example: 1s The default value is 1 second, minimum value is 1 second, and maximum value is 120 seconds. |
| ttl | String | Indicates the duration in which the DNS record is
valid. This is used by the DNS SRV feature to refresh the DNS SRV record.
The range is between 30 to 86400 seconds. Default value: 900s |
| dnsQueryTimeout | String | The maximum amount of time in milliseconds to wait
for a response during a DNS SRV query.
The range is between 30 to 86400 seconds. Default value: 500ms |
| viaHeaderCheckEnabled | boolean | The relevance of this parameter arises when the
3gpp-Sbi-Target-apiRoot value contains a PLMN ID that is local to the SCP.
Note: The first routing attempt will always be based on the 3gpp-Sbi-Target-apiRoot, but the parameter's relevance is in selecting the alternate producer for intra-PLMN routing. Default value: true |
| interPlmnFqdnValidationEnabled | boolean | The relevance of this parameter arises when
viaHeaderCheckEnabled is set to false or the viaHeader is not present in the incoming
request, and the 3gpp-Sbi-Target-apiRoot value contains a PLMN ID that is local to the
SCP.
Note: The first routing attempt will always be based on the 3gpp-Sbi-Target-apiRoot header, but the relevance of this parameter is in selecting the alternate producer for intra-PLMN routing. Default value: true |
Sample of a Successful GET API
{
"nextHopProxyODConfig": [
{
"nfType": "SCP",
"odEnabled": false,
"odRuleName": "nextHopScpODRule"
}
],
"nextHopRoamingProxyODConfig": [
{
"nfType": "*",
"odEnabled": false,
"odRuleName": "defaultRule"
}
],
"nextHopProxyCBConfig": [
{
"nfType": "SCP",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"nextHopRoamingProxyCBConfig": [
{
"nfType": "*",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"forwardNfDiscoveryHeaders": true,
"viaHeaderCheckEnabled": true,
"interPlmnFqdnValidationEnabled": false,
"trafficPolicy": {
"connectionPool": {
"http": {
"idleTimeout": "600s"
},
"https": {
"idleTimeout": "600s"
},
"tcp": {
"connectTimeout": "250ms",
"tcpKeepalive": {
"enable": true,
"probes": 9,
"time": "180s",
"interval": "1s"
}
}
}
},
"ttl": "900s",
"dnsQueryTimeout": "5000ms"
}
curl -X 'GET' \
'http://<localhost>:31359/ocscp/scpc-configuration/v1/systemoptions' \
-H 'accept: application/json'Sample of a Successful PUT API
curl -X 'PUT' \
'http://<localhost>:31359/ocscp/scpc-configuration/v1/systemoptions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nextHopProxyODConfig": [
{
"nfType": "SCP",
"odEnabled":false,
"odRuleName": "nextHopScpODRule"
}
],
"nextHopRoamingProxyODConfig": [
{
"nfType": "*",
"odEnabled": false,
"odRuleName": "defaultRule"
}
],
"nextHopProxyCBConfig": [
{
"nfType": "SCP",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"nextHopRoamingProxyCBConfig": [
{
"nfType": "*",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"forwardNfDiscoveryHeaders": true,
"viaHeaderCheckEnabled": true,
"interPlmnFqdnValidationEnabled": false,
"trafficPolicy": {
"connectionPool": {
"http": {
"idleTimeout": "600s"
},
"https": {
"idleTimeout": "600s"
},
"tcp": {
"connectTimeout": "250ms",
"tcpKeepalive": {
"enable": true,
"probes": 9,
"time": "180s",
"interval": "1s"
}
}
}
},
"ttl": "900s",
"dnsQueryTimeout": "5000ms"
}'
Response Body:
{
"nextHopProxyODConfig": [
{
"nfType": "SCP",
"odEnabled": true,
"odRuleName": "nextHopScpODRule"
}
],
"nextHopRoamingProxyODConfig": [
{
"nfType": "*",
"odEnabled": false,
"odRuleName": "defaultRule"
}
],
"nextHopProxyCBConfig": [
{
"nfType": "SCP",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"nextHopRoamingProxyCBConfig": [
{
"nfType": "*",
"cbEnabled": false,
"cbRuleName": "defaultRule"
}
],
"forwardNfDiscoveryHeaders": true,
"viaHeaderCheckEnabled": true,
"interPlmnFqdnValidationEnabled": false,
"trafficPolicy": {
"connectionPool": {
"http": {
"idleTimeout": "600s"
},
"https": {
"idleTimeout": "600s"
},
"tcp": {
"connectTimeout": "250ms",
"tcpKeepalive": {
"enable": true,
"probes": 9,
"time": "180s",
"interval": "1s"
}
}
}
},
"ttl": "900s",
"dnsQueryTimeout": "5000ms"
}2.10 Configuring Overload Configuration Information
This section provides information about overload control configuration parameters required for sending OCI to peers.
Resources
The following table describes the resource name to retrieve, add, or update overload control configuration data:
Table 2-99 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| oci-config | /ocscp/scpc-configuration/v1/oci-config | GET | Retrieves OCI config at SCP. |
| oci-config | /ocscp/scpc-configuration/v1/oci-config | PUT | Updates OCI config parameters. |
| oci-config | /ocscp/scpc-configuration/v1/oci-config | DELETE | Removes OCI config rule. |
Resource Definition
GET
This resource fetches the OCI Config details (OCIConfigWrapper) based on the query parameters.
If no query parameter is provided, all the SCP feature details are returned.
Resource URI:
/ocscp/scpc-configuration/v1/oci-config
Response Body
Response body data model varies based on the REST operation status.
Table 2-100 Response Body Parameters
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| OCIConfigWrapper | M | 1 | 200 OK | Indicates the list of OCI Config (OCIConfigWrapper) matching criteria. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when data is not found for given query parameters. |
This resource fetches the OCI Config details (OCIConfigWrapper) based on the ociConfigRule query parameter.
If no query parameter is provided, all the SCP feature details are returned.
Resource URI:
/ocscp/scpc-configuration/{version}/oci-config?ociConfigRule=defaultOciConfigRule
Response Body
Response body data model varies based on the REST operation status.
Table 2-101 Response Body Parameters
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| OCIConfigWrapper | M | 1 | 200 OK | Indicates the list of OCI Config (OCIConfigWrapper) matching criteria. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when data is not found for given query parameters. |
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config" -H "accept: application/json“Code: 200
{
[
{
"ociConfigRule": "defaultOciConfigRule",
"data":
{
"relayPeerOci": false,
"ociEnforcement": true,
"ociEnforcementAction": "REROUTE",
"ociSendErrorProfile": "defaultErrorProfile",
"interPlmnOciEnforcement": false,
"ociTrafficRecoveryPolicy":
{
"recoveryPolicy": "INCREMENTAL",
"stepInPercentage": 10,
"stepDurationInMs": 100
},
"ociEnforcementPolicy":
{
"enforcementPolicy": "PERCENTAGE_WITH_PRIORITY",
"maxSbiMessagePriorityForOciEnforcement": 15
}
}
}
]
}curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v2/oci-config" -H "accept: application/json“{
"title": "Not Found",
"status": "404",
"detail": "Oci_Config data not found against given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=abc", "cause": "DATA_NOT_FOUND"
}PUT
This resource updates the OCI config using the request body.
Resource URI:
ocscp/scpc-configuration/v1/oci-config
Table 2-102 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| OCIConfigWrapper | M | 1 | 200 OK | Indicates the list of OCI Config (OCIConfigWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns error with problem details structure as defined in 3GPP TS 29.571 Section 5.2.4.1. |
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config" -H "accept: application/json“Code: 200
{
[
{
"ociConfigRule": "defaultOciConfigRule",
"data":
{
"relayPeerOci": false,
"ociEnforcement": true,
"ociEnforcementAction": "REROUTE",
"ociSendErrorProfile": "defaultErrorProfile",
"interPlmnOciEnforcement": false,
"ociTrafficRecoveryPolicy":
{
"recoveryPolicy": "INCREMENTAL",
"stepInPercentage": 10,
"stepDurationInMs": 100
},
"ociEnforcementPolicy":
{
"enforcementPolicy": "PERCENTAGE_WITH_PRIORITY",
"maxSbiMessagePriorityForOciEnforcement": 15
}
}
}
]
}DELETE
This resource deletes the OCI config using the request body.
Resource URI:
ocscp/scpc-configuration/v1/oci-config
Table 2-103 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| OCIConfigWrapper | M | 1 | 200 OK | Indicates the list of OCI Config (OCIConfigWrapper) matching criteria. |
| ProblemDetails | M | 1 | 403 Forbidden | Returns when data is not found for given query parameters. |
Example of a successful response:
curl -X 'DELETE'\ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=defaultOciConfigRule'\ -H 'accept: application/json'Response:{
"title": "Forbidden",
"status": "403",
"detail": "Given oci config rule is used in routing options hence cannot be deleted",
"instance": "/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=defaultOciConfigRule",
"cause": "OPERATION_NOT_ALLOWED"
}Data Model
Table 2-104 OCIConfigWrapper
| Field Name | Data Type | Default Value | Description |
|---|---|---|---|
relayPeerOci |
Boolean | false | If this parameter is set to
true, SCP forwards the OCI header received from
downstream peer in the ingress messages to
upstream peers with the egress messages.
|
ociEnforcement |
Boolean | true | Enables or disables overload
corrective action on the OCI information received
from peer. Overload corrective actions can send
error responses or reroute based on
ociEnforcementAction.
|
ociEnforcementAction |
Enum | REROUTE | Decides OCI enforcement action,
such as send error or reroute.
SENDERROR: SCP immediately sends error responses without trying for alternate peers. REROUTE: SCP attempts to reselect equivalent available peers. If it is not able to route to reselected peer, SCP sends error responses back.
|
OciSendErrorProfile |
String | defaultErrorProfile | In reference to the error
response profile, SCP sends error responses
because of overload correction action based on
OCI.
|
interPlmnOciEnforcement |
Boolean | false | Enables or disables OCI
enforcement toward remote PLMN peers.
|
Table 2-105 ociTrafficRecoveryPolicy
| Field Name | Data Type | Default Value | Description |
|---|---|---|---|
recoveryPolicy |
Enum | INCREMENTAL | Decides the traffic recovery
policy after OCI enforcement action.
INCREMENTAL: Increments traffic in steps to 100% based on "stepInPercentage" and "stepDurationInMs" parameters. IMMEDIATE:
Increments traffic to 100% immediately.
|
stepInPercentage |
Integer | 10 | Defines the size of a step in
percentage of reduced traffic when the INCREMENTAL
policy is configured.
|
stepDurationInMs |
Integer | 100 | Defines the duration of a step
when the INCREMENTAL policy is configured. Traffic
is incremented after this duration for every step
during traffic recovery after OCI enforcement
action.
|
Table 2-106 ociEnforcementPolicy
| Field Name | Data Type | Default Value | Description |
|---|---|---|---|
enforcementPolicy |
Enum | PERCENTAGEWITHPRIORITY | Decides the traffic recovery
policy toward a peer after OCI enforcement action.
PERCENTAGE_WITH_PRIORITY: Enforces OCI action on percentage of messages as received in reduction metric if priority of message is greater than "maxSbiMessagePriorityForOciEnforcement". PERCENTAGE_ONLY: Enforces OCI action on percentage
of messages as received in the reduction metric.
|
maxSbiMessagePriorityForOciEnforcement |
Integer | 15 | Defines maximum priority value
below which OCI enforcement action will not be
applied.
|
JSON Format
Current JSON Format:[
{
"ociConfigRule": "defaultOciConfigRule",
"data":
{
"relayPeerOci": false,
"ociEnforcement": true,
"ociEnforcementAction": "REROUTE",
"ociSendErrorProfile": "defaultErrorProfile",
"interPlmnOciEnforcement": false,
"ociTrafficRecoveryPolicy":
{
"recoveryPolicy": "INCREMENTAL",
"stepInPercentage": 10,
"stepDurationInMs": 100
},
"ociEnforcementPolicy":
{
"enforcementPolicy": "PERCENTAGE_WITH_PRIORITY",
"maxSbiMessagePriorityForOciEnforcement": 15
}
}
}
]{
"name":"ociErrorProfile",
"errorProfile":
{
"status":500,
"cause":"NF_SERVICE_FAILOVER",
"customCause":null,
"title":"INTERNAL SERVER ERROR",
"detail":"SCP is unable to route because peer NF overload as per reported OCI",
"retryAfter":0,
"redirectURL":null
}
}2.11 Configuring Overload Configuration Information Threshold
This section provides information about overload control configurations required for
the OciThresholdConfig threshold levels to generate self-Overload
Control Information (OCI) by SCP.
Resources
The following table describes the resource name to retrieve, add, or update overload control configuration data:
Table 2-107 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| oci-threshold-config | /ocscp/scpc-configuration/v1/oci-threshold-config | GET | Retrieves all SCP OCI threshold config data configured at SCP. |
| oci-threshold-config | /ocscp/scpc-configuration/v1/oci-threshold-config | GET | Retrieves an SCP OCI threshold config data configured based on the threshold level at SCP when the threshold level is provided as query parameters. However, this query parameter is optional. If it is absent, then it retrieves all SCP OCI threshold config data configured at SCP. |
| oci-threshold-config | /ocscp/scpc-configuration/v1/oci-threshold-config | PUT | Adds or updates SCP OCI threshold config data at SCP. |
Resource Definition
GET REST API
This resource fetches the SCP OCI threshold config data based on the query parameters.
If no query parameter is provided, all the SCP OCI threshold config data is returned.
Resource URI:
/ocscp/scpc-configuration/v1/oci-threshold-config
Table 2-108 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the names of supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL. |
PUT REST API
This resource adds or updates the SCP OCI threshold config configuration using the request body.
Resource URI:
/ocscp/scpc-configuration/v1/oci-threshold-config
Table 2-109 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| OciThresholdConfigWrapper | M | 1 | 200 OK | Indicates the names of supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns error with problem details structure as defined in 3GPP TS 29.571 Section 5.2.4.1. |
Table 2-110 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| thresholdLevel | String | M | 1 | Indicates all the custom threshold levels apart from WARN, MINOR, MAJOR, and CRITICAL. |
Note:
- The threshold level is a valid combination of query parameters.
- Only custom threshold levels can be removed. The default levels such as WARN, MINOR, MAJOR, or CRITICAL, cannot be removed.
Table 2-111 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| None | - | 1 | 200 OK | In successful cases, only response code is returned. |
| ProblemDetails | M | 1 | 404 NOT FOUND | When no matching entry is found. |
Data Model
The following table describes the field names of the OciThresholdConfigWrapper data type:
Table 2-112 OciThresholdConfigWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
thresholdLevel |
String | M | Indicates the supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL. |
OciThresholdConfig |
Object | M | Indicates the OciThresholdConfig data. |
Table 2-113 OciThresholdConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Range | Description |
|---|---|---|---|---|
generateOciHeader |
Boolean | M | true, false | Controls the generation of self-OCI, which is
created by SCP, for different threshold levels. If this parameter is
set to true. The OCI header for self-overload is added to HTTP
messages on load update for this OCI level.
The default value is false. |
onSetThreshold |
Integer | M | 2-100 | Indicates the onset overload threshold value based on the CPU usage. |
abatementThreshold |
Integer | M | 1-99 | Indicates the abatement overload threshold value based on the CPU usage. |
overloadReductionMetric |
Integer | M | 0-100% | Indicates the value of the Overload-Reduction-Metric attribute in the 3gpp-Sbi-Oci header that is configured at each overload level, for example, the percentage (%) of traffic that the consumer NF must reduce toward SCP. |
periodOfValidity |
Integer | M | 5 - 3600 seconds | Indicates the value of the Period-of-Validity attribute in the 3gpp-Sbi-Oci header that is configured at each overload level. |
abatementTimeInMilliSeconds |
Integer | M | 50 ms to 5000 ms | Indicates the abatement time for overload level change. |
The following table provides the default values of the
OciThresholdConfig parameter:
Table 2-114 OciThresholdConfig
| thresholdLevel | onsetThreshold | abatementThreshold | overloadReductionMetric | periodOfValidity | abatementTime |
|---|---|---|---|---|---|
| WARN | 68 | 65 | 10 | 5 seconds | 200 ms |
| MINOR | 75 | 70 | 20 | 5 seconds | 200 ms |
| MAJOR | 80 | 78 | 30 | 5 seconds | 200 ms |
| CRITICAL | 86 | 82 | 40 | 5 seconds | 200 ms |
JSON format for SCP OCI threshold config
[
{
"thresholdLevel": "CRITICAL",
"data":
{
"onSetThreshold": 86,
"abatementThreshold": 82,
"abatementTimeInMilliSeconds": 200,
"generateOciHeader": false,
"overloadReductionMetric": 40,
"periodOfValidity": 5
}
},
{
"thresholdLevel": "MAJOR",
"data":
{
"onSetThreshold": 80,
"abatementThreshold": 78,
"abatementTimeInMilliSeconds": 200,
"generateOciHeader": false,
"overloadReductionMetric": 30,
"periodOfValidity": 5
}
},
{
"thresholdLevel": "MINOR",
"data":
{
"onSetThreshold": 75,
"abatementThreshold": 70,
"abatementTimeInMilliSeconds": 200,
"generateOciHeader": false,
"overloadReductionMetric": 20,
"periodOfValidity": 5
}
},
{
"thresholdLevel": "WARN",
"data":
{
"onSetThreshold": 68,
"abatementThreshold": 65,
"abatementTimeInMilliSeconds": 200,
"generateOciHeader": false,
"overloadReductionMetric": 10,
"periodOfValidity": 5
}
}
]
2.12 Configuring NRF
This section provides information about configuration of NRF preferred by SCP for access token requests.
Resources
The following table describes the resource name to retrieve and update the NRF data based on the query parameters.
Table 2-115 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| nrf-configuration | /ocscp/scpc-configuration/v1/nrf-configuration | GET | Retrieves NRF configurations. |
| nrf-configuration | /ocscp/scpc-configuration/v1/nrf-configuration | PUT | Updates NRF configurations. |
Data Model
Request Body
The following table describes the field names of the NrfConfigurationWrapper data model.
Table 2-116 NrfConfigurationWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Supported Values | Description |
|---|---|---|---|---|---|
| Service | String | M | "nnrf-oauth2" | "nnrf-oauth2", "nnrf-disc" | Indicates the service name of the preferred NRF configuration. |
| NrfConfigData | JSON | M | See Table 2-117 | Configures preferred NRF.
This parameter can be configured as nrfInstanceId or nrfSetId or both. |
Table 2-117 NrfConfigData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| nrfInstanceId | String | C | 6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a | Indicates the NF Instance ID of the preferred NRF.
Note: When only nfinstanceid is provided, then SCP forwards the route to the matching NRF with nfinstanceid. |
| nrfSetId | Array | C | setnrfl1.nrfset.5gc.mnc012.mcc345 | The NF Set ID of the preferred NRF.
Array(nrfSetid) uses the value from the first index even if multiple values are added. Note: When only nfSetId is provided, then SCP supports load balancing to the matching NRFs selected by nfSetId. |
Note:
If both nfinstanceid and nfSetId are provided, SCP forwards the route to the matching NRF with nfinstanceid; if it fails, then SCP does an alternate route to the NRFs selected by nfSetId.Resource Definition
GET REST API
This resource fetches the NrfConfiguration data based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/nrf-configuration
Table 2-118 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| Service | String | O | Indicates the configuration name. If the parameter is empty, all configurations are returned. |
Table 2-119 array(NrfConfigurationWrapper)
| Field Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(NrfConfigurationWrapper) | M | 1 | 200 OK | The list of NrfConfigurations available. |
$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept:
application/json'
{
"service": "nnrf-oauth2",
"nrfConfigData": {
"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"nrfSetId": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
]
}
}$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-disc' -H 'accept:
application/json'
{
"service": "nnrf-disc",
"nrfConfigData": {
"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"nrfSetId": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
]
}
}PUT REST API
This resource update the NrfConfiguration data using the request body.
Resource URI: /ocscp/scpc-configuration/v1/nrf-configuration
Table 2-120 Data Structures Supported by the PUT Response Body
| Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| NrfConfiguration | M | 1 | 200 OK | Indicates NrfConfiguration to be set. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns when both the nfinstancid and nrfsetid are not present. |
JSON Example of NRF Configuration for PUT
$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept: */*' -H 'Content-Type: application/json' -d ' {"service": "nnrf-oauth2","nrfConfigData": {"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a","nrfSetId":["setnrfl1.nrfset.5gc.mnc012.mcc345"]}}'{
"service": "nnrf-oauth2",
"nrfConfigData": {
"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"nrfSetId": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
]
}
}$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-disc' -H 'accept: */*' -H 'Content-Type: application/json' -d{
"service": "nnrf-disc",
"nrfConfigData": {
"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"nrfSetId": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
]
}
}'Failure response:
$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept: */*' -H 'Content-Type: application/json' -d ' {"service": "nnrf-oauth2","nrfConfigData": { }}'
{
"title": "Forbidden",
"status": "403",
"detail": "Minimum one value nfinstanceid or nfinstancesetid must present",
"instance": "/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2",
"cause": "INVALID_REQUEST_BODY"
}
2.13 OAuth2.0 Configurations
This section provides information about NRF configurations and configuring access token granularity and requests for NF types or NF service instances.
2.13.1 Configuring OAuth2.0 Access Token Granularity
This section provides information about configurations required for access token granularity and access token requests for NFType, specific NF, or NF instance ID.
Resources
The following table describes the resource name to retrieve, add, and delete the access token granularity configurations data based on the query parameters.
Table 2-121 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| oauth2-authorization/access-token-granularity | /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity | GET | Retrieves access token granularity configurations. |
| oauth2-authorization/access-token-granularity | /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity | PUT | Adds an access token granularity configuration. |
| oauth2-authorization/access-token-granularity | /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity | DELETE | Removes an access token granularity configuration. |
Data Model
Request Body
The following table describes the field names of the accessTokenGranularityWrapper data model.
Table 2-122 accessTokenGranularityWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| ruleName | String | M | defaultNonRoaming | Indicates the unique string that works as an ID. |
| data | AccessTokenGranularityData | M | For more information, see Table 2-123 | Indicates the specific data for each OAuth2 configuration type. |
Note:
There are two default entries: one for non-roaming and another for roaming.Table 2-123 AccessTokenGranularityData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Range | Description |
|---|---|---|---|---|---|
| requesterPlmnIds | PLMN List | C | null | empty or plmn ids |
Indicates the list of Local PLMNs IDs. Note: These can be present for NON_ROAMING traffic, but not mandatory to have it in this scenario. |
| targetPlmnIds | PLMN List | C | null | empty or plmn ids |
Indicates the list of target PLMN IDs. Note: These can be present for
|
| trafficScenario | enum | M | NON-ROAMING |
NON-ROAMING |
Represents Local PLMN messages. |
| consumerNfTypes | Array | O | null | empty or Valid NF Type | Indicates the list of consumer NF types. |
| targetNfTypes | Array | M | * | * or Valid NF Types | Indicates the list of Target NF types. |
| targetServiceNames | Array | O | null | empty or valid service names | Indicates the list of Target service names. |
| supportedAccessTokenGranularity | enum | M | NF-TYPE | NF-TYPE or NF-INSTANCE |
This configuration is used when SCP initiates access token process. Based on this value, SCP determines whether to use NF-Type of NF-Instance based query. There possible values are:
|
| accessTokenReqInfo | accessTokenReqInfo Data | O | Structure of accessTokenReqInfo
Data:Default:
|
composite type |
Access token request info configuration is used when SCP initiates access token process. SCP composes query parameters based on these mandatory and preferred parameters. Also, it provides separate section for intra-SCPand inter-SCP. The operator is expected to configure
|
Response Body
The response body data model varies based on Rest operation status.
Table 2-124 Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(accessTokenGranularityWrapper) | M | 1 | 200 OK | Indicates the list of oauth2 configurations (accessTokenGranularityWrapper) Matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when invalid combination or more than 3 query parameters are provided. |
JSON Example of "accessTokenGranularityWrapper"
[
{
"ruleName": "defaultNonRoaming",
"data": {
"trafficScenario": "NON-ROAMING",
"targetNfTypes": [
"*"
],
"supportedAccessTokenGranularity": "NF-TYPE",
"accessTokenReqInfo": {
"localPlmn": {
"intraScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
},
"interScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfSetId","targetNfSetId"]
}
}
}
}
} ,
{
"ruleName": "Config1",
"data": {
"requesterPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
"targetPlmnIds": [{"mcc":"324","mnc":"12"}, { "mcc": "327","mnc": "15"}],
"trafficScenario": "NON-ROAMING",
"consumerNfTypes": ["PCF","UDM"],
"targetNfTypes": ["PCF","UDM"],
"targetServiceNames": ["nudm-uecm", "nudm-sdm"],
"supportedAccessTokenGranularity": "NF-TYPE",
"accessTokenReqInfo": {
"localPlmn": {
"intraScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"],
"preferred": ["requesterFqdn","targetPlmn"]
},
"interScp": {
"mandatory": ["grant_type","nfInstanceId", "scope", "nfType", "targetNfType","targetNfSetId"],
"preferred": ["requesterFqdn","targetPlmn"]
}
}
}
}
},
{.....}
]
Resource Definition
GET REST API
This resource fetches the Oauth2 configuration (accessTokenGranularityWrapper) based on the query parameters.
If no query parameter is provided, all message priorities are returned.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity
Table 2-125 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | Indicates the configuration name. If the parameter is empty, all configurations are returned. |
Table 2-126 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(accessTokenGranularityWrapper) | M | 1 | 200 OK | Indicates the list of OAuth2 configurations (accessTokenGranularityWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
Example
Successful response 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity" -H "accept: application/json"Response Body:
[
{
"ruleName": "defaultNonRoaming",
"data": {
"trafficScenario": "NON-ROAMING",
"targetNfTypes": [
"*"
],
"supportedAccessTokenGranularity": "NF-TYPE",
"accessTokenReqInfo": {
"localPlmn": {
"intraScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
},
"interScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType", "targetNfType","targetNfSetId"]
}
}
}
}
} ,
{
"ruleName": "Config1",
"data": {
"requesterPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
"targetPlmnIds": [{"mcc":"324","mnc":"12"}, { "mcc": "327","mnc": "15"}],
"trafficScenario": "NON-ROAMING",
"consumerNfTypes": ["PCF","UDM"],
"targetNfTypes": ["PCF","UDM"],
"targetServiceNames": ["nudm-uecm", "nudm-sdm"]
"supportedAccessTokenGranularity": "NF-TYPE",
"accessTokenReqInfo": {
"localPlmn": {
"intraScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"],
"preferred": ["string1","string2"]
},
"interScp": {
"mandatory": ["grant_type","nfInstanceId", "scope", "nfType", "targetNfType","targetNfSetId"],
"preferred": ["string1","string2"]
}
}
}
}
},
{.....}
]Successful response 2
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=defaultNonRoaming" -H "accept: application/json"
[
{
"ruleName": "defaultNonRoaming",
"data": {
"trafficScenario": "NON-ROAMING",
"targetNfTypes": [
"*"
],
"supportedAccessTokenGranularity": "NF-TYPE",
"accessTokenReqInfo": {
"localPlmn": {
"intraScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
},
"interScp": {
"mandatory": ["grant_type","nfInstanceId", "scope","nfType", "targetNfType","targetNfSetId"]
}
}
}
}
}
] Failure response
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularityruleName=ojhasflakhsdvg" -H "accept: application/json"
{
"title": "Not Found",
"status": "404",
"detail": "access Token Granularity configuration data not found against given query parameter(s), Please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/ruleName=ojhasflakhsdvg",
"cause": "DATA_NOT_FOUND"
}PUT REST API
This resource adds one Oauth 2 configuration (accessTokenGranularityWrapper) using the request body.
If no query parameter is provided, all message priorities are returned.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity
Table 2-127 Data Structures Supported by the PUT Response Body
| Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(accessTokenGranularityWrapper) | M | 1 | 200 OK | Indicates the list of oauth2 configurations (accessTokenGranularityWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails when an invalid combination or more than three query parameters are provided. |
Example
Successful response$
curl -X PUT
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity"
-H "accept: application/json" -H "Content-Type: application/json" -d
"{\"ruleName\":\"Config2\",\"data\":{\"trafficScenario
\":\"NON-ROAMING\"},\"targetNfTypes\":\["PCF\"]},\"supportedAccessTokenGranularity\":"NFType\"}"
{
"ruleName": "Config2",
"data": {
"trafficScenario ": "NON-ROAMING",
"targetNfTypes": ["PCF"],
"supportedAccessTokenGranularity": "NFType"
}
}
200 OK$ curl -X PUT
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity"
-H "accept: application/json" -H "Content-Type: application/json" -d
"{\"ruleName\":\"Config2\",\"data\":{\"targetNfTypes\":\["PCF\"]},\"supportedAccessTokenGranularity\":"NFType\"}"{
"title": "Bad Request",
"status": "400",
"detail": "trafficScenario Object is missing, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity",
"cause": "MANDATORY_IE_MISSING"
}DELETE REST API
This resource removes one Oauth 2 configuration (accessTokenGranularityWrapper) based on query parameters.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity
Table 2-128 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | O | 1 | Defines the name of the rule. The name of the rule must be unique. |
Table 2-129 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | - | - | 204 OK | In a success case, only the response code is returned. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. |
Example
Successful response
$ curl -X DELETE
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=Config2"-H
"accept: application/json"*/*"204OKFailure response
$ curl -X DELETE
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=Config222"
-H "accept:
*/*"{
"title": "Not Found",
"status": "404",
"detail": "oauth2-authorization/access-token-granularity configuration data not found for the given 'ruleName': Config222",
"instance": "/ocscp/scpc-configuration/v1/oauth2-authorizationy/Config222",
"cause": "DATA_NOT_FOUND"
}2.13.2 Configuring OAuth2.0 Local PLMN Required
This section provides information about configurations required for local PLMN OAuth2.0.
Resources
The following table describes the resource name to retrieve, add, and remove the Oauth2 required configurations data based on the query parameters.
Table 2-130 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| oauth2-authorization/local-plmn-oauth2-required-config | /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config | GET | Retrieves the Oauth2 required configurations. |
| oauth2-authorization/local-plmn-oauth2-required-config | /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config | PUT | Adds and updates the Oauth2 required configuration. |
| oauth2-authorization/local-plmn-oauth2-required-config | /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config | DELETE | Removes one Oauth2 required configuration. |
Data Model
Request Body
The following table describes the field names of the Oauth2RequiredWrapper data model.
Table 2-131 Oauth2RequiredWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| ruleName | String | M | default | Indicates a unique string that works as an ID. |
| data | LocalNfOauth2RequiredData | M | See Table 2-132 | Indicates the specific data for each OAuth2 configuration type. |
Table 2-132 LocalNfOauth2RequiredData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Range | Description |
|---|---|---|---|---|---|
| nfType | String | M | * | * or Valid NF type | Indicates the producer NF types for this configuration. |
| localPlmnIds | PLMN List | O | - | empty or Valid service Names | Indicates the list of Local PLMNs IDs of Producers.
Following this pattern:
|
| serviceNames | Array | O | - | empty or valid service names | Indicates the list valid services names of NF types. |
| nfInstanceIdsList | Array | O | - | empty or instance ids | Indicates the list of producer NF instances IDs. |
| nfServiceInstanceIdsList | Array | O | - | empty or service instance ids | Indicates the list of producer NF service IDs. |
| oauth2Required | Boolean | M | false | true or false | OAuth2Required indicates that OAuth2.0 based
authorization is required:
|
| defaultScope | Oauth2DefaultScopeData | O | {scopeSource:NFTYPE} |
"SERVICE-SPECIFIC"/"NF-TYPE"/
"CUSTOM-SCOPE" |
Provides different scopes selection options which can be used in the access token process. SERVICE-SPECIFIC: The scope is selected from incoming service request. NF-TYPE: The scope is selected based on the configured NF type (all the services under this NF type will be the scope list). CUSTOM-SCOPE: Allows to explicitly configure the required NF services for scope. |
Table 2-133 Oauth2DefaultScopeData Model
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| scopeSource | enum | M | NFTYPE | Indicates enum with three different
values:ScopeSourceEnum { "SERVICE-SPECIFIC", "NF-TYPE",
"CUSTOM-SCOPE";} |
| scopelist | Array | C | - | List of of valid services, this is mandatory when
scopeSource is CUSTOM-SCOPE and
SERVICE-SPECIFIC and NF-TYPE
are null.
|
Response Body
The response body data model varies based on REST operation status.
Table 2-134 Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(Oauth2RequiredWrapper) | M | 1 | 200 OK | List of OAuth2 configurations (Oauth2RequiredWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
[
{
"ruleName": "default",
"data": {
"nfType": "*"
"oauth2Required": false,
"defaultScope": {
"scopeSource": "NF-TYPE"
}
}
},{
"ruleName": "config1",
"data": {
"nfType": "AMF",
"localPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
"serviceNames": ["nudm-ee"],
"nfInstanceIdsList": ["1aaf1bbc-6e4a-4454-a507-11111111111", "1aaf1bbc-6e4a-4454-a507-222222222222"],
"nfServiceInstanceIdsList": ["1aaf1bbc-6e4a-4454-0000-11111111111", "1aaf1bbc-6e4a-4454-0000-222222222222"],
"oauth2Required": true,
"defaultScope": {
"scopeSource": "CUSTOM-SCOPE",
"scopelist":["nudm-uecm", "nudm-sdm"]
}
}
},{
......
......
}
]Resource Definition
GET REST API
This resource fetches the Oauth2 configuration (Oauth2RequiredWrapper) based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config
Table 2-135 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | Indicates the configuration name. If the parameter is empty, all configurations are returned. |
Table 2-136 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(Oauth2RequiredWrapper) | M | 1 | 200 OK | Indicates the list of oauth2 configurations (Oauth2RequiredWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
Example
Successful response 1$ curl -X GET
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config"
-H "accept: application/json"
[
{
"ruleName": "default",
"data": {
"nfType": "*"
"oauth2Required": false,
"defaultScope": {
"scopeSource": "NF-TYPE"
}
}
},{
"ruleName": "config1",
"data": {
"nfType": "AMF",
"localPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
"serviceNames": ["nudm-ee"],
"nfInstanceIdsList": ["1aaf1bbc-6e4a-4454-a507-11111111111", "1aaf1bbc-6e4a-4454-a507-222222222222"],
"nfServiceInstanceIdsList": ["1aaf1bbc-6e4a-4454-0000-11111111111", "1aaf1bbc-6e4a-4454-0000-222222222222"],
"oauth2Required": true,
"defaultScope": {
"scopeSource": "CUSTOM-SCOPE",
"scopelist":["nudm-uecm", "nudm-sdm"]
}
}
},{
......
......
}
]
$ curl -X GET
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-configruleName=ojhasflakhsdvg"
-H "accept:
application/json"{
"title": "Not Found",
"status": "404",
"detail": "oauth2 configuration data not found against given query parameter(s), Please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/ruleName=ojhasflakhsdvg",
"cause": "DATA_NOT_FOUND"
}PUT REST API
This resource adds one Oauth 2 configuration (Oauth2RequiredWrapper) using the Request Body.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config
Table 2-137 Data Structures Supported by the PUT Response Body
| Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(Oauth2RequiredWrapper) | M | 1 | 200 OK | Indicates the list of oauth2 configurations (Oauth2RequiredWrapper) matching criteria |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
Example
Successful response$ curl -X PUT
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config"
-H "accept: application/json" -H "Content-Type: application/json" -d
"{\"ruleName\":\"Config2\",\"data\":{\"NFType\":\"PCF\"},\"oauth2Required\":true}"
{
"ruleName": "Config2",
"data": {
"nfType": "PCF",
"oauth2Required": true,
}
}
200 OK
DELETE REST API
This resource removes one Oauth 2 configuration (Oauth2RequiredWrapper) based on query parameters.
Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config
Table 2-138 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | O | 1 | Indicates the rule name. |
Table 2-139 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | - | - | 204 OK | Returns the successful response. Only response code is returned. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. |
Example
Successful response
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config?ruleName=Config2" -H "accept: application/json" */*"
204 OK
Failure response$ curl -X DELETE
"http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config?ruleName=Config222"
-H "accept: */*"
{
"title": "Not Found",
"status": "404",
"detail": "Oauth2 configuration data not found for the given 'ruleName': Config222",
"instance": "/ocscp/scpc-configuration/v1/oauth2-authorizationy/Config222",
"cause": "DATA_NOT_FOUND"
}
2.14 Configuring Error Profiles
Resources
The following table describes the resource name to retrieve, add, update, and remove error profile configuration based on the query parameters.
Table 2-140 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| error-response-profile | /ocscp/scpc-configuration/{version}/error-response-profile | GETALL | Retrieves all error profile configurations. |
| error-response-profile | /ocscp/scpc-configuration/{version}/error-response-profile/{name} | GET | Retrieves error profile configuration for given name. |
| error-response-profile | /ocscp/scpc-configuration/{version}/error-response-profile/{name} | PUT | Add or update error profile configuration for given name. |
| error-response-profile | /ocscp/scpc-configuration/{version}/error-response-profile/{name} | DELETE | Deletes error profile configuration for a given name; if the name is in use, it can't be deleted. |
Data Model
Request Body
The following table describes the field names of the ErrorProfileData data type.
Table 2-141 ErrorProfileData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| name (256) | String | M | Name of the configuration record |
| errorProfile | JSON | M | Error Profile JSON object |
Table 2-142 ErrorProfile
| Parameter | Data Type | Mandatory (M) or Optional(O) | Default Value | Allowed Value | Description |
|---|---|---|---|---|---|
| status | Integer | M | 500 | 300-511 | HTTP Status Code |
| cause | String | M | UNSPECIFIED_NF_FAILURE |
For list of error causes, see Table 2-148 | This parameter indicates the list of error causes that are specific to the occurrence of the problem. |
| customCause | String (256) | C | null | NA | User defined custom cause. This field will be used only if cause field value is set to "CUSTOM". |
| title | String (256) | O | Internal Server Error |
NA | If this field is null, a standard HTTP status code description is added. |
| detail | enum | O | null | NA | If present, the same data is used; otherwise, the application can add it optionally. |
| retryAfter | Integer | C | 0 | NA | This parameter indicates the number of seconds after client should retry. |
| redirectURL | String (256) | C | null | NA | This parameter indicates the AbsoluteURL of the resource to which the message is redirected. |
{
"name": "defaultErrorProfile",
"errorProfile": {
"status": 500,
"cause": "UNSPECIFIED_NF_FAILURE",
"customCause": null,
"title": "INTERNAL_SERVER_ERROR",
"detail": null,
"retryAfter": 0,
"redirectURL": null
}
} Resource Definition
GET REST API:
This resource fetches all the error profile based on the query parameters.
Resource URI:
/ocscp/scpc-configuration/{version}/error-response-profile
Table 2-143 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| errorProfile | M | 1.N | 200 OK | Indicates error profile configurations. |
This resource fetches all the error profile based on name.
Resource URI:
/ocscp/scpc-configuration/{version}/error-response-profile/{name}
Table 2-144 Path Parameter
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| name | String | M | Fetches configurations on name. |
Example
Successful response - 1
$ curl -X 'GET'\ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile'\ -H 'accept:
application/json'
[
{
"name": "ccaHeaderNotPresentError",
"errorProfile": {
"status": 400,
"cause": "MANDATORY_IE_MISSING",
"title": "BAD_REQUEST",
"detail": "Bad Request, Mandatory 3gpp-Sbi-Client-Credential header missing",
"retryAfter": 0
}
},
{
"name": "ccaVerificationError",
"errorProfile": {
"status": 403,
"cause": "CCA_VERIFICATION_FAILURE",
"title": "FORBIDDEN",
"detail": "Forbidden, CCA verification failed",
"retryAfter": 0
}
},
{
"name": "defaultErrorProfile",
"errorProfile": {
"status": 500,
"cause": "UNSPECIFIED_NF_FAILURE",
"title": "INTERNAL_SERVER_ERROR",
"detail": "Internal Server Error",
"retryAfter": 0
}
},
{
"name": "healthCheckErrorProfile",
"errorProfile": {
"status": 503,
"cause": "NF_CONGESTION",
"title": "NF service is overloaded/congested",
"detail": "NF service is overloaded/congested"
}
}
]
Successful response - 2
$ curl -X 'GET'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\ -H 'accept:
application/json'
[
[
{
"ruleName": "udm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"GET",
"POST"
],
"messageType": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1
}
}
]
Failure Case
$ curl -X 'GET'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultError'\-H 'accept: application/json'
{
"title": "Not Found",
"status": "404",
"detail": "Error Profile data not found against given name. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultError",
"cause": "DATA_NOT_FOUND"
}
]
PUT REST API:
This resource adds or updates the error profile configuration using the request body.
Resource URI:
/ocscp/scpc-configuration/{version}/error-response-profile/{name}
Table 2-145 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| errorProfile | M | 1 | 200 OK | Indicates Error Profile to be added. |
| ProblemDetails | M | 1 | 400/404 | Returns ProblemDetails. |
Example
Successful response
$ curl -X 'PUT'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\ -H 'accept:
application/json'\ -H 'Content-Type:
application/json'\ -d '{"name":
"defaultErrorProfile","errorProfile": {"status": 500,"cause":
"UNSPECIFIED_NF_FAILURE","title": "INTERNAL_SERVER_ERROR", "detail": "Internal
Server Error", "retryAfter": 0}}'
{
"name": "defaultErrorProfile",
"errorProfile": {
"status": 500,
"cause": "UNSPECIFIED_NF_FAILURE",
"title": "INTERNAL_SERVER_ERROR",
"detail": "Internal Server Error",
"retryAfter": 0
}
}
Failure Case
$ curl -X 'PUT'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\-H 'accept:
application/json'\-H 'Content-Type:
application/json'\ -d '{"name":
"defaultErrorProfile","errorProfile": {"status": 500,"cause": "abc","title":
"INTERNAL_SERVER_ERROR","detail": "Internal Server Error", "retryAfter":
0}}'
{
"title": "Bad Request",
"status": "400",
"detail": "The value given should be either 'custom' or present in ApplicationError Enum List. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile",
"cause": "MANDATORY_IE_MISSING"
}
DELETE REST API:
This resource deletes the error profile configuration data based on name.
Resource URI:
/ocscp/scpc-configuration/{version}/error-response-profile/{name}
Table 2-146 Path Parameter
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| name | String | M | Delete configurations for name. |
Table 2-147 Data structures supported by the Delete Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| ProblemDetails | M | 1 | 400/404 | Problem Details. |
Example
$ curl -X 'DELETE' \'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile' \-H 'accept: application/json'Server response
Code Details
204
Response headers
date: Fri,12 May 2023 07:13:56 GMT $ curl -X 'DELETE' \'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile' \ -H 'accept: application/json'
{
"title": "Not Found",
"status": "404",
"detail": "Error Profile data not found against given name. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile",
"cause": "DATA_NOT_FOUND"
}Table 2-148 Common Protocol and Application Errors
| Protocol or application Error | HTTP status code | Description |
|---|---|---|
| INVALID_API | 400 Bad Request | The HTTP request contains an unsupported API name or API version in the URI. |
| INVALID_MSG_FORMAT | 400 Bad Request | The HTTP request has an invalid format. |
| INVALID_QUERY_PARAM | 400 Bad Request | The HTTP request contains an unsupported query parameter in the URI. See NOTE 1. |
| MANDATORY_QUERY_PARAM_INCORRECT | 400 Bad Request | A mandatory query parameter, or a conditional query parameter that is mandatory, for an HTTP method was received in the URI with a semantically incorrect value. See NOTE 1. |
| OPTIONAL_QUERY_PARAM_INCORRECT | 400 Bad Request | An optional query parameter for an HTTP method was received in the URI with a semantically incorrect value that prevents successful processing of the service request. See NOTE 1. |
| MANDATORY_QUERY_PARAM_MISSING | 400 Bad Request | A query parameter that is defined as mandatory, or as conditional but mandatory, for an HTTP method is not included in the URI of the request. See NOTE 1. |
| MANDATORY_IE_INCORRECT | 400 Bad Request | A mandatory IE within the JSON body, within a
variable part of an apiSpecificResourceUriPart
or within an HTTP header, or a conditional IE but mandatory for
an HTTP method was received with a semantically incorrect value.
See NOTE 1.
|
| OPTIONAL_IE_INCORRECT | 400 Bad Request | An optional IE within the JSON body or within an HTTP header for an HTTP method was received with a semantically incorrect value that prevents successful processing of the service request. See NOTE 1. |
| MANDATORY_IE_MISSING | 400 Bad Request | A mandatory IE within the JSON body or within
the variable part of an
apiSpecificResourceUriPart or within an
HTTP header, or a conditional IE but mandatory, for an HTTP
method is not included in the request. See NOTE 1.
|
| UNSPECIFIED_MSG_FAILURE | 400 Bad Request | The request is rejected due to an unspecified client error. See NOTE 2. |
| RESOURCE_CONTEXT_NOT_FOUND | 400 Bad Request | The notification request is rejected because the callback URI still exists in the receiver of the notification, but the specific resource context identified within the notification payload is not found in the NF service consumer. |
| CCA_VERIFICATION_FAILURE | 403 Forbidden | The request is rejected due to a failure to verify the CCA at the receiving entity, for example, an NRF or NF service producer. |
| TOKEN_CCA_MISMATCH | 403 Forbidden | The request is rejected due to a mismatch between the subject claim in the access token and the subject claim in the CCA. |
| MODIFICATION_NOT_ALLOWED | 403 Forbidden | The request is rejected because the contained modification instructions attempt to modify IE, which is not allowed to be modified. |
| SUBSCRIPTION_NOT_FOUND | 404 Not Found | The request for modification or deletion of the subscription is rejected because the subscription is not found in the NF. |
| RESOURCE_URI_STRUCTURE_NOT_FOUND | 404 Not Found |
The request is rejected because a
fixed part after the first variable part of an
This fixed part of the URI may represent a sub-resource collection, for example, contexts, subscriptions, policies, or a custom operation. See NOTE 5. |
| INCORRECT_LENGTH | 411 Length Required | The request is rejected due to the incorrect value of the content-length header field. |
| NF_CONGESTION_RISK | 429 Too Many Requests | The request is rejected due to excessive traffic which, if continued over time, may lead to (or may increase) an overload situation. |
| INSUFFICIENT_RESOURCES | 500 Internal Server Error | The request is rejected due to insufficient resources. |
| UNSPECIFIED_NF_FAILURE | 500 Internal Server Error | The request is rejected due to unspecified reason at the NF. See NOTE 3. |
| SYSTEM_FAILURE | 500 Internal Server Error | The request is rejected due to generic error condition in the NF. |
| NF_FAILOVER | 500 Internal Server Error | The request is rejected due to the unavailability of the NF, and the requester may trigger an immediate re-selection of an alternative NF based on this information. See NOTE 6 |
| NF_SERVICE_FAILOVER | 500 Internal Server Error | The request is rejected due to the unavailability of the NF service, and the requester may trigger an immediate re-selection of an alternative NF service based on this information. See NOTE 6. |
| NF_CONGESTION | 503 Service Unavailable | The NF experiences congestion and performs overload control, which does not allow the request to be processed. See NOTE 4. |
| TARGET_NF_NOT_REACHABLE | 504 Gateway Timeout | The request is not served as the target NF is not reachable. |
| TIMED_OUT_REQUEST | 504 Gateway Timeout | The request is rejected due to a request that has timed out at the HTTP client. |
Note:
-
invalidParamsattribute is included in the "ProblemDetails" data structure, indicating unsupported, missing, or incorrect IEs, query parameters, or 3gpp-Sbi-Discovery-* headers. - This application error indicates an error in the HTTP request, and there is no other application error value that can be used instead.
- This application error indicates an error condition in the NF, and there is no other application error value that can be used instead.
- If the reason for rejection is a temporary overload, the NF may include in the response a Retry-After header field to indicate how long the service is expected to be unavailable.
- If the request is rejected because of an error in an URI before the first variable part of an "apiSpecificResourceUriPart", the "404 Not Found" HTTP status code may be sent without the "ProblemDetails" data structure indicating a protocol or application error.
- The NF service consumer (as receiver of the cause code) should stop sending subsequent requests addressing the resource contexts in the producer's NF instance (for NF_FAILOVER) or NF service instance (for NF_SERVICE_FAILOVER) to avoid massive rejections. The NF service consumer may reselect an alternative NF service producer as specified in clause 6.5 of 3GPP TS 23.527 [38], for example, using the binding indication of resource context. It is implementation specific for the NF service consumer to determine when and whether the NF producer becomes available again, for example, when there is no other alternative available or at expiry of a local configured timer.
2.15 Outlier Detection Configuration
This section describes the REST API configurations required for Outlier Detection. Outlier Detection is configured for each service in the routing option and for inter-SCP and SEPP in System Options. Outlier Detection configurations created using this REST API are used in Routing Options for NF Services and in System Options for inter-SCP and SEPP. This feature can be disabled at the global or system level and enabled at the NF service level in the routing option to work for those services.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the outlier-detection resource type.
Table 2-149 Resources
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| outlier-detection | /ocscp/scpc-configuration/{version}/outlier-detection | GET | Retrieves all outlier-detection configurations. |
| outlier-detection | /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} | GET | Retrieves outlier-detection configuration for a given ruleName. |
| outlier-detection | /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} | PUT | Create or update the outlier-detection configuration for a given ruleName. |
| outlier-detection | /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} | PATCH | Updates outlier-detection configuration by ruleName. |
| outlier-detection | /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} | DELETE | Removes outlier-detection configuration for a given ruleName. If the rule is in use, then it cannot remove the ruleName. |
Data Model
Request Body
The following table describes outlierDetectionConfig data types.
Table 2-150 outlierDetectionConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Range | Description |
|---|---|---|---|---|---|
| ruleName | String | M | NA | NA | Provides the unique rule present in the outlier detection table that must not be repeated. |
| consecutiveErrors | Integer | O | 100 | 5 - 500 | Number of consecutive errors after which an endpoint is considered unhealthy. |
| interval | String | O | 86400 seconds | 30 seconds - 86400 seconds | Interval after which stale records are removed from
the outlier data cache. Stale records are identified as the records
that are not referenced by any message in this
interval.
Note: The |
| baseEjectionTime | String | O | 5 seconds | 1 second - 500 seconds | Duration for which an endpoint is ejected |
| ErrorList | Array(String) | O | ["Connection Error", "Time outs", 500, 501,
502, 503, 504, 505, 506, 507, 508, 510, 511] |
["Connection Error", "Time outs",301, 302,
303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409
, 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426,
428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508,
510, 511] |
List with errors to be considered for outlier detection. |
Response Body
{
"ruleName": "defaultRule",
"outlierDetectionConfigData": {
"consecutiveErrors": 100,
"interval": "86400s",
"baseEjectionTime": "5s",
"ErrorList": [
"500"
]
}
} Response Body
JSON Format{
"ruleName": "defaultRule",
"outlierDetectionConfigData": {
"consecutiveErrors": 100,
"interval": "86400s",
"baseEjectionTime": "5s",
"ErrorList": [
"500"
]
}
} Resource Definition
This section describes GET, PUT, PATCH, and DELETE resource types supported by this feature.GET REST API
This section describes the resources to fetch all the outlier-detection configurations.
Resource URI:
/ocscp/scpc-configuration/{version}/outlier-detection
Table 2-151 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| outlierDetectionConfig | M | 1,,N | 200 OK | Indicates outlier-detection configurations. |
Resource to fetch all the outlier-detection configurations based on ruleName.
Resource URI:
/ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}
Table 2-152 Path Parameters
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Fetches configurations on ruleName. |
Table 2-153 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| outlierDetectionConfig | M | 1 | 200 OK | Indicates outlier-detection configurations. |
| ProblemDetails | M | 1 | 404 | Provides problem details. |
PUT REST API
This section describes outlier-detection configurations for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}
Table 2-154 Data Structures Supported by the PUT Request Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| outlierDetectionConfig | M | 1 | 200 OK | Indicates outlier-detection configurations. |
| ProblemDetails | M | 1 | 400 or 404 BAD REQUEST | Provides problem details. |
PATCH REST API
This section describes resource to update the outlier-detection configurations using the request body.
Resource URI:
/ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}
Table 2-155 Data Structures Supported by the PATCH Request Body
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Rule name for which Outlier Detection configuration is modified. |
| outlierDetectionConfig | JSON | 0 | patchDocument to be sent. For example,[{
"op": "replace", "path": "/outlierDetectionConfigData/interval",
"value": "50s" }][{ "op": "replace", "path":
"/outlierDetectionConfigData/ErrorList", "value": ["500","501"]
}] |
DELETE REST API
This section describes resources to fetch all the outlier-detection configurations based on ruleName.
Resource URI:
/ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}
Table 2-156 Path Parameter
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Fetch configurations on ruleName. |
Table 2-157 Data Structures Supported by the DELETE Request Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| ProblemDetails | M | 1 | 400 or 404 BAD REQUEST | Provides problem details. |
2.16 Configuring Ingress Rate Limiting
This section provides the following information about Ingress Rate Limiting configuration:
- List of resources required for retrieving, configuring, and deleting the Ingress Rate Limiting data.
- Ingress Rate Limiter data name and data type.
- Functionalities of GET, PUT, and DELETE APIs.
Resources
The following table describes the resources for retrieving, configuring, and deleting the Ingress Rate Limiting data.
Table 2-158 Ingress Rate Limiting Resource Names
| Resource Name | Resource URI | HTTP Method | Query Parameters | Description |
|---|---|---|---|---|
| ingressRateLimiter | /ocscp/scpc-configuration/v1/ratelimit/ingress | GET | NFType or FQDN or NfInstanceId | Retrieves Ingress Rate Limiting data configured to the corresponding supplied query parameters. |
| ingressRateLimiter | /ocscp/scpc-configuration/v1/ratelimit/ingress | PUT | NA | Configures Ingress Rate Limiting data using the supplied request body in the JSON format. |
| ingressRateLimiter | /ocscp/scpc-configuration/v1/ratelimit/ingress | DELETE | FQDN or NfInstanceId | Deletes Ingress Rate Limiting data corresponding to supplied query parameters. |
Data Model
The following table describes Ingress Rate Limiter data name and data type.
Table 2-159 IngressRateLimiterData
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| nfType | NFType | C | 1 |
Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, NRF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP. |
| fqdn | String | C | 1 | Indicates the FQDN of consumer NF. |
| NfInstanceId | String | C | 1 | NfInstanceId of consumer NF |
| enabled | Boolean | O | 1 | Indicates whether the rate limiting is enabled for nfType/fqdn. Default value is false. |
| data | Data | M | 1 | Indicates the rate limit configuration data. |
The following table describes the types of data.
Table 2-160 Data Name and Type
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| config | Config | M | 1 | Indicates the rate limit data. |
| errorResponse | ErrorResponse | M | 1 | Indicates the error handling related data. |
Table 2-161 Config Data Type
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
|---|---|---|---|---|---|
| durationInSec | integer | M | 1 | 1-1 | Indicates the time unit in seconds to calculate the rate. The default value is 1 second. |
| rate | integer | M | 1 | 1- 50000 | Indicates the messages or time unit to be accepted. |
| burstPercentage | integer | O | 1 | 0 - 100 | Indicates the Burst percentage used to calculate the
number of burst messages allowed per 100ms.
The default value is 0. Note: Burst Control is not supported. Therefore, any value set for this parameter does not take effect. |
Table 2-162 ErrorResponse
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
|---|---|---|---|---|---|
| errorResponse | String | O | 1 | 0-200 characters |
Indicates the Custom Error String used in cause field of the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1. Default value shall be a constant string "INGRESS-RATE-LIMITER:TOO MANY REQUESTS" auto configured by SCP. |
| errorCode | Int | M | 1 | 3xx,4xx,5xx | Indicates the Http Status code. |
{
"data": {
"config": {
"durationInSec": 1,
"rate": 0,
"burstPercentage" : 0
},
"errorResponse": {
"errorCode": 0,
"errorResponse": "string"
}
},
"enabled": true,
"fqdn": "string",
"nfinstanceid":"string",
"nfType": "string"
}The response body data model varies based on the Rest operation status. For more information, refer to the subsequent sections.
Table 2-163 Response Body Data Type
| Data Type | Description |
|---|---|
| IngressRateLimiterData | Same as the request body as described in Table 2-159. |
| ProblemDetails | Returns when an invalid combination or more than two query parameters are provided. |
| None | Indicates an empty body. |
Resource Definition
This resource fetches the Ingress Rate Limiting Configuration based on the query parameters. If no query parameter is provided, all the Ingress Rate Limiting Configuration data is returned.
Resource URI:
/ocscp/scpc-configuration/v1/ratelimit/ingress
The following table describes URI query parameters supported by the GET method on this resource.
Table 2-164 URI Query Parameters
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| Fqdn | String | O | 1 | Indicates the FQDN of consumer NF. |
| NfInstanceId | String | O | 1 | NfInstanceId of consumer NF |
| NFType | NFType | O | 1 | Indicates the NFType supported as described in the 3GPP TS 29.510 section 6.1.6.3.11: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIRSEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP. |
Note:
Only one Query parameters is supported at a time.The following table describes data structures supported by the GET Response Body on this resource.
Table 2-165 Data Structures
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(IngressRateLimiterData) | M | 1 | 200 OK | Indicates the list of Ingress Rate Limiting Configuration data. |
| IngressRateLimiterData | M | 1 | 200 OK | Indicates the Ingress Rate Limiting Configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Indicates that the requested combination of Query Parameters is not allowed. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example:
Successful response
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress?nfType=PCF" -H "accept: */*"
{
"nfType": "PCF",
"data": {
"config": {
"rate": 1000,
"durationInSec": 1,
"burstPercentage": 0
},
"errorResponse": {
"errorResponse": "TOO MANY REQUESTS",
"errorCode": 429
}
},
"enabled": true
}
Failure response, If the Ingress rate limiting data is not configured.
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf" -H "accept: */*"
{
"title": "Not Found",
"status": "404",
"detail": "Ingress Rate Limiting Configuration data not found against given query parameter.",
"instance": "/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf",
"cause": "DATA_NOT_FOUND"
}
This resource adds Ingress Rate Limiting Configuration using the Request Body.
Resource URI:
/ocscp/scpc-configuration/v1/ratelimit/ingress
Note:
One of the following fields must be present in the request body:- Fqdn
- NFType
The following table describes Data structures supported by the PUT Response Body on this resource.
Table 2-166 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| IngressRateLimiterData | M | 1 | 200 OK | Indicates the Ingress Rate Limiting Configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Indicates that both NFType and Fqdn is provided in the request. Returns when an invalid combination or more than two query parameters are provided. |
Example:
Successful response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"durationInSec\":1,\"rate\":80},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"INGRESS-RATE-LIMITER:TOO MANY REQUESTS\"}},\"enabled\":true,\"nfType\":\"UDM\"}"
{
"nfType": "UDM",
"data": {
"config": {
"rate": 80,
"durationInSec": 1,
"burstPercentage": 0
},
"errorResponse": {
"errorResponse": "INGRESS-RATE-LIMITER:TOO MANY REQUESTS",
"errorCode": 429
}
},
"enabled": true
}
200 OK
Failure response: If both FQDN and NFType are given in the request body.
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"durationInSec\":1,\"rate\":200},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"TOO MANY REQUESTS\"}},\"enabled\":true,\"fqdn\":\"udm.oracle.com\",\"nfType\":\"UDM\"}"
{
"title": "Bad Request",
"status": "400",
"detail": "Both NFType and Fqdn is provided in the request body, Only one of the 2 fields can be provided.",
"instance": "/ocscp/scpc-configuration/ratelimit/ingress",
"cause": "INVALID_KEY_COMBINATION"
}
Failure response: if rate divided by
durationInSec is less than 10, then the configuration is
considered as invalid.
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"config": {
"burstPercentage": 0,
"durationInSec": 1,
"rate": 1
},
"errorResponse": {
"errorResponse": "INGRESS-RATE-LIMITER:TOO MANY REQUESTS",
"errorCode": 429
}
},
"enabled": true,
"fqdn": "amf1svc.oracle.com"
}
'
{
"title": "Bad Request",
"status": "400",
"detail": "rate divided by durationInSec should be more than or equal to 10, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ratelimit/ingress",
"cause": "MANDATORY_IE_INCORRECT"
}
This resource deletes the Ingress Rate Limiting Configuration data based on the query parameters.
Resource URI:
/ocscp/scpc-configuration/v1/ratelimit/ingress
The following table describes URI query parameters supported by the DELETE method on this resource.
Table 2-167 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| Fqdn | String | O | 1 | Indicates the FQDN of consumer NF. |
| NfInstanceId | String | O | 1 | NfInstanceId of Consumer NF |
Note:
Rate limit configuration corresponding to NFType is used as the default configuration and only update operation is supported on it.The following table describes Data structures supported by the DELETE Response Body on this resource.
Table 2-168 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 200 OK | Indicates that the response is successful. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry
found.
Returns when an invalid combination or more than two query parameters are provided. |
Example
Successful response
curl -X DELETE
"http://<localhost>:8081/ocscp/scpc-configuration/v1/ingressratelimiter?fqdn=udm.oracle.com" -H
"accept: */*" 200 OK
Failure Response: When no matching entry is found.
curl -X DELETE
"http://<localhost>:8081/ocscp/scpc-configuration/v1/ingressratelimiter?fqdn=amf" -H "accept:
*/*" { "title": "Not Found", "status": "404", "detail": "Ingress Rate Limiting
Configuration data not found against given fqdn.", "instance":
"/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf", "cause": "DATA_NOT_FOUND"
}
2.17 Configuring Egress Rate Limiting and Global Egress Rate Limiting
This section provides the information about Egress Rate Limiting and Global Egress Rate Limiting configurations:
- List of resources required for retrieving, configuring, and deleting the rate limiting data.
- Rate limiter data name and data type.
- Functionalities of GET, PUT, and DELETE REST APIs.
Resources
The following table describes the resources for retrieving, configuring, and deleting the egress rate limiting data.
Table 2-169 Egress Rate Limiting Resource Names
| Resource Name | Resource URI | HTTP Method | Query Parameters | Description |
|---|---|---|---|---|
| egressRateLimiter | /ocscp/scpc-configuration/v1/ratelimit/egress | GET | Combination of NFType/FQDN/serviceName | Retrieves egress rate limiting data configured to the corresponding supplied query parameters. |
| egressRateLimiter | /ocscp/scpc-configuration/v1/rateimit/egress | PUT | NA | Configures egress rate limiting data using the supplied request body in the JSON format. |
| egressRateLimiter | /ocscp/scpc-configuration/v1/ratelimit/egress | DELETE | Combination of NFType/FQDN/serviceName | Removes egress rate limiting data corresponding to supplied query parameters. |
Data Model
The following table describes egress rate limiter data name and data type.
Table 2-170 EgressRateLimiterData
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| nfType | NFType | C | 1 | Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: NRF, UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP. |
| serviceName | ServiceName | C | 1 | Indicates the ServiceName as per the supported NFType. |
| fqdn | String | C | 1 | Indicates the FQDN of producer NF. |
| enabled | Boolean | O | 1 | Indicates whether the rate limiting is enabled for this entry: Default value is false. |
| data | Data | M | 1 | Indicates the rate limit configuration data. |
The following table describes the types of data.
Table 2-171 Data Name and Type
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| config | Config | M | 1 | Indicates the rate limit data. |
| errorResponse | ErrorResponse | C | 1 | Indicates the error handling related data. |
Table 2-172 Config Data Type
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
|---|---|---|---|---|---|
| durationInSec | integer | M | 1 | 1-1 | Indicates the time unit in seconds to calculate the rate. The default value is 1 second. |
| rate | integer | M | 1 | 1- 75000 | Indicates the messages / time unit to be accepted when aggregatedRate is set to 0 or the Global Egress Rate Limit feature is disabled. |
| aggregatedRate | integer | O | 1 | 0- 75000 |
Indicates the messages / time unit to be accepted when the Global Egress Rate Limit feature is enabled. If it is set to 0, this field is ignored and this configuration is not considered for Global Egress Rate Limit. It is considered for local rate limit. |
| burstPercentage | integer | O | 1 | 0 - 100 | Indicates the Burst percentage used to calculate the
number of burst messages allowed per 100ms.
Note: Burst Control is not supported. Therefore, any value set for this parameter does not take effect. |
| action | String | O | 1 |
"sendResponse" / "AlternateRoute" Default value is "sendResponse" |
Defines the action if the rate limit quota is exhausted. "sendResponse": sends configured error response back immediately "AlternateRoute": attempts to reselect the equivalent NF and send the messages to that reselected NF |
Table 2-173 ErrorResponse
| Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
|---|---|---|---|---|---|
| errorResponse | String | O | 1 | 0-200 |
Indicates the Custom Error String used in cause field of the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1. Default value shall be a constant string "EGRESS-RATE-LIMITER:TOO MANY REQUESTS" auto configured by SCP. |
| errorCode | Int | M | 1 | 3xx,4xx,5xx | Indicates the Http Status code. |
{
"data": {
"config": {
"action": "string",
"aggregatedRate": 0,
"burstPercentage": 0,
"durationInSec": 1,
"rate": 0
},
"errorResponse": {
"errorCode": 0,
"errorResponse": "string"
}
},
"enabled": true,
"fqdn": "string",
"nfType": "string",
"serviceName": "string"
}The response body data model varies based on the REST operation status.
Table 2-174 Response Body Data Type
| Data Type | Description |
|---|---|
| EgressRateLimiterData | Same as the request body as described in Table 2-170. |
| ProblemDetails | Indicates the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1. |
| None | Indicates an empty body. |
Resource Definition
This resource fetches the egress rate limiting configuration based on the query parameters. If no query parameter is provided, all the egress rate limiting configuration data is returned.
Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress
The following table describes URI query parameters supported by the GET method on this resource.
Table 2-175 URI Query Parameters
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| NFType | NFType | O | 1 |
Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIRSEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP. |
| serviceName | ServiceName | O | 1 | Indicates the ServiceName as per the supported NFType. |
| Fqdn | String | O | 1 | Indicates the FQDN of producer NF. |
Note:
The valid combination of query parameters are as follows:- Fqdn + serviceName
- Fqdn + NFType
- Fqdn
- serviceName
- NFType
The following table describes data structures supported by the GET Response Body on this resource.
Table 2-176 Data Structures Supported by the GET Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array (EgressRateLimiterData) | M | 1 | 200 OK | Indicates the list of egress rate limiting configuration data. |
| EgressRateLimiterData | M | 1 | 200 OK | Indicates the egress rate limiting configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Indicates that the requested combination of query parameters is not allowed. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example:
Successful response - 1, Combination of Fqdn, serviceName
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?serviceName=nudm-uecm&fqdn=udm1svc.scpsvc.svc.cluster.local" -H "accept: */*"
{
"fqdn": "udm1svc.scpsvc.svc.cluster.local",
"serviceName": "nudm-uecm",
"data": {
"config": {
"rate": 1000,
"durationInSec": 1,
"action": "AlternateRoute",
"burstPercentage": 0,
"aggregatedRate": 5000
},
"errorResponse": {
"errorResponse": "TOO MANY REQUEST",
"errorCode": 429
}
},
"enabled": true
}
Successful response - 2, Only serviceName
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?serviceName=nudm-uecm" -H "accept: */*"
{
"serviceName": "nudm-uecm",
"data": {
"config": {
"rate": 1000,
"durationInSec": 1,
"action": "AlternateRoute",
"burstPercentage": 0,
"aggregatedRate": 5000
},
"errorResponse": {
"errorResponse": "TOO MANY REQUEST",
"errorCode": 429
}
},
"enabled": true
}
Failure case, Incorrect combination of parameters such as NFType and serviceName
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?nfType=UDM&serviceName=nudm-uecm" -H "accept: */*"
Response Body :
{
"title": "Bad Request",
"status": "400",
"detail": "Requested combination of Query Parameters is not allowed, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/ratelimit/egress?nfType=UDM&serviceName=nudm-uecm",
"cause": "INVALID_QUERY_PARAM"
}
This resource adds and updates egress rate limiting configuration using the Request Body.
Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress
The following table describes data structures supported by the PUT Response Body on this resource.
Table 2-177 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| EgressRateLimiterData | M | 1 | 200 OK | Indicates the egress rate limiting configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Indicates that both NFType and Fqdn is provided in the request. The ProblemDetails structure is defined in the 3GPP TS 29.571 Section 5.2.4.1. |
Note:
The valid combination of fields in the request body is as follows:- Fqdn, serviceName
- Fqdn, NFType
- Fqdn
- serviceName
- NFType
Example:
Successful response - 1, Combination of Fqdn and ServiceName.
Configuring with a global rate of 5000 with aggregatedRate field.
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"action\":\"AlternateRoute\",\"durationInSec\":1,\"rate\":100},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"EGRESS_RATE_LIMITER:TOO MANY REQUEST\"}},\"enable\":true,\"fqdn\":\"udm1.vzw.com\",\"serviceName\":\"nudm-uecm\"}"
{
"fqdn": "udm1.vzw.com",
"serviceName": "nudm-uecm",
"enabled": true,
"data": {
"config": {
"rate": 100,
"durationInSec": 1,
"burstPercentage" : 0,
"action": "AlternateRoute"
},
"globalConfig": {
"rate": 120,
"durationInSec": 1,
"burstPercentage" : 0,
"action": "AlternateRoute"
},
"errorResponse": {
"errorResponse": "EGRESS_RATE_LIMITER:TOO MANY REQUEST",
"errorCode": 429
}
}
}
200 OK
Successful response - 2, Combination of Fqdn and ServiceName.
curl -X 'PUT' \
'http://<SCP configuration FQDN>:30446/ocscp/scpc-configuration/v1/ratelimit/egress' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"fqdn": "nef1.vzw.com",
"serviceName": "nnef-eventexposure",
"enabled": true,
"data": {
"config": {
"rate": 100,
"durationInSec": 1,
"burstPercentage" : 0,
"action": "AlternateRoute"
},
"globalConfig": {
"rate": 120,
"durationInSec": 1,
"burstPercentage" : 0,
"action": "AlternateRoute"
},
"errorResponse": {
"errorResponse": "EGRESS_RATE_LIMITER:TOO MANY REQUEST",
"errorCode": 429
}
}
}'
Failure case 1: Incorrect combination of fields such as NFType and serviceName in request body
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"action\":\"AlternateRoute\",\"durationInSec\":1,\"rate\":300},\"errorResponse\":{\"errorCode\":0,\"errorResponse\":\"\"}},\"enable\":true
,\"nfType\":\"UDM\",\"serviceName\":\"nudm-uecm\"}"
Response Body:
{
"title": "Bad Request",
"status": "400",
"detail": "Incorrect combination of Keys in request Body, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/ratelimit/egress",
"cause": "INVALID_KEY_COMBINATION"
}
Failure response: if rate divided by durationInSec
is less than 10, then the configuration is considered as invalid.
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"config": {
"action": "sendResponse",
"burstPercentage": 0,
"durationInSec": 1,
"rate": 1,
"aggregatedRate": 0
},
"errorResponse": {
"errorResponse": "EGRESS-RATE-LIMITER:TOO MANY REQUESTS",
"errorCode": 429
}
},
"enabled": true,
"fqdn": "udm1svc.scpsvc.svc.cluster.local"
}'
{
"title": "Bad Request",
"status": "400",
"detail": "rate divided by durationInSec should be more than or equal to 10, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ratelimit/egress",
"cause": "MANDATORY_IE_INCORRECT"
}
This resource deletes the egress rate limiting configuration data based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress
The following table describes URI query parameters supported by the DELETE method on this resource.
Table 2-178 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| NFType | NFType | O | 1 | Indicates supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP. |
| serviceName | ServiceName | O | 1 | Indicates the ServiceName as per supported NFType. |
| Fqdn | String | O | 1 | Indicates the FQDN of producer NF. |
Note:
The valid combination of query parameters are provided as follows:- Fqdn, serviceName
- Fqdn, NFType
- Fqdn
- serviceName
The following table describes data structures supported by the DELETE Response Body on this resource.
Table 2-179 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 200 OK | Indicates that the response is successful. | ||
| ProblemDetails | M | 1 | 400 BAD REQUEST | Indicates that the requested combination of query parameters is not allowed. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Successful response - 1, Combination of Fqdn and serviceName
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
ratelimit/egress?fqdn=udm1.vzw.com&serviceName=nudm-uecm"-H "accept:
*/*" 200OK
Successful response - 2, Only Fqdn Delete
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
egressratelimiter?fqdn=udm1.vzw.com"-H "accept:
*/*" 200OK
Failure case 1, Incorrect query parameter like NFType
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
ratelimit/egress?nfType=UDM"-H "accept:
*/*" Response Body:{ "title": "Bad Request", "status": "400",
"detail": "Requested Delete combination of Query Parameters is not allowed,
please refer to the User Guide", "instance": "/ocscp/scpcconfiguration/
v1/ratelimit/egress?nfType=UDM", "cause":
"INVALID_QUERY_PARAM"}
Failure case 2, When no matching entry is found
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpcconfiguration/
v1/ratelimit/egress?serviceName=nudm-sdm"-H "accept:
*/*" Response Body:{ "title": "Not Found", "status": "404",
"detail": "Egress Rate Limiting configuration data not found against
given
query parameter(s), Please refer to the User Guide",
"instance":
"/ocscp/scpc-configuration/v1/ratelimit/egress?
serviceName=nudm-sdm", "cause": "DATA_NOT_FOUND"}
2.18 Configuring Dynamic Logging
Service Communication Proxy (SCP) provisions an option to change log levels of SCP microservices dynamically through SCP configuration service.
Retrieving all Service Level Logs
Table 2-180 Retrieving all Service Level Logs
| Resource URI | HTTP Method | Content Type | Response Codes |
|---|---|---|---|
| Configuration attributes for all service level logs | |||
| http://<ip>:<port>/ocscp/scpc-configuration/v1/all/logging | GET | application/json |
|
| Configuration attributes at service level logs | |||
| http://<ip>:<port>/ocscp/scpc-configuration/v1/<microservice-name>/logging | GET | application/json |
|
| http://<ip>:<port>/ocscp/scpc-configuration/v1/<microservice-name>/logging | PUT | application/json |
|
Note:
The following microservices are supported:scp-worker, scpc-notification,
scpc-configuration, scpc-audit,
scpc-subscription, and
scpc-loadmanager.
Response Body of GET ALL Method for all Service Level Logs:
[
{
"scpc-audit": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
},
"scpc-notification": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
},
"scpc-subscription": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
},
"scpc-configuration": {
"appLogLevel": "INFO",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
},
"scp-worker": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "ERROR"
}
},
"scp-cache": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}
},
"scp-load-manager": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
},
"scp-nrfproxy": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "WARN"
}
},
"scp-nrfproxy-oauth": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "WARN"
}
}
}
]
Response Body of GET Method at Service Level Logs:
{
"appLogLevel": "INFO",
"packageLogLevel": [
{
"logLevelForPackage": "library",
"packageName": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}
Response Body of PUT Method at Service Level Logs:
{
"appLogLevel": "INFO",
"packageLogLevel": [
{
"logLevelForPackage": "library",
"packageName": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}
Table 2-181 Logging
| Attribute Name | Data Type | Constraints | Default Values | Description |
|---|---|---|---|---|
| appLogLevel | string | INFO,DEBUG,WARN,ERROR, TRACE, RX_TX_MSG_INFO | WARN | Specifies the log level of the application.
Note:
|
| packageLogLevel | array (PackageLogLevel) | - | See Table 2-182. | Specifies a list of individual packages and their respective log levels |
| logRateControl | SeeTable 2-183 | See Table 2-183 | See Table 2-183 | Specifies the log levels of the application to support rate control. |
Table 2-182 PackageLogLevel
| Attribute Name | Data Type | Constraints | Default Values | Description |
|---|---|---|---|---|
| packageName | string | root | root | Specifies the name of the package. |
| logLevelForPackage | string | INFO,DEBUG,WARN,ERROR,FATAL,OFF,TRACE | WARN | Specifies the log level for the given package. |
Table 2-183 LogRateControl
| Attribute Name | Data Type | Constraints | Default Values | Description |
|---|---|---|---|---|
| rate | Integer | 1-1000 | 100 | Specifies the average number of logs per second that
should be allowed.
Note: The default log rate change to 100 is applied only during installation, not when upgrading. |
| logLevel | string | ERROR,WARN,INFO,DEBUG,OFF | OFF | Specifies the log level to control log rate. |
The following table describes log rate impact based on the log levels:
Table 2-184 Log Rate Impact Based on Log Levels
| AppLogLevel | Rate Control LogLevel | Log Levels Controlled by Defined Rate per Second | Log Levels Not Impacted | Results |
|---|---|---|---|---|
| ERROR | OFF | NONE | FATAL/ERROR | All ERROR messages are delivered. |
| WARN | OFF | NONE | FATAL/ERROR/WARN | All ERROR/WARN messages are delivered. |
| INFO | OFF | NONE | FATAL/ERROR/WARN/INFO |
All ERROR/WARN/INFO messages are delivered. |
| DEBUG | OFF | NONE | FATAL/ERROR/WARN/INFO/DEBUG |
All ERROR/WARN/INFO/DEBUG messages are delivered. |
| ERROR | ERROR | ERROR | FATAL |
All ERROR logs are controlled based on the configured rate per second, and any FATAL messages are delivered with no limitation. |
| WARN | ERROR | ERROR/WARN | FATAL |
ERROR/WARN messages are controlled by the filter, and any FATAL messages are delivered with no limitation. |
| INFO | ERROR | ERROR/WARN/INFO | FATAL |
Logs are controlled together (INFO+WARN+ERROR) at the configured rate per second, and any FATAL messages are delivered with no limitation. |
| DEBUG | ERROR | ERROR/WARN/INFO/DEBUG | FATAL |
ERROR/WARN/INFO/DEBUG messages are controlled by the filter, and any FATAL messages are delivered with no limitation. |
| ERROR | WARN | NONE | FATAL/ERROR |
All ERROR messages are delivered. |
| WARN | WARN | WARN | FATAL/ERROR |
WARN messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation. |
| INFO | WARN | WARN/INFO | FATAL/ERROR |
WARN/INFO messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation. |
| DEBUG | WARN | WARN/INFO/DEBUG | FATAL/ERROR |
WARN/INFO/DEBUG messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation. |
| ERROR | INFO | NONE | FATAL/ERROR |
All ERROR messages are delivered. |
| WARN | INFO | NONE | FATAL/ERROR/WARN |
All ERROR/WARN messages are delivered. |
| INFO | INFO | INFO | FATAL/ERROR/WARN |
INFO logs are controlled as per the configured rate per second. INFO logs (WARN/ERROR/FATAL) would continue to be delivered. |
| DEBUG | INFO | INFO/DEBUG | FATAL/ERROR/WARN |
INFO/DEBUG logs are controlled as per the configured rate per second. WARN/ERROR/FATAL logs would continue to be delivered. |
| ERROR | DEBUG | NONE | FATAL/ERROR |
All ERROR messages are delivered. |
| WARN | DEBUG | NONE | FATAL/ERROR/WARN |
All ERROR/WARN essages are delivered. |
| INFO | DEBUG | NONE | FATAL/ERROR/WARN/INFO |
All ERROR/WARN/INFO messages are delivered. |
| DEBUG | DEBUG | DEBUG | FATAL/ERROR/WARN/INFO |
DEBUG logs are controlled as per the configured rate per second. INFO/WARN/ERROR/FATAL logs would continue to be delivered. |
| ERROR/WARN/INFO/DEBUG | TRACE | TRACE | FATAL/ERROR/WARN/INFO |
If any or all TRACE logs are controlled as per the configured rate per second, DEBUG/INFO/WARN/ERROR/FATAL logs would continue to be delivered. |
Sample JSON Format with Default Value
curl -X 'PUT' \
'http://localhost:8081/ocscp/scpc-configuration/v1/scp-worker/logging' \-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}'Sample JSON Format with logLevel Enabled
curl -X 'PUT' \
'http://localhost:8081/ocscp/scpc-configuration/v1/scp-worker/logging' \-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "<some-library-name>",
"logLevelForPackage": "ERROR"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "ERROR"
}
}'Log levels during deployment
# ********* LOG LEVELS OF ALL SERVICES ********* #
serviceLogLevels:
scpcAudit: &auditLogLevelRef INFO
scpcConfiguration: &configLogLevelRef INFO
scpcSubscription: &subsLogLevelRef INFO
scpcNotification: ¬ifLogLevelRef INFO
scpcAlternateResolution: &alternateResolutionLogLevelRef INFO
scpcLoadManager: &loadManagerLogLevelRef WARN
scpNrfProxyOauth: &nrfProxyOauthLogLevelRef WARN
scpNrfProxy: &nrfproxyLogLevelRef WARN
scpCache: &cacheLogLevelRef WARN
scpWorker: &workerLogLevelRef WARN
scpMediation: &mediationLogLevelRef WARN
scpMediationTest: &mediationTestLogLevelRef WARN
# ******************** END ********************* #Note:
The variables start with & are reference variables that must not be modified.Changing log levels from internal config pod
The log levels can be changed form inside config pod.
Step: curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/all/logging" -H "accept: application/json" or to get log level of particular service. curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" Step3: To change log level of a service. Updating all services(PUT ALL) at once not supported. curl -X PUT "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appLogLevel\":\"warn\",\"packageLogLevel\":[{\"packageName\":\"library\",\"logLevelForPackage\":\"OFF\"}]}"- Execute the following command into config pod:
kubectl exec -it <config_pod_name> -n <namspace> bash - Check log levels of all services as
follows:
curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/all/logging" -H "accept: application/json" - Get log level of particular service as
follows:
curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" - To change log level of a service. Updating log level for all the
services at once (PUT ALL) is not
supported:
curl -X PUT "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appLogLevel\":\"warn\",\"packageLogLevel\":[{\"packageName\":\"library\",\"logLevelForPackage\":\"OFF\"}]}"
For performing logging configurations using the CNC Console, see Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.
2.18.1 Third Party Packages
Users should never enable DEBUG logs under high traffic conditions. DEBUG logs should only be enabled when the traffic rate is very low.
Table 2-185 Log Packages and Their Corresponding Log Levels
| Package Name | Log Enabled | Recommended | Notes |
|---|---|---|---|
| org | Enables logs for all packages that start with
org.
|
No | Since it generates a lot of logs and may impact the performance of the service. |
| io | Enables logs for all packages that start with
io.
|
No | Since it generates a lot of logs and may impact the performance of the service. |
| org.springframework | Enables logs related to the Spring Framework only. | Yes | NA |
| org.springframework.<subpackage> | Enables logging for specific subpackages of the Spring Framework. | Yes | NA |
| reactor.netty | Enables logging for Reactor Netty. | Yes | NA |
| reactor.netty.<subpackage> | Enables logging for specific subpackages of Reactor Netty. | Yes | NA |
| org.eclipse.jetty | Enables logging for Jetty-related components only. | NA | |
| org.eclipse.jetty.<subpackage> |
Enables logging for specific Jetty subpackages, such as:
|
Yes | NA |
| com.oracle.cgbu.jetty | Enables logging for Oracle Custom Jetty Client. | Yes | NA |
| com.oracle.cgbu.jetty.<subpackage> | Enables logging for specific subpackages of the Oracle Custom Jetty Client. | Yes | NA |
| com.zaxxer | Enables logging for HikariCP. | Yes | This component is used to manage DB connections |
2.19 Fetching Release 16 Routing Rules
This section provides details about fetching routing information that is supported in Release 16 deployment. The following information is fetched for routing:
- List of resources required for retrieving routing information
- URI Query parameters supported by the GET method
- Data structures supported by the GET response body
Resources
The following table describes the resource name to retrieve a collection of routing information.
Table 2-186 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| routing-rules-r16 | /ocscp/scpc-configuration/v1/routing-rules-r16 | GET | Retrieves a collection or list of routing
information (NfInstanceServices) configured in SCP.
Use this API when Model C support is enabled in SCP. For information about enabling this feature, see Oracle Communications Cloud Native Core, Service Communication Proxy Installation, Upgrade, and Fault Recovery Guide. |
Resource Definition
This resource fetches the routing information (NfInstanceServices) based on the query parameters.
If no query parameter is provided, all the routing information is returned.
Resource URI:
/ocscp/scpc-configuration/v1/routing-rules-r16
Table 2-187 URI Query Parameters Supported by the GET Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| nfSetId | String | O | 1 | Indicates the nfSetId of the NF. |
| nfFqdn | FQDN | O | 1 | Indicates the FQDN of NF service. |
| nfType | NFType | O | 1 | Indicates the NF type of the NF for which routing information is fetched. |
| nfInstanceId | NfInstanceId | O | 1 | Identifies the NF instance for which routing information is fetched. |
| nfServiceType | NFService | O | 1 | Indicates NFService, for example, nudm-uecm, for which routing information is fetched. |
| nfIp | Ipv4Addr | O | 1 | Indicates the IPv4 address for which routing information is fetched. |
| nfServiceInstanceId | String | C | 1 | Indicates the NF Service Instance ID for which routing information
is fetched.
Use it with nfInstanceId. |
Note:
- Supports only 0 to 3 query parameters.
- The valid combinations of 1 query parameter are as follows:
- nfSetId
- nfIp
- nfFqdn
- nfType
- nfInstanceId
- nfServiceType
- The valid combinations of 2 query parameters are as follows:
- nfSetId + nfFqdn
- nfSetId + nfIp
- nfSetId + nfInstanceId
- nfSetId + nfType
- nfSetId + nfServiceType
- nfFqdn + nfServiceType
- NfIp+ nfServiceType
- nfInstanceId + nfServiceInstanceId
- The valid combinations of 3 query parameters are as follows:
- nfSetId + nfFqdn + nfServiceType
- nfSetId + nfIp + nfServiceType
- nfSetId + nfInstanceId + nfServiceInstanceId
- If there are more than 3 query parameters, these combinations are considered as invalid.
The following tables describe query parameters for Local and InterSCP.
Table 2-188 One Query Parameter for Local and InterSCP
| Parameter | Local | InterSCP (Foreign) | Description |
|---|---|---|---|
| nfInstnaceId | Allowed | Allowed | Identifies the NF instance for which routing information is fetched. |
| nfSetId | Allowed | NA | Indicates the nfSetId of the NF. |
| nfType | Allowed | NA | Indicates the NF type of the NF for which routing information is fetched. |
| nfServiceType | Allowed | NA | Indicates NFService, for example, nudmuecm, for which routing information is fetched. |
| locality | NA | Allowed | Identifies the InterSCP unknown instance for which routing information is fetched. |
| nfFqdn | Allowed | Allowed | Indicates the FQDN of NF service. |
| nfIp | Allowed | Allowed | Indicates the IPv4 address for which routing information is fetched. |
Two Query Parameter for Local and InterSCP
Table 2-189 Two Query Parameter for Local and InterSCP
| Parameter | Local | InterSCP (Foreign) | Description |
|---|---|---|---|
| nfSetId + nfFqdn | Allowed | NA | nfSetId of the NF and FQDN of NF service. |
| nfSetId + nfIp | Allowed | NA | nfSetId of the NF and IPv4 address for which routing information is fetched. |
| nfSetId + nfInstnaceId | Allowed | NA | nfSetId of the NF and identity of the NF instance for which routing information is fetched. |
| nfSetId + nfType | Allowed | NA | nfSetId of the NF and the NF type for which routing information is fetched. |
| nfSetId + nfServiceType | Allowed | NA | nfSetId of the NF and NFService, for example, nudm-uecm, for which routing information is fetched. |
| nfFqdn + nfServiceType | Allowed | NA | FQDN of the NF service and the NF service type, for example, nudm-uecm, for which routing information is fetched. |
| nfIp+ nfServiceType | Allowed | NA | IPv4 address of the NF and the NF service type, for example, nudm-uecm, for which routing information is fetched. |
| nfInstanceId + nfServiceInstanceId | Allowed | NA | Identity of the NF instance and the NF Service Instance ID for
which routing information is fetched.
Note: To be used with nfInstanceId. |
| nfFqdn + locality | NA | Allowed | FQDN of NF service and identity of the InterSCP of unknown records for which routing information is fetched. |
| nfIp+ locality | NA | Allowed | IPv4 address of the NF and identity of the InterSCP of unknown records for which routing information is fetched. |
| nfInstanceId + locality | NA | Allowed | Identity of the NF instance and identity of the InterSCP of unknown records for which routing information is fetched. |
Three Query Parameter for Local and InterSCP
Table 2-190 Three Query Parameter for Local and InterSCP
| Parameter | Local | InterSCP (Foreign) | Description |
|---|---|---|---|
| nfSetId + nfFqdn + nfServiceType | Allowed | NA | Fetches SCP routing rules information for Release 16 using nfSetId, nfFqdn, and nfServiceType. |
| nfSetId + nfIp + nfServiceType | Allowed | NA | Fetches SCP routing rules information for Release 16 using nfSetId, nfIp, and nfServiceType. |
| nfSetId + nfInstanceId + nfServiceInstanceId | Allowed | NA | Fetches SCP routing rules information for Release 16 using nfSetId, nfInstanceId, and nfServiceInstanceId. |
Data Structures Supported by the GET Response Body on this Resource
The following tables describes the supported data type by the GET response body.Table 2-191 Data Structures Supported by the GET Response Body
| Data Type | P | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(NfInstanceServices) | M | 1 | 200 OK | Indicates the list of routing rules (NfInstance Services) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
{
local: [
{
"kind":"NFInstanceServiceMapping",
"spec":{
"hosts":[
"string"
],
"nfType":"string",
"nfSetsList":{
nfSetIdList:["string"]
},
"nfInstanceId":"3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
"nfServiceToRouteMapping":{
"nfServiceToRoutesListMap":{
"default":{
"hosts":[
"string"
],
"destinations":[
]
},
"nnrf-nfm":{
"hosts":[
"string"
],
"destinations":[
{
"destWeight":{
"weight":0,
"destination":{
"host":"string",
"port":{
"number":0
},
"http2MaxRequests":0
},
"isRemoteScp":false,
"ocscpc_load":0,
"ocscpw_priority":0,
"ocscpw_nf_instance_id":"string",
"ocscpw_service_instance_id":"string"
},
"serviceSetIds":null
}
]
},
"nnrf-disc":{
"hosts":[
"string"
],
"destinations":[
{
"destWeight":{
"weight":0,
"destination":{
"host":"string",
"port":{
"number":0
},
"http2MaxRequests":0
},
"isRemoteScp":false,
"ocscpc_load":0,
"ocscpw_priority":0,
"ocscpw_nf_instance_id":"string",
"ocscpw_service_instance_id":"string"
},
"serviceSetIds":null
}
]
}
}
}
},
"metadata":{
"name":"string",
"namespace":"string"
},
"apiVersion":"string"
],
foreign:
[
{
"kind": "InterSCPRoutingInfo",
"spec": {
"hosts": ["udm1svc.default.svc.cluster.local:8080", "udm1svc.default.svc.cluster.local:8080-nudm-uecm",
"192.168.2.143:8080-nudm-uecm", "192.168.2.143:8080"],
"locality": "Loc1",
"nfSetIdList": [],
"nfInstanceIdList": ["9faf1bbc-6e4a-4454-a507-a14ef8e1bc5b"],
"primaryDestinationList": [{
"weight": 100,
"destination": {
"host": "ocscp-localscp-worker.scpsvc.svc.cluster.local",
"port": {
"number": 8000
},
"http2MaxRequests": 100000
},
"isRemoteScp": true,
"ocscpc_load": 0,
"ocscpw_priority": 0,
"ocscpw_nf_instance_id": "3faf1bbc-6e4a-4454-a507-a14ef8e1bc5e",
"ocscpw_service_instance_id": "f86b54b7-aef9-4c78-b346-3bfb7f380811"
}],
"secondaryDestinationList": {}
},
"metadata": {
"name": "interScpRoutingInfo",
"namespace": "scpsvc"
},
"apiVersion": "v1"
}
]
}Example:
Successful Response1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF" -H "accept: */*"
{
"local": [
{
"spec": {
"nfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"nfServiceToRouteMapping": {
"nfServiceToRoutesListMap": {
"default": {
"hosts": [
null
],
"destinations": [
{
"destinationInfo": {
"destination": {
"port": {
"number": 80
}
},
"weight": 0,
"ocscpw_priority": 0,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"ocscpc_load": 0
}
}
]
},
"nnrf-nfm": {
"hosts": [
"nrf1svc.scpsvc.svc.cluster.local:8080-nnrf-nfm"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf1svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 0,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"ocscpc_load": 0
}
}
]
},
"nnrf-disc": {
"hosts": [
"nrf1svc.scpsvc.svc.cluster.local:8080-nnrf-disc"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf1svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 0,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}
}
]
}
}
},
"hosts": [
null
],
"nfSetsList": {
"nfSetIdList": [
"Reg1"
]
},
"nfType": "NRF"
}
},
{
"spec": {
"nfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"nfServiceToRouteMapping": {
"nfServiceToRoutesListMap": {
"default": {
"hosts": [
null
],
"destinations": [
{
"destinationInfo": {
"destination": {
"port": {
"number": 80
}
},
"weight": 0,
"ocscpw_priority": 1,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpw_service_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpc_load": 0
}
}
]
},
"nnrf-nfm": {
"hosts": [
"nrf2svc.scpsvc.svc.cluster.local:8080-nnrf-nfm"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf2svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 1,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"ocscpc_load": 0
}
}
]
},
"nnrf-disc": {
"hosts": [
"nrf2svc.scpsvc.svc.cluster.local:8080-nnrf-disc"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf2svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 1,
"ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}
}
]
}
}
},
"hosts": [
null
],
"nfSetsList": {
"nfSetIdList": [
"Reg1"
]
},
"nfType": "NRF"
}
}
],
"foreign": []
}Successful Response2:
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=AUSF&nfSetId=NONE" -H "accept: */*"
{
"local": [
{
"spec": {
"nfInstanceId": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"nfServiceToRouteMapping": {
"nfServiceToRoutesListMap": {
"default": {
"hosts": [
"10.75.226.108:ip",
"ausfsvc_fqdn"
]
},
"nausf-auth": {
"hosts": [
"nrf2svc.scpsvc.svc.cluster.local:8080-nausf-auth"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf2svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 1,
"ocscpw_nf_instance_id": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"ocscpc_load": 0
}
}
]
},
"nausf-sorprotection": {
"hosts": [
"nrf2svc.scpsvc.svc.cluster.local:8080-nausf-sorprotection"
],
"destinations": [
{
"destinationInfo": {
"destination": {
"host": "nrf2svc.scpsvc.svc.cluster.local",
"port": {
"number": 8080
},
"location": "MESH_EXTERNAL",
"ports": [
{
"number": 8080,
"protocol": "HTTP2",
"name": "http2"
}
],
"resolution": "DNS"
},
"weight": 5000,
"ocscpw_priority": 1,
"ocscpw_nf_instance_id": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}
}
]
}
}
},
"nfSetsList": {},
"nfType": "AUSF"
}
}
],
"foreign": []
}Failure cases
If the number of query parameters is greater than 3.
$ curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-disc&nfIp=10.75.226.108&nfInstanceId=6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a" -H "accept: */*"
Error response for above curl Request:
Response Code: 400
Response Status: BAD_REQUEST
Response Body : { "title": "Bad Request", "status": "400", "detail": "Maximum 3 Query Parameters are allowed, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-disc&nfIp=10.75.226.108&nfInstanceId=6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a",
"cause": "INVALID_MSG_FORMAT" }
Response Headers :
connection: keep-alive content-type: application/problem+json date: Wed30 Dec 2020 07:16:52 GMT transfer-encoding: chunkedIf any invalid combination of query parameters is requested.
$ curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-nfm" -H "accept: */*"
Error response for above curl Request:
Response Code: 400
Response Status: BAD_REQUEST
Response Body: { "title": "Bad Request", "status": "400", "detail": "Requested combination of Query Parameters is not allowed, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-nfm", "cause": "INVALID_MSG_FORMAT" }
Response Headers :
connection: keep-alive content-type: application/problem+json date: Wed30 Dec 2020 07:16:52 GMT transfer-encoding: chunked2.20 Fetching Upgrade and Rollback Events
This section provides information about fetching upgrade and rollback event information.
Resources
The following table describes the resource name to retrieve the list of upgrade and rollback events.
Table 2-192 Upgrade and Rollback Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| upgraderollbackevents | /ocscp/scpc-configuration/v1/upgraderollbackevents | GET | Retrieves a collection or list of upgrade and rollback events. |
Resource Definition
This resource fetches upgrade or rollback events based on the query parameters.
If no query parameter is provided, all the events are returned.
Resource URI:
/ocscp/scpc-configuration/v1/upgraderollbackevents
Table 2-193 URI Query Parameters Supported by the GET Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values |
|---|---|---|---|---|---|
| serviceName | String | O | 1 | Name of the service |
Example: scpc-audit |
| event | String | O | 1 | Event to be filtered |
Example: Pre_Upgrade_Started |
| sourceRelease | String | O | 1 | Source release version for performing upgrade and
rollback.
The convention to identify a release is as follows: 25.1.200 is identified as 25120000 |
Any string followed the convention.
Example: 25120000 Sample output: |
| targetRelease | String | O | 1 | Target release version for performing upgrade and
rollback.
The convention to identify a release is as follows: 25.2.100 is identified as 25210000 |
Any string followed the convention.
Example: 25210000 Sample output: |
Table 2-194 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| array(UpgradeRollbackEvent) | M | 1 | 200 OK | List of events matching criteria. |
Example Response
$ curl -X GET "curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/upgraderollbackevents" -H "accept: */*"" -H "accept: */*"
[
{
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Started",
"sourceRelease": "25120000",
"targetRelease": "25210000",
"creationTimestamp": "2025-10-26T00:36:40.000+00:00"
}
]
2.21 Updating HELM Configurable Parameters with REST APIs
This section provides REST API parameters required to update the Helm configurable options after SCP deployment.
Configuring Operations for PUT ALL Method
Request_Type: PUT ALL
URI: /ocscp/scpc-configuration/v1/tracing
[{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}]Table 2-195 REST API: PUT ALL Method
| Parameter | Description | DataType | Value Range | Mandatory |
|---|---|---|---|---|
| msgTracingEnabled | Enable/Disable jaeger trace | Boolean | True/False | Yes |
| msgJsonBodyEnabled | Enable/Disable body decoding in jager traces | Boolean | True/False | Yes |
| serviceName | Name of the service to which tracing is applied | String (scp-worker) | scp-worker | Yes |
Success Response
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing
Request Body:[{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}]Response:[{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}]- Scenario 1: When the serviceName is anything else other than
scp-worker
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing
Request Body:[{ "msgTracingEnabled": true, "msgJsonBodyEnabled": false, "serviceName": "scp-workerbjasd" }]Response Header:
Status Code: 400 Bad
Request connection: keep-alive
content-type: application+problem/json
date: Mon, 15 Feb 2021 05:57:49 GMT
transfer-encoding: chunked
Response Body:
{ "title": "Invalid Service Name", "status": "400", "cause":"Invalid Service Name" } - Scenario 2: When the mandatory parameters are missing.
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing
Request Body:[{ "bacd": true, "msgJsonBodyEnabled": false, "serviceName": "scp-workerbjasd" }]Response Body:
{ "status": "400", "error":"Bad Request" } - Scenario 3: When the mandatory parameters' keys are
incorrect.
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing
Request Body:
Response Body:[{ "bacd": true, "msgJsonBodyEnabled": false, "serviceNameasd": "scp-worker" }]{ "status": "400", "error":"Bad Request" }
Configuring Operations for PUT Single Method
Request_Type: PUT
URI: /ocscp/scpc-configuration/v1/tracing/{serviceName}
Table 2-196 Path Variable
| Parameter | Description | DataType | Value Range |
|---|---|---|---|
| serviceName | Name of the service to which tracing is applied. | String | scp-worker |
{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}Table 2-197 REST API: PUT Single Method
| Parameter | Description | DataType | Value Range | Mandatory |
|---|---|---|---|---|
| msgTracingEnabled | Enable/Disable jaeger trace | Boolean | True/False | Yes |
| msgJsonBodyEnabled | Enable/Disable json body trace | Boolean | True/False | Yes |
| serviceName | Name of the service to which tracing parameters are applied. | String | scp-worker | Yes |
Success Response
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker
{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}
{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}- Scenario 1: When the serviceName is anything else other than
scp-worker and the service name does not match with the servicename in
URI.
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker
Request Body:{ "msgTracingEnabled": true, "msgJsonBodyEnabled": false, "serviceName": "scp-workerbjasd" }Response Header:
Status Code: 400 Bad Request
Request connection: keep-alive
content-type: application+problem/json
date: Mon, 15 Feb 2021 05:57:49 GMT
transfer-encoding: chunked
Response body:{ "title": "Invalid Service Name", "status": "400", "cause":"Invalid Service Name" } - Scenario 2: When the mandatory parameters are missing.
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker
Request Body:{ "msgJsonBodyEnabled": false, "serviceName": "scp-worker" } or { "msgTracingEnabled": true, "serviceName": "scp-worker" } or { "msgTracingEnabled": true, "msgJsonBodyEnabled": false, }Response Body:{ "status": "400", "cause":"<attribute-name> cannot be empty" } - Scenario 3: When the mandatory parameters' keys are
incorrect.
Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker
Request Body:{ "bacd": true, "msgJsonBodyEnabled": false, "serviceNameasd": "scp-worker" } Response body: { "status": "400", "error":"Bad Request" }
Configuring Operations for GET Method
Request_Type: GET
URI: /ocscp/scpc-configuration/v1/tracing/{serviceName} and /ocscp/scpc-configuration/v1/tracing
[{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}]Table 2-198 REST API: GET Method
| Parameter | Description | DataType | Value Range |
|---|---|---|---|
| serviceName | Service Name to which tracing will be applied | String | scp-worker |
Success Response
Request URI: /ocscp/scpc-configuration/v1/tracing/scp-worker
[{
"msgTracingEnabled": true,
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker"
}]Error Response
Scenario 1: When the serviceName is anything else other than scp-worker
Request URI: /ocscp/scpc-configuration/v1/tracing/scp-worker-xyz
{ "title": "Invalid Service Name", "status": "400", "cause":"Invalid Service Name" }Supported HTTP Status Code
- 200 - In case of success
- 400 - In case of Bad Request or invalid serviceName
- 404 - In case when serviceName is not found
Curl Commands
- GET:
curl -X GET -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/' - PUT ALL:
curl -X PUT -H 'Content-Type: application/json' -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/' --data '[{"msgTracingEnabled":true,"msgJsonBodyEnabled":false,"serviceName":"scp-worker"}]' - PUT
Single:
curl -X PUT -H 'Content-Type: application/json' -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker' --data '{"msgTracingEnabled":true,"msgJsonBodyEnabled":false,"serviceName":"scp-worker"}'
For information about HELM parameters, see the Oracle Communications Cloud Native Core, Service Communication Proxy Installation, Upgrade, and Fault Recovery Guide.
2.22 Configuring Alternate NF Group
This section provides the following Alternate NF Group REST API configurations:
- Resource URIs for the alternatenfgroup resource type.
- Types of data model.
- URI query parameters supported by GET, PUT, and DELETE methods.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the alternatenfgroup resource type.
Table 2-199 alternatenfgroup Resource Type
| Resource Name | Resource URI | HTTP Method | Mandatory (M) or Optional(O) | Query Parameters | Description |
|---|---|---|---|---|---|
| alternatenfgroup | /ocscp/scpc-configuration/v1/alternatenfgroup/configuration | GET | O |
|
Retrieves the alternate NF group configuration data that are
configured for corresponding query parameters.
Displays both statically configured and alternate NF group data determined from NF profiles. |
| alternatenfgroup | /ocscp/scpc-configuration/v1/alternatenfgroup/configuration | PUT | O | NA | Configures the alternate NF group configuration data using the request body in the JSON format. |
| alternatenfgroup | /ocscp/scpc-configuration/v1/alternatenfgroup/configuration | DELETE | M | serviceProtoName | Removes the alternate NF group configuration data for corresponding query parameters. |
| alternatenfgroup | /ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata | PUT | O | NA | Refreshes the alternate NF group data when required. |
Data Model
The following tables describe different data models required for configuring Alternate NF Group.
Table 2-200 AlternateNFGroupData
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Range or Supported Value | Description |
|---|---|---|---|---|---|
| dnsSRVConfiguration | AlternateNFGroupConfiguration | M | 1 | NA | The data type of the DNS SRV configuration. |
| array(dnsSrvRecords) | DNSSRVRecord | M | 1 | NA | This is the alternate NF group configuration data. |
Table 2-201 AlternateNFGroupConfiguration
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Range or Supported Value | Description |
|---|---|---|---|---|---|
| serviceProtoName | String | M | 1 | Extract and validate as per SCP FQDN regex | The service proto name of the producer NF.
The DNS SRV format: _service._proto.name. ttl IN SRV priority
weight port target. serviceProtoName represents
_service._proto.name |
| apiPrefix | String | O | 1 | NA | This is used while constructing destination URI. If empty or null, then the string is provided. |
Table 2-202 DNSSRVRecord
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Range or Supported Value | Description |
|---|---|---|---|---|---|
| target | String | M | 1 | Validate as per SCP FQDN regex | Indicates the target NF type. |
| port | String | M | 1 | 0-65535 | Indicates the port number of the ipEndPoint attribute. |
| ttl | Long | O | 1 | 30-86400 seconds | Determines the availability of data in the network
and when the data can be removed.
If the TTL value received is not within this range, then the default TTL value, which is 900s, is used as configured in the System Config table. |
| type | String | O | 1 | SRV | Identifies the record type. |
| dclass | String | O | 1 | IN | Defines DNS class values. |
| priority | Long | M | 1 | 0-65535 | Prioritizes the NF selection. |
| weight | Long | M | 1 | 0-65535 | Specifies a relative order or position for entries with the same priority. For more information, see RFC 2782. |
Table 2-203 AlternateNFGroupRefreshData
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Range or Supported Value | Description |
|---|---|---|---|---|---|
refreshAll |
String | O | 1 | true or false | Indicates whether all the alternate NF group data
should be refreshed or not.
If only the
|
spnlist |
Array | O | 1 | NA | Provides the list of Service Proto Names (SPNS) to
be refreshed.
If the |
Table 2-204 ProblemDetails
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| type | String | O | 1 | Identifies the problem type. |
| title | String | M | 1 | Summarizes the problem type. |
| status | String | M | 1 | Indicates the HTTP status code for the occurrence of the problem type. |
| detail | String | M | 1 | Provides a description specific to the occurrence of the problem type. |
| instance | String | M | 1 | Identifies the specific occurrence of this problem type. |
| cause | String | M | 1 | Defines the application error cause specific to the occurrence of this problem type. |
Request Body
The following table describes the AlternateNFGroupConfiguration data type.
Table 2-205 AlternateNFGroupConfiguration Data Type
| Data Type | Description |
|---|---|
| AlternateNFGroupConfiguration | Indicates the data type of the DNS SRV configuration.
For more information, see Table 2-201. |
Response Body
The response body data model varies based on the REST operation status. For more information, see the information provided in the subsequent tables.
Table 2-206 Response Body Data Type
| Data Type | Description |
|---|---|
| DNSSRVData | This is the alternate NF group configuration data. |
| None | Empty body |
Resource Definition
This section describes GET, PUT, and DELETE resource types supported by Alternate NF Group.
GET API
This resource fetches the alternate NF group configuration based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration
Request Body
There is no request body in GET Request API.
Table 2-207 URI Query Parameters Supported by the GET Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| serviceProtoName | String | O | 1 | The service proto name of the producer NF. |
| apiPrefix | String | O | 0..1 | Optional path segments used to construct the {apiRoot} variable of the different API URIs as described in 3GPP 29.501. |
Note:
If none of the aforementioned query parameters are provided, all the user provisioned serviceProtoName data are returned.
Table 2-208 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(DNSSRVData) | M | 1 | 200 OK | This is the alternate NF group configurations data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | This data structure is sent if the query parameters validation fails. |
| ProblemDetails | M | 1 | 404 NOT FOUND | This data structure is sent when no matching entry
is found.
For information about the ProblemDetails structure, see 3GPP TS 29.571. |
Note:
The GET request only retrieves the records provisioned by users.The following examples are of successful and failed responses.
Success response:
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf2stub.scpsvc.svc" -H "accept: */*"
Response Body:
[{
"dnsSRVConfiguration": {
"serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc",
"apiPrefix": "USEast"
},
"dnsSrvRecords": [{
"target": "nf2stub.scpsvc.svc",
"port": 8080,
"ttl": 86400,
"type": "SRV",
"dclass": "IN",
"priority": 1,
"weight": 60
},
{
"target": "nf21stub.scpsvc.svc",
"port": 8080,
"ttl": 86400,
"type": "SRV",
"dclass": "IN",
"priority": 20,
"weight": 20
},
{
"target": "nf22stub.scpsvc.svc",
"port": 8080,
"ttl": 86400,
"type": "SRV",
"dclass": "IN",
"priority": 10,
"weight": 20
}
]
}]
Failure response: If the alternate NF group data is not configured.
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf23432stub.scpsvc.svc" -H "accept: */*"
{
"title": "Not Found",
"status": "404",
"detail": "Alternate NF Group Configuration not found against given query parameters",
"instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf23432stub.scpsvc.svc",
"cause": "DATA_NOT_FOUND"
}
PUT API
This resource adds the alternate NF group configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration
Table 2-209 Data Structures Supported by the PUT Request Body
| Data Type | Description |
|---|---|
| AlternateNFGroupConfiguration | Indicates the data type of the DNS SRV configuration.
For more information, see Table 2-201. |
Table 2-210 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| AlternateNFGroupConfiguration | M | 1 | 200 OK | This response is used when an existing record is updated. |
| AlternateNFGroupConfiguration | M | 1 | 201 CREATED | This response is used when a new entry is created. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | This response is used when the request body
validation fails. For example, when serviceProtoName is missing in
the request body.
For information about the ProblemDetails structure, see 3GPP TS 29.571. |
Note:
The PUT request for Alternate NF Group is allowed only when the entry for that spn is already present in DNS SERVER otherwise, it gives a 404 Not Found error for such spn.
The following examples are of successful and failed responses.
Success response:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration" -H "accept: */*" -H "Content-Type: application/json" -d "{
"apiPrefix": "USEast",
"serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc"
}"
Response:
{
"serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc",
"apiPrefix": "USEast"
}
200 OK
Failure response: Invalid request body
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration" -H "accept: */*" -H "Content-Type: application/json" -d "{
"apiPrefix": "USEast",
"serviceProtoName": "_http.npcf.rcklca63.we.pcf.5gc.oper.com"
}"
Response:
{
"title": "Bad Request",
"status": "400",
"detail": "Invalid request body received, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration",
"cause": "INVALID_REQUEST_BODY"
}
DELETE API
This resource removes the alternate NF group configuration based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration
Table 2-211 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| None | 200 OK | This response is used when the query is successful. | ||
| Problem Details | M | 1 | 404 NOT FOUND | This response is used when no matching entry is
found.
For information about the ProblemDetails structure, see 3GPP TS 29.571. |
| Problem Details | M | 1 | 400 BAD REQUEST | This response is used when serviceProtoName is
missing in the request.
For information about the ProblemDetails structure, see 3GPP TS 29.571. |
Note:
The DELETE request body removes only the records provisioned by users.The following examples are of successful and failed responses.
Success response:
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf2stub.scpsvc.svc" -H "accept: */*"
200 OK
Failure response: When no matching entry is found.
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf21232stub.scpsvc.svc" -H "accept: */*"
{
"title": "Not Found",
"status": "404",
"detail": "Alternate NF Group Configuration not found against given query parameters",
"instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf21232stub.scpsvc.svc",
"cause": "DATA_NOT_FOUND"
}
REFRESH DNS Data API
This resource refreshes the alternate NF group configuration based on the request body parameters.
Resource URI: /ocscp/scpc-configuration/{version}/alternatenfgroup/refreshdnssrvdata
Table 2-212 Data Structures Supported by the PUT Request Body
| Data Type | Description |
|---|---|
| AlternateNFGroupRefreshData | Indicates whether all the alternate NF group data should be
refreshed or not.
For more information, see Table 2-203. |
The following examples are of successful and failed responses.
Success response:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata" -H "accept: */*" -H "Content-Type: application/json" -d "{
"refreshAll": "true",
"spnlist": [
]
}"
Response:
{
"refreshAll": "true",
"spnlist": []
}
200 OK
Failure response: Invalid request body
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata" -H "accept: */*" -H "Content-Type: application/json" -d "{"spnlist":[]}"
{
"title": "Bad Request",
"status": "400",
"detail": "Invalid request body received, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata",
"cause": "INVALID_REQUEST_BODY"
}
2.23 Configuring Server Header
Resources
The following table describes the resource name to retrieve and update server header configurations in SCP.
Table 2-213 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| serverheader | /ocscp/scpc-configuration/{version}/serverheader | GET | Retrieves server header configurations in SCP. |
| serverheader | /ocscp/scpc-configuration/{version}/serverheader | PUT | Updates server header configurations in SCP. |
Data Model
The following table describes different types of server header parameters.
Table 2-214 Types of Server Header Parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| enableEnhanceServerHeaderBehavior | Boolean | M | false |
Enables or disables the enhanced server header behavior. Possible values are: true, false, 1, or 0. The enhanced server header format: List of <NF-Type>-<NF-Instance Id> in reverse order of tried producers. Producer generated error: <NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance Id1> SCP generated error: SCP-<scp fqdn> <NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance Id1> |
| sideCarProxyServerHeader | List<String> | M | Empty List | Indicates the list of strings (example: envoy,
istio-envoy, and so on )/string patterns(example: e.*y, and so on)
to identify from server header value if error response is generated
by side car proxy. If response received by SCP carries any of the
configured strings or patterns in sideCarProxyServerHeader and
response code matches with any of the configured
sideCarProxyStatusCode, it will be treated as sidecar/service mesh
generated error.
It is applicable to both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2. Note: This parameter allows the string regex patterns and empty list. |
| addServerHeaderInProducerResponse | Boolean | M | false | Enables or disables the addition of a server header
in producer NF-generated error responses by SCP during the default
behavior (which means both enableEnhanceServerHeaderBehavior and
enableEnhanceServerHeaderBehaviorV2 are false).
If set to TRUE
If set to FALSE
Possible values are: true, false, 1, or 0. |
| sideCarProxyStatusCode | List<Integer> | M | 503 | Indicates the list of server header status codes
(503 and so on)/class of status code (5xx,4xx) to identify if error
response is generated by side car proxy.
If response received by SCP carries any of the configured strings or patterns in sideCarProxyServerHeader and response code matches with any of the configured sideCarProxyStatusCode, it will be treated as sidecar/service mesh generated error. Supported range or patterns are: 5xx and 4xx Value range: 400-599 Empty list is allowed. Applicable to both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2. |
| enableEnhanceServerHeaderBehaviorV2 | Boolean | M | false | Enables or disables the new custom behavior.
The behavior enabled is mutually exclusive with enableEnhanceServerHeaderBehavior. Server header format: List of <NF-Type>-<NF-Instance Id> in reverse order of tried producer NFs. Producer NF generated error format:
<NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance
Id1>
SCP generated error format: SCP-<scp fqdn> SCP adds "SCP-<scp fqdn>" to the server header in the following scenarios:
|
Resource Definition
GET REST API
URL: curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json"
Request URI: /ocscp/scpc-configuration/{version}/serverheader
Example of a curl request:
curl -X GET
"http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H
"accept: application/json"
Response Data Structure:
Response of "curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json""
{
"enableEnhanceServerHeaderBehavior": false,
"sideCarProxyServerHeader": [],
"addServerHeaderInProducerResponse": false,
"enableEnhanceServerHeaderBehaviorV2": false,
"sideCarProxyServerHeaderStatusCode": ["503"]
}
PUT REST API
Request URI: /ocscp/scpc-configuration/{version}/serverheader
Example of a curl command:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json" -H "Content-Type: application/json" -d "
{\"enableEnhanceServerHeaderBehavior\":false,\"sideCarProxyServerHeader\":
[\"envoy\"],\"addServerHeaderInProducerResponse\":false,\"enableEnhanceServerHeaderBehaviorV2\":false,\"sideCarProxyServerHeaderStatusCode\":[\"503\",\"4xx\"]}"
Understanding sideCarProxyServerHeader and sideCarProxyStatusCode Configurations
This scenario explains sideCarProxyServerHeader and
sideCarProxyStatusCode configurations based on the following
conditions:
- Alternate routing is enabled.
- Producer NF, for example, chf1, responds with “503” and server header as “envoy”. chf2 responds with 503 without server header.
Sample SCP server header configuration:
{
"enableEnhanceServerHeaderBehavior": false,
"sideCarProxyServerHeader": ["e*y", "istio*y"],
"addServerHeaderInProducerResponse": false,
"enableEnhanceServerHeaderBehaviorV2": true,
"sideCarProxyStatusCode": [
"5xx", "4xx"
]
}
Server header behavior: SCP responds to consumer NF with "503" and "envoy" as server header.
In the above scenario, the received error response is not considered as service mesh
error because the configured sideCarProxyServerHeader regex is not
matching with the received server header. This mismatch occurs when the configured
"e*y" mismatches with the received server header "envoy".
Where,
- e*: This means zero or more occurrences of the letter e.
- y: This means exactly one occurrence of the letter y.
The pattern e*y does not match "envoy" because there are characters, n, v, and o, between e and y, which are not accounted for by the pattern e*y.
If you want to match "envoy", then you can use the following regex:
- "e.*y"
- "envoy"
In the above mentioned regex configurations, SCP treats the received error response as service mesh error and adds SCP's FQDN in the server header and sends it to the consumer NF.
2.24 Configuring SBI Message Priority
Resources
The following table describes the resource name to retrieve, add, update, and remove SBI message priority information based on the query parameters.
Table 2-215 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| sbi-message-priority | /ocscp/scpc-configuration/v1/sbi-message-priority | GET | Retrieves the SBI Message Priority configured in SCP. |
| sbi-message-priority | /ocscp/scpc-configuration/v1/sbi-message-priority | PUT | Adds and updates the SBI Message Priority configured in SCP. |
| sbi-message-priority | /ocscp/scpc-configuration/v1/sbi-message-priority | PATCH | Updates or modifies the SBI Message Priority configured in SCP. |
| sbi-message-priority | /ocscp/scpc-configuration/v1/sbi-message-priority | DELETE | Removes the configured SBI Message Priority from SCP. |
Data Model
Request Body
The following table describes the field names of the SbiMsgPriorityWrapper data type.
Table 2-216 SbiMsgPriorityWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| ruleName | String | M | default | Indicates the unique name for ruleName. |
| nfServiceName | String | M | * | Indicates all 3GPP defined NF Services as per 3GPP TS29.510. |
| httpMethods | String | M | * | Indicates the list of String HTTP methods, such as GET, POST, PUT, PATCH, DELETE, and OPTIONS. |
| messageType | String | M | * | Indicates the incoming request type. Possible values are: REQUEST or RESPONSE. |
| enableAssignPriority | boolean | O | false | Indicates whether the SMP header is available or not in the ingress message. |
| assignPriority | String | O | 16 | Indicates the "3gpp-Sbi-Message-Priority" header value. The value range is between 0 and 31. |
| enableOverridePriority | boolean | O | false | Indicates whether the SMP header is available or not in the ingress message. |
| overridePriority | String | O | 16 | Indicates the "3gpp-Sbi-Message-Priority" header value. |
* indicates that the default value is applicable for all the possible message priority rules.
Response Body
The following table describes response body data models that varies based on the REST operation status.
Table 2-217 Response Body Data Type
| DataType | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SbiMsgPriorityWrapper) | M | 1 | 200 OK | Indicates the list of Message Priorities (SbiMsgPriorityWrapper) that matches the criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than three query parameters are provided. |
[
{
"ruleName": "default",
"data": {
"nfServiceName": "*",
"httpMethods": [
"*"
],
"messageType": [
"*"
],
"enableAssignPriority": false,
"assignPriority": 16,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "*"
}
},{
....
...
}
]Resource Definition
GET REST API
This resource fetches the message priority (SBIMessagePriorityBean) based on the query parameters.
If no query parameter is provided, all the message priority are returned.
Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority
The following table describes the URI query parameters supported by the GET method on this resource.Table 2-218 URI Query Parameters Supported by the GET Method
| Field Name | DataType | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | Indicates the name of ruleName. |
| nfServiceName | String | O | Indicates all 3GPP defined NF Services as per 3GPP TS29.510 (callback and custom). |
| httpMethod | String | O | Indicates HTTP methods, such as GET, POST, PUT, PATCH, DELETE, and OPTIONS. |
| messageType | String | O | Indicates the message request or response. Possible values are: REQUEST or RESPONSE. |
Note:
The valid combination of query parameters is as follows:- ruleName
- nfServiceName
- httpMethod
- messageType
- nfServiceName + httpMethod + messageType
- nfServiceName + httpMethod
- nfServiceName + messageType
- httpMethod + messageType
Table 2-219 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SbiMsgPriorityWrapper) | M | 1 | 200 OK | Indicates the list of Message Priority (SbiMsgPriorityWrapper) that matches the criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than 3 query parameters are provided. |
Example
Successful response - 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json"
[
{
"ruleName": "default",
"data": {
"nfServiceName": "*",
"httpMethods": [
"*"
],
"messageType": [
"*"
],
"enableAssignPriority": false,
"assignPriority": 16,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "*"
}
},
{
"ruleName": "udm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"GET",
"POST"
],
"messageType":
[
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1,
"nfType": "UDM"
}
}
]Successful response - 2
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?nfServiceName=nudm_uecm" -H "accept: application/json"
[
[
{
"ruleName": "udm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"GET",
"POST"
],
"messageType": [
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1,
"nfType": "UDM"
}
}
]Successful response - 3
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?nfServiceName=nudm_uecm&messageType=REQUEST" -H "accept: application/json"
[
{
"ruleName": "udm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"GET",
"POST"
],
"messageType": [
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1,
"nfType": "UDM"
}
}
]Successful response - 4
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=default" -H "accept: application/json"
{
"ruleName": "default",
"data": {
"nfServiceName": "*",
"httpMethods": [
"*"
],
"messageType": [
"*"
],
"enableAssignPriority": false,
"assignPriority": 16,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "*"
}
}PUT REST API
This resource adds or updates the SBI message priority configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority
Table 2-220 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| SbiMsgPriorityWrapper | M | 1 | 200 OK | Indicates the SBI message priority configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"nudm_test\",\"data\":{\"nfServiceName\":\"nudm_uecm\",\"httpMethods\":[\"PUT\",\"PATCH\"],\"messageType\":[\"service-request\",\"service-response\"],\"enableAssignPriority\":true,\"assignPriority\":10,\"enableOverridePriority\":true,\"overridePriority\":10}}"
{
"ruleName": "nudm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"PUT",
"PATCH"
],
"messageType": [
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": true,
"overridePriority": 10,
"nfType": "UDM"
}
}
200 OKcurl -X 'PUT' \
'http://<SCP configuration FQDN>:<port>/ocscp/scpc-configuration/v1/sbi-message-priority' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "nef_qos_test",
"data": {
"nfServiceName": "3gpp-as-session-with-qos",
"httpMethods": [
"GET",
"POST"
],
[
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": 1,
"nfType": "NEF"
}
}'
Failure case 1: Due to missing data object in the request body.
$ curl -X 'PUT' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "rule1"
}'
Response Body:
{
"title": "Bad Request",
"status": 400,
"detail": "data Object is missing, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
"cause": "MANDATORY_IE_MISSING"
}Failure case 2: Due to missing fields in request body.
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"data\":{\"assignPriority\":10,\"dNNs\":\"\",\"enableAssignPriority\":true,\"enableOverridePriority\":true,\"httpMethods\":[\"PUT\",\"PATCH\"],\"messageType\":\"REQUEST\",\"overridePriority\":10,\"sNSSAIs\":\"\"},\"ruleName\":\"nudm_test\"}"
Response Body:
{
"title": "Bad Request",
"status": "400",
"detail": "nfServiceName is missing, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
"cause": "MANDATORY_IE_MISSING"
}Failure case 2: Missing fields in request body
$ curl -X 'PUT' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "rule1",
"data": {
"httpMethods": [
"*"
],
"messageType": [
"notification-response",
"notification-request"
],
"enableAssignPriority": false,
"assignPriority": 16,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "*"
}
}'
Response Body:
{
"title": "Bad Request",
"status": 400,
"detail": "nfServiceName is missing, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
"cause": "MANDATORY_IE_MISSING"
}Failure case 2: Overlapping of Keys
$ curl -X 'PUT' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "rule4",
"data": {
"nfServiceName": "*",
"httpMethods": [
"*"
],
"messageType": [
"notification-response",
"notification-request"
],
"enableAssignPriority": false,
"assignPriority": 16,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "*"
}
}'
Response Body:
{
"title": "Bad Request",
"status": 400,
"detail": "Overlapping of Keys in request Body, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
"cause": "MANDATORY_IE_INCORRECT"
}PATCH REST API
This resource adds or updates the message priority configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority
Table 2-221 URI Query Parameters Supported by the PATCH method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | M | 1 | Indicates the name of ruleName. |
| patchDocument | String | M | 1 | Indicates the patchDocument to be added to the
request body.
Example: [{"op":"replace","path":"/data/nfServiceName","value":"nudm_sdm"},{"op":"replace","path":"/data/messageType","value":"REQUEST"},{"op":"replace","path":"/data/httpMethods","value":["GET"]}] |
Successful response
$ curl -X 'PATCH' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/merge-patch+json' \
-d '[{ "op": "replace", "path": "/data/nfServiceName", "value": "nudm-uecm" }]'
$ curl -X 'PATCH' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/merge-patch+json' \
-d '[{ "op": "replace", "path": "/data/nfType", "value": "UDM" }]'
$ curl -X 'PATCH' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/merge-patch+json' \
-d '[{"op":"replace","path":"/data/httpMethods","value":["GET"]}]'
$ curl -X 'PATCH' \
'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/merge-patch+json' \
-d '[{"op":"replace","path":"/data/messageType","value":["service-request"]}]'Table 2-222 PATCH Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| SbiMsgPriorityWrapper | M | 1 | 200 OK | Indicates the SBI message priority configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
Response body
Response Body:
{
"ruleName": "udm_test1",
"data": {
"nfServiceName": "nudm_sdm",
"httpMethods": [
"GET"
],
"messageType": [
"service-request",
"service-response"
],
"enableAssignPriority": true,
"assignPriority": 25,
"enableOverridePriority": false,
"overridePriority": 16,
"nfType": "UDM"
}
}DELETE REST API
This resource removes the message priority configuration data based on query parameters.
Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority
Table 2-223 URI Query Parameters Supported by the DELETE method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | O | 1 | Indicates the name of ruleName. |
Note:
ruleName is a valid combination of query parameters.Table 2-224 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 204 OK | Returns only the response code in successful scenarios. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. |
Successful response - 1
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=udm_test" -H "accept: application/json" */*"
204 OKFailure case 1: When no matching entry is found.
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=udm_test" -H "accept: */*"
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "Sbi Message Priority configuration data not found for the given 'ruleName': udm_test",
"instance": "/ocscp/scpc-configuration/v1/sbi-message-priority/udm_test",
"cause": "DATA_NOT_FOUND"
}2.25 Pod Overload Control Configurations
This section provides information about overload policy configurations to control and discard request messages sent to scp-worker.
2.25.1 Configuring Pod Overload Control Policy
Resources
The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Control Policy data based on the query parameters.
Table 2-225 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| pod-overload-control-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy | GET | Retrieves all the scp-worker Pod Overload Control Policy data configured in SCP. |
| pod-overload-control-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy | GET | Retrieves the scp-worker Pod Overload Control Policy data configured based on the threshold level in SCP when the threshold level is provided as query parameters, which is optional. If it is absent, then it retrieves all Overload Control Policy data configured in SCP. |
| pod-overload-control-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy | PUT | Adds or updates the scp-worker Pod Overload Control
Policy data to SCP.
Note:
|
| pod-overload-control-policy | /ocscp/scpc-configuration/v1/pod-overload-control-policy | DELETE | Removes the configured scp-worker Pod Overload
Control Policy data at the threshold level.
Note: SCP does not allow the removal of default threshold levels: MINOR, MAJOR, WARN, and CRITICAL. |
Data Model
Request Body
The following table describes the field names of the OverloadCtrlPolicyWrapper data type.
Table 2-226 OverloadCtrlPolicyWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL. |
| data | WorkerPodOlCtrlPolicyData | M | Contains the cpuOverloadConfig data. |
Table 2-227 WorkerPodOlCtrlPolicyData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| cpuOverloadConfig | Object | M | Contains CPU overload control details. |
| pendingTransactionOverloadConfig | Object | C | Configures the parameters such as onSetThreshold,
abatementThreshold, and abatementTimeInMilliseconds for all the
threshold levels.
Note: The pendingTransactionOverloadConfig parameter is optional, but if a user wants to keep this configuration, then all three parameters of this configuration should be provided. |
Table 2-228 CpuOverloadConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Range | Description |
|---|---|---|---|---|
| onSetThreshold | Integer | M | 2-100 | Indicates the Pod CPU overload onset threshold value
for a congestion level.
Note: This value is the percentage of CPU utilization. |
| abatementThreshold | Integer | M | 1-99 | Indicates the congestion level abatement threshold
value.
Note: This value is the percentage of CPU utilization. |
| abatementTimeInMilliSeconds | Integer | M | 50 ms to 5000 ms | Indicates the congestion level abatement threshold time. |
Table 2-229 pendingTransactionOverloadConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Range | Description |
|---|---|---|---|---|
| onSetThreshold | Integer | M | 2-100 | Indicates the percentage of pod's pending
transaction for given maximum allowed pending transaction.
Note: Maximum allowed pending transaction is the maximum number of requests pending at SCP at any point in time for a particular SCP-Worker CPU profile deployed. For maximum allowed pending transaction per SCP-Worker CPU profile, see Table 2-230. |
| abatementThreshold | Integer | M | 1-99 | Indicates the congestion level abatement threshold
value.
Note: This value is the percentage of the maximum allowed pending transactions supported by SCP. |
| abatementTimeInMilliSeconds | Integer | M | 50ms to 5000ms | Indicates the congestion level abatement threshold time. |
Table 2-230 Maximum Allowed Pending Transaction per SCP-Worker CPU Profile
| SCP-Worker CPU Profile | Maximum Allowed Pending Transaction |
|---|---|
| 4 | 6000 |
| 8 | 12000 |
| 12 | 15000 |
Table 2-231 CpuOverloadConfig Threshold Level
| Threshold Level | onSetThreshold | abatementThreshold | Abatement Time in millisecond |
|---|---|---|---|
| WARN | 75 | 70 | 200 |
| MINOR | 82 | 76 | 200 |
| MAJOR | 87 | 83 | 200 |
| CRITICAL | 92 | 88 | 200 |
Note:
These alarms are raised when the CPU utilization reaches the mentioned threshold level.Table 2-232 pendingTransactionOverloadConfig Threshold Level
| Threshold Level | onSetThreshold | abatementThreshold | Abatement Time in millisecond |
|---|---|---|---|
| WARN | 75 | 70 | 200 |
| MINOR | 82 | 76 | 200 |
| MAJOR | 87 | 83 | 200 |
| CRITICAL | 92 | 88 | 200 |
Note:
These alarms are raised when the pending transaction reaches the mentioned threshold level.Resource Definition
GET REST API
This resource fetches the scp-worker Pod Overload Control Policy data based on the query parameters.
If no query parameter is provided, all the Overload Control Policy data is returned.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy
Table 2-233 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for
example, MINOR, MAJOR, WARN, and CRITICAL.
This is the threshold level for which the query is being triggered. This returns the overload Control policy configuration for the queried threshold level. |
Table 2-234 Data Structures Supported by the GET ALL Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| List<OverloadCtrlPolicyWrapper> | M | 1 | 200 OK | Indicates the list of OverloadCtrlPolicyWrapper data. |
Table 2-235 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| OverloadCtrlPolicyWrapper | - | 1 | 200 OK | Indicates the OverloadCtrlPolicyWrapper
configuration data.
On successful response, returns the overload Control configuration data. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns error with problem details in case of any issue and if the query is unable to fetch the results. This data type can have 403 response code that indicates operation is not allowed. |
Example
Successful response
{
"thresholdLevel": "CRITICAL",
"data": {
"cpuOverloadConfig": {
"onSetThreshold": 95,
"abatementThreshold": 92,
"abatementTimeInMilliSeconds": 90
},
"pendingTransactionOverloadConfig": {
"onSetThreshold": 95,
"abatementThreshold": 92,
"abatementTimeInMilliSeconds": 50
}
}
}
PUT REST API
This resource adds or updates the scp-worker Pod Overload Control Policy configuration data using the request body.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy
Table 2-236 Data Structures Supported by the PUT Response Body
| Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| OverloadCtrlPolicyWrapper | M | 1 | 200 OK | Indicates the OverloadCtrlPolicyWrapper
configuration data.
On successful response, returns the overload Control configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed. Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 29.571. |
Example
Successful response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-control-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"cpuOverloadConfig\":{\"abatementThreshold\":96,\"abatementTimeInMilliSeconds\":600,\"onSetThreshold\":97}},\"thresholdLevel\":\"Level1\"}"
Response Code: 201 CREATED
Response Body:
{
"thresholdLevel": "Level1",
"data": {
"cpuOverloadConfig": {
"onSetThreshold": 97,
"abatementThreshold": 96,
"abatementTimeInMilliSeconds": 90
},
"pendingTransactionOverloadConfig": {
"onSetThreshold": 97,
"abatementThreshold": 96,
"abatementTimeInMilliSeconds": 50
}
}
DELETE REST API
This resource removes the scp-worker Pod Overload Control Policy configuration data based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy
Table 2-237 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| thresholdLevel | String | M | 1 | Indicates the name of a custom threshold level.
This is the threshold level for which the query is being triggered. This returns the overload Control policy configuration for the queried threshold level. |
Note:
- thresholdLevel is a valid combination of query parameters.
- Only custom threshold levels can be removed. The default levels, MINOR, MAJOR, WARN, and CRITICAL cannot be removed.
Table 2-238 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 204 OK | Returns the successful response in case deletion of record is successful. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed. |
Example
Successful response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-control-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response code : 204 No Content
2.25.2 Configuring Pod Overload Action Policy
Resources
The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Action Policy data based on the query parameters.
Table 2-239 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| pod-overload-action-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy | GET | Retrieves all the scp-worker Pod Overload Action Policy data configured in SCP. |
| pod-overload-action-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy | GET | Retrieves the scp-worker Pod Overload Action Policy data configured based on the threshold level in SCP. |
| pod-overload-action-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy | PUT | Adds scp-worker Pod Overload Action Policy data to
SCP. By default, this policy supports MINOR, MAJOR, and CRITICAL
levels.
Note:
|
| pod-overload-action-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy | DELETE | Removes the configured scp-worker Pod Overload
Action Policy data by the threshold level.
Note: You cannot remove MINOR, MAJOR, and CRITICAL threshold levels. |
Data Model
Request Body
The following table describes the field names of the OverloadActionWrapper data type.
Table 2-240 OverloadActionWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for example, MINOR, MAJOR, and CRITICAL. |
| data | WorkerPodOlActionPolicyData | M | Contains the cpuOverloadConfig data. |
Table 2-241 WorkerPodOlActionPolicyData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Range | Description |
|---|---|---|---|---|
| overloadAction | Enum | M | NO_ACTION and DISCARD | Indicates the overloadAction objects, for example:
NO_ACTION and DISCARD.
NO_ACTION indicates that no action is taken for the configured thresholdLevel. DISCARD indicates that the messages can be discarded based on the "3gpp-Sbi-Message-Priority" header or percentage. The default value is DISCARD. |
| errorResponsePercentage | Integer | M | 100 | Indicates the percentage of messages with error responses when overloadAction is DISCARD. |
| ErrorProfileConfiguration | Object | M | NA | Indicates error profiles to be used for responding with error responses if overloadAction is configured. |
| DiscardPolicyType | Enum | M | DISCARD_PERCENTAGE and SBI_MESSAGE_PRIORITY | Indicates the DiscardPolicyType objects. For
example: DISCARD_PERCENTAGE and SBI_MESSAGE_PRIORITY.
DISCARD_PERCENTAGE enables the discard message by percentage. SBI_MESSAGE_PRIORITY enables the discard message by priority. |
Table 2-242 ErrorProfileConfiguration
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| errorCode | Integer | M | 429 | Indicates an HTTP status error code. |
| errorCause | String | M | NF_CONGESTION_RISK | Indicates the cause of the pod overload. |
| errorTitle | String | M | SCP is in pod overload congestion | Indicates the name of the error. |
| errorDescription | String | M | SCP <podName> pod is in <congestion level> pod overload congestion | Describes the cause of the error. |
| retryAfter | String | O | NA | Indicates the interval to start the next retry attempt. |
| redirectUrl | String | O | NA | Indicates the alternate URL to redirect request messages. |
Resource Definition
GET REST API
This resource fetches the scp-worker Pod Overload Action Policy data based on the query parameters.
If no query parameter is provided, all the Overload Action Policy data is returned.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy
Table 2-243 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for
example, MINOR, MAJOR, and CRITICAL.
This is the threshold level for which the query is being triggered. This returns the overload action policy configuration for the queried threshold level. |
Note:
thresholdLevel is a valid combination of query parameters.Table 2-244 Data Structures Supported by the GET ALL Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| List<OverloadActionPolicyWrapper> | 1 | 200 OK | Indicates the list of OverloadActionPolicyWrapper data. |
Table 2-245 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| OverloadActionPolicyWrapper | 1 | 200 OK | Indicates the OverloadActionPolicyWrapper
configuration data.
On successful response, returns the overload Action configuration data. |
Example
Successful response
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy?thresholdLevel=CRITICAL" -H "accept: application/json"
Response code : 200 OK
Response data:
{
"thresholdLevel": "CRITICAL",
"data": {
"overloadAction": "DISCARD",
"errorResponsePercentage": 100,
"errorProfileConfiguration": {
"errorCode": 429,
"errorCause": "",
"errorTitle": "",
"errorDescription": "",
},
"discardPolicyType": "DISCARD_PERCENTAGE"
}
}
PUT REST API
This resource adds or updates the scp-worker Pod Overload Action Policy configuration data using the request body.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy
Table 2-246 Data Structures Supported by the PUT Response Body
| Field Name | Mandatory (M) or Optional(O) | Response Codes | Description |
|---|---|---|---|
| OverloadActionWrapper | M | 200 OK | Indicates the OverloadAction configuration data.
On successful response, returns the overload Action configuration data. |
| ProblemDetails | M | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed. Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 3GPP TS 29.571. |
Example
Successful response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-action-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"discardPolicyType\":\"DISCARD_PERCENTAGE\",\"errorProfileConfiguration\":{\"errorCause\":\"\",\"errorCode\":429,\"errorDescription\":\"string\",\"errorTitle\":\"string\",\"redirectUrl\":\"string\",\"retryAfter\":\"string\"},\"errorResponsePercentage\":67,\"overloadAction\":\"NO_ACTION\"},\"thresholdLevel\":\"Level1\"}"
Response Code: 201 CREATED
Response Data:
{
"thresholdLevel": "Level1",
"data": {
"overloadAction": "NO_ACTION",
"errorResponsePercentage": 100,
"errorProfileConfiguration": {
"errorCode": 429,
"errorCause": "",
"errorTitle": "string",
"errorDescription": "string",
"retryAfter": "string",
"redirectUrl": "string"
},
"discardPolicyType": "DISCARD_PERCENTAGE"
}
}
DELETE REST API
This resource removes the scp-worker Pod Overload Action Policy configuration data based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy
Table 2-247 URI Query Parameters Supported by the DELETE Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| thresholdLevel | String | M | 1 | Indicates the name of a threshold level, for
example, MINOR, MAJOR, and CRITICAL.
This is the threshold level for which the query is being triggered. This returns the overload Action policy configuration for the queried threshold level. |
Note:
thresholdLevel is a valid combination of query parameters.Table 2-248 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 204 NO CONTENT | Returns the successful response in case deletion of record is successful. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed. |
Example
Successful response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response Code: 204 No Content
2.25.3 Configuring Pod Overload Discard Policy
Resources
The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Discard Policy data based on the query parameters.
Table 2-249 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| pod-overload-discard-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy | GET | Retrieves all the scp-worker Pod Overload Discard Policy data configured in SCP. |
| pod-overload-discard-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy | GET | Retrieves the scp-worker Pod Discard Policy data configured based on the threshold level in SCP. |
| pod-overload-discard-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy | PUT | Adds the scp-worker Pod Discard Policy data to SCP.
By default, this policy supports MINOR, MAJOR, and CRITICAL
levels.
Note:
|
| pod-overload-discard-policy | /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy | DELETE | Removes the configured scp-worker Pod Discard Policy
data by the threshold level.
Note: You cannot remove MINOR, MAJOR, and CRITICAL threshold levels. |
Data Model
Request Body
The following table describes the field names of the DiscardPolicyWrapper data type.
Table 2-250 DiscardPolicyWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL. |
| data | WorkerPodOlDiscardPolicyData | M | Contains the cpuOverloadConfig data. |
Table 2-251 DiscardPolicyConfig Threshold Level
| Threshold Level | discardPercentage | sbiMsgPriorityDiscardForm |
|---|---|---|
| MINOR | 20 | 16 |
| MAJOR | 50 | 8 |
| CRITICAL | 70 | 4 |
Table 2-252 WorkerPodOlDiscardPolicyData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Range | Description |
|---|---|---|---|---|
| discardPercentage | Integer | M | 1-100 | Indicates the percentage of messages to be discarded if the CPU overload threshold level exceeds the configured limit. |
| sbiMsgPriorityDiscardFrom | Integer | M | 0-31 | Discards the requests having SBI message priority greater than or equal to the configured limit. |
Resource Definition
GET REST API
This resource fetches the scp-worker Pod Overload Discard Policy data based on the query parameters.
If no query parameter is provided, all the Discard Policy data is returned.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy
Table 2-253 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| thresholdLevel | String | M | Indicates the name of a threshold level, for
example, MINOR, MAJOR, WARN, and CRITICAL.
This is the threshold level for which the query is being triggered. This returns the overload Discard policy configuration for the queried threshold level. |
Table 2-254 Data Structures Supported by the GET ALL Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| List<DiscardPolicyWrapper> | M | 1 | 200 OK | Indicates the list of DiscardPolicyWrapper data. |
Table 2-255 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| DiscardPolicyWrapper | M | 1 | 200 OK | Indicates the DiscardPolicyWrapper configuration
data.
On successful response, returns the overload Discard configuration data. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns error with problem details in case of any issue and if the query is unable to fetch the results. This data type can have 403 response code that indicates operation is not allowed. |
Example
Successful response
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy?thresholdLevel=CRITICAL" -H "accept: application/json"
Response Code: 200 OK
Response Body:
{
"thresholdLevel": "CRITICAL",
"data": {
"discardPercentage": 30,
"sbiMsgPriorityDiscardFrom": 4
}
}
PUT REST API
This resource adds or updates the scp-worker Pod Overload Discard Policy configuration data using the request body.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy
Table 2-256 Data Structures Supported by the PUT Response Body
| Field Name | Mandatory (M) or Optional(O) | Response Codes | Description |
|---|---|---|---|
| DiscardPolicyWrapper | M | 200 OK | Indicates the DiscardPolicy configuration data.
On successful response, returns the overload Discard configuration data. |
| ProblemDetails | M | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed. Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 29.571. |
Example
Successful response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-discard-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"discardPercentage\":40,\"sbiMsgPriorityDiscardFrom\":19},\"thresholdLevel\":\"LEVEL1\"}"
Response Code: 201 OK
Response Body:
{
"thresholdLevel": "LEVEL1",
"data": {
"discardPercentage": 40,
"sbiMsgPriorityDiscardFrom": 19
}
}
DELETE REST API
This resource removes the scp-worker Pod Overload Discard Policy configuration data based on the query parameters.
Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy
Table 2-257 URI Query Parameters Supported by the DELETE Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| thresholdLevel | String | M | 1 | Indicates the name of a threshold level, for
example, MINOR, MAJOR, WARN, and CRITICAL.
This is the threshold level for which the query is being triggered. This returns the overload Discard policy configuration for the queried threshold level. |
Note:
thresholdLevel is a valid combination of query parameters.Table 2-258 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 200 OK | Returns the successful response in case deletion of record is successful. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed. |
Example
Successful response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response Code: 204 No Content
2.26 Configuring SEPP InterPlmn Info
Resources
The following table describes the resource name to retrieve, add, update, and remove SEPP Info based on the query parameters.
Table 2-259 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| sepp-config | /ocscp/scpc-configuration/v1/sepp-config | GET | Retrieves all the SEPP Info configured list at SCP or specific records based on the query parameters. |
| sepp-config | /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} | GET | Retrieves SEPP Info records based on nfInstanceId as a path variable. |
| sepp-config | /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} | PUT | Adds or updates SEPP Info details configured in SCP. |
| sepp-config | /ocscp/scpc-configuration/v1/sepp-config/ {nfInstanceId} | PATCH | Updates or modifies SEPP Info details configured in SCP. |
| sepp-config | /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} | DELETE | Removes the configured SEPP Info details based on nfInstanceId. |
Data Model
Request Body
The following table describes the field names of the InterPlmnRoutingInfo data type.
Table 2-260 InterPlmnRoutingInfo
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| nfInstanceId | String | M | Specifies the identity of the NF instance for which routing information is fetched. |
| seppInfo remotePlmnList | String | M | This is the remote PLMN list served by SEPP, utilized in roaming scenarios to select SEPP based on the PLMN in the FQDN. |
| mcc | String | M | Indicates the mobile country code.
It is a three digit number ranging from 0 to 9. |
| mnc | String | M | Indicates the mobile network code.
It can be of two or three digits ranging from 0 to 9. |
| http | String | M | Enables the HTTP connection.
The value can be 0 to 65535. |
| https | String | M | Enables the HTTPS connection.
The value can be 0 to 65535. |
Response Body
The following table describes response body data models that varies based on the REST operation status.
Table 2-261 Response Body Data Type
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(InterPlmnRoutingInfo) | M | 1 | 200 OK | Indicates the list of SEPP Info (InterPlmnRoutingInfo) matching criteria. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
[
{
"nfInstanceId" : "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "327",
"mnc": "15"
}, {
"mcc": "328",
"mnc": "16"
}, {
"mcc": "329",
"mnc": "17"
}],
"seppPorts": {
"http": "8000",
"https": "8090"
}
}
},{
....
...
}
]
Resource Definition
GET REST API
This resource fetches the SEPP Info details (InterPlmnRoutingInfo) based on the query parameters.
If no query parameter is provided, all the SEPP info details are returned.
Resource URI: /ocscp/scpc-configuration/v1/sepp-config
The following table describes the URI query parameters supported by the GET method on this resource.Table 2-262 URI Query Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| nfInstanceId | String | O | Specifies the identity of the NF instance for which routing information is fetched. |
Note:
nfInstanceId is a valid combination of query parameter or path variable.Table 2-263 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(InterPlmnRoutingInfo) | M | 1 | 200 OK | Indicates the list of SEPP Info (InterPlmnRoutingInfo) or specific record based on the query parameters. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
Example
Successful response - 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config" -H "accept: application/json"
[
{
"nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "327",
"mnc": "15"
}, {
"mcc": "328",
"mnc": "16"
}],
"seppPorts": {
"http": "8000",
"https": "8090"
}
}
}
]Successful response - 2
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
{
"nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "327",
"mnc": "15"
}, {
"mcc": "328",
"mnc": "16"
}],
"seppPorts": {
"http": "8000",
"https": "8090"
}
}
}
Successful response - 3
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
{
"nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "327",
"mnc": "15"
}, {
"mcc": "328",
"mnc": "16"
}],
"seppPorts": {
"http": "8000",
"https": "8090"
}
}
}
Failure case 1
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "Sepp Info configuration data not found against given query parameter(s), Please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a",
"cause": "DATA_NOT_FOUND"
}
PUT REST API
This resource adds or updates the SEPP Info configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId}
Table 2-264 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| InterPlmnRoutingInfo | M | 1 | 200 OK | Indicates the InterPlmn RoutingInfo configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1. |
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: */*" -H "Content-Type: application/json" -d "{ \"nfInstanceId\": \"9faf1bbc-6e4a-4454-a507-aef01a101a06\", \"seppInfo\": { \"remotePlmnList\": [{ \"mcc\": \"267\", \"mnc\": \"321\" }], \"seppPorts\": { \"http\": \"8000\", \"https\": \"4430\" } }} '"
{
"nfInstanceId": "2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "267",
"mnc": "321"
}],
"seppPorts": {
"http": "8000",
"https": "4430"
}
}
}
200 OKThis resource adds or updates the SEPP Info configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sepp-config/ {nfInstanceId}
Table 2-265 URI Query Parameters Supported by the PATCH method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| nfInstanceId | String | M | 1 | Specifies the identity of the NF instance for which routing information is fetched. |
| patchDocument | String | M | 1 | Indicates the patchDocument to be sent.
Example:
|
Successful response: Request Body
$ curl -X PATCH "http://<localhost>:8081/ocscp/scpcconfiguration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json" -H "Content-Type: application/merge-patch+json" -d "[{\"op\":\"replace\",\"path\":\"/seppInfo/seppPorts/https\",\"value\":\"9010\"}, {\"op\":\"replace\",\"path\":\"/seppInfo/seppPorts/http\",\"value\":\"9100\"}]"Table 2-266 PATCH Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| InterPlmnRoutingInfo | M | 1 | 200 OK | Indicates the InterPlmn RoutingInfo configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1. |
Response body
{
"nfInstanceId": "2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
"seppInfo": {
"remotePlmnList": [{
"mcc": "327",
"mnc": "15"
}, {
"mcc": "328",
"mnc": "16"
}],
"seppPorts": {
"http": "9010",
"https": "9000"
}
}
}DELETE REST API
This resource removes the SEPP Info configuration data based on query parameters.
Resource URI: /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId}
Table 2-267 URI Query Parameters Supported by the DELETE method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| nfInstanceId | String | O | 1 | Specifies the identity of the NF instance for which routing information is fetched. |
Note:
nfInstanceId is a valid combination of query parameter or path variable.Table 2-268 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| None | 204 OK | In successful scenarios, only response code is returned. | ||
| ProblemDetails | M | 1 | 404 NOT FOUND | When no matching entry is found. |
Successful response - 1
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json" */*"
204 OK
Failure case 1: When no matching entry is found.
$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "Sepp Info configuration data not found against given query parameter(s), Please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/sepp-config4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a",
"cause": "DATA_NOT_FOUND"
}2.27 Configuring App Routing Options
The following section provides configuration details about routing options applicable for Mediation.
Resources
The following table describes the resource name to retrieve, add, update, and remove App routing options.
Table 2-269 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| approutingoptions | /ocscp/scpc-configuration/{version}/approutingoptions | GET ALL | Retrieves all configured App routing options. |
| approutingoptions | /ocscp/scpc-configuration/{version}/approutingoptions/{appname} | GET |
Retrieves the configured App routing options specified using the field appname. Note: Routing options can be specified only for Mediation, therefore only "mediation" appname is supported. |
| approutingoptions | /ocscp/scpc-configuration/{version}/approutingoptions/{appname} | PUT |
Updates the configured App routing options specified using the field appname. Note: You cannot create new routing options but you can only update them. Routing options for appname Mediation can only be updated. |
| approutingoptions | /ocscp/scpc-configuration/{version}/approutingoptions/{appname} | DELETE | Removes the configured App routing options specified
using the appname field.
Note: DELETE method is not supported. |
Data Model
The following table describes the supported data type.
Table 2-270 approutingoptions
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Value |
|---|---|---|---|---|---|---|
| appName | String | M | 1 | Indicates the name of the application for which the routing option has to be configured. | mediation | mediation |
| routingOptions | JSON | M | 1 | Indicates the JSON structure to store the routing options. | NA | { "appName": "mediation", "routingOptions":
{ "v1": { "retry": true, "maxRetryAttempts": 2,
"responseTimeout": "1s", "exceptionErrorResponses": [ {
"statusCode": [ "DEFAULT" ], "action": "continue_processing" },
{ "statusCode": [ "MSGDECODEFAILURE" ], "action":
"continue_processing" }, { "statusCode": [ "MAXHDRSIZEEXCEEDED"
], "action": "continue_processing" } ] } } } |
Table 2-271 approutingOptions
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description | Default Value |
|---|---|---|---|---|
| retry | boolean | O | Indicates whether to attempt retry or not when the routing fails. | true |
| maxRetryAttempts | INT | O | Indicates the maximum number of retry attempts.
Minimum value is 1, Maximum value is 10. |
1 |
| responseTimeout | String | O | Indicates the allotted time to respond to a message
request.
Value Range: 100 - 50000 milliseconds or 1 - 50 seconds. |
1s |
| exceptionErrorResponses | List<ExceptionErrorResponses> | O | Indicates the list of ExceptionErrorResponses.
Specifies the methods to handle exceptions in case of routing
failures.
Note:
|
"exceptionErrorResponses": [ { "statusCode":
[ "DEFAULT" ], "action": "continue_processing" }, {
"statusCode": [ "MSGDECODEFAILURE" ], "action":
"continue_processing" }, { "statusCode": [ "MAXHDRSIZEEXCEEDED"
], "action": "continue_processing" }, ] |
Table 2-272 exceptionErrorResponses
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Default Value |
|---|---|---|---|---|---|
| statusCode | List<String> | M | 1..N | Indicates the list of status codes that matches with the status code received from the application. The required action specified by action field is taken. | HTTP Status Codes, HTTP Status with other defined
custom status (RESPONSE_TIMEOUT and CONNECTION_FAILURE)
Default values are: DEFAULT, MSGDECODEFAILURE, and MAXHDRSIZEEXCEEDED |
| action | String | M | 1 | Indicates the action to be taken when the above mentioned status code is received. |
send_error_response: Error to be sent if the received status code from application is present in the statusCode list. continue_processing: Continue with processing of message if the received status code from application is present in the statusCode list. |
| errorProfileConfiguration | JSON | C (mandatory when action=send_error_response) | 1 | The error profile to be sent when the action to perform is send_error_response when the statusCode matches. | NA |
Table 2-273 errorProfileConfiguration
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description | Default Value |
|---|---|---|---|---|
| errorCode | Int | O | Indicates configurable error codes to be sent by SCP to consumer NFs. | Valid HTTP status codes include 5xx and 4xx error codes, as well as custom error codes such as DEFAULT, RESPONSE_TIMEOUT, and CONNECTION_FAILURE. For example, 500, 502, 400, 404 and so on. |
| errorCause | String | O |
Indicates the error cause that is specific to the occurrence of the problem. |
NA |
| errorTitle | String | O | Indicates the title of the error. | NA |
| errorDescription | String | O | Indicates an explanation specific to the occurrence of the problem. | NA |
| retryAfter | String | C | Indicates the retry interval. |
Mandatory if ERROR code is 3xx series and action is send_error_response. The time unit supported is seconds. Example: 2s, 3s, and so on. |
| redirectUrl | String | C |
Indicates the AbsoluteURL of the resource to which the message is redirected to. |
Mandatory if ERROR code is 3xx series and action is send_error_response. |
Default Routing Options
{
"appName": "mediation",
"routingOptions": {
"retry": true,
"maxRetryAttempts": "2",
"responseTimeout": "1s",
"exceptionErrorResponses": [
{
"statusCode": [
"DEFAULT"
],
"action": "continue_procesing"
},
{
"statusCode": [
"MSGDECODEFAILURE"
],
"action": "continue_procesing"
},
{
"statusCode": [
"MAXHDRSIZEEXCEEDED"
],
"action": "continue_procesing"
}
]
}
}Request or Response Body
The following table describes response body based on the REST operation status.
RoutingOptions
{
"appname": "mediation"
"routingOptions":
{
"retry": true,
"maxRetryAttempts": 4,
"responseTimeout": 5s,
"exceptionErrorResponses": [{
"statusCode": ["501", "504", "connection_failure", "response_timeout", "SERVICE_UNAVAILABLE" ]
"action": "send_error",
"errorProfileConfiguration": {
"errorCode": 503,
"errorCause": "MEDIATION_NOT_REACHABLE",
"errorTitle": "Mediation service unreachable",
"errorDescription": "Mediation service is not reachable",
"retryAfter": "5",
"redirectUrl": ""
}
}]
}
}
Resource Definition
GET REST API
This resource retrieves routing options for all the applications.
Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions
The following table describes the data structure supported by the GET method on this resource.Table 2-274 Data Structure Supported by the GET Method
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| approutingoptions | M | 1..N | 200 OK | Routing options configuration for the application. |
This resource retrieves routing options for the application specified by appname.
Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}
The following table describes the path parameters supported by the GET method on this resource.Table 2-275 Path Parameters Supported by the GET Method
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| appname | String | M | Fetches configurations on app name.
The supported value is "mediation". |
Table 2-276 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| approutingoptions | M | 1 | 200 OK | Indicates the routing options configuration for the Application. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Success response for GET ALL
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions" -H "accept: application/json"
HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT
[
{
"appName": "mediation",
"routingOptions": {
"retry": false,
"maxRetryAttempts": 6,
"responseTimeout": "10s",
"exceptionErrorResponses": [
{
"statusCode": [
"DEFAULT"
],
"action": "continue_processing"
},
{
"statusCode": [
"MSGDECODEFAILURE"
],
"action": "continue_processing"
},
{
"statusCode": [
"MAXHDRSIZEEXCEEDED"
],
"action": "continue_processing"
},
{
"statusCode": [
"501"
],
"action": "send_error_response",
"errorProfileConfiguration": {
"errorCode": 501,
"errorCause": "NOT FOUND",
"errorTitle": "NOT FOUND ",
"errorDescription": "NOT FOUND",
"retryAfter": "",
"redirectUrl": ""
}
}
]
}
}
]Success response for GET
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/mediation" -H "accept: application/json"
HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT
{
"appName": "mediation",
"routingOptions": {
"retry": false,
"maxRetryAttempts": 6,
"responseTimeout": "10s",
"exceptionErrorResponses": [
{
"statusCode": [
"DEFAULT"
],
"action": "continue_processing"
},
{
"statusCode": [
"MSGDECODEFAILURE"
],
"action": "continue_processing"
},
{
"statusCode": [
"MAXHDRSIZEEXCEEDED"
],
"action": "continue_processing"
},
{
"statusCode": [
"501"
],
"action": "send_error_response",
"errorProfileConfiguration": {
"errorCode": 501,
"errorCause": "NOT FOUND",
"errorTitle": "NOT FOUND ",
"errorDescription": "NOT FOUND",
"retryAfter": "",
"redirectUrl": ""
}
}
]
}
}Failure response
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/med" -H "accept: application/json"
HTTP/1.1 404 Not Found
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT
{
"title": "Not Found",
"status": "404",
"detail": "App Routing Options response data not found against given query parameter(s)",
"instance": "/ocscp/scpc-configuration/v1/approutingoptions/med",
"cause": "DATA_NOT_FOUND"
}PUT REST API
This resource configures routing options for the application.
Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}
Table 2-277 Data Structures Supported by the PUT Request Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|
| approutingoptions | M | 1 | Indicates the routing options configuration for the Application. |
Table 2-278 Data Structures Supported by the PUT Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| approutingoptions | M | 1 | 200 OK | Indicates the routing options configuration for the Application. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
Example
Success response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/mediation" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appName\":\"mediation\",\"routingOptions\":{\"retry\":false,\"maxRetryAttempts\":6,\"responseTimeout\":\"10\",\"exceptionErrorResponses\":[{\"statusCode\":[\"DEFAULT\"],\"action\":\"continue_processing\"},{\"statusCode\":[\"501\"],\"action\":\"send_error_response\",\"errorProfileConfiguration\":{\"errorCode\":501,\"errorCause\":\"NOT FOUND\",\"errorTitle\":\"NOT FOUND \",\"errorDescription\":\"NOT FOUND\",\"retryAfter\":\"\",\"redirectUrl\":\"\"}}]}}"
HTTP/1.1 201 Ok
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT
{
"appName": "mediation",
"routingOptions": {
"retry": false,
"maxRetryAttempts": 6,
"responseTimeout": "10s",
"exceptionErrorResponses": [
{
"statusCode": [
"DEFAULT"
],
"action": "continue_processing"
},
{
"statusCode": [
"501"
],
"action": "send_error_response",
"errorProfileConfiguration": {
"errorCode": 501,
"errorCause": "NOT FOUND",
"errorTitle": "NOT FOUND ",
"errorDescription": "NOT FOUND",
"retryAfter": "",
"redirectUrl": ""
}
}
]
}
}
Failure response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/med" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appName\":\"mediation\",\"routingOptions\":{\"retry\":false,\"maxRetryAttempts\":6,\"responseTimeout\":\"10\",\"exceptionErrorResponses\":[{\"statusCode\":[\"DEFAULT\"],\"action\":\"continue_processing\"},{\"statusCode\":[\"501\"],\"action\":\"send_error_response\",\"errorProfileConfiguration\":{\"errorCode\":501,\"errorCause\":\"NOT FOUND\",\"errorTitle\":\"NOT FOUND \",\"errorDescription\":\"NOT FOUND\",\"retryAfter\":\"\",\"redirectUrl\":\"\"}}]}}"
HTTP/1.1 400 Bad Request
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT
{
"title": "Bad Request",
"status": "400",
"detail": "App Name must always be mediation",
"instance": "/ocscp/scpc-configuration/v1/approutingoptions/med",
"cause": "INVALID_QUERY_PARAM"
}
DELETE REST API
This resource removes all the application routing options based on ruleName.
Note:
DELETE method is not supported.Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}
Table 2-279 Path Parameters Supported by the DELETE Response Body on this Resource
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| appname | String | M | Removes configurations on app name. |
Table 2-280 Data Structures Supported by the DELETE Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
2.28 Configuring Mediation Trigger Point
Resources
The following table describes the resource name to retrieve, add, update, and remove Mediation trigger points.
Table 2-281 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| mediation-trigger-point-config |
/ocscp/scpc-configuration/{version}/mediation-trigger-point-config |
GET |
Retrieves all Mediation trigger point configurations. |
| mediation-trigger-point-config | /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} | GET | Retrieves Mediation trigger point configuration for the specified ruleName. |
| mediation-trigger-point-config |
/ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} |
PUT |
Configures Mediation trigger point configuration for the specified data. |
| mediation-trigger-point-config | /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} | PATCH | Updates the Mediation trigger point configuration by ruleName. |
| mediation-trigger-point-config |
/ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} |
DELETE |
Removes the Mediation trigger point configuration for the specified ruleName. |
Data Model
The following table describes the supported data type.
Table 2-282 MediationTriggerPointConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | M | 1 | Unique rule name for each mediation
configuration.
It is a unique primary key. |
| triggerPoints |
Array(TriggerPoint) |
M | 1..N |
List of trigger points to be enabled if matches. One or more of the following trigger points:"requestIngress", "requestEgress", "responseIngress", "responseEgress" |
| nfType | NFType | C | 1 | NFType for which mediation configuration is
required.
NFType is as per 3GPP TS 29.510 Section 6.1.6.3.3 Enumeration: NFType. |
| serviceName | String | C | 1 | The service of NFType for which mediation
configuration is required.
NFType is as per 3GPP TS29.510 Section 6.1.6.3.11 Enumeration: ServiceName. |
| match | Array(Match) | O | 1..N |
List of match blocks to be satisfied for the rule to be activated. Minimum number of blocks is 1. Maximum number of blocks is 20. |
| groupId | String | O | 1 | groupId for which mediation configuration is
required.
Mediation configuration for a specific group is applicable to the mediation requests or responses received only from the same group. HTTP Mediation service consumer NFs which requires the same mediation rules can be grouped together using this groupId. |
| httpMethods | Array(String) | M | 1..N | HTTP methods (GET,POST,PUT,PATCH,DELETE,OPTIONS) |
| messageType | Array(MessageType) | M | 1..N | The allowed message types are [svc-request-message], [notification-message], or both [notification-message, svc-request-message]. |
| action | Action | M | 1 | Action Wrapper to set the type of action to be taken on the message. |
Note:
For each trigger point configuration, the combination of NfType, serviceName, httpMethods, messageType and triggerPoints methods must be unique. No new records can be added with the same combination.- ruleName: medRule1
- nfType: UDM
- serviceName: nudm-uecm
- httpMethod: {PUT, POST}
- messageType: [notification-message, svc-request-message]
- triggerPoints: [requestIngress]
- ruleName: medRule2
- nfType: UDM
- serviceName: nudm-uecm
- httpMethod: {PUT, POST}
- messageType: [notification-message, svc-request-message]
- triggerPoints: [requestIngress]
Table 2-283 TriggerPoint
| Order of Invocation | Enumeration value | Description |
|---|---|---|
| First | "requestIngress" | Mediation invocation after receiving the ingress 5G SBI request message. |
| Second |
"requestEgress" |
Mediation invocation before forwarding the 5G SBI request message. |
| Third |
"responseIngress" |
Mediation invocation after receiving the ingress 5G SBI response message. |
| Fourth |
"responseEgress" |
Mediation invocation before forwarding the 5G SBI response message. |
Table 2-284 MessageType
| Enumeration value | Description |
|---|---|
| "notification-message" | The message type is a notification message. |
|
"svc-request-message" |
The message type is a service request message. |
Table 2-285 Match
| Field Name | Data Type | Description | Required |
|---|---|---|---|
| headers |
HeaderBodyMatch[] |
List of header names and values to match using
MatchType comparison. All conditions within a single header block
are combined with AND semantics.
|
anyOf |
| body |
HeaderBodyMatch[] |
List of "body IE" JSON Pointers and their
corresponding values to match using MatchType comparison. All
conditions within a single body block are combined with AND
semantics.
|
anyOf |
| userDefinedVariables | HeaderBodyMatch[] | List of userDefinedVariables names (to be selected
from the dropdown in CNCC) and their corresponding values to match
using MatchType comparison. All conditions within a single body
block are combined with AND semantics.
|
anyOf |
- Match Blocks using OR Semantics:
The match wrapper consists of multiple match blocks, which are evaluated using OR semantics. This means that for the overall match wrapper to evaluate to
true, it is sufficient for any one match block to satisfy the conditions.For example, if the match wrapper contains three match blocks, the entire wrapper will be considered a match as long as at least one of the blocks matches the conditions.
- Internal Components of a Match Block (AND Semantics)
Each match block contains three components:
- Body: A list of match conditions for body fields.
- Headers: A list of match conditions for headers.
- userDefinedVariables (UDVs): A list of match conditions for user-defined variables.
These components are evaluated using AND semantics:- All conditions within each component (for example, all body conditions, all header conditions, and all UDV conditions) must be satisfied.
- Furthermore, all three components (body, headers, and userDefinedVariables) must match in order for the block to be considered a match.
Table 2-286 HeaderBodyMatch
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| name | String | M | 1 | Name of the header or the bodyIE or the
userDefinedVariable JSON Pointer.
Note: List of predefined headers available in this section. JSON Pointer must point to basic data types. Arrayed and Object values are not supported. |
| match_type | MatchType | M | 1 | One of the supported match operators. |
| value | String | C | 0..1 | Value of header or bodyIE or userDefinedVariable to
be matched.
The value is only required if match_type is not range. |
| range | Range | C | 0..1 | Range start (inclusive).
It is used only when match_type is range. |
Note:
Either the value or the range attribute must be present.The supported pseudo headers are :scheme, :authority, :path, and :status.
For :path, when specifying a match, ignore the leading or the first forward slash (/) for the match to succeed.
Example:
"headers":
[
{
"name": ":path",
"value": "USEast/nudm-uecm/v1/imsi-1100000001/registrations/amf-3gpp-access",
"match-type": "exact"
}
]
For :status, the value must be specified as an integer.
Example:
"headers":
[
{
"name": ":status",
"value": "200",
"match-type": "exact"
}
]
For :scheme and :authority, provide the exact value as received in the request.
Table 2-287 MatchType
| Field Name | Data Type | Description | Required |
|---|---|---|---|
| exact | String | Matching is performed using the exact comparison. | oneOf |
| prefix | String | Matching is performed using the prefix comparison. | oneOf |
| range | String | Matching is performed using the range comparison. | oneOf |
| regex | String | Matching is performed using the ECMAScript Regular Expression comparison. | oneOf |
Table 2-288 Range
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| start | String | O | 0..1 | The first value, that is, range start inclusive, identifying the
start of the range.
This string consists of only digits. Pattern: "^[0-9]+$" |
| end | String | O | 0..1 |
The last value, that is, range end inclusive, identifying the end of the range. This string consists of only digits.Pattern: "^[0-9]+$" |
Table 2-289 Action
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| actionType | ActionType(String) | M | 1 | This parameter is to select the action for the
configured trigger point rules matching the trigger point rules
configuration.
mediationTriggerPointConfig conditions are
matched for a request, the request will be sent to the mediation
service for the particular trigger point specified in the
triggerPoints field where the match is
successful.setTriggerPointsInvocation: If the
mediationTriggerPointConfig conditions are
matched for a request, the matching conditions will not be attempted
again for the trigger points present in the triggerPointList field.
Instead, the request will be sent directly to mediation for those
trigger points.
|
| triggerPointList | array(TriggerPoint) | C | 1....N (where 1 <=N<=4) | List of trigger points to be invoked for matching
the configured trigger point rule. This is only applicable for
actionType = setTriggerPointsInvocation.
Additionally, the first value in the triggerPointList should not
precede the parent triggerPoints.
Example (not
allowed) In this example, |
Examples
Request body
{
"groupId": "string",
"ruleName": "string",
"match": [
{
"body": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
],
"headers": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
],
"userDefinedVariables": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
]
}
],
"serviceName": "5g-sbi-notification",
"httpMethods": ["PUT","POST"]
"nfType": "5G_EIR",
"triggerPoints": [
"requestEgress"
],
"messageType": [
"notification-message"
],
"action": {
"actionType": "forwardToMediationService"
}
}
Response body:
The response body for GET is the list of the following JSON structure.
The response body of PUT and PATCH is the following JSON structure.
{
"groupId": "string",
"ruleName": "string",
"match": [
{
"body": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
],
"headers": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
],
"userDefinedVariables": [
{
"range": {
"start": 0,
"end": 0
},
"match-type": "exact",
"name": "string",
"value": "string"
}
]
}
],
"serviceName": "5g-sbi-notification",
"httpMethods": [ "PUT", "POST" ]
"nfType": "5G_EIR",
"triggerPoints": [
"requestEgress"
],
"messageType": [
"notification-message"
],
"action": {
"actionType": "forwardToMediationService"
}
}
Resource Definition
GET REST API
This resource retrieves all the Mediation trigger point configurations.
Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config
Table 2-290 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationTriggerPointConfig | M | 1..N | 200 OK | Indicates Mediation trigger point configurations. |
This resource retrieves all the Mediation trigger point configurations based on ruleName.
Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}
Table 2-291 Path Parameters Supported by the GET Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Fetches configurations on ruleName |
Table 2-292 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationTriggerPointConfig | M | 1 | 200 OK | Indicates Mediation trigger point configurations. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Success response for GET and GET ALL
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config' -H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Mon, 23 Sep 2024 14:16:25 GMT
<
[
{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"GET",
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "/supiorSuciList/supiorsuci",
"value": "suci-",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress"
],
"groupId": "group1",
"messageType": [
"notification-message"
]
},
{
"ruleName": "R1",
"serviceName": "nudm-sdm",
"httpMethods": [
"GET",
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "/supiorSuciList/supiorsuci",
"value": "suci-",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress"
],
"groupId": "group1",
"messageType": [
"notification-message"
],
"action": {
"actionType": "forwardToMediationService"
}
}
]
Success response 2
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1' \
-H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1 HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Mon, 23 Sep 2024 14:20:08 GMT
<
{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"GET",
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "/supiorSuciList/supiorsuci",
"value": "suci-",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress"
],
"groupId": "group1",
"messageType": [
"notification-message"
],
"action": {
"actionType": "forwardToMediationService"
}
}
Failure response
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med' \
-H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config/med HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 404 Not Found
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/problem+json
< Date: Mon, 23 Sep 2024 14:23:52 GMT
<
{
"title": "Not Found",
"status": 404,
"detail": "Mediation_Configuration for given ruleName not found . Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med",
"cause": "DATA_NOT_FOUND"
}
PUT REST API
This resource configures Mediation trigger points for the specified data.
Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}
Table 2-293 Data Structures Supported by the PUT Request Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|
| MediationTriggerPointConfig | M | 1 | Indicates Mediation trigger point configurations to be added. |
Table 2-294 Data Structures Supported by the PUT Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationTriggerPointConfig | M | 1 | 200 OK | Indicates Mediation trigger point configurations. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
Success response
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"GET",
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "/supiorSuciList/supiorsuci",
"value": "suci-",
"match-type": "prefix"
}
],
"userDefinedVariables": [
{
"name": "udv-1",
"value": "376",
"match-type":"exact"
}
]
}
],
"triggerPoints": [
"requestEgress"
],
"groupId": "group1",
"messageType": [
"notification-message"
],
"action": {
"actionType": "forwardToMediationService"
}
}'Failure response
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"GET",
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "/supiorSuciList/supiorsuci",
"value": "suci-",
"match-type": "prefix"
}
],
"userDefinedVariables": [
{
"name": "udv-1",
"value": "376",
"match-type":"exact"
}
]
}
],
"triggerPoints": [
"requestEgress"
],
"groupId": "group1",
"messageType": [
"notification-message"
],
"action": {
"actionType": "setTriggerPointsInvocation",
"triggerPointList": [
"responseIngress"
]
}
}' -vPATCH REST API
This resource updates the Mediation trigger point configuration for the specified data.
Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}
Table 2-295 Data Structures Supported by the PATCH Request Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|
| string | M | 1 | The patch body in the string format that must be updated. |
Table 2-296 Data Structures Supported by the PATCH Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationTriggerPointConfig | M | 1 | 200 OK | Indicates Mediation trigger point configurations. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Success response:
curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "/match/0/headers/0/name", "value":"amfId" }]
HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:26:55 GMT
* Connection #0 to host <localhost> left intact
{"ruleName":"Mediation_rule1","nfType":"UDR","serviceName":"nudr-group-id-map","httpMethods":["PUT"],"match":[{"headers":[{"name":"amfId","value":"v2","match-type":"exact"}],"body":[{"name":"amfId","value":"100","match-type":"prefix"}]}],"triggerPoints":["requestEgress","requestIngress","responseEgress"],"groupId":"group1"}
Failure response -1
curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "/match/0/headers/0/name", "value":"amfId" }]
HTTP/1.1 404 Not Found
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/problem+json
Date: Tue, 24 May 2022 12:23:18 GMT
* Connection #0 to host <localhost> left intact
{"title":"Not Found","status":"404","detail":"Mediation_Configuration for given RuleName not found . Please refer to the User Guide.'ruleName': Mediation_rule1","instance":"/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1","cause":"DATA_NOT_FOUND"}
Failure response -2
curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "match/0/headers/match-type", "value":"prefix" }]
HTTP/1.1 400 Bad Request
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/problem+json
Date: Tue, 24 May 2022 12:26:21 GMT
* Connection #0 to host <localhost> left intact
{"title":"Bad Request","status":"400","detail":"Invalid Patch Document","instance":"/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1","cause":"INVALID_REQUEST_BODY"}
DELETE REST API
This resource retrieves all the Mediation trigger point configuration based on ruleName.
Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}
Table 2-297 Path Parameters Supported by the DELETE Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Removes configurations on ruleName |
Table 2-298 Data Structures Supported by the DELETE Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the ProblemDetails structure as defined in 3GPP TS 29.571. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Success response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1" -H "accept: application/json"
HTTP/1.1 204 No Content
Date: Tue, 24 May 2022 12:22:00 GMT
Failure response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1" -H "accept: application/json"
HTTP/1.1 404 Not Found
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/problem+json
Date: Tue, 24 May 2022 12:05:38 GMT
{
"title": "Not Found",
"status": "404",
"detail": "Mediation_Configuration for given RuleName not found . Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1",
"cause": "DATA_NOT_FOUND"
}
2.29 Configuring Mediation Rule
This section describes the configuration of mediation rules for creating, modifying, and deleting Mediation rules using the Rest API.
Resources
The following table describes the resource name to retrieve, add, update, and remove Mediation rules.
Table 2-299 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| HTTP Mediation |
|
GET |
Retrieves all Mediation rules. |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/rules/{ruleName} | GET | Retrieves Mediation rule for the specified ruleName. |
| HTTP Mediation |
${mediationConfig.baseUrl}/mediation/v1/rules/{ruleName} |
PUT |
Updates the Mediation rule. |
| HTTP Mediation |
${mediationConfig.baseUrl}/mediation/v1/rules/{ruleName} |
POST | Creates the Mediation rule. |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/rules/{ruleName} | DELETE | Removes the Mediation rule. |
Note:
As mediation can be used by other NFs, a base URL is needed. This is defined in properties as ${mediationConfig.baseUrl}. In the case of SCP, the value is: /ocscp/scpc-configuration, creating the URL like this: /ocscp/scpc-configuration/mediation/v1/rules
Data Model
Table 2-300 MediationRulesConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
ruleName |
String | M | 1 | Unique rule name for each mediation rule.
It is a unique primary key. |
format |
String | M | 1 | Indicates the Format in which the rules are defined, such as DRL. |
status |
String | M | 1 | Indicates the status of the rule. It can have the
following values:
The following fields are allowed to be modified in DRAFT status: Mediation Mode, Code, and State. The valid values for state are SAVE, CLONE, COMPILE, and APPLY. The following fields are allowed to be modified in APPLIED status: Mediation Mode and State. The valid values for state are SAVE, CLONE, and DRAFT. |
mode |
String | M | 1 |
Indicated whether the rule applies to mediation
active or mediation test.
|
state |
String | M | 1 | Indicates the action to be applied to the rule.
The default value is SAVE. Note: The DRAFT state is an invalid transition that could lead to an error. The valid values for state are DRAFT, SAVE, CLONE, COMPILE, and APPLY. The state of a Mediation rule is applicable to change as per the status field. |
code |
String | M | 1 | Indicates the configurable drool expression that matches the request/response headers and body sent by SCP. |
New Rule Name |
String | M | 1 | Indicates the new name of the rule.
This field appears when a CLONE state is selected. |
Note:
For each mediation rule configuration, the rule name must be unique. No new rules can be added with the same name.{
"name": "string",
"format": "DRL",
"status": ["DRAFT","APPLIED"],
"mode": ["MEDIATION_ACTIVE","MEDIATION_TEST"],
"state": ["SAVE","APPLY","DRAFT","COMPILE","CLONE"],
"code": "string"
}Example
{
"name": "ruleTest1",
"format": "DRL",
"status": "DRAFT",
"mode": "MEDIATION_TEST",
"state": "SAVE",
"code": "package com.oracle.cgbu.ocmediation.nfmediation;\n \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"ruleTest1\"\nwhen\n req : Request(headers.has(\"Header1\") == true)\nthen \n req.headers.add(\"NewHeader1\",\"132465\")\nend"
}
{
"name": "string",
"format": "DRL",
"mode": ["MEDIATION_ACTIVE","MEDIATION_TEST"],
"status": ["DRAFT","APPLIED"],
"code": "string"
}Example
{
"name": "ruleTest1",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation;\n \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"ruleTest1\"\nwhen\n req : Request(headers.has(\"Header1\") == true)\nthen \n req.headers.add(\"NewHeader1\",\"132465\")\nend"
}
Resource Definition
GET REST API
This resource retrieves all the Mediation rules.
Resource URI: /ocscp/scpc-configuration/mediation/v1/rules
Table 2-301 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationRules | M | 1..N | 200 OK | Indicates Mediation rules. |
This resource retrieves all the Mediation rules based on ruleName.
Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}
Table 2-302 Path Parameters Supported by the GET Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Fetches rule by ruleName |
Table 2-303 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationRule | M | 1 | 200 OK | Indicates Mediation rules. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Indicates that there is no matching entry found. |
Example
Success response for GET ALL
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules"
-H "accept: application/json"
[
{
"name": "ruleTest0",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest0\" when req : Request(headers.has(\"NewTest0\") == true) then req.headers.add(\"Test0\",\"0\") end"
},
{
"name": "ruleTest1",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest1\" when req : Request(headers.has(\"NewTest1\") == true) then req.headers.add(\"Test1\",\"1\") end"
}
]
Success response for GET
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
"accept: application/json"
{
"name": "ruleTest0",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest0\" when req : Request(headers.has(\"NewTest0\") == true) then req.headers.add(\"Test0\",\"0\") end"
}
Failure response
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest$" -H
"accept: application/json"
{
"title": "NOT_FOUND",
"status": 404,
"detail": "Rule: ruleTest$ was not found",
"cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.lambda$findByName$0(RulesConfigService.java:45)\njava.base/java.util.Optional.orElseThrow(Optional.java:403)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.findByName(RulesConfigService.java:45)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.getRuleByName(RulesConfigController.java:45)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:497)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}
PUT REST API
This resource modifies the Mediation rules for the specified data.
Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}
Table 2-304 Path Parameters Supported by the PUT Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Modify rule by ruleName |
Table 2-305 Data Structures Supported by the PUT Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationRule | M | 1 | 200 OK | Modify Mediation rules. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Indicates that there is no matching entry found. |
Example
Success response for PUT
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
"accept: application/json
{
"name": "ruleTest0",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation;\n \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"rule_test456\"\nwhen\n req : Request(headers.has(\"OtherStuff\") == true)\nthen \n req.headers.add(\"TEST\",\"132465\")\nend"
}
Failure response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
"accept: application/json" -d '{"name": "ruleTest0","format":
"DRL","status": "DRAFT","mode": "MEDIATION_TEST","state":
"SAVE"}'
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "Fields: [code], are required and missing for rules with state: SAVE",
"cause": "com.oracle.cgbu.ocmediationconfig.validator.RuleConfigValidator.validateRequiredFields(RuleConfigValidator.java:40)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.saveRuleByName(RulesConfigService.java:59)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.saveRuleByName(RulesConfigController.java:67)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:520)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}
POST REST API
This resource creates Mediation rules based on ruleName.
Table 2-306 Path Parameters Supported by the POST Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Modify Mediation rules by ruleName |
Table 2-307 Data Structures Supported by the POST Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationRule | M | 1 | 201 CREATED | Creates Mediation rule. |
| ProblemDetails | M | 1 | 404 | Indicates that there is no matching entry found. |
Example
curl -X POST "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
"accept: application/json" -d '{"name": "ruleTest0","format": "DRL","status":
"DRAFT","mode": "MEDIATION_TEST","state": "SAVE","code": "package
com.oracle.cgbu.ocmediation.nfmediation;\n \nimport
com.oracle.cgbu.ocmediation.factdetails.Request;\nimport
com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport
java.util.HashMap; \ndialect \"mvel\"\n\nrule \"rule_test456\"\nwhen\n req :
Request(headers.has(\"OtherStuff\") == true)\nthen \n
req.headers.add(\"TEST\",\"132465\")\nend"}'{
"name": "ruleTest0",
"format": "DRL",
"mode": "MEDIATION_ACTIVE",
"status": "DRAFT",
"code": "package com.oracle.cgbu.ocmediation.nfmediation;\n \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"rule_test456\"\nwhen\n req : Request(headers.has(\"OtherStuff\") == true)\nthen \n req.headers.add(\"TEST\",\"132465\")\nend"
}curl -X POST "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
"accept: application/json" -d '{"name": "ruleTest0","format":
"DRL","status": "DRAFT","mode": "MEDIATION_TEST","state":
"SAVE"}'{
"title": "BAD_REQUEST",
"status": 400,
"detail": "Rule: ruleTest0 already exists in database.",
"cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.validateCreationRule(RulesConfigService.java:89)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.createRuleByName(RulesConfigController.java:74)\njdk.internal.reflect.GeneratedMethodAccessor840.invoke(Unknown Source)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)\norg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)\njakarta.servlet.http.HttpServlet.service(HttpServlet.java:547)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)\njakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:393)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)\norg.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}DELETE REST API
This resource deletes all the Mediation rules based on ruleName.
Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}
Table 2-308 Path Parameters Supported by the DELETE Response Body on this Resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | Deletes Mediation rules by ruleName |
Table 2-309 Data Structures Supported by the DELETE Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| MediationRule | M | 1 | 204 | Deleted Mediation rule. |
| ProblemDetails | M | 1 | 404 | Indicates that there is no matching entry found. |
Example
Success response for DELETE
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest999" -H
"accept: application/json"
Failure response
curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest$" -H
"accept: application/json"
{
"title": "NOT_FOUND",
"status": 404,
"detail": "Rule: ruleTest$ was not found",
"cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.lambda$deleteByName$1(RulesConfigService.java:52)\njava.base/java.util.Optional.orElseThrow(Optional.java:403)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.deleteByName(RulesConfigService.java:52)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.deleteRuleByName(RulesConfigController.java:52)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:523)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}
2.30 Configuring Mediation Log Level
This section describes how to configure mediation and mediation-test services at the log level using the REST API.
Resources
Table 2-310 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| loglevel | /mediation/v1/mediation-config/ | GET ALL |
Retrieves the log level of the mediation and mediation-test services and its library log levels. |
| loglevel | /mediation/v1/mediation-config/{serviceName} | GET | Retrieves the log level of a specific service and its library log level. |
| loglevel |
/mediation/v1/mediation-config/{serviceName} |
PUT | Updates log levels of mediation, mediation-test service, and its library log levels. |
Data Model
Table 2-311 LoggingLevels
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| appLogLevel | String | M | WARN | Indicates the type of log level.
The following are the supported log levels:
|
| serviceType | String | M | NA | Indicates the name of the type of service. For examples, mediation and mediation-test |
| packageLogLevel | List(PackageLogLevel) | M | NA |
Indicates the package level log information. |
| logRateControl | LogRateCntrol | O | NA | Indicates the log rate control information. |
Table 2-312 PackageLogLevel
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| packageName | String | M | Library | Indicates the name of the package. It should be a
valid library name.
|
| logLevelForPackage | String | M | INFO | Indicates the type of package log level.
The following are the supported log levels:
|
Table 2-313 LogRateControl
| Field Name | Data Type | Range | Default Value | Description |
|---|---|---|---|---|
| rate | Integer | 1-10000 | 1 | Indicates the average number of logs allowed per second. |
| logLevel | String | NA | OFF | Indicates the type of log level where rate
control is applied.
The following are the supported log levels:
|
Response codes
Table 2-314 Response codes
| Response Code | Category | Description |
|---|---|---|
| 200 | Success | Successfully retrieves the log level of mediation. |
| 400 | Failure | Bad requests occur when invalid log-level data is provided during the PUT operation. |
| 404 | Failure | No log-level record was found for mediation. |
Examples
Sample JSON body for PUT request API
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"serviceType": "mediation",
"appLogLevel": "info",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
}
}'
Response:
{
"headers": {},
"body": {
"appLogLevel": "INFO",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
},
"serviceType": "mediation"
},
"statusCode": "OK",
"statusCodeValue": 200
}Sample JSON body for GET API response
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation' \
-H 'accept: application/json'
Response :
{
"appLogLevel": "INFO",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
},
"serviceType": "mediation"
}curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation-test' \
-H 'accept: application/json'
Response:
{
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
},
"serviceType": "mediation-test"
}curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/' \
-H 'accept: application/json'
Response:
[
{
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
},
"serviceType": "mediation-test"
},
{
"appLogLevel": "INFO",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 1,
"logLevel": "OFF"
},
"serviceType": "mediation"
}
]2.31 Configuring Mediation Support for User Defined Variables
This section describes the configuration of user-defined variables for creating, modifying, and deleting them using the REST API.
Resources
The following table describes the resource name to retrieve, add, update, and remove user defined variables.
Table 2-315 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| HTTP Mediation |
|
GET |
Retrieves a record of all configured user-defined variables. |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} | GET |
Retrieves a specific record based on a user-defined variable provided as a path parameter. For example: where |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} | PUT |
Updates the user-defined variables. |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} | POST |
Creates the user-defined variables and generates the primary key before performing the PUT operation. |
| HTTP Mediation | ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} | DELETE |
Deletes the user-defined variables. |
Data Model
Table 2-316 UserDefinedVariables Attribute Details
| Field Name | Data Type | Mandatory (M)/Optional (O) | Description |
|---|---|---|---|
| name | String | M |
A unique variable name as per the user's requirement. |
| data | VariableData | M |
Data object for the user-defined variable. |
Table 2-317 VariableData Attribute Details
| Field Name | Data Type | Mandatory (M)/Optional (O) | Description |
|---|---|---|---|
| type | ENUM | M | The data type of the variable (for example, STRING, LONG, JSON, BOOLEAN). |
| size | Integer | M |
The minimum and maximum size (in Bytes) of the variable value that can be accepted. The allowed size range is between 1 and 1024 bytes only. |
| description | String | O |
The description of the user-defined variable. |
{
"name": "custom_var1",
"data": {
"type": "string",
"size": 128,
"description": "string"
}
}Response Body
Table 2-318 Response Body Data Model
| Data Type | Mandatory (M)/Optional (O) | Cardinality | Description and Response Code |
|---|---|---|---|
| UserDefinedVariables | M | 1 | User-defined variable
(userDefinedVariable) matching criteria.
Response Code: 200 OK |
| ProblemDetails | M | 1 | Returns when no data is found for the given query
parameters.
404 NOT FOUND |
| ProblemDetails | M | 1 | Returns a "Bad Request" response when parameter validation
fails.
400 BAD REQUEST |
Resource Definition
GET REST API
This resource fetches user-defined variables (userDefinedVariable) based on the query parameters. This resource returns all user-defined variables if no query parameters are provided.
Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}
Table 2-319 Path Parameters Supported by the GET Response Body on this Resource
| Field Name | Data Type | Mandatory (M)/Optional (O) | Description |
|---|---|---|---|
| Name | String | O |
The identity of the user-defined variable name for which the configured user-defined variables are being fetched. |
Table 2-320 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| UserDefinedVariables | M | 1 | 200 OK | Indicates userDefinedVariable for fetching a specific record based on path parameters. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns a response when no data is found for the given path parameters. |
Example
Success response for GET
curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Response->
Response Code: 200
Response Body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 128,
"description": "string"
}
}
Failure response 1
curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/prepaid-user" -H "accept: application/json“
Response->
Response Code: 404
Response Body:
{
"title": "NOT_FOUND",
"status": 404,
"detail": "User-Defined-Variable: prepaid-user was not found. Please refer the User Guide",
"cause": "USER_DEFINED_VARIABLE_NOT_FOUND"
}
Failure response 2
curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/ " -H "accept: application/json“
Response Code: 400
Response Body:
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "User-Defined-Variable body contains null or empty value. Please provide valid name. Please refer the User Guide",
"cause": "INVALID_NAME"
}POST REST API
This resource creates the user-defined variables configuration using the request body.
Table 2-321 Data Structures Supported by the POST Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| UserDefinedVariables | M | 1 | 200 OK | Creates the user-defined variables configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the structure of
ProblemDetails.
|
Example
curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“Request →
Request body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 128,
"description": "string"
}
}
Response->
Response Code: 200
Response Body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 128,
"description": "string"
}
}curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/prepaid-user" -H "accept: application/json“Request body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 1209,
"description": "string"
}
}
Response->
Response Code: 400
Response Body:
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "Request body User-Defined-VariableName: user-category does not match with param User-Defined-VariableName: user-imsi. Please refer the User Guide",
"cause": "INVALID_KEY_COMBINATION"
}curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“Request →
Request body:
{
"name": ,
"data":
{
"type": "string",
"size": 1209,
"description": "string"
}
}
Response->
Response Code: 400
Response Body:
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "User-Defined-Variable body contains null or empty value for Name field. Please provide valid name. Please refer the User Guide",
"cause": "INVALID_NAME"
}PUT REST API
This resource updates the user-defined variables configuration using the request body.
Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}
Table 2-322 Data Structures Supported by the PUT Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| UserDefinedVariables | M | 1 | 200 OK |
Modifies the user-defined variable configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns the structure of
ProblemDetails.
|
| ProblemDetails | M | 1 | 404 Not Found | Returns the structure of
ProblemDetails.
|
Example
Success response for PUT
curl -X PUT "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Request body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 128,
"description": "string"
}
}
Response->
Response Code: 200
Response Body:
{
"name": "user-category",
"data":
{
"type": "string",
"size": 128,
"description": "string"
}
}
curl -X PUT "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“Request body:
{
"name": "user-category",
"data":
{
"description": "string"
}
}
Response->
Response Code: 400
Response Body:
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "Fields: [size, type], are required and missing for User-Defined-Variable: user-category. Please refer the User Guide",
"cause": "MANDATORY_IE_MISSING"
}DELETE REST API
This resource deletes the user-defined variables configuration using the request body.
Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}
Table 2-323 Data Structures Supported by the DELETE Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
userDefinedVariablesWrapper |
M | 1 | 200 OK | Indicates the user-defined variable configuration data. |
MediationConfigControllerAdvice |
M | 1 | 400 BAD REQUEST | Returns the mediationConfigControllerAdvice structure. |
MediationConfigControllerAdvice |
M | 1 | 404 Not Found | Returns the mediationConfigControllerAdvice structure. |
Example
Success response for DELETE
curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Response Code: 200 Response Body: OK Failure response
curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/userDefinedVariables/user-category" -H "accept: application/json“ Response Code: 404
Response Body:
{
"title": "NOT_FOUND",
"status": 404,
"detail": "User-Defined-Variable: user-category was not found. Please refer the User Guide",
"cause": "USER_DEFINED_VARIABLE_NOT_FOUND"
}Failure Response 2
curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/
mediation/v1/userDefinedVariables/user-category" -H "accept: application/json“Response Code: 400
Response Body:
{
"title": "BAD_REQUEST",
"status": 400,
"detail": "User-Defined-Variable: userDefined-var is being used at Mediation Trigger Point Configuration in 13 RuleName(s). List of 10 out of 13 RuleName(s) are as follows: [rule-trigger18, rule-trigger, rule-trigger181, rule-trigger98, rule3, rule-trigger8, rule-trigger7, rule-trigger4, rule-trigger3, rule-trigger6]. Please refer the User Guide",
"cause": "USER_DEFINED_VARIABLE_ALREADY_IN_USE"
}2.32 Configuring Route Groups
This section describes REST API configurations required for Route Groups. The static alternate route feature prioritizes the settings in the static routing configuration over any NF profile for the alternate destination.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the route-groups resource type.
Table 2-324 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| route-groups | /ocscp/scpc-configuration/v1/route-groups | GET |
|
| route-groups | /ocscp/scpc-configuration/v1/route-groups | PUT |
Configures a new route group or replaces the configuration of an existing route group by providing a route group configuration in the request body. |
| route-groups | /ocscp/scpc-configuration/v1/route-groups | DELETE |
Removes the configuration of an existing route group. |
Resource: route-groups
Resource URI: /ocscp/scpc-configuration/v1/route-groups
Resource Definition
This section describes GET, PUT, and DELETE resource types supported by Route Group.
GET REST API
The following table describes the URI query parameters supported by the GET method on this resource.
Note:
- The names of the query parameters in the following tables are case sensitive.
- The combination of query parameters are not supported. If no query parameter is specified, it retrieves all the records. Otherwise, only one query parameter at a time is supported.
Table 2-325 URI Query Parameters Supported by the GET Method
| Field Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| routeGroupId | string | O |
0..1 |
Indicates the unique route group ID. |
| routeGroupType | RouteGroupType | O |
0..1 |
Indicates all route groups configured using specified addressing parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address. |
| primaryRoute | PrimaryRoute | O |
0..1 |
Indicates specific route group configuration for the specified fqdn, nfInstanceId, ipv4address, or ipv6address. For IP, only the primaryRoute query parameter with only one element (ipv4Address and port) in the list is supported. Note: As this query parameter considers the JSON format as an input string, you must use the "data-urlencode" annotation in the curl command. |
Note:
To get all route groups, do not provide any query parameters.The following table describes the data structure supported by the GET response body on this resource:
Table 2-326 Data Structure Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
|
array(routeGroupRecord) |
M | 1 |
200 OK |
The response body contains a list of route group configuration equivalent to the criteria for received requests. |
| ProblemDetails | M | 1 | 404 NOT FOUND |
This data structure is sent when no matching entry is found. For information about the ProblemDetails structure, see 3GPP TS 29.571. |
Note:
All the supported HTTP error status is applicable with a ProblemDetails data type as described in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. For more information, see Clause 5.2.7 of 3GPP TS 29.500.The following example is of a successful response.
curl -v -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups" -H "accept: */*" -H "Content-Type: application/json" -d'{"routeGroupId":"udm1","routeGroupType":"IPV4","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"apiPrefix":"USEast","capacity":10,"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"scheme":"http"},{"apiPrefix":"USEast","capacity":10,"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"scheme":"http"}]}'
Response:
201 OK
{"routeGroupId":"udm1","routeGroupType":"IPV4","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"},{"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"}]}
PUT REST API
There are no URI query parameters supported by the PUT method on this resource.
The following table describes the data structure supported by the PUT request body on this resource:
Table 2-327 Data Structure Supported by the PUT Request Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|
| routeGroupRecord | M | 1 | Indicates the route group configuration data. |
The following table describes the data structures supported by the PUT response body on this resource:
Table 2-328 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| routeGroupRecord | M | 1 |
200 OK |
Indicates the updated or replaced existing route group configuration data equivalent to the criteria for received requests. |
| routeGroupRecord | M | 1 | 201 Created | Indicates the successful creation of new route group configuration data as per received requests. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
This response is used when the request body validation fails. For example, when serviceProtoName is missing in the request body. For information about the ProblemDetails structure, see 3GPP TS 29.571. |
Note:
All supported HTTP error status is applicable with a ProblemDetails data type. For more information, see Clause 5.2.7 of 3GPP TS 29.500.The following example is of a successful response.
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups" -H "accept: application/json"
Response:
200 OK
[{"routeGroupId":"udm1","routeGroupType":"IPADDRESS","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"},{"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"}]}]
DELETE REST API
The following table describes the URI query parameters supported by the DELETE method on this resource:
Table 2-329 URI Query Parameters Supported by the DELETE Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| routeGroupId | string | M | 1 | Indicates the unique route group ID. |
Note:
All the supported HTTP error status is applicable with a ProblemDetails data type. For more information, see Clause 5.2.7 of 3GPP TS 29.500.The following example is of a successful response.
curl -v -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups?routeGroupId=udm1" -H "accept: application/json"
204 No Content
Data Model
The following tables describe different data models required for configuring Route Group.
Table 2-330 routeGroupRecord
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| routeGroupId | string | M | 1 | Indicates the unique route group name or ID. |
| routeGroupType | RouteGroupType | M | 1 | Addresses parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address, used in route group configuration. |
| primaryRoute | PrimaryRoute | C | 1 |
Indicates the target endpoint information for the first routing attempt of 5G SBI message.
|
| alternateRouteList | array(RouteRecord) | C | 0..N | Indicates the route (target endpoint info) information to be used in alternate NF selection and load-balancing at SCP in alternate routing of 5G SBI message. |
Table 2-331 PrimaryRoute
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| fqdn | Fqdn | C | 0..1 | Indicates the FQDN of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| port | integer | C | 0..1 | Indicates the port number. The minimum value is 0 and the maximum value is 65535.Port is defined if FQDN is present. |
| nfInstanceId | NfInstanceId | C | 0..1 | Indicates the NF instance ID of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| ipEndPoints | array(IpEndPoint) | C | 0..1 | Indicates the list of all IPv4 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request. |
Note:
- At least one of the primary route addressing parameters such as fqdn, nfInstanceId, or ipEndPoints must be included in the route configuration.
- The primary route has the authority, FQDN or IP and port information, which is matched with ":authority" pseudo header of the first routing attempt to select a producer NF. Note that the scheme and apiPrefix are not considered.
- The port is defined if FQDN is present.
Table 2-332 IpEndPoint
| Attribute Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
|
ipv4Address |
Ipv4Addr |
C |
0..1 |
Indicates the IPv4 address. |
|
ipv6Address |
Ipv6Addr |
C |
0..1 |
Indicates the IPv6 address. |
| port |
integer |
M | 1 | Indicates the port number. The minimum value is 0 and the maximum value is 65535. |
Note:
In this data structure, only one occurrence of either ipv4Address or ipv6Address shall be included.
Table 2-333 RouteRecord
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| fqdn | Fqdn | C | 0..1 | Indicates the FQDN of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| nfInstanceId | NfInstanceId | C | 0..1 | Indicates the NF instance ID of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| ipv4Addresses | array(Ipv4Addr) | C | 0..N | Indicates the list of all IPv4 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| ipv6Addresses | array(Ipv6Addr) | C | 0..N | Indicates the list of all IPv6 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request. |
| port | integer | O | 0..1 | Indicates the port number. The minimum value is 0 and the maximum value is 65535. |
| priority | integer | O | 0..1 |
Indicates the priority (relative to other NFs of the same route list) within the range of 0 to 65535 for NF selection and alternate routing. The lower values indicate a higher priority. |
| capacity | integer | O | 0..1 |
Indicates the static capacity information within the range of 0 to 65535. It is expressed as a weight relative to other NF instances of the same route list. |
| apiPrefix | string | O | 0..1 | Indicates the optional path segments to construct the {apiRoot} variable of the different API URIs as described in Clause 4.4.1 of 3GPP TS 29.501. |
| scheme | UriScheme | M | 1 | Indicates the URI scheme, for example, "http" or "https". |
Note:
- At least one of the primary route addressing parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address, must be included in the route configuration.
- If the port number is absent, SCP uses the default HTTP port number, that is, TCP port 80 for "http" URIs or TCP port 443 for "https" URIs as specified in Internet Engineering Task Force (IETF) Request for Comments (RFC) 7540.
Table 2-334 Enumeration: RouteGroupType
| Enumeration Value | Description |
|---|---|
| "FQDN" | Route group with FQDN in route group configuration. |
| "NFINSTANCEID" | Route group with NF instance ID in route group configuration. |
| "IPADDRESS" | Route group can have either IPv4 or IPv6 or both
addresses in route group configuration.
In case both IPv4 and IPv6 addresses are present, the load balancing mechanism is used to route the traffic between IPv4 and IPv6. |
Table 2-335 Simple Data Types
| Type Name | Type Definition | Description |
|---|---|---|
| Fqdn |
string |
Indicates the FQDN of the NF service. |
|
Ipv4Addr |
string |
Indicates the string identifying an IPv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166. Pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$' |
|
NfInstanceId |
string |
Indicates the string uniquely identifying an NF instance. The format of the NF Instance ID is a Universally Unique Identifier (UUID) version 4 as described in IETF RFC 4122. |
Table 2-336 ProblemDetails
| Attribute Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| type | Uri | O | 0..1 | Identifies the problem type. A URI reference according to IETF RFC 3986. |
| title | string | O |
0..1 |
Indicates a short human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem. |
| status | integer | O |
0..1 |
Indicates the HTTP status code for the occurrence of the problem. |
| detail | string | O |
0..1 |
Indicates a human-readable explanation specific to the occurrence of the problem. |
|
instance |
Uri |
O |
0..1 |
Indicates a URI reference that identifies the specific occurrence of the problem. |
| cause |
string |
C |
0..1 |
Indicates a machine-readable application error cause specific to the occurrence of the problem. It should be present and provide application-related error information if available. |
|
invalidParams |
array(InvalidParam) |
O |
1..N |
Indicates the description of invalid parameters for a request rejected due to invalid parameters. |
For more information about the ProblemDetails structure, see Section 5.2.4.1 of 3GPP TS 29.571.
2.33 Configuring Consumer NF Info
This section describes Consumer NF Info parameters that are used to determine the identity of consumer NFs that send message requests to SCP.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the ConsumerInfo resource type.
Table 2-337 Resources
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| ConsumerInfo | /ocscp/scpc-configuration/{version}/consumerNfInfo/headerInfo |
GET | Retrieves consumerInfo data |
| ConsumerInfo | /ocscp/scpc-configuration/{version}/consumerNfInfo/headerInfo |
PUT | Configures ConsumerInfo data |
Data Model
The following table describes ConsumerInfo name and data type.
Table 2-338 ConsumerInfo
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| primaryHeaderName | String | M | 1 | The header name to identify the consumer NF according
to the ingress rate limiting configurations.
This is a mandatory parameter. This parameter is given priority over the secondaryHeaderName parameter. The default value is "X-Forwarded-Client-Cert". It can use the following values:
|
| secondaryHeaderName | String | O | 1 | The header name to identify the consumer NF according
to the ingress rate limiting configurations.
This is an optional parameter. The default value is "". It can use the following values:
|
| userAgentHeaderFormat | String | M | 1 | The header format to identify the consumer NF
according to the ingress rate limiting configurations.
It supports the following formats:
Note:
The input and output values for the PUT request are defined in the Table 2-339. |
| userAgentHeaderSeparator | String | M | 1 | This is the separator that the User-Agent header uses
to separate NFINSTANCEID and FQDN.
The default value is SPACE. The supported values are SPACE and HYPHEN. Note: NULL is not allowed. |
| xfccHeaderCertExtractIndex | String | M | 1 | The certificate extract index contains certificate
information in the XFCC header.
This parameter is used to decode "X-Forwarded-Client-Cert" for the FQDN. The default value is 0. |
| xfccHeaderExtractField | String | M | 1 | This is the name of the field that has to be
retrieved from the XFCC header.
The default value is DNS. |
| xfccHeaderExtractIndex | String | M | 1 | Index where the Field configured in 'extractField'
is present in the XFCC header for extraction.
The default value is 0. |
The following table describes input and output values for the PUT request:
Table 2-339 PUT Request Input and Output Values
| Input (PUT) | Output (GET) The values in this column use the "-" separator. |
|---|---|
| NFTYPE,NFINSTANCEID,FQDN | NFTYPE-NFINSTANCEID-FQDN |
| NFTYPE,FQDN,NFINSTANCEID | NFTYPE-FQDN-NFINSTANCEID |
| NFTYPE,NFINSTANCEID | NFTYPE-NFINSTANCEID |
| NFTYPE,FQDN | NFTYPE-FQDN |
| NFTYPE | NFTYPE |
[
{
"primaryHeaderName": "string",
"secondaryHeaderName": "string",
"userAgentHeaderFormat": "string",
"userAgentHeaderSeparator": "string",
"xfccHeaderCertExtractIndex": "string",
"xfccHeaderExtractField": "string",
"xfccHeaderExtractIndex": "string"
}
]Response Body
Response body data model:
| Data Type | Description |
|---|---|
| ConsumerInfo | Determines the header type such as XFCC or User-Agent, in the ingress message request. |
| ProblemDetails | Returns when an invalid combination or more than two query parameters are provided. |
Resource Definition:
This section describes GET and PUT resource types supported by ConsumerInfo.
GET API
This section describes the resource to fetch the existing ConsumerInfo configuration.
Resource URI:
/ocscp/scpc-configuration/v1/consumerNFInfo/headerInfo
Table 2-340 Data structures supported by the GET Response Body on this resource
| Field Name | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| consumerInfo | M | 1 | 200 OK | Determines the header type such as XFCC or User-Agent, in the ingress message request. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than two query parameters are provided. |
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/consumerNfInfo/headerInfo" -H "accept: application/json"
{
"primaryHeaderName": "User-Agent",
"secondaryHeaderName": "X-Forwarded-Client-Cert",
"userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
"userAgentHeaderSeparator": "string",
"xfccHeaderCertExtractIndex": "0",
"xfccHeaderExtractField": "DNS",
"xfccHeaderExtractIndex": "0"
}
PUT API
This resource configures the use of Ingress Rate Limiting Configuration header using the Request Body.
Resource URI:
/ocscp/scpc-configuration/v1/consumerNFInfo/headerInfo
Table 2-341 Data Structures Supported by the PUT Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| consumerInfo | M | 1 | 200 OK | Determines the header type such as XFCC or User-Agent, in the ingress message request. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than two query parameters are provided. |
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/consumerNfInfo/headerInfo" -H "accept: */*" -H "Content-Type: application/json" -d "{\"
Request Body:
{
"primaryHeaderName": "X-Forwarded-Client-Cert",
"secondaryHeaderName": "User-Agent",
"userAgentHeaderFormat": "NFTYPE,NFINSTANCEID,FQDN",
"userAgentHeaderSeparator": "string",
"xfccHeaderCertExtractIndex": "0",
"xfccHeaderExtractField": "DNS",
"xfccHeaderExtractIndex": "0"
}
Response body
[
{
"primaryHeaderName": "X-Forwarded-Client-Cert",
"secondaryHeaderName": "User-Agent",
"userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
"userAgentHeaderSeparator": "string",
"xfccHeaderCertExtractIndex": "0",
"xfccHeaderExtractField": "DNS",
"xfccHeaderExtractIndex": "0"
}
]2.34 Configuring SCP Services
Resources
The following table describes the resource name to retrieve and update configuration at the SCP microservices level.
Table 2-342 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| scp-service-config | /ocscp/scpc-configuration/{version}/scp-service-config | GET ALL | Retrieves all the SCP microservices configurations. |
| scp-service-config | /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName} | GET | Retrieves SCP microservices configurations based on servicename. |
| scp-service-config | /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName} | PUT | Updates all the SCP microservices configurations based on servicename. |
Data Model
This REST API is used to update microservice level configurations for SCP, therefore the data model is generic.
Generic Data Model
Table 2-343 ScpServiceConfigs
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values |
|---|---|---|---|---|---|
| serviceName | String | M | 1 | Indicates the SCP microservice name. | Valid microservice names of SCP, for example,
|
| scpServiceConfigs | Map<String, IScpServiceConfigValue> | M | 1 | Contains microservice level configurations provided with the type of configurations and value in the JSON structure. | - |
Specific Data Model
TaskInfoScpConfig
The following data model is defined to specify thread related configurations.
Table 2-344 ScpServiceConfigValue
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Values |
|---|---|---|---|---|---|---|
| type | Type | M | 1 | Indicates the type of configuration to identify whether the value is single or range. | VALUE | VALUE |
| value | List<TaskInfoScpConfig> | M | 1 | Indicates the list of values that specify the thread information configurations. | List of TaskInfoScpConfig. For more information, see Table 2-345. | For default values, see Table 2-345. |
Table 2-345 TaskInfoScpConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Value | Default Value |
|---|---|---|---|---|---|---|
| queueName | String | NA | 1 | Indicates the name of the queue for which these configurations are applicable. | The set of allowed values for each supported
micro-service, for example, serviceName, is as follows:
serviceName: scpc-notification
serviceName: scp-worker
serviceName: scp-nrfproxy
serviceName: scp-cache
serviceName: scp-load-manager
|
The set of default values for each supported
micro-service, for example, serviceName, is as follows:
serviceName: scpc-notification
serviceName: scp-worker
serviceName: scp-nrfproxy
serviceName: scp-cache
serviceName: scp-load-manager
|
| criticalQLogThreshold | String | O | 1 | Indicates the percentage (%) value for queue usage threshold upon reaching which a "critical" alert is raised. | 0-100% | 85% |
| majorQLogThreshold | String | O | 1 | Indicates the percentage (%) value for queue usage threshold upon reaching which a "major" alert is raised. | 0-100% | 75% |
| minorQLogThreshold | String | O | 1 | Indicates the percentage (%) value for queue usage threshold upon reaching which a "minor" alert is raised. | 0-100% | 65% |
The following lists the queue names and their usages:
- scpDownstreamExecutorQueue: Downstream (message received from consumer) message handling thread pool queue
- scpNrfProxyDownstreamExecutorQueue: Downstream message handling thread pool queue for nrfProxy
- scpUpstreamExecutorQueue: Upstream (response received) message handling thread pool queue
- scpClientExecutorQueue: Currently not in use
- scpUpdateSSLCertsQueue: Thread pool queue for all the ssl certificate related threads
- scpMediationDownstreamExecutorQueue: Downstream message handling thread pool queue for mediation
- scpReconfigureEgressRLExecutorQueue: RateLimiter thread pool queue
- scpTrafficFeedExecutorQueue: Traffic feed thread pool queue
- scpDownstreamExecutorQueue: Downstream(message received from Worker) message handling thread pool queue
- scpUpstreamExecutorQueue: Upstream (response received) message handling thread pool queue
- notificationQueue: If a notification arrives at SCP, it is placed in the notification queue, which has a capacity of 5000
- waitingQueue: The notification is removed from the notification queue and added to the waiting queue, which has a capacity of 5000 for each nf type
- runQueue: Finally, the notification is moved from waitingQueue to runQueue. The notification is processed from runQueue; capacity is 40.
- accessTokenCohEvExecutorQueue: A queue the cache service uses to service access token coherence requests.
- accessTokenAppEvExecutorQueue: A queue the cache service uses to serve access token application requests.
- scpCacheExecutorQueue: SCP cache executor queue for the thread pool used to serve global rate-limiting coherence requests.
- sutLciCohEvExecutorQueue: A queue the Load Manager service uses to service LCI coherence event requests.
- sutLciAppEvExecutorQueue: A queue the Load Manager service uses to service LCI application event requests.
- peerLciCohEvExecutorQueue: A queue that the Load Manager service uses to service requests for peer LCI coherence events.
- peerLciAppEvExecutorQueue: A queue that the Load Manager service uses to service requests for peer LCI application event services.
- loadCohEvExecutorQueue: A queue that the Load Manager service uses to service load coherence event requests.
- loadAppEvExecutorQueue: A queue that the Load Manager service uses to service load application event requests.
Note:
All queue capacities are 10,000 for worker and NRF queues. These queue capacities are not configurable and only allow threshold value updates.The following data model is defined to specify thread related configurations.
Table 2-346 ThreadWatchDogScpServiceConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Values |
|---|---|---|---|---|---|---|
| type | Type | M | 1 | Indicates the type of configuration to identify whether the value is single or range. | VALUE | VALUE |
| value | List<ThreadWatchDogConfig> | M | 1 | Indicates the list of values that specify the thread information configurations. | List of ThreadwatchDogConfig. For more information, see Table 2-346. | For information about default values, see Table 2-346. |
Table 2-347 ThreadWatchDogConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Value |
|---|---|---|---|---|---|---|
| enableThreadWatchDog | Boolean | M | 1 | Specifies whether to enable or disable liveliness
failures.
If this parameter is set to true, liveliness fails whenever the watchdog reports a stuck or deadlocked thread. |
true or false | true |
| watchDogMonitoringInterval | int | O | 1 | Indicates the time interval used by watchdog to monitor if any threads are stuck.The time interval is in milliseconds. | 500-10000 | 3000 |
| watchDogInterval | int | O | 1 | Indicates the maximum time allowed for threads to be
nonresponsive. Watchdog uses this time to determine if a thread is
stuck. The time interval is in milliseconds.
For example, if watchDogInterval is 10s and a thread does not respond for 10s, then watchdog marks that thread as stuck or nonresponsive. |
5000-900000 | 9000
Note: Default value for scpc-notification micro-service for r15 deployment is 15m, for example, 900000 |
| watchDogFailureCount | int | O | 1 |
Indicates the maximum number of times threadWatchDog attempts to check if a thread is stuck before marking the thread as hung or stuck. For instance, if this value is 3, then the watchdog will check if a thread is stuck for 3 times continuously before marking it as stuck/hung. |
1-25 | 5 |
The following data model is defined to specify inter pod resiliency configurations.
Table 2-348 ConnectivityWatchDogServiceConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Values |
|---|---|---|---|---|---|---|
| type | Type | M | 1 | Indicates the type of configuration to identify whether the value is single or range. | VALUE | VALUE |
| value | List<ConnectivityWatchDogConfig> | M | 1 | Indicates the list of values that specify the pod resiliency configurations. | List of ConnectivityWatchDogConfig. For more information, see Table 2-348. | For information about default values, see Table 2-348. |
Table 2-349 ConnectivityWatchDogConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Value |
|---|---|---|---|---|---|---|
| enableConnectivityWatchDog | Boolean | M | 1 | Specifies whether to enable or disable interpod resiliency check. | true or false | true |
| connectivitytMonitoringInterval | int | O | 1 | Indicates the time interval for resiliency in milliseconds. | 500-10000 | 1000 |
| connectivityRetryThreshold | int | O | 1 | Indicates the maximum number of attempts to be made if any pod is not reachable. | 0-5 | 2 |
| connectivityResponseTimeout | int | O | 1 |
Indicates the maximum response timeout in milliseconds for the client to error out. |
500-10000 | 2000 |
| connectivityRetryInterval | int | O | 1 | Indicated the time interval between retries in milliseconds | 500-10000 | 500 |
The following data model is defined to specify routing options configurations.
Table 2-350 RoutingOptionsScpServiceConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Allowed Values | Default Values |
|---|---|---|---|---|---|---|
| type | Type | M | 1 | Indicates the type of configuration to identify whether the value is single or range. | VALUE | VALUE |
| value | List<RoutingOptionsConfig> | M | 1 | Indicates the list of values that specify the pod resiliency configurations. | List of RoutingOptionsConfig. For more information, see Table 2-351. | For information about default values, see Table 2-351. |
Table 2-351 RoutingOptionsConfig
| Field Name | Data Type | Mandatory (M) or Optional (O) | Cardinality | Description | Allowed Values | Default Value |
|---|---|---|---|---|---|---|
| responseTimeout | int | M | 1 | Indicates the maximum response timeout in seconds. | 0-10 | 1 |
| maxRetryAttempts | int | M | 1 | Indicates the maximum number of attempts to establish the connection. | 0-5 | 0 |
Micro-service data model
The list of service specific data model is as follows:
- ScpServiceConfigValue
- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scpc-notification",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "notificationQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "waitingQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "runQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"notificationThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
} {
"serviceName": "scpc-notification",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "notificationQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "waitingQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "runQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"notificationThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}- ScpServiceConfigValue
- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
- RoutingOptionsScpServiceConfig
{
"serviceName": "scp-worker",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "scpDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpNrfProxyDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpClientExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpdateSSLCertsQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpMediationDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpReconfigureEgressRLExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"routingOptions": {
"value": {
"scpc-notification": {
"responseTimeout": "1s",
"maxRetryAttempts": 0
}
}
},
"threadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"podOverloadControl": {
"cpuOverloadConfig": {
"enabled": true
},
"pendingTransactionOverloadConfig": {
"enabled": true
}
}
}
}{
"serviceName": "scp-worker",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "scpDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpNrfProxyDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpClientExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpdateSSLCertsQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpMediationDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpReconfigureEgressRLExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"routingOptions": {
"value": {
"scpc-notification": {
"responseTimeout": "1s",
"maxRetryAttempts": 0
}
}
},
"threadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"podOverloadControl": {
"cpuOverloadConfig": {
"enabled": true
},
"pendingTransactionOverloadConfig": {
"enabled": true
}
}
}
}- ScpServiceConfigValue
- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scp-nrfproxy",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "scpDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"nrfThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
}
}
}{
"serviceName": "scp-nrfproxy",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "scpDownstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpUpstreamExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
},
"nrfThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
}
}
}- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scpc-configuration",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"configurationThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}{
"serviceName": "scpc-configuration",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"configurationThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scpc-subscription",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"subscriptionThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}{
"serviceName": "scpc-subscription",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"subscriptionThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scpc-audit",
"scpServiceConfigs": {
"auditThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
}
}
}{
"serviceName": "scpc-audit",
"scpServiceConfigs": {
"auditThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
},
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
}
}
}- ThreadWatchDogScpServiceConfig
- ConnectivityWatchDogServiceConfig
{
"serviceName": "scpc-alternate-resolution",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"alternateResolutionThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}{
"serviceName": "scpc-alternate-resolution",
"scpServiceConfigs": {
"connectivityWatchDogInfo": {
"value": {
"connectivitytMonitoringInterval": 1000,
"enableConnectivityWatchDog": true,
"connectivityRetryThreshold": 3,
"connectivityResponseTimeout": 5000,
"connectivityRetryInterval": 1000
}
},
"alternateResolutionThreadWatchDogInfo": {
"value": {
"enableThreadWatchDog": true,
"watchDogMonitoringInterval": 1000,
"watchDogInterval": 9000,
"watchDogFailureCount": 1
}
}
}
}- ScpServiceConfigValue
{
"serviceName": "scp-cache",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "accessTokenCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "accessTokenAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpCacheExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
}
}
}{
"serviceName": "scp-cache",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "accessTokenCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "accessTokenAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "scpCacheExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
}
}
}- ScpServiceConfigValue
{
"serviceName": "scp-load-manager",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "sutLciCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "sutLciAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "peerLciCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "peerLciAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "loadCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "loadAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
}
}
}{
"serviceName": "scp-load-manager",
"scpServiceConfigs": {
"taskInfo": {
"type": "VALUE",
"value": [
{
"queueName": "sutLciCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "sutLciAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "peerLciCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "peerLciAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "loadCohEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "loadAppEvExecutorQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
}
}
}Resource Definition
GET REST API
This resource retrieves routing options for all the applications.
Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config
Table 2-352 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| scpServiceConfigs | M | 1..N | 200 OK | Retrieves configurations for SCP microservices. |
This resource retrieves routing options for the application specified by serviceName.
Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName}
Table 2-353 Path Parameters
| Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| serviceName | String | M | Retrieves configurations on microserviceName. The supported values are worker, notification, and nrfproxy. |
Table 2-354 Data Structures Supported by the GET Response Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| scpServiceConfigs | M | 1 | 200 OK | Indicates service configurations for SCP microservices. |
| ProblemDetails | M | 1 | 404 | Returns when an invalid combination or more than two query parameters are provided. |
Curl GET/GET ALL command
GET ALL
Success Response
curl -X GET http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config -H 'accept: application/json' -v
* About to connect() to <localhost>:8081 port 31343 (#0)
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Thu, 17 Nov 2022 06:12:26 GMT
<
[{"serviceName":"scp-nrfproxy","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"nrfThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scp-worker","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpNrfProxyDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpClientExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpdateSSLCertsQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpMediationDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpReconfigureEgressRLExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"routingOptions":{"value":{"scpc-notification":{"responseTimeout":"1s","maxRetryAttempts":0}}},"threadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scpc-alternate-resolution","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"alternateResolutionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-audit","scpServiceConfigs":{"auditThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scpc-configuration","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"configurationThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-notification","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"notificationQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"waitingQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"runQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"notificationThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-subscription","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"subscriptionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}}]
GET Command
Success Response
curl -X GET http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/scp-worker -H 'accept: application/json' -v
* About to connect() to <localhost> port <port number> (#0)
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/scp-worker HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Thu, 17 Nov 2022 06:17:08 GMT
<
{"serviceName":"scp-worker","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpNrfProxyDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpClientExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpdateSSLCertsQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpMediationDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpReconfigureEgressRLExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"routingOptions":{"value":{"scpc* Connection #0 to host <localhost> left intact
-notification":{"responseTimeout":"1s","maxRetryAttempts":0}}},"threadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}}
Failure Response
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Worker1' -H 'accept: application/json' -v
* About to connect() to <localhost> port <port number> (#0)
* Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31368 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/Worker1 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 404 Not Found
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/problem+json
< Date: Thu, 18 Aug 2022 09:08:36 GMT
<
* Connection #0 to host <localhost> left intact
{"title":"Not Found","status":"404","detail":"Scp_Service_Configuration for given serviceName not found . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/scp-service-config/Worker1","cause":"DATA_NOT_FOUND"}
PUT REST API
This resource configures routing options for the application.
Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config/{appname}
Table 2-355 Data Structures Supported by the PUT Request Body on this Resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|
| scpSserviceConfigs | 1 | M | scp-service-configs for the application. |
Table 2-356 Data structures supported by the PUT Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
| scpServiceConfigs | M | 1 | 200 OK | Indicates service configurations for SCP microservices. |
| ProblemDetails | M | 1 | 400/404 | Returns when an invalid combination or more than two query parameters are provided. |
Curl PUT Command
Success Response
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/scpc-alternate-resolution' \
"connectivityRetryInterval": 1000
> -H 'accept: application/json' \
> -H 'Content-Type: application/json' \
> -d '{
> "serviceName": "scpc-alternate-resolution",
> "scpServiceConfigs": {
> "connectivityWatchDogInfo": {
> "value": {
> "connectivitytMonitoringInterval": 1000,
> "enableConnectivityWatchDog": true,
> "connectivityRetryThreshold": 3,
> "connectivityResponseTimeout": 5000,
> "connectivityRetryInterval": 1000
> }
> },
> "alternateResolutionThreadWatchDogInfo": {
> "value": {
> "enableThreadWatchDog": true,
> "watchDogMonitoringInterval": 1000,
> "watchDogInterval": 9000,
> "watchDogFailureCount": 1
> }
> }
> }
> }'
{"serviceName":"scpc-alternate-resolution","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"alternateResolutionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}}
Failure Response 1
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Notification' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{
"serviceName": "NOTIFICATION",
"scpServiceConfigs": {
"TaskInfoScpConfig": {
"type": "VALUE",
"value": [
{
"queueName": "notificationQueue",
"criticalQLogThreshold": "86%",
"majorQLogThreshold": "76%",
"minorQLogThreshold": "66%"
},
{
"queueName": "waitingQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
},
{
"queueName": "runQueue",
"criticalQLogThreshold": "85%",
"majorQLogThreshold": "75%",
"minorQLogThreshold": "65%"
}
]
}
}
>
> '
{"timestamp":"2022-08-18T09:13:28.253+00:00","status":400,"error":"Bad Request","path":"/ocscp/scpc-configuration/v1/scp-service-config/Notification"}
Failure Response 2
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Subscription' \
> -H 'accept: application/json' \
> -H 'Content-Type: application/json' \
> -d '{
> "serviceName": "subscription",
> "scpServiceConfigs": {
> "TaskInfoScpConfig": {
> "type": "VALUE",
> "value": [
> {
> "queueName": "notificationQueue",
> "criticalQLogThreshold": "86%",
> "majorQLogThreshold": "76%",
> "minorQLogThreshold": "66%"
> },
> {
> "queueName": "waitingQueue",
]
}
> "criticalQLogThreshold": "85%",
> "majorQLogThreshold": "75%",
> "minorQLogThreshold": "65%"
> },
> {
> "queueName": "runQueue",
> "criticalQLogThreshold": "85%",
> "majorQLogThreshold": "75%",
> "minorQLogThreshold": "65%"
> }
> ]
> }
> }
> }'
{"title":"Not Found","status":"404","detail":"Scp_Service_Configuration for given serviceName not found . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/scp-service-config/Subscription","cause":"DATA_NOT_FOUND"}
2.35 Configuring Load Control Information
This section describes REST API configurations required for the Load Control based on the Load Control Information (LCI) Header feature:
Resource
The following table describes the resource URIs and the corresponding HTTP methods for the to retrieve, add, or update SCP features.
Table 2-357 Resources
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| scp-features | /ocscp/scpc-configuration/v1/scp-features/lci | GET | Retrieves records based on featureName as a path variable. |
| scp-features | /ocscp/scpc-configuration/v1/scp-features/lci | PUT | To enable/disable the scp feature and its parameters. |
Data Model
Request Body
Table 2-358 LCISpecificConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Range | Description |
|---|---|---|---|---|---|
| scpLciConveyanceEnable | Boolean | M | false | NA | This parameter enables or disables the addition of SCP LCI. |
| relayPeerLci | Boolean | M | true | NA | This parameter enables or disables the relay of the peer's LCI. |
| scpLciConveyanceInterval | Integer | O | 5000 milliseconds | 1000 miliseconds - 3600000 miliseconds | This parameter governs the periodicity of LCI conveyence. After the duration specified in this parameter, SCP LCI is transmitted to peers. |
| scpLciConveyanceMinLoadChange | Integer | M | 5 | 5 - 25 | This parameter indicates the minimum eligible change in load while conveying LCI. |
| scpLciConveyanceMinLoadThreshold | Integer | M | 30 | 0-60 | This parameter allows SCP to define a minimum load change threshold that can trigger the generation of an LCI header and report it to peers if allowed. |
| scpLciConveyancetoUnknownPeer | Boolean | M | false | NA | This parameter indicates whether SCP can send its LCI to an unknown peer NF. |
| peerLciProcessingMinLoadChange | Integer | M | 5 | 0-25 | This parameter allows SCP to define a minimum load change in a peer NF's load as indicated in LCI, which can trigger a re-evaluation of routing rules. |
| unknownPeerLciExpiry | Integer | M | 300 seconds | 30 seconds - 900 seconds | This parameter specifies the minimum number of seconds required to remove an unknown peer's LCI from cache. |
Response Body
The following table describes response body data models that vary based on the REST operation status.
Table 2-359 Response Body Data Type
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SCPFeaturesWrapper) | M | 1 | 200 OK | Indicates the list of SCP features (SCPFeaturesWrapper) matching criteria. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
Current JSON Format
{
"featureName": "lci",
"enabled": false,
"featureSpecificConfig": {
"scpLciConveyanceEnable": false,
"relayPeerLci": true,
"scpLciConveyanceInterval": 2000,
"scpLciConveyanceMinLoadChange": 5,
"scpLciConveyanceMinLoadThreshold": 30,
"scpLciConveyancetoUnknownPeer": false,
"peerLciProcessingMinLoadChange": 5,
"unknownPeerLciExpiry": 300
}
}Resource Definition
GET REST API
This section describes the resource to fetch all the SCP feature details (SCPFeaturesWrapper) based on the query parameters.
If no query parameter is provided, all the SCP feature detail are returned.
Resource URI:
ocscp/scpc-configuration/v1/scp-features/lci
Table 2-360 Parameters Supported by the GET Method
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| featureName | String | O | Specifies the identity of featureName for which SCP features are fetched. |
Note:
featureName is a valid combination of query parameter or path variable.Table 2-361 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(SCPFeaturesWrapper) | M | 1 | 200 OK | Indicates the list of of LCI header Info (SCPFeaturesWrapper) (or) Get specific record based on query parameters. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when the data is not found for given query parameters. |
Example
Successful response - 1
curl -X GET
"http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci" -H
"accept: application/json“
Code: 200 { {
"featureName": "lci",
"enabled": false,
"featureSpecificConfig": {
"scpLciConveyanceEnable": false,
"relayPeerLci": true,
"scpLciConveyanceInterval": 2000,
"scpLciConveyanceMinLoadChange": 5,
"scpLciConveyanceMinLoadThreshold": 30,
"scpLciConveyancetoUnknownPeer": false,
"peerLciProcessingMinLoadChange": 5,
"unknownPeerLciExpiry": 300
}
}
Failure case 1
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lciheader_1" -H "accept: application/json“
Response Body:
{
"title": "Not Found",
"status": "404",
"detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/scp-features/lciheader_1",
"cause": "DATA_NOT_FOUND"
}PUT REST API
This resource adds or updates the SCP feature interplmn routing configuration using the request body.
Resource URI:
ocscp/scpc-configuration/v1/scp-features/lci
Table 2-362 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| SCPFeaturesWrapper | M | 1 | 200 OK | Indicates the SCP feature lciheader configuration data. |
| ProblemDetails | M | 1 | 400 BAD REQUEST |
Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1. |
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lciheader" -H "accept: */*" -H "Content-Type: application/json" -d “ {
"featureName": "lci",
"enabled": false,
"featureSpecificConfig": {
"scpLciConveyanceEnable": false,
"relayPeerLci": true,
"scpLciConveyanceInterval": 2000,
"scpLciConveyanceMinLoadChange": 5,
"scpLciConveyanceMinLoadThreshold": 30,
"scpLciConveyancetoUnknownPeer": false,
"peerLciProcessingMinLoadChange": 5,
"unknownPeerLciExpiry": 300
}
} 200 OKFailure case 1:
Note:
In case SCP is not configured with local or foreign PLMNs and invalid NF type is configured for this feature, you receive a Bad Request 400 with error message.curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci"-H "accept: */*"-H "Content-Type:
application/json"-d "
{
"title": "Bad Request",
"status": "400",
"detail": "Unknown Feature: lxi not supported. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/scp-features/lxi",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Bad Request
Failure case 2:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci"-H "accept: */*"-H "Content-Type:
application/json"-d "
{
"title": "Bad Request",
"status": "400",
"detail": "SCP conveyance interval range should be between 100ms to 3600ms",
"instance": "/ocscp/scpc-configuration/v1/scp-features/lci",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Bad Request2.36 Message Feed Configurations
This section provides information about message feed Data Director configurations at SCP.
2.36.1 Configuring Traffic Feed Data Director
This section describes the Traffic Feed Data Director configurations.
Table 2-363 Resources
| Resource name | Resource URI | HTTP method or custom operation | Description |
|---|---|---|---|
| 5gsbi-traffic-feed/data-director-config | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config | GET | Retrieves Traffic Feed Data Director Config configured at SCP. |
| 5gsbi-traffic-feed/data-director-config | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config | PUT | Adds Traffic Feed Data Director Config configured at SCP. |
| 5gsbi-traffic-feed/data-director-config | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config | PATCH | Updates Traffic Feed Data Director Config configured at SCP. |
Data Model
Request BodyTable 2-364 trafficFeedDataDirectorConfig
| Field Name | Data Type | Default Value | Description |
|---|---|---|---|
| kafkaPartitionSelectionLogic | String | RoundRobin | Indicates the logic to select Kafka partitions to
route messages.
RoundRobin: All the messages are distributed across all the available partitions in a round-robin order. KeyBased: Messages with the same correlation-id are routed to the same partition. This ensures the same transaction messages are routed to the same partition. |
| deliveryTimeoutMs | Integer | 5000 milliseconds | Indicates an upper bound on the time to report success or failure to the SCP application from the Kafka Producer Library When this period expires, the Kafka producer reports a failure to application. The value of this configuration should be greater than or equal to the sum of requestTimeoutMs and lingerMs. |
| trafficFeedBootStrapServer | Object with host and port info
host String port Integer |
NA | A list of host or port pairs to use for establishing the initial connection to the Kafka cluster. |
| topic | String | NA | Topic name that SCP uses to write on Kafka Broker. |
| securityProtocol | String | None | Protocol used to communicate with brokers. The values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL. |
| saslMechanism | String | None
Recommended: PLAIN |
SASL mechanism used for client connections.
The values are: PLAIN. |
| keySerializer | String | Json | Key serialization
Two Serialization option supported: JSON and STRING. |
| valueSerializer | String | Json | Value serialization
Two Serialization option Supported JSON,STRING |
| acks | String | 0 | The number of acknowledgments the producer NF
requires the leader to have received before considering a request
complete.
Available options:
Note: Parameter to change the behavior of underlying kafka library. |
| retryCount | Integer | 0 | Number of times producer NFs send data to broker in
case of error.
Note: Parameter to change the behavior of underlying kafka library. |
| retryBackoffMs | Long | 100 | The amount of time to wait before attempting to
retry a failed request to a given topic partition.
Note: Parameter to change the behavior of underlying kafka library. |
| requestTimeoutMs | Integer | 1000 | The maximum amount of time the client waits for the
response of a request.
Note: Parameter to change the behavior of underlying kafka library. Oracle Support shall be consulted before modifying the default value. The value of this parameter must not be more than the threadWatchDog time of the scp-worker microservice. |
| trafficfeedBlockingSendTimeoutMs | Integer | 500 | The amount of time for which the producer will block
sending messages to the broker when the producer is not able to
connect to the broker.
maxValue: 200000, minValue: 100 Note: Parameter to change the behavior of underlying kafka library. Increasing this value more than the threadWatchDog time of the worker microservice can result in a worker pod crash. |
| trafficfeedDegradationperiod | Integer | 1000 | The amount of time the producer waits before sending
to the broker when a previous attempt to connect to the broker has
failed.
maxValue: 10000, minValue: 10 Note: Parameter to change the behavior of underlying kafka library. |
| trafficfeedConsecutiveFailures | Integer | 10 | The number of consecutive failures allowed by SCP
before blocking the producer from sending messages.
maxValue: 100, minValue: 1 Note: Parameter to change the behavior of underlying kafka library. |
| batchSize | Integer | 16384 | It specifies the batch size in bytes based on which
records are collected together into fewer requests and sent.
Note: Parameter to change the behavior of underlying kafka library. |
| lingerMs | Long | 2 | It specifies the amount of time for which the
producer will wait to allow other records to be sent so that the
sends can be batched together.
Note: Parameter to change the behavior of underlying kafka library. |
| trafficfeedMaxBlockMsConfig | Long | 10 | The configuration controls how long the
KafkaProducer's send() method will block.
Note: Parameter to change the behavior of underlying kafka library. |
| bufferMemory | Long | 33554432 | The total bytes of memory the producer can use to
buffer records waiting to be sent to the server.
Note: Parameter to change the behavior of underlying kafka library. |
Response body data model varies based on Rest operation status. Details can be found in the subsequent sections.
Response Body
Table 2-365 Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| trafficFeedDataDirectorConfig | M | 1 | 200 OK | List of Producer Configuration matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when invalid input are provided. |
{
"kafkaPartitionSelectionLogic":"RoundRobin",
"trafficFeedBootStrapServerList": [
{
"host": "10.75.212.228",
"port": 31215
}
],
"securityProtocol": "none",
"saslMechanism": "none",
"keySerializer": "json",
"valueSerializer": "json",
"acks": "0",
"retryCount": 0,
"deliveryTimeoutMs":120000,
"retryBackoffMs": 100,
"requestTimeoutMs": 1001000,
"trafficfeedBlockingSendTimeoutMs": 500,
"trafficfeedDegradationperiod": 1000,
"trafficfeedConsecutiveFailures": 10,
"batchSize": 16384,
"lingerMs": 2,
"trafficfeedMaxBlockMsConfig": 10,
"bufferMemory": 33554432
}Resource Definition
GET REST API:
Resource to fetch the Traffic server Configuartion Info Details based on the json version.
/ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-configTable 2-366 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| trafficFeedDataDirectorConfig | M | 1 | 200 OK | Producer Configuration Info Data |
PUT REST API:
Resource to add or update the Traffic server of Producer Configuration using the Request Body.
Resource URI:
/ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config
Table 2-367 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| trafficFeedDataDirectorConfig(json) | M | 1 | 200 OK | A list of host or port pairs to use for establishing the initial connection to the Kafka cluster. |
| String | M | 1 | 400 BAD REQUEST | Returns Problem description when invalid input is provided. |
PATCH REST API:
Resource to add or update the Traffic server Configuartion using the Request Body.
Resource URI:
/ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config
Table 2-368 URI Query Parameters Supported by the PATCH Method
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| patchDocument | String | M | 1 |
patchDocument need to be send Example: [{"op":"add","path": "/keySerializer", "value": "JSON"}], [{"op":"add","path": "/topic", "value": "scpTopic1"}], [ { "op":"replace", "path":"/trafficFeedBootStrapServer", "value":[{ "host":"12.11.11.11", "port":8095 } } ] |
| String | M | 1 | 400 BAD REQUEST | Returns Problem description when invalid input is provided. |
2.36.2 Configuring Traffic Feed Trigger Point Config
This section describes the Traffic Feed Trigger Point configurations.
Table 2-369 Resources
| Resource name | Resource URI | HTTP method or custom operation | Description |
|---|---|---|---|
| 5gsbi-traffic-feed/trigger-point | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point | GET | Retrieves all the Traffic Feed Trigger Point configuration at SCP. |
| 5gsbi-traffic-feed/trigger-point | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} | GET | Retrieves Traffic Feed Trigger Point configurations at SCP for given ruleName. |
| 5gsbi-traffic-feed/trigger-point | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} | PUT | Updates Traffic Feed Trigger Point configuration at SCP for given ruleName. |
| 5gsbi-traffic-feed/trigger-point | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} | PATCH | Updates Traffic Feed Trigger Point configuration at SCP for given ruleName. |
| 5gsbi-traffic-feed/trigger-point | /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} | DELETE | Removes Traffic Feed Trigger Point configurations at SCP for given ruleName. |
Data Model
Table 2-370 trafficFeedTriggerPointConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | The rule's name must be in string format.It must have a unique rule name. |
| serviceName | String | O | The name of the services for which rule is applied: nnrf-nfm, nnrf-disc, nudm-sdm, nudm-uecm, nudm-ueau, nudm-ee, nudm-pp, namf-comm, namf-evts, namf-mt, namf-loc, nsmf-pdusession, nsmf-event-exposure, nausf-auth, nausf-sorprotection, nausf-upuprotection, nnef-pfdmanagement, npcf-am-policy-control, npcf-smpolicycontrol, npcf-policyauthorization, npcf-bdtpolicycontrol, nsmsf-sms, nnssf-nsselection, nnssf-nssaiavailability, nudr-dr, nudr-group-id-map, nlmf-loc, n5g-eir-eic, nbsf-management, nchf-spendinglimitcontrol, nnwdaf-eventssubscription, nnwdaf-analyticsinfonpcf-eventexposure, npcf-ue-policy-control, nchf-convergedcharging, 5g-sbi-notification, nnef-eventexposure, nnef-afsessionwithqos |
| nfType | String | M | Either 3GPP defined NFType as per TS29.510 custom NFType or *. |
| allowedtrafficPercentage | Integer | M | 0-100% of traffic can be sent to traffic feed. |
| triggerPoints | Array(TriggerPoint) | M | List of trigger points to be enabled if matches.
One or more of following:
|
| messageType | Set(MessageType) | M | The allowed message type is [svc-request-message], [notification-message], or both [notification-message, svc-request-message]. |
Response Body
Table 2-371 Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| array (trafficFeed TriggerPoint config) | M | 1 | 200 OK | List of traffic Feed configuration matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when invalid input are provided. |
{
"ruleName": "string",
"trafficFeedTriggerPointConfigData": {
"allowedTrafficPercentage": 100,
"triggerPoints": [
"RxRequest"
],
"nfType": "string",
"serviceName": "string",
"messageType": [
"notification-message"
]
}
}Resource Definition
GET REST API
Resource to fetch the message-copy-traffic-config details based on the json version.
/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-pointTable 2-372 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| trafficFeedTriggerPointConfig | M | 1 | 200 OK | configuration for Traffic Feed |
PUT REST API
Resource to put the message-copy-traffic-config details based on the json version.
Resource URI:
/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/ruleName
Successful Response:
curl -X 'PUT' \
'http://<SCP configuration FQDN>:32209/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/nef_trafficfeed_rule' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "nef_trafficfeed_rule",
"trafficFeedTriggerPointConfigData": {
"allowedTrafficPercentage": 100,
"triggerPoints": [
"RxRequest"
],
"nfType": "nef",
"serviceName": "nnef-eventexposure",
"messageType": [
"notification-message"
]
}
}'
Failure response:
curl -X 'PUT' \
'http://localhost:1106/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/rule5' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "rule5",
"trafficFeedTriggerPointConfigData": {
"allowedTrafficPercentage": 100,
"triggerPoints": [
"RxRequest"
],
"nfType": "UDM",
"serviceName": "nudm-sdm",
"messageType": [
"notification-message",
"svc-request-message"
]
}
}'
{
"title": "Bad Request",
"status": 400,
"detail": "Rule for the given combination already exists.",
"instance": "/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/rule5",
"cause": "MANDATORY_IE_MISSING"
}
Table 2-373 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| trafficFeedTriggerPointConfig | M | 1 | 200 OK | configuration for Traffic Feed |
PATCH REST API
Resource to add or update the message-copy-traffic-config using the Request Body.
/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-pointTable 2-374 Data Structures Supported by the PATCH Response Body
| Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
|---|---|---|---|---|
| ruleName | String | M | 1 | Rule name for which Ingress and Egress Traffic configuration can be modified. |
| serviceName | String | O | 1 | Update serviceName for provided ruleName
[{ "op": "replace", "path": "/serviceName", "value": "nausf-auth" }] |
| trafficFeedTriggerPointConfig | Json | O | 1 | patchDocument need to be send
example: [{ "op": "replace", "path": "/trafficFeedTriggerPointConfigData/allowedTrafficPercentage", "value": "50" }] [{ "op": "replace", "path": "/trafficFeedTriggerPointConfigData/triggerPoints", "value": ["RxRequest","TxRequest"] }] |
2.37 Congestion Control Configurations
This REST API is used to configure the congestion control configuration rules. The user uses this API to configure congestion control configurations, and the name of this rule is provided in Routing Options at the service level.
Resources
The following table describes the resource name to retrieve, add, update, and remove the congestion control configuration based on the query parameters.
Table 2-375 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| congestion-control | ocscp/scpc-configuration/{version}/congestion-control/{ruleName} | GET | Retrieves congestion control configuration rules for a given rulename. |
| congestion-control | ocscp/scpc-configuration/{version}/congestion-control | GET | Retrieves all congestion control configuration rules. |
| congestion-control | ocscp/scpc-configuration/{version}/congestion-control/{ruleName} | PUT | Updates the congestion control configuration rule. |
| congestion-control | ocscp/scpc-configuration/{version}/congestion-control/{ruleName} | DELETE | Deletes the congestion control configuration rule. |
Data Model
Request Body
The following table describes the field names of the CongestionControlConfig data type.
Table 2-376 CongestionControlConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| ruleName | String | M | "ruleName": "defaultRule" | Name of the rule to identify the congestion control configuration. |
| congestionControlConfigData | NFServiceLoadBasedCongestionControl | M | - | NFServiceLoadBasedCongestionControl |
Table 2-377 NFServiceLoadBasedCongestionControl
| Field Name | Data Type | Mandatory (M) or Optional(O) | Allowed Value | Description |
|---|---|---|---|---|
| alternateRoutingOnsetThresholdPercent | Integer | M | 0-100 | This field indicates the threshold percentage for onset of reselection of equivalent NF. |
| alternateRoutingAbatementThresholdPercent | Integer | M | 0-100 | This field indicates the threshold percentage for reselection abatement. |
| throttleOnsetThresholdPercent | Integer | M | 0-100 | This field indicates threshold percentage for onset throttling. |
| throttleAbatementThresholdPercent | Integer | M | 0-100 | This field indicates the threshold percentage for throttle abatement. |
| sbiMsgPriorityDiscardFrom | Integer | M | 0-31 | This field indicates the priority of the message, after which the message is discarded. For example, if the value is 30, then messages with priority 0-29 are high priority, and other low-priority messages are throttled. |
| errorProfileConfiguration | ErrorProfileConfiguration | M | - |
Table 2-378 ErrorProfileConfiguration
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Allowed Value | Description |
|---|---|---|---|---|---|
| ErrorCode | Integer | M | - | Valid HTTP status codes like 5xx, 4xx error codes. | Indicates configurable error codes to be sent by SCP to consumer NFs. |
| errorCause | String | O | - | - | Indicates the error cause that is specific to the occurrence of the problem. |
| errorTitle | String | O | - | - | Indicates the title of the error. |
| errorDescription | String | O | - | - | Indicates an explanation specific to the occurrence of the problem. |
| retryAfter | String | O | - | - | Indicates the retry interval.
Note: The retryAfter header is applicable only for 429, 503, and 307 errors. |
| redirectUrl | String | O | - | - | Indicates the absolute URL of the resource to which the message is redirected. |
Request/Response Body JSON Format (GET)
{
"ruleName": defaultRule
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 500,
"errorCause": "NF_SERVICE_FAILOVER",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
} Request/Response Body JSON Format (PUT)
{
"ruleName": defaultRule
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 503,
"errorCause": "NF_CONGESTION",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
} {
"ruleName": defaultRule
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 503,
"errorCause": "NF_CONGESTION",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
}Resource Definition
GET REST API:
This resource fetches all the congestion control configurations rules.
Resource URI:
/ocscp/scpc-configuration/{version}/congestion-control/
Table 2-379 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| List<CongestionControlConfig> | M | 1 | 200 OK | The congestion control configuration with a rule name. |
Example
{
"ruleName": defaultRule
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 503,
"errorCause": "NF_CONGESTION",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
}
GET REST API:
This resource fetches the congestion control configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/congestion-control/{ruleName}
Table 2-380 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the congestion control rule used to retrieve the respective configurations. |
Table 2-381 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| CongestionControlConfig | M | 1..N | 200 OK | The congestion control configuration with a rule name. |
| Problem details | M | 1 | 404 NOT Found | Problem details |
Curl Example for GET
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/defaultrule
HTTP/1.1 200 OK
{
"ruleName": "defaultRule",
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 500,
"errorCause": "NF_SERVICE_FAILOVER",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
}curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/rx
HTTP/1.1 404 Not Found
{
"title": "Not Found",
"status": "404",
"detail": "Congestion control configuration data not found for provided ruleName in path parameter(s)",
"instance": "/ocscp/scpc-configuration/v1/congestion-control/rx",
"cause": "DATA_NOT_FOUND"
}PUT REST API:
This resource adds or updates the congestion control configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/congestion-control/{ruleName}
Table 2-382 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the congestion control rule used to add the respective configurations. |
Table 2-383 Data structures
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| CongestionControlConfig | M | 1 | 200 OK | CongestionControlConfiguration with the rule name when an existing record is updated. |
| CongestionControlConfig | M | 1 | 201 | CongestionControlConfiguration with the rule name when an existing record is updated. |
| Problem details | M | 1 | 404 NOT Found | Problem details |
Curl Example for PUT
curl -v -H "Content-Type: application/json" --request PUT -d '{
> "ruleName": "r2",
> "congestionControlConfigData": {
> "alternateRoutingOnsetThresholdPercent": 80,
> "alternateRoutingAbatementThresholdPercent": 75,
> "throttleOnsetThresholdPercent": 90,
> "throttleAbatementThresholdPercent": 85,
> "sbiMsgPriorityDiscardFrom": 24,
> "errorProfileConfiguration": {
> "errorCode": 503,
> "errorCause": "NF_CONGESTION",
> "errorTitle": "NF service is overloaded/congested",
> "errorDescription": "NF service is overloaded/congested",
> "retryAfter": "5",
> "redirectUrl": ""
> }
> }
> }' http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/r2
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8081 (#0)
> PUT /ocscp/scpc-configuration/v1/congestion-control/r2 HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.61.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 560
>
* upload completely sent off: 560 out of 560 bytes
< HTTP/1.1 201 Created
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Fri, 18 Aug 2023 10:50:12 GMT
<
* Connection #0 to host localhost left intact
{
"ruleName": "r2",
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 80,
"alternateRoutingAbatementThresholdPercent": 75,
"throttleOnsetThresholdPercent": 90,
"throttleAbatementThresholdPercent": 85,
"sbiMsgPriorityDiscardFrom": 24,
"errorProfileConfiguration": {
"errorCode": 503,
"errorCause": "NF_CONGESTION",
"errorTitle": "NF service is overloaded/congested",
"errorDescription": "NF service is overloaded/congested",
"retryAfter": "5",
"redirectUrl": ""
}
}
}curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/congestion-control/r2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "r1",
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 30,
"alternateRoutingAbatementThresholdPercent": 20,
"throttleOnsetThresholdPercent": 50,
"throttleAbatementThresholdPercent": 60,
"sbiMsgPriorityDiscardFrom": 20,
"errorProfileConfiguration": {
"errorCause": "string",
"errorTitle": "string",
"errorDescription": "string",
"retryAfter": "string",
"redirectUrl": "string"
}
}
}'
HTTP/1.1 400 Bad Request
{
"title": "Bad Request",
"status": "400",
"detail": "Rule name should be same in path parameter and request body.",
"instance": "/ocscp/scpc-configuration/v1/congestion-control/r1",
"cause": "INVALID_KEY"
}curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/congestion-control/r1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "r1",
"congestionControlConfigData": {
"alternateRoutingOnsetThresholdPercent": 30,
"alternateRoutingAbatementThresholdPercent": 20,
"throttleOnsetThresholdPercent": 50,
"throttleAbatementThresholdPercent": 60,
"sbiMsgPriorityDiscardFrom": 20,
"errorProfileConfiguration": {
"errorCause": "string",
"errorTitle": "string",
"errorDescription": "string",
"retryAfter": "string",
"redirectUrl": "string"
}
}
}'
HTTP/1.1 400 Bad Request
{
"title": "Bad Request",
"status": "400",
"detail": "Invalid errorCode configured in section errorProfileConfiguration. Please refer user guide.",
"instance": "/ocscp/scpc-configuration/v1/congestion-control/r1",
"cause": "MANDATORY_IE_INCORRECT"
}DELETE REST API:
This resource deletes the congestion control configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/congestion-control/{ruleName}
Table 2-384 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the congestion control rule that needs to be deleted. |
Table 2-385 Data structures supported by the Delete Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| Default | M | 1 | 204 OK | - |
| ProblemDetails | M | 1 | 400/404 | Problem details. |
Curl Example for Delete
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/r2
HTTP/1.1 204 No Content
< Date: Fri, 18 Aug 2023 10:55:57 GMT
<
* Connection #0 to host localhost left intactcurl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/rx
HTTP/1.1 404 Not Found
{
"title": "Not Found",
"status": "404",
"detail": "Congestion control configuration data Not Found for the given ruleName in path parameter(s)",
"instance": "/ocscp/scpc-configuration/v1/congestion-control/rx",
"cause": "DATA_NOT_FOUND"
}2.38 Circuit Breaking Configurations
This REST API is used to configure the circuit-breaking configuration rules. The user will use this API to configure CB configurations, and the name of this rule will be provided in Routing Options at the service level and System Options at the global level for inter-SCP and SEPP.
Resources
- Resource URI Structure:
http://<authority>:<port>/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} - Authority: loadbalancer or fqdn
- Port: nodeport(Ip address) or internal port (For fqdn)
- loadbalancerip: 10.75.225.111
- Example :
http://10.75.225.111:32456/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
or
http://ocscp-scpc-configuration:8081/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
Table 2-386 Resource Name
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| circuit-breaking | ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} | GET | Retrieves the circuit breaking configuration rule. |
| circuit-breaking | ocscp/scpc-configuration/{version}/circuit-breaking | GET | Retrieves all circuit breaking configuration rules. |
| circuit-breaking | ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} | PUT | creates a circuit breaking configuration rule if not present; otherwise, it updates the existing one. |
| circuit-breaking | ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} | DELETE | Deletes the circuit breaking configuration rule. |
Data Model
Request Body
The following table describes the field names of the CircuitBreakingConfig data type.
Table 2-387 CircuitBreakingConfig
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| ruleName | String | M | - | The rule name to identify the circuit breaker configuration. |
| CircuitBreakingConfig | CircuitBreakingConfig | M | - | Provides http2MaxRequests to
configure maximum number of requests SCP routes to an NF service
instance.
|
Table 2-388 CircuitBreakingConfigData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| http2MaxRequests | Integer | M | 1000 | Maximum number of requests SCP routes to an NF service instance (peer destination) and waiting for their responses before stopping further routing requests to it. |
Request/Response Body JSON Format (GET)
{
"ruleName": "newCBRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1200
}
}Request/Response Body JSON Format (PUT)
{
"ruleName": "newCBRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1200
}
}{
"ruleName": "newCBRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1200
}
}Resource Definition
GET REST API:
This resource fetches the circuit breaking configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
Table 2-389 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the circuit breaking rule used to retrieve the respective configurations. |
Table 2-390 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| CircuitBreakingConfig | M | 1 | 200 OK | The circuit breaking configuration with a rule name. |
| ProblemDetails | M | 1 | 404 | Problem details |
Example
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule
HTTP/1.1 200 OK
{
"ruleName": "defaultRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1000
}
}curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1
HTTP/1.1 404 Not Found
{
"title": "Not Found",
"status": "404",
"detail": "Congestion control configuration data not found for provided ruleName in path parameter(s)",
"instance": "/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1",
"cause": "DATA_NOT_FOUND"
}GET REST API:
This resource fetches all circuit breaking configuration rules.
Resource URI:
/ocscp/scpc-configuration/{version}/circuit-breaking
Table 2-391 Data structures supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| CircuitBreakingConfig | M | 1..N | 200 OK | The circuit breaking configuration with a rule name. |
Command : curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/circuit-breaking' \
-H 'accept: application/json'
Response:
[
{
"ruleName": "defaultRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1000
}
}
]PUT REST API:
This resource adds or updates the circuit breaking configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
Table 2-392 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the circuit breaking rule using which the respective configurations will be retrieved. |
Table 2-393 Data structures
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| CircuitBreakingConfig | M | 1 | 200 OK | This response is generated when an existing record is updated. |
| CircuitBreakingConfig | M | 1 | 201 | This response is generated when a new record is created. |
| CircuitBreakingConfig | M | 1 | 404 | Problem details |
Example of Congestion control configuration for PUT
curl -v -H "Content-Type: application/json" -X PUT http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule -d '{
"ruleName": "defaultRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1000
}
}'
HTTP/1.1 200 OK
{"ruleName":"defaultRule","circuitBreakingConfigData":{"http2MaxRequests":1000}}curl -v -H "Content-Type: application/json" -X PUT http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1 -d '{
"ruleName": "defaultRule",
"circuitBreakingConfigData": {
"http2MaxRequests": 1000
}
}'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"Please provide same ruleName in Path Variable and Request Body. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1","cause":"MANDATORY_IE_MISSING"}DELETE REST API:
This resource deletes the circuit breaking configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
Table 2-394 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the circuit breaking rule that needs to be deleted. |
Table 2-395 Data structures supported by the Delete Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| Default | M | 1 | 204 OK | - |
| ProblemDetails | M | 1 | 403/404 | Problem details. |
Example
curl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRuleq
HTTP/1.1 204 No Contentcurl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule
HTTP/1.1 403 Forbidden
{"title":"Forbidden","status":"403","detail":"Default rule cannot be deleted. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule","cause":"OPERATION_NOT_ALLOWED"}curl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRuleqq
HTTP/1.1 404 Not Found
{"title":"Not Found","status":"404","detail":"Circuit Breaking Configuration data not found against given query parameter(s). Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule111","cause":"DATA_NOT_FOUND"}2.39 NRF SRV Configuration
This section provides the following NRF SRV Configuration Rest API:
- Resource URIs for the nrfsrvconfig resource type.
- Types of data model.
- URI query parameters supported by GET, PUT, and DELETE methods.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the nrfsrvconfig resource type.
Table 2-396 nrfsrvconfig Resource Type
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| nrfsrvconfig | /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} | PUT | Creates the new NRF SRV configuration for the given nrfSrvFqdn or updates the existing NRF SRV configuration. |
| nrfsrvconfig | /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} | GET | Get the NRF SRV configuration for the given NRF SRV FQDN. |
| nrfsrvconfig | /ocscp/scpc-configuration/{version}/nrfsrvconfig | GET | Get all the NRF SRV configuration available in the database. |
| nrfsrvconfig | /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} | DELETE | Removes the NRF SRV configuration for the given NRF SRV FQDN. |
Note:
- Use the Configure Alternate NF Group section to refresh the NRF SRV FQDN.
- Set "spnlist" with NRF SRV in SPN format, and set
refreshAllto false.
Resource Definition
This section describes GET, PUT, and DELETE resource types supported by NRF SRV configuration.
PUT API
This resource creates the new NRF SRV configuration or updates the existing NRF SRV configuration by taking NRFSRVConfigData as the request body.
Resource URI: /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn}
Request Body
Table 2-397 Data Structures Supported by the PUT Request Body
| Data Type | Description |
|---|---|
| NRFSRVConfigData | Indicates the data type of the NRF SRV
configuration.
For more information, see Table 2-401. |
Table 2-398 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| NRFSRVConfigData | M | 1 | 200 OK | This response is used when an existing record is updated. |
| NRFSRVConfigData | M | 1 | 201 CREATED | This response is used when a new entry is created. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | This response is used when request body validation fails. |
The following example is of NRF SRV Configuration REST API for PUT method.
Response:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nrfSrvFqdn": "nrf2svc.scpsvc.svc.cluster.local",
"nrfSrvConfig": {
"nfSetIdList": [
"setnrfk2.nrfset.5gc.mnc012.mcc345"
],
"performSubscription": true,
"performAudit": true,
"registerScp": true,
"apiPrefix": "USEast",
"scheme": "http",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"serviceNames": [
"nnrf-nfm",
"nnrf-disc",
"nnrf-oauth2"
],
"isInterPlmnFqdn": true
}
}'
Example of NRF SRV Configuration REST API for PUT Method Bad Request
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nrfSrvConfig":{
"apiPrefix":"USEast",
"isInterPlmnFqdn":"false",
"nfSetIdList":[
"setnrfl1.nrfset.5gc.mnc012.mcc346"
],
"performAudit":"false",
"performSubscription":"false",
"plmnList":[
{
"mcc":"410",
"mnc":"213"
}
],
"registerScp":"false",
"scheme":"http",
"serviceNames":[
"nnrf-nfm",
"nnrf-disc",
"nnrf-oauth2"
],
"versions":[
{
"apiFullVersion":"1.0.0",
"apiVersionInUri":"v2"
}
]
},
"nrfSrvFqdn":"nrf1svc.scpsvc.svc.cluster.local"
}
}'
Response
{
"title":"Bad Request",
"status":400,
"detail":"Atleast one entry in the version list must have its apiVersion set as v1. Please refer to the User Guide.",
"instance":"/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf1svc.scpsvc.svc.cluster.local",
"cause":"MANDATORY_IE_INCORRECT"
}GET API
This resource fetches the NRF SRV configuration based on the supplied nrfSrvFqdn or fetches all the records.
Resource URI: /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn}
Table 2-399 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| NRFSRVConfigData | M | 1..N | 200 OK | This response is used when a record is fetched. |
| ProblemDetails | M | 1 | 404 NOT FOUND | This response is used when no matching entry is found. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | This response is used when query parameter validation fails. |
The following example is of NRF SRV Configuration REST API for GET method.
Response:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
-H 'accept: application/json'
DELETE API
This resource removes the NRF SRV configuration for the given nrfSrvFqdn.
Resource URI: /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn}
Table 2-400 Data Structures Supported by the DELETE Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| None | - | - | 204 NO CONTENT | This response is used when the query is successful. |
| Problem Details | M | 1 | 404 NOT FOUND | This response is used when no matching entry is found. |
| Problem Details | M | 1 | 400 BAD REQUEST | This response is used when query parameter validation fails. |
The following example is of NRF SRV Configuration REST API for DELETE method.
Response:
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
-H 'accept: application/json'
Data Model
The following tables describe different data models required for configuring NRF SRV data.
Table 2-401 NRFSRVConfigData
| Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| nrfSrvFqdn | String | M | NA | The data type of NRF SRV FQDN for the corresponding NRF SRV configuration. |
| nrfSrvConfig | NRFSRVConfig | M | NA | This is the NRF SRV configuration data. |
Table 2-402 NRFSRVConfig
| Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| plmnList | List | O | NA | List of the NRF serving PLMN. |
| nfSetIdList | List | M | NA | This is the SetId list for this NRF SRV
configuration.
You can configure multiple nfSetIds, but the NRF profile and rule creation will only take into account the nfSetId from the 0th index. This setId must be unique for each NRF SRV configuration; that is, this setId must not be present in any other NRF SRV configuration. |
| performSubscription | boolean | O | true | This field allows to decide whether NRF from this
NRF SRV should be used for a subscription or not.
The possible values are true or false. |
| performAudit | boolean | O | true | This field allows to decide whether NRF from this
NRF SRV should be used for a audit or not.
The possible values are true or false. |
| registerScp | boolean | O | false | This field allows to decide whether to register SCP
with the NRF from the NRF Set.
The possible values are true or false. |
| scheme | UriScheme | M | NA | This field is used for the URI Scheme. The supported value is http/https. |
| versions | array(NFServiceVersion) | M | NA | This field lists the NFServiceVersion.
Configuring multiple API versions is permissible, but at least one entry in the version list must have its apiVersionInUri set to "v1." This is because SCP currently utilizes "v1" for its self-generated requests towards NRF. |
| apiPrefix | String | O | NA | This field is used in the URI while communicating with NRF. |
| serviceNames | array(ServiceName) | M | "nnrf-nfm","nnrf-disc","nnrf-oauth2" |
Indicates the service name of the NRF SRV configuration. The nnrf-nfm and nnrf-disc are mandatory for NRF SRV configurations. The supported value is nnrf-nfm/nnrf-disc/nnrf-oauth2. |
| isInterPlmnFqdn | boolean | O | false | This field allows you to choose whether or not to map the NRF from this NRF SRV resolution to the InterPlmn Fqdn. |
Table 2-403 NFServiceVersion
| Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| apiVersionInUri | String | M | NA | The apiVersionInUri is used in the URI while communicating with NRF. The supported value is v1/v2. |
| apiFullVersion | String | M | NA | The apiFullVersion should be in format x.y.z. |
Allowed or Not Allowed API operations
Table 2-404 Different Types of Scenarios
| Scenario | Allowed or Not Allowed | Notes |
|---|---|---|
If performAudit is true, and the
nnrf-nfm service is configured as a service for audit (global helm
configuration), user can remove its entry from the NRF SRV
configuration.
|
Not Allowed | nnrf-nfm service is mandatory |
| If inserting or updating nfSetId with a value that already exists in another nfSetId configuration. | Not Allowed | - |
If performAudit is true, and the
nnrf-disc service is configured as a service for audit (global helm
configuration), user can remove its entry from the NRF SRV
configuration.
|
Not Allowed | nnrf-disc service is mandatory |
If nrfServiceForAudit is nnrf-disc
and supported NRF services should have disc and user can change
performAudit to true
|
Allowed | - |
If nrfServiceForAudit is nnrf-nfm
and supported NRF services should have mgmt and user can change
performAudit to true
|
Allowed | - |
| If model-D is enabled and nrfSetID (or nrfInstanceId) is present in the NRF_CONFIG table for nnrf-disc, and user can remove the nnrf-disc service from the NRF SRV configuration. | Not Allowed | nnrf-disc service is mandatory |
| If OAuth2 is enabled and nrfSetID (or nrfInstanceId) is present in the NRF_CONFIG table for nnrf-oauth2, and user can remove the nnrf-oauth2 service from the NRF SRV configuration. | Not Allowed | - |
The registerScp can be set from
false to true when nrfset has mgmt service configured in the
supported NRF service list.
|
Allowed | - |
The performSubscription can be set
from false to true when nrfset has mgmt service configured in the
supported NRF service list.
|
Allowed | - |
| Configuring the version with the "apiVersionInUri" value as v2 only. | Not Allowed | Configuring multiple API versions is permissible, but at least one entry in the version list must have its apiVersionInUri set to "v1". This is because SCP currently utilizes "v1" for its self-generated requests towards NRF. |
Note:
Service types nnrf-nfm and nnrf-disc are mandatory for Table 2-402 table configurations. Deletion of nnrf-nfm and nnrf-disc service types from the NRF SRV profile is not supported.
2.40 NRF FQDN InstanceId Mapping
This section describes REST API configurations required for the mapping the NRF FQDN InstanceId.
Resources
The following table describes the resource URIs and the corresponding HTTP methods for the nrffqdninstanceidmapping resource type.
Table 2-405 nrffqdninstanceidmapping Resource Type
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| nrffqdninstanceidmapping | /ocscp/scpc-configuration/{version}/nrffqdninstanceidmapping | GET | Fetches the NRF FQDN and corresponding instanceid mapping details. |
Resource Definition
This section describes GET resource types supported by NRF FQDN InstanceId Mapping.
GET API
This resource fetches the NRF FQDN and corresponding instanceid mapping details.
Resource URI: /ocscp/scpc-configuration/{version}/nrffqdninstanceidmapping
Table 2-406 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| NRFFQDNInstanceIdMappingData | M | 1..N | 200 OK | This response is used when a record is fetched. |
The following example is of NRF FQDN InstanceId Mapping REST API for GET method.
Response:
curl -X 'GET'
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrffqdninstanceidmapping'
-H 'accept: application/json'
[
{
"nrfFqdn": "nrf2svc.scpsvc.svc.cluster.local",
"data": {
"v1": {
"nfInstanceId": "e12013b2-590d-39ab-9aba-dac025f69a65",
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"svcNameSvcNfInstanceId": {
"nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
}
}
}
},
{
"nrfFqdn": "nrf3svc.scpsvc.svc.cluster.local",
"data": {
"v1": {
"nfInstanceId": "4ca42748-72e2-3dd7-b4a0-4e664b021312",
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"svcNameSvcNfInstanceId": {
"nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
}
}
}
},
{
"nrfFqdn": "nrf4svc.scpsvc.svc.cluster.local",
"data": {
"v1": {
"nfInstanceId": "91b26862-b80f-3607-a8ef-43b429cf3b30",
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"svcNameSvcNfInstanceId": {
"nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
}
}
}
},
{
"nrfFqdn": "ocnrf-ingressgateway.ocnrf.svc.cluster.local",
"data": {
"v1": {
"nfInstanceId": "85e3cce9-d6f1-3af6-abbb-1419cfb38e1d",
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"svcNameSvcNfInstanceId": {
"nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
}
}
}
}
]
Data Model
The following tables describe different data models required for mapping NRF FQDN InstanceId data.
Table 2-407 NRFFQDNInstanceIdMappingData
| Name | Data Type | Mandatory (M) or Optional(O) | Default Value | Description |
|---|---|---|---|---|
| nrfFqdn | String | M | NA | This is the NRF FQDN received from DNS server. |
| data | JSON | M | NA | This is the mapping detail of instanceid corresponding to the NRF FQDN. |
2.41 Discovery Cache Response Configuration
This REST API is used to retrieve, create, update, and delete NF discovery response cache configurations.
Resources
The following table describes the resource name to retrieve, add, update, and remove NF discovery response cache configurations based on the query parameters.
Table 2-408 Resources
| Resource Name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| nfdiscovery-response-cache-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg | GET | Retrieves the NF discovery response cache configuration for the given discoveryCacheCfgName |
| nfdiscovery-response-cache-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} | GET | Retrieves NF discovery response cache configuration for given discoveryCacheCfgName |
| nfdiscovery-response-cache-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} | PUT | Creates or updates the NF discovery response cache configuration for the given discoveryCacheCfgName |
| nfdiscovery-response-cache-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} | DELETE | Deletes the NF discovery response cache configuration for the given discoveryCacheCfgName |
Data Model
The following table describes the field names of the DiscoveryCacheCfgWrapper data type:
Table 2-409 DiscoveryCacheCfgWrapper
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M |
Indicates the unique rule name for each delegated discovery configuration that is considered as a primary key. |
| data | DiscoveryCacheCfgData | M | Specific data for each discovery cache response configuration type. For more information, see DiscoveryCacheCfgData table. |
Table 2-410 DiscoveryCacheCfgData
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| targetNfType | String | M |
This is the NF type of producer for which delegated discovery is being made. The allowed values for this field are:
|
| serviceNames | array(ServiceName) | O |
This is the list of service names supported by producer NF for which delegated discovery is being made. The allowed values for this field are:
|
| excludeDiscoveryQueryParams | array(ExcludeQueryInfo) | M | This is a list of ExcludeQueryInfo objects.
ExcludeQueryInfo has one field called queryHeader.
|
Note:
For more information about valid NF types and services supported by SCP, see the "Supported NF Types" chapter in the Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.
Table 2-411 ExcludeQueryInfo
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| queryHeader | String | M |
It is the query parameters that are forwarded along with the discovery request to NRF, for which responses will not be cached. The allowed values for this field are:
|
Default Rules for this API
- defaultNFTypeDiscovery: This rule is applicable to any Model D request where discovery is happening without service names (in these requests, the 3gpp-sbi-discovery-service-names header is not present) and no other custom rule match is found. For this rule, caching will not happen for the list of query headers mentioned in the ExcludeQueryInfo.
- defaultNFServiceDiscovery: This rule is applicable to a
Model D request where the request 3gpp-sbi-discovery-service-names header is
also present in the incoming request and no other custom rule match is
found. For this rule, caching will not happen for the list of query headers
mentioned in the ExcludeQueryInfo.
For both of the above rules, excludeDiscoveryQueryParams has the following values:
- In case of install: [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] indicates that the caching of responses will be done for all the query headers except the SubscriberIds (refer to SubscriberIds )
- In case of upgrade: [{"excludeQueryInfo":{"queryHeader":"None"}}] indicates that the caching of responses will be done for all the query headers so as to be backward compatible with older releases.
Note:
By default, users can configure up to 100 rules using this API.Table 2-412 Default Rule Names Configuration
| ruleName | targetNfType | serviceNames | excludeDiscoveryQueryParams |
|---|---|---|---|
| defaultNFTypeDiscovery | * | absent | [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] |
| defaultNFServiceDiscovery | * | * | [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] |
Table 2-413 Default Rule Name Configuration
| ruleName | targetNfType | serviceNames | excludeDiscoveryQueryParams |
|---|---|---|---|
| defaultNFTypeDiscovery | * | absent | [{"excludeQueryInfo":{"queryHeader":"None"}}] |
| defaultNFServiceDiscovery | * | * | [{"excludeQueryInfo":{"queryHeader":"None"}}] |
The string SubscriberIds is a custom string, which is a group of 8 query parameters. SubscriberIds are UE ID-related NF discovery query parameters.
Table 2-414 SubscriberIds
| SubscriberIds | Description |
|---|---|
| supi | If included, this Information Element (IE) shall contain the SUPI of the requester UE to search for an appropriate NF. SUPI may be included if the target NF type is "PCF," "CHF," "AUSF," "UDM," or "UDR.". |
| ue-ipv4-address | The IPv4 address of the UE for which a BSF or P-CSCF needs to be discovered. |
| ip-domain | The IPv4 address domain of the UE for which a BSF needs to be discovered. |
| ue-ipv6-prefix | The IPv6 prefix of the UE for which a BSF or P-CSCF needs to be discovered. |
| gpsi | If included, this IE shall contain the GPSI of the requester UE to search for an appropriate NF. GPSI may be included if the target NF type is "CHF," "PCF," "UDM," or "UDR.". |
| external-group-identity | If included, this IE shall contain the external group identifier of the requester UE to search for an appropriate NF. This may be included if the target NF type is "UDM" or "UDR". |
| routing-indicator |
Routing indicator information that allows to route network signaling with SUCI (see 3GPP 23.003 [12]) to an AUSF and UDM instance capable of serving the subscriber. May be included if the target NF type is "AUSF" or "UDM.". Pattern: "^[0-9]{1,4}$" |
| msisdn | If included, this IE shall contain the external group identifier of the requester UE to search for an appropriate NF. This may be included if the target NF type is "UDM" or "UDR". |
Resource Definition
GET REST API:
The resource fetches the discovery response cache configuration (discoveryCacheCfgWrapper) based on the query parameters. If no query parameter is given, all the data is returned.
Resource URI for GET All:
ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg
Resource URI for GET:
ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/{ruleName}
Table 2-415 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O |
|
Table 2-416 Data Structures Supported by the GET Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| array(discoveryCacheCfgWrapper) | M | 1 | 200 OK | List of discovery response cache configurations (discoveryCacheCfgWrapper) matching criteria. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or query parameter is provided. |
| ProblemDetails | M | 1 | 404 Not Found | Returns when no record is found for the given query. |
| ProblemDetails | M | 1 | 405 Method Not Allowed | Returns when an incorrect method or the server is configured to disallow the said method. |
Examples
[
{
"ruleName": "defaultNFServiceDiscovery",
"data": {
"targetNfType": "*",
"serviceNames": [
"*"
],
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "SubscriberIds"
}
}
]
},
"createdTimestamp": "2024-01-24 14:50:56.0",
"updatedTimestamp": "2024-01-24 14:50:56.0"
},
{
"ruleName": "defaultNFTypeDiscovery",
"data": {
"targetNfType": "*",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "SubscriberIds"
}
}
]
},
"createdTimestamp": "2024-01-24 14:50:56.0",
"updatedTimestamp": "2024-01-24 14:50:56.0"
}
]Request(Input given as v5 wrong version):
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/rule1' -H 'accept: application/json'
Response:
connection: keep-alive
content-length: 0
date: Fri,02 Feb 2024 09:43:00 GMT
400 Error: Bad RequestRequest:
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": "404",
"detail": "Discovery Cache Configuration data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundHttpStatus : 405 - This can be seen through curl command when instead of GET we are requesting for any other method in this example POST.
Request:
curl -X 'POST' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/rule1' -H 'accept: application/json'
Response:
{"timestamp":"2024-02-02T11:08:01.059+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/rule1"}PUT REST API:
This resource adds one discovery response cache configuration (discoveryCacheCfgWrapper) using the Request Body.
ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName}Table 2-417 URI query parameters
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | M | The unique string that works as an ID. |
| data | DiscoveryCacheCfgData | M | The specific data for the discovery response configuration type. |
Table 2-418 Data Structures Supported by the PUT Response Body
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| array(discoveryCacheCfgWrapper) | M | 1 | 201 OK | If a new record in the table is created. |
| array(discoveryCacheCfgWrapper) | M | 1 | 200 OK | If an existing record in the table is updated. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns problem details. |
| ProblemDetails | M | 1 | 405 Method Not Allowed | Returns when an incorrect method or the server is configured to disallow the said method. |
Examples
HttpStatus : 400
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "Rule1",
"data": {
"targetNfType": "UDRR",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "SubscriberIds"
}
}
]
}
}'
Response:
{
"title": "Bad Request",
"status": "400",
"detail": "TargetNfType is invalid, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/RULE5",
"cause": "INVALID_REQUEST_BODY"
}
Reuest:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/newRule' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "newRule",
"data": {
"targetNfType": "AMF",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "SubscriberIds"
}
}
]
}
}'
Response:
HttpStatus : 201
{
"ruleName": "newRule",
"data": {
"targetNfType": "AMF",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "SubscriberIds"
}
}
]
}
}
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/newRule' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d ' {
"ruleName": "newRule",
"data": {
"targetNfType": "AMF",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "supi"
}
}
]
}
}'
Response:
HttpStatus : 200
{
"ruleName": "newRule",
"data": {
"targetNfType": "AMF",
"excludeDiscoveryQueryParams": [
{
"excludeQueryInfo": {
"queryHeader": "supi"
}
}
]
}
}
HttpStatus : 405 - This can be seen through curl command when instead of PUT we are requesting for any other method in this example POST.
Request:
curl -X 'POST' \
> 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' \
> -H 'accept: application/json' \
> -H 'Content-Type: application/json' \
> -d ' {
> "ruleName": "Rule1",
> "data": {
> "targetNfType": "UDR",
> "excludeDiscoveryQueryParams": [
> {
> "excludeQueryInfo": {
> "queryHeader": "SubscriberIds"
> }
> }
> ]
> }
> }'
Response:
{"timestamp":"2024-02-02T10:10:19.204+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1"}DELETE REST API:
This resource deletes one Discovery Response Cache configuration (discoveryCacheCfgWrapper) based on query parameters.
ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName}Table 2-419 URI query parameters supported by the DELETE method on this resource
| Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
|---|---|---|---|
| ruleName | String | O | The name of the rule name configuration which needs to be deleted. |
Table 2-420 Data structures supported by the Delete Response Body on this resource
| Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
|---|---|---|---|---|
| None | M | 1 | 200 OK | Returns the successful response. Only response code is returned. |
| ProblemDetails | M | 1 | 404 NOT FOUND | Returns when no matching entry is found. |
| ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or query parameter is provided. |
| ProblemDetails | M | 1 | 405 Method Not Allowed | Returns when an incorrect method or the server is configured to disallow the said method. |
Examples
Request : curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' -H 'accept: application/json'
Response: 204 OKRequest:
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": "404",
"detail": "Discovery Cache Configuration data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not FoundRequest(Input given as wrong version v5):
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
Response:
connection: keep-alive
content-length: 0
date: Fri,02 Feb 2024 09:43:00 GMT
400 Error: Bad RequestHttpStatus : 405 - This can be seen through curl command when instead of DELETE we are requesting for any other method in this example POST.
Request:
curl -X 'POST' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule4' -H 'accept: application/json'
Response:
{"timestamp":"2024-02-02T11:13:13.951+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/Rule4"}2.42 Configuring TLS Version and Ciphers
- Resource URIs for the tls-config resource type.
- Types of data model.
- URI query parameters supported by GET, PUT, and DELETE methods.
Resources
The following table describes the resource URIs and corresponding HTTP methods for the tls-config resource type.
Table 2-421 tls-config Resource Type
| Resource name | Resource URI | HTTP Method | Description |
|---|---|---|---|
| tls-config | /ocscp/scpc-configuration/{version}/tls-config | GET | Retrieves the TLS ciphers and versions for all interfaces. |
| tls-config | /ocscp/scpc-configuration/{version}/tls-config/{interfaceName} | GET | Retrieves the TLS ciphers and version for a given interface. |
| tls-config | /ocscp/scpc-configuration/{version}/tls-config/{interfaceName} | PUT |
|
Resource Definition
This section describes GET, PUT, and DELETE resource types supported by TLS Ciphers configuration.
GET ALL API
This resource fetches all the TLS Ciphers configuration.
Resource URI: /ocscp/scpc-configuration/{version}/tls-config
Table 2-422 Data Structures Supported by the GET Request Body
| Data Type | Mandatory(M)/Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| TLSConfigurationWrapper | M | 1 | 200 OK | Indicates that all TLSConfigurationWrapper objects were successfully fetched. |
The following example is of TLS Configuration REST API for GET method.
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config' -H 'accept: application/json'[
{
"interfaceName": "sbiIngressCiphers",
"tlsCiphersConfigData": {
"tlsVersion": "TLSv1.3",
"terminateExistingConn": false,
"tls13Ciphers": [
"TLS_CHACHA20_POLY1305_SHA256",
"TLS_AES_256_GCM_SHA384",
"TLS_AES_128_GCM_SHA256"
]
}
}
]
GET ALL API
This resource fetches the TLS Ciphers and version configuration.
Resource URI: /ocscp/scpc-configuration/{version}/tls-config/{interfaceName}
Table 2-423 Data Structures Supported by the GET Request Body
| Data Type | Mandatory(M)/Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| TLSConfigurationWrapper | M | 1 | 200 OK | Indicates the successful fetch of TLSConfigurationWrapper configurations. |
| ProblemDetails | M | 1 | 400 | Indicates that the request failed because the given interface name is not present. |
The following example is of TLS Configuration REST API for GET method.
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiEgress' -H 'accept: application/json'
{
"interfaceName": "sbiEgress",
"tlsConfigData": {
"tlsVersion": "TLSv1.2",
"terminateExistingConn": false,
"tls12Ciphers": [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
]
}
}curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiEgress1' -H 'accept: application/json'
{
"title": "Bad Request",
"status": 400,
"detail": "Invalid Tls Interface Name, Allowed interfaceName names are sbiIngress, sbiEgress, sbiTrafficFeed",
"instance": "/ocscp/scpc-configuration/v1/tls-config/sbiEgress1",
"cause": "INVALID_QUERY_PARAM"
}PUT API
This resource creates new TLS cipher configurations for the specified interface.
Resource URI: /ocscp/scpc-configuration/{version}/tls-config/{interfaceName}
Table 2-424 Data Structures Supported by the PUT Request Body
| Path Params | Data Type | Mandatory(M)/Optional(O) | Description |
|---|---|---|---|
| interfaceName | String | M | Retrieves configurations for the specified interfaceName. |
Table 2-425 Data Structures Supported by the PUT Request Body
| Data Type | Mandatory(M)/Optional(O) | Cardinality | Description |
|---|---|---|---|
| TLSConfigurationWrapper | M | 1 | Indicates that a TLSConfigurationWrapper is to be added or updated. |
Table 2-426 Data Structures Supported by the PUT Request Body
| Data Type | Mandatory(M)/Optional(O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| TLSConfigurationWrapper | M | 1 | 200 | Indicates that the nfServiceConfig configurations were successfully updated. |
| TLSConfigurationWrapper | M | 1 | 201 | Indicates that the nfServiceConfig configurations were successfully created. |
| Problem Details | M | 1 | 400 | Indicates that the request failed due to one of the
following reasons:
|
The following example is of TLS Configuration REST API for PUT method.
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiIngressCiphers' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"interfaceName": "sbiIngressCiphers",
"tlsCiphersConfigData": {
"tlsVersion": "TLSv1.3",
"terminateExistingConn": false,
"tls13Ciphers": [
"TLS_CHACHA20_POLY1305_SHA256", "TLS_AES_256_GCM_SHA384", "TLS_AES_128_GCM_SHA256"
]
}
}'
{
"interfaceName": "sbiIngressCiphers",
"tlsCiphersConfigData": {
"tlsVersion": "TLSv1.3",
"terminateExistingConn": false,
"tls13Ciphers": [
"TLS_CHACHA20_POLY1305_SHA256",
"TLS_AES_256_GCM_SHA384",
"TLS_AES_128_GCM_SHA256"
]
}
}Failure sample of PUT API
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiIngress' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"interfaceName": "sbiIngress",
"tlsConfigData": {
"tlsVersion": "TLSv1.3,TLSv1.4",
"terminateExistingConn": true,
"tls12Ciphers": [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
],
"tls13Ciphers": [
"TLS_AES_128_GCM_SHA256",
"TLS_AES_256_GCM_SHA384",
"TLS_CHACHA20_POLY1305_SHA256"
]
}
}{
"title": "Bad Request",
"status": 400,
"detail": "Invalid TLS version configured, please refer user guide.",
"instance": "/ocscp/scpc-configuration/v1/tls-config/sbiIngress",
"cause": "INVALID_REQUEST_BODY"
}Data Model
Table 2-427 TLSConfigurationWrapper Details
| Parameter Name | Data Type | Mandatory (M) / Optional (O) | Default Values | Value Range | Description and Validation |
|---|---|---|---|---|---|
| interfaceName | String | M | NA | Only the configured interfaces
with non-null values are allowed. These interfaces are:
|
Indicates the interface that requires updating
with the TLS version and ciphers.
Validation
|
| tlsVersion | String | M | NA | The following are the allowed
values:
Note: When providing both versions, ensure they are separated by "," with no space following the ",". |
Specifies the TLS version that should be configured. |
| terminateExistingConn | Boolean | M |
|
true or false
|
Specifies whether to keep the existing
connections or not.
true: Indicates that the existing connection will be terminated, and new requests will be handled on the new connection. false: Indicates that the existing connection will remain unchanged, and only new connections will use the updated TLS configuration. |
| tls12Ciphers | List<String> | C | NA |
|
Specifies the TLS 1.2 ciphers to be configured.
Validation
|
| tls13Ciphers | List<String> | C | NA |
|
Specifies the TLS 1.3 ciphers to be
configured.
Validation
|
{
"interfaceName": "sbiIngressCiphers",
"tlsCiphersConfigData": {
"tlsVersion": "TLSv1.3, TLSv1.2",
"terminateExistingConn": false,
"tls12Ciphers": [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
],
"tls13Ciphers": [
"TLS_AES_128_GCM_SHA256",
"TLS_AES_256_GCM_SHA384",
"TLS_CHACHA20_POLY1305_SHA256"
]
}
}2.43 Configuring NF Profile Level Attribute
This section describes the nfProfile-level-attribute-config REST API
parameters required to configure NF profile level attributes that may be unavailable
in a registered NF profile. You can configure NF profile level attributes based on
NF types or combinations of NF types and NF instances. This API refers to a
configured instance of NF profile level attribute configuration data REST API to
obtain specific NF profile level attributes.
Resources
The following table describes the resource name to retrieve, add, or update nfProfile-level-attribute-config configuration data:
Table 2-428 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| nfProfile-level-attribute-config | ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config | GET | Retrieves all existing NF profile level attribute configuration. |
| nfProfile-level-attribute-config | ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} | GET | Retrieves NF profile level attribute configuration for a config name. |
| nfProfile-level-attribute-config | /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} | PUT |
|
| nfProfile-level-attribute-config | /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} | DELETE | Removes an existing NF profile level attribute configuration. |
Resource Definition
GET ALL
This resource fetches all the NF profile level attribute configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config
The following table describes data structures supported by the GET response body on this resource:
Table 2-429 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigWrapper objects are fetched. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-430 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigWrapper configurations are fetched. |
Sample GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config' \
-H 'accept: application/json'
Response:
[
{
"configName": "defaultNfProfileLevelAttrConfig",
"nfProfileLevelAttrConfig": {
"nfType": "*",
"nfInstanceIdsList": [
"*"
],
"nfProfileLevelAttrConfigDataName": "defaultNfProfileLevelAttrConfigData"
},
"createdTimestamp": "2025-01-09 05:24:11.0",
"updatedTimestamp": "2025-01-09 05:24:11.0"
}
]
GET
This resource fetches NF profile level attribute configuration.
Resource URI:
ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}
The following table describes data structures supported by the GET response body on this resource:
Table 2-431 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigWrapper objects are fetched. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-432 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigWrapper configurations are fetched. |
ProblemDetails |
M | 1 | 404 | Retrieves records based on non-existing configName. |
Sample of a Successful GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/defaultNfProfileLevelAttrConfig' \
-H 'accept: application/json'
Response:
{
"configName": "defaultNfProfileLevelAttrConfig",
"nfProfileLevelAttrConfig": {
"nfType": "*",
"nfInstanceIdsList": [
"*"
],
"nfProfileLevelAttrConfigDataName": "defaultNfProfileLevelAttrConfigData"
},
"createdTimestamp": "2025-04-11 14:41:21",
"updatedTimestamp": "2025-04-14 14:48:12"
}
Sample of an Error GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test123' \
-H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": 404,
"detail": "Nf Profile Level Attribute Configuration not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test123",
"cause": "DATA_NOT_FOUND"
}
PUT
This resource configures NF profile level attribute configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}
The following table describes data structures supported by the PUT request body on this resource:
Table 2-433 Path Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Fetches configurations of configName. |
Table 2-434 NfProfileLevelAttrConfigWrapper
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | Adds or updates NfProfileLevelAttrConfigWrapper. |
The following table describes data structures supported by the PUT response body on this resource:
Table 2-435 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigWrapper |
M | 1 | 200 | Indicates successful update of NF profile level attribute configurations. |
NfProfileLevelAttrConfigWrapper |
M | 1 | 201 | Indicates successful creation of NF profile level attribute configurations. |
ProblemDetails |
M | 1 | 400 |
Scenarios:
|
Sample of a Successful PUT API
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "test-config2",
"nfProfileLevelAttrConfig": {
"nfType": "PCF",
"nfInstanceIdsList": [
"231-sfds-2e234"
],
"nfProfileLevelAttrConfigDataName": "test"
}
}'
Response:
{
"configName": "test-config2",
"nfProfileLevelAttrConfig": {
"nfType": "PCF",
"nfInstanceIdsList": [
"231-sfds-2e234"
],
"nfProfileLevelAttrConfigDataName": "test"
},
"createdTimestamp": "Mon Jan 13 14:26:59 UTC 2025",
"updatedTimestamp": "Mon Jan 13 14:26:59 UTC 2025"
}
Sample of an Error PUT API
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "test-config21",
"nfProfileLevelAttrConfig": {
"nfType": "PCF",
"nfInstanceIdsList": [
"231-sfds-2e234"
],
"nfProfileLevelAttrConfigDataName": "test"
}
}'
Response:
{
"title": "Bad Request",
"status": 400,
"detail": "Config Name mismatch in Query params and Request body params, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2",
"cause": "MANDATORY_QUERY_PARAM_INCORRECT"
}
DELETE
This resource removes NF profile level attribute configuration for a given configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}
The following table describes data structures supported by the PUT request body on this resource:
Table 2-436 Path Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Fetches configurations of configName. |
The following table describes data structures supported by the DELETE response body on this resource:
Table 2-437 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
None |
- | - | 204 | Indicates successful removal of NF profile level attribute configuration. |
ProblemDetails |
M | 1 | 400 |
Scenarios:
|
Sample of a Successful DELETE API
Request:
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/testData' \
-H 'accept: application/json'
Response:
{}
Successfully deleted Nf Profile Config Set Data
Sample for an Error DELETE API
Request:
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/testDataaa' \
-H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": 404,
"detail": "Nf Profile Level Attribute Configuration not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-config-set-data/testDataaa",
"cause": "DATA_NOT_FOUND"
}
Data Model
The following table describes data model for request or response:
Table 2-438 NfProfileConfigSetDataWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Description |
|---|---|---|---|---|
configName |
String | M | defaultNfProfileLevelAttrConfig | Indicates unique configuration name to configure the
NF profile level attribute configuration.
The allowed values must be alphanumeric with hyphen and underscore special characters. |
nfType |
String | M | * | Describes NfType to which this configuration is
applicable.
* indicates all valid NF types. |
nfinstanceidList |
Array<String> |
O | * | Indicates configuration list of nfInstance IDs
separated by comma.
When nfInstaceId is provided, it is used with nfType to extract the missing profile level data to be used while processing NF profiles for creating rules. When nfInstanceId is not provided, it is automatically set to '*'. Then, this configuration is applicable for any NF instance of a given NfType. The allowed values must be alphanumeric with hyphen and underscore special characters. * indicates all valid NF instance IDs. |
nfProfileLevelAttrConfigDataName |
String | O | defaultNfProfileLevelAttrConfigData | Indicates an NF profile level attribute
configuration data item that is already configured.
When SCP processes NF profiles, relevant NF profile level attribute configuration data items are selected based on nfType or nfInstanceID combinations, and they are used for creating default rules. Then, those default rules will be used for routing and alternate routing of notification requests when the service name is unknown. |
2.44 Configuring NF Profile Level Attribute Configuration Data
This section describes the nfProfile-level-attribute-config-data
REST API parameters required to configure NF profile level attribute configurations
data. This includes notification attributes that are used for alternate routing of
notification requests and DNS SRV attributes for the DNS SRV feature. The data
configured in this API is referred by NF profile level attribute configuration REST
API.
Resources
The following table describes the resource name to retrieve, add, or update nfProfile-level-attribute-config-data configuration data:
Table 2-439 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| nfProfile-level-attribute-config-data | ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data | GET | Retrieves all the existing NF profile level attribute configuration data items. |
| nfProfile-level-attribute-config-data | ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName} | GET | Retrieves NF profile level attribute configuration data for a config name. |
| nfProfile-level-attribute-config-data | /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName} | PUT |
|
| nfProfile-level-attribute-config-data | /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data{configName} | DELETE | Removes an existing NF profile level attribute configuration data item. |
Resource Definition
GET ALL
This resource fetches all the NF profile level attribute configuration data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data
The following table describes data structures supported by the GET response body on this resource:
Table 2-440 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigDataWrapper objects are fetched. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-441 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigDataWrapper configurations are fetched. |
Sample GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data' \
-H 'accept: application/json'
Response:
[
{
"configName": "defaultNfProfileLevelAttrConfigData",
"dnsSrv": {
"scheme": "https",
"portPreference": "SRV_RECORD"
},
"notificationAttributes": {
"scheme": "http",
"port": 80,
"capacity": 65535,
"priority": 1
},
"createdTimestamp": "2025-03-21 06:15:36",
"updatedTimestamp": "2025-03-21 06:15:36"
}
]
GET
This resource fetches NF profile level attribute configuration data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}
The following table describes data structures supported by the GET response body on this resource:
Table 2-442 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigDataWrapper objects are fetched. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-443 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 200 | Indicates that all the NfProfileLevelAttrConfigDataWrapper configurations are fetched. |
ProblemDetails |
M | 1 | 400 | Retrieves records based on the 'configName', which does not exist. |
Sample of a Successful GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/defaultNfProfileLevelAttrConfigData' \
-H 'accept: application/json'
Response:
{
"configName": "defaultNfProfileLevelAttrConfigData",
"dnsSrv": {
"scheme": "https",
"portPreference": "SRV_RECORD"
},
"notificationAttributes": {
"scheme": "http",
"port": 80,
"capacity": 65535,
"priority": 1
},
"createdTimestamp": "2025-03-21 06:15:36",
"updatedTimestamp": "2025-03-21 06:15:36"
}
Sample of an Error GET API
Request:
curl -X 'GET' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/test12' \
-H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": 404,
"detail": "Nf Profile Level Attribute Config data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/test12",
"cause": "DATA_NOT_FOUND"
}
PUT
This resource adds or updates NF profile level attribute configuration data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}
The following table describes data structures supported by the PUT request body on this resource:
Table 2-444 Path Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Indicates the name of the configurations to be added or updated. |
Table 2-445 NfProfileLevelAttrConfigWrapper
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | Adds or updates NfProfileLevelAttrConfigDataWrapper. |
The following table describes data structures supported by the PUT response body on this resource:
Table 2-446 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 200 | Indicates successful update of NF profile level attribute configuration data item. |
NfProfileLevelAttrConfigDataWrapper |
M | 1 | 201 | Indicates successful creation of NF profile level attribute configuration data item. |
ProblemDetails |
M | 1 | 400 | Scenarios:
|
Sample of a Successful PUT API
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "chk-config-data",
"dnsSrv": {
"scheme": "https",
"portPreference": "SRV_RECORD"
},
"notificationAttributes": {
"scheme": "http",
"port": 10,
"capacity": 9877,
"priority": 10
}
}'
Response:
{
"configName": "chk-config-data",
"dnsSrv": {
"scheme": "https",
"portPreference": "SRV_RECORD"
},
"notificationAttributes": {
"scheme": "http",
"port": 10,
"capacity": 9877,
"priority": 10
},
"createdTimestamp": "2025-04-04 05:52:03",
"updatedTimestamp": "2025-04-04 05:52:03"
}
Sample of an Error PUT API
Request:
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"configName": "chk-config-data",
"dnsSrv": {
"scheme": "https",
"portPreference": "SRV_RECORD"
},
"notificationAttributes": {
"scheme": "http",
"port": 10,
"capacity": 9877,
"priority": 10
}
}'
Response:
{
"title": "Bad Request",
"status": 400,
"detail": "Config Name mismatch in Query params and Request body params, Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data1",
"cause": "MANDATORY_QUERY_PARAM_INCORRECT"
}
DELETE
This resource removes NF profile level attribute configuration data for a given configName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}
The following table describes data structures supported by the PUT request body on this resource:
Table 2-447 Path Parameters
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
configName |
String | M | Indicates the name of the configuration to be removed. |
The following table describes data structures supported by the DELETE response body on this resource:
Table 2-448 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
None |
- | - | 204 | Indicates successful removal of the NF profile level attribute configuration data item. |
ProblemDetails |
M | 1 | 400 | Scenarios:
|
Sample of a Successful DELETE API
Request:
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data' \
-H 'accept: application/json'
Response:
{}
Successfully deleted NF Profile Level Attribute Configuration Data
Sample for an Error DELETE API
Request:
curl -X 'DELETE' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data12' \
-H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": 404,
"detail": "Nf Profile Level Attribute Config data not found against given query parameter(s), Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data12",
"cause": "DATA_NOT_FOUND"
}
Data Model
The following table describes data model for request or response:
Table 2-449 NfProfileLevelAttrConfigDataWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Default Value | Description |
|---|---|---|---|---|
configName |
String | M | defaultNfProfileLevelAttrConfigData | Indicates unique configuration name to configure the
NF profile level attribute configuration data.
The default value cannot be deleted, but it can be modified. The allowed values must be alphanumeric with hyphen and underscore special characters. |
dnsSrv.scheme |
String | O | https | Defines the default scheme to form the query for DNS
SRV profile level FQDN.
Range: http or https |
dnsSrv.portPreference |
String | O | SRV_RECORD |
Defines the path to retrieve the port values either from the DNS SRV record or from the configured notification attributes. Range: SRV_RECORD or STATIC_CONFIG
|
notificationAttributes.scheme |
String | M | http |
Defines the scheme to be used while creating default routing rules for notification requests when the scheme is not provided in the NF profile at profile level. Range: http or https |
notificationAttributes.port |
Integer | O | 80 |
Defines the port to be used while creating default routing rules for notification request when the port is not provided in the NF profile at profile level. Range: 1-65535 |
notificationAttributes.capacity |
Integer | O | 65535 |
Defines the capacity to be used while creating default routing rules for notification requests when the capacity is not provided in the NF profile at profile level. Range: 0-65535 |
notificationAttributes.priority |
Integer | O | 1 |
Defines the priority to be used while creating default routing rules for notification requests when the priority is not provided in the NF profile at profile level. Range: 0-65535 |
2.45 Configuring SCP Feature Status
Resources
The following table describes the resource name to retrieve scpfeaturestatus configuration data:
Table 2-450 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| scpfeaturestatus | /ocscp/scpc-configuration/{version}/scpfeaturestatus | GET | Retrieves the runtime status of a feature. |
Resource Definition
GET
This resource fetches the runtime status of a feature based on the query parameters.
Resource URI:
/ocscp/scpc-configuration/{version}/scpfeaturestatus
The following table describes the data structures supported by the GET response body on this resource:
Table 2-451 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
SCPFeatureStatusData |
M | 1 | 200 OK | 200 OK is used when a record is fetched. |
Example of SCP Feature Status REST API for GET Method:
curl -X 'GET'
'http://<localhost>:8081/ocscp/scpc-configuration/v1/scpfeaturestatus'
-H 'accept: application/json'
[
{
"feature": "nrf_bootstrap_info",
"admin": "ENABLED",
"status": "ENABLED"
}
]
Data Model
The following table describes data model for request or response:
Table 2-452 SCPFeatureStatusData
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
featureName |
String | M | Displays the names of the features, such as
nrf_bootstrap_info.
Default value: Feature Name |
adminState |
String | M | Displays the admin state of the feature. Possible
statuses are mentioned below:
Default value: DISABLED |
runtimeStatus |
String | M | Displays the current runtime status of the feature.
Possible statuses are mentioned below:
Default value: DISABLED |
creationTimestamp |
Date | M | Displays the time of creation of the event, for example, creationTimestamp": "2021-05-26T01:17:15.000+00:00 |
updatedTimestamp |
Date | M | Displays the time of updation of the event, for example, creationTimestamp": "2021-05-26T06:24:15.000+00:00 |
2.46 Configuring NF Topology On-demand Audit
In SCP 25.2.100 and earlier releases, the NF topology audit was performed automatically at set intervals. You can initiate an on-demand NF topology audit with NRF by using this REST API. It provides an option to manually refresh and reprocess all NF profiles.
Resources
The following table describes the resource name to initiate
nf-topology-audit configuration data:
Table 2-453 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
|
nf-topology-audit |
/ocscp/scpc-configuration/{version}/nf-topology-audit | PUT | Initiates an on-demand NF topology audit on specified NF types with optional NRF Set IDs and optional force refresh. |
Resource Definition
PUT
This resource performs an on-demand NF topology audit on specified NF types with optional NRF Set IDs and optional force refresh based on the query parameters.
Resource URI:
/ocscp/scpc-configuration/{version}/nf-topology-audit
The following table describes the data structures supported by the PUT request body on this resource:
Table 2-454 Request Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
OnDemandAuditDetailsWrapper |
M | 1 | Indicates nf-topology-audit
configuration used to submit the NF topology audit request to
SCP.
|
The following table describes the data structures supported by the PUT response body on this resource:
Table 2-455 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
OnDemandAuditDetailsWrapper |
M | 1 | 200 OK | Successfully submitted
nf-topology-audit request.
|
ProblemDetails |
M | 1 | 400 Bad Request | Problem details |
Sample of a successful PUT API
Request:
curl -X 'PUT' \
'http://localhost:31411/ocscp/scpc-configuration/v1/nf-topology-audit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nfTypeList": [
"SMF","UDM"
],
"nrfSetIdList": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
],
"forceRefresh": true
}'
Response:
{
"nfTypeList": [
"SMF",
"UDM"
],
"nrfSetIdList": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
],
"forceRefresh": true,
"message": "OnDemand Audit has been accepted for SMF,UDM"
}
Sample of an Error PUT API
Request:
curl -X 'PUT' \
'http://localhost:31411/ocscp/scpc-configuration/v1/nf-topology-audit' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nfTypeList": [
"SMF","UDMd"
],
"nrfSetIdList": [
"setnrfl1.nrfset.5gc.mnc012.mcc345"
],
"forceRefresh": true
}'
Response:
{
"title": "Bad Request",
"status": 400,
"detail": "UDMD NFType(s) not configured in NFTypes-NFServices (Resource name is nftypes-nfservices). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nf-topology-audit",
"cause": "INVALID_REQUEST_BODY"
}
Data Model
The following table describes data model for request or response:
Table 2-456 OnDemandAuditDetailsWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
| nfTypeList |
List<String> |
M | This parameter configures valid NFTypes on which
topology refresh is required.
Default value: NA Range: Valid nfTypes/* |
| nrfSetIdList |
List<String> |
O | This parameter configures NRF Set IDs on which
topology refresh is required. If not provided, all the configured
NRF Set IDs are audited.
Default value: Empty List Range: Provisioned NRF Set IDs in deployment |
| forceRefresh |
Boolean |
O | This parameter indicates whether to force NF profile
mismatch in the SCP-Audit microservice.
It has the following values: true: Enables force NF profile mismatch in the SCP-Audit microservice. SCP-Notification processes NF profiles even if it is already learnt by SCP. false: Performs usual audit process. NF profiles are processed by SCP-Notification only if there is a mismatch between the learnt NF profile and the NF profile fetched from NRF during audit. Default value: false Range: true/false |
Note:
You must provide at least one NFType/*. When * is provided, audit is initiated for all the NFs except NRF, where TSI is either NRF or NRF_AND_LOCAL.2.47 Configuring NF Profile
The resource URI has been updated to include topology source information.
The combination of topology and nf-instance-id determines a unique NF profile. The CNC Console configuration screen and its structured data fields have been removed, and only JSON-based GET and PUT operations are supported.
REST API for NRF or LOCAL learned profiles:
- GET:
ocscp/scpc-configuration/v1/nf-instancesandocscp/scpc-configuration/v1/nf-instances/nfInstanceIds - GET:
ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid} - PUT:
ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid} - DELETE:
ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid}
REST API for the NRF learned profile:
- GET:
ocscp/scpc-configuration/v1/nf-instances/NRF - DELETE:
ocscp/scpc-configuration/v1/nf-instances/NRF
REST API for the Static (LOCAL) configured profiles:
- GET:
ocscp/scpc-configuration/v1/nf-instances/LOCAL - PUT:
ocscp/scpc-configuration/v1/nf-instances/LOCAL - DELETE:
ocscp/scpc-configuration/v1/nf-instances/LOCAL
REST API for the NRF or LOCAL learned profiles:
- GET:
ocscp/scpc-configuration/v1/nf-instances - GET:
ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds
It retrieves NF profiles for all supported types and applies filters based on query parameters. Additional query parameters have been introduced to refine profile retrieval.
Supported query parameters are:
- nf-type
- service-names
- nf-instance-id
- limit
- max-payload-size
- topologySource
- isActive
- profileOwnership
It retrieves the "_links" object containing the URI of each NF in SCP, or an empty object if no NFs match the query parameters such as nf-type or service-names.
Existing value:
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"}New value:
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"
}Static or Local profiles can be configured in the following Topology Source Info mode:
- LOCAL
- NRF_AND_LOCAL
Profiles from NRF can be learned in following TSI modes:
- NRF
- NRF_AND_LOCAL
The retrieved NF profile includes metadata along with the NF profile data. PATCH support has been removed, and local modification of NRF-learned profiles is no longer supported.
Resources and Methods Overview
Retrieves NF profile for all supported NFs and applies filters based on query parameters:
GET : ocscp/scpc-configuration/v1/nf-instances Collapse source
Request:
curl -X 'GET' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b&max-payload-size=123' \
-H 'accept: application/json'
Response:
[
{
"nfInstanceId": "3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
"nfType": "NRF",
"nfStatus": "REGISTERED",
"plmnList": [
{
"mcc": "410",
"mnc": "215"
},
{
"mcc": "410",
"mnc": "216"
}
],
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"priority": 10,
"capacity": 10000,
"locality": "Loc2r2",
"nfServicePersistence": false,
"nfServices": [
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"serviceName": "nnrf-nfm",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
},
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"serviceName": "nnrf-disc",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
},
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b03",
"serviceName": "nnrf-oauth2",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
}
],
"nrfRegionOrSetId": "setnrfr1.nrfset.5gc.mnc012.mcc345",
"nfSetIdList": [
"setnrfr1.nrfset.5gc.mnc012.mcc345"
],
"olcHSupportInd": false,
"topologySource": "LOCAL",
"isActive": true,
"profileOwnerShip": "USER"
}
]Retrieves the URI list for all supported NFs based on topology source:
GET : ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds Collapse source
Request:
curl -X 'GET' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds?nf-type=NRF' \
-H 'accept: application/json'
Response:
{
"_links": [
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"
},
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-b14ef8e1bc7a"
},
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf3bbc-6e4a-2828-a507-a14ef8e1bc6a"
},
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf3bbc-6e4a-2828-a507-a14ef8e1bc6b"
},
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a"
},
{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b"
}
]
}Retrieves NF profile for all supported or specific NFs having topology as LOCAL:
GET : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'GET' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b' \
-H 'accept: application/json'
Response:
[
{
"nfInstanceId": "3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
"nfType": "NRF",
"nfStatus": "REGISTERED",
"plmnList": [
{
"mcc": "410",
"mnc": "215"
},
{
"mcc": "410",
"mnc": "216"
}
],
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"priority": 10,
"capacity": 10000,
"locality": "Loc2r2",
"nfServicePersistence": false,
"nfServices": [
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b01",
"serviceName": "nnrf-nfm",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
},
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"serviceName": "nnrf-disc",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
},
{
"serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b03",
"serviceName": "nnrf-oauth2",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
"interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
"ipEndPoints": [
{
"port": 8080
}
],
"priority": 1,
"capacity": 5000,
"load": 0
}
],
"nrfRegionOrSetId": "setnrfr1.nrfset.5gc.mnc012.mcc345",
"nfSetIdList": [
"setnrfr1.nrfset.5gc.mnc012.mcc345"
],
"olcHSupportInd": false,
"topologySource": "LOCAL",
"isActive": true,
"profileOwnerShip": "USER"
}
]Updates or creates the NF profile record for a given NF instance ID having topology as LOCAL:
PUT : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'PUT' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"nfInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a27",
"nfType": "NEF",
"nfStatus": "REGISTERED",
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"nfSetIdList": [
"setocnef.nefset.5gc.mnc012.mcc345"
],
"plmnList": [
{
"mcc": "310",
"mnc": "14"
}
],
"priority": 5,
"load": 20,
"capacity": 1000,
"locality": "Loc7",
"nfServices": [
{
"serviceName": "nnef-eventexposure",
"nfServiceStatus": "REGISTERED",
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a11",
"apiPrefix": "USWest",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"load": 20,
"ipEndPoints": [
{
"port": null
}
]
},
{
"serviceName": "3gpp-as-session-with-qos",
"nfServiceStatus": "REGISTERED",
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a22",
"apiPrefix": "USWest",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"load": 20,
"ipEndPoints": [
{
"port": 8080
}
]
},
{
"serviceName": "3gpp-traffic-influence",
"nfServiceStatus": "REGISTERED",
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a33",
"apiPrefix": "USWest",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"load": 20,
"ipEndPoints": [
{
"port": 8080
}
]
}
]
}'
Response:
201 CREATEDDeletes NF profile record for a given NF instance ID having topology as LOCAL:
DELETE : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'DELETE' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=8faf1bbc-6e4a-4454-a507-aef01a101a27' \
-H 'accept: application/json'
Response:
204 NO_CONTENTRetrieves NF profile for all supported or specific NFs having topology as NRF:
GET : ocscp/scpc-configuration/v1/nf-instances/NRF Collapse source
Request:
curl -X 'GET' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/NRF' \
-H 'accept: application/json'
Response:
[
{
"nfInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a27",
"nfType": "NEF",
"nfStatus": "REGISTERED",
"plmnList": [
{
"mcc": "310",
"mnc": "014"
}
],
"priority": 5,
"capacity": 1000,
"load": 20,
"locality": "Loc7",
"nfServicePersistence": false,
"nfServices": [
{
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a11",
"serviceName": "nnef-eventexposure",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"ipEndPoints": [
{
"port": 80
}
],
"apiPrefix": "USWest",
"load": 20
},
{
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a22",
"serviceName": "3gpp-as-session-with-qos",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"ipEndPoints": [
{
"port": 8080
}
],
"apiPrefix": "USWest",
"load": 20
},
{
"serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a33",
"serviceName": "3gpp-traffic-influence",
"versions": [
{
"apiVersionInUri": "v1",
"apiFullVersion": "1.0.0"
}
],
"scheme": "http",
"nfServiceStatus": "REGISTERED",
"fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
"ipEndPoints": [
{
"port": 8080
}
],
"apiPrefix": "USWest",
"load": 20
}
],
"nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"nfSetIdList": [
"setocnef.nefset.5gc.mnc012.mcc345"
],
"olcHSupportInd": false,
"topologySource": "NRF",
"isActive": true,
"profileOwnerShip": "NRF"
}
]Deletes NF profile record for a given NF instance ID having topology as NRF:
DELETE : ocscp/scpc-configuration/v1/nf-instances/NRF Collapse source
Request:
curl -X 'DELETE' \
'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/NRF?nf-instance-id=8faf1bbc-6e4a-4454-a507-aef01a101a27' \
-H 'accept: application/json'
Response:
204 NO_CONTENTResources
The following table describes the resource name to retrieve, add, update, or remove the NF profile configuration data:
Table 2-457 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Request Body and Query Parameters | Description |
|---|---|---|---|---|
| nf-instances (Store) | /ocscp/scpc-configuration/v1/nf-instances/ | GET | Query parameters:
|
Retrieves NF profile for all supported NFs and
applies filters based on the query parameters.
Response status code:
|
| /ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds | GET | Query parameters:
|
Retrieves URI list for all supported NFs based on
nfType and topology source.
Response status code:
|
|
| nf-instances (Document) | /ocscp/scpc-configuration/v1/nf-instances/LOCAL | GET | Query parameters:
|
Retrieves NF profile for all supported or specific
NFs having topology as LOCAL
Response status code: 200 OK, NFProfileWrapper |
| PUT | Body: NFProfile | Updates or creates NF profile record for a given NF
instance ID having topology as LOCAL
The PUT method is not supported when topology source is set to NRF. Response status code: 200 OK, 201 Created |
||
| DELETE | Query parameter:
|
Removes NF profile record for a given NF instance ID
having topology as LOCAL.
The DELETE method is not supported when topology source is set to NRF. Response status code: 204, NO content |
||
| nf-instances (Document) | /ocscp/scpc-configuration/v1/nf-instances/NRF | GET | Query parameter:
|
Retrieves NF profile for all supported or specific
NFs having topology as NRF.
Response status code: 200 OK, NFProfileWrapper |
| DELETE | Query parameter:
|
Removes NF profile record for a given NF instance ID having topology as NRF. The DELETE method is not supported when topology source is set to NRF or NRF_AND_LOCAL. Response status code: 204, NO content |
Table 2-458 Query Parameters
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|---|
nf-type |
NFType | M | 1 | This Information Element (IE) specifies the NF type of the NF service producer being queried. |
service-names |
array(ServiceName) | O | 1..N | If included, this IE contains an array of service names for which SCP is queried to provide NF profiles. The SCP returns NF profiles that have at least one NF service matching the service names in this list. If not included, SCP returns all NF service names registered in the NF profile. |
nf-instance-id |
NfInstanceId | O | 0..1 | Identifies the NF instance being queried. |
limit |
integer | O | 0..1 | Specifies the maximum number of NF profiles to be returned in the response. |
max-payload-size |
integer | O | 0..1 | Specifies the maximum payload size (before compression, if any) of the response, expressed in kilobytes. When present, SCP limits the number of NF profiles returned so that the response does not exceed the indicated maximum payload size. |
topologySource |
TopologySource | O | 1 | Specifies the topology source from which the NF is learned. Allowed values for topologySource are LOCAL and NRF. |
isActive |
Boolean | O | 1 | Indicates whether to retrieve eligible active NF profiles for routing. Allowed values for isActive are true and false. |
profileOwnership |
ProfileOwnership | O | 1 | Specifies the source responsible for managing the NF profile.
Allowed values for profileOwnership are SCP, NRF, and USER.
|
Table 2-459 SearchResult
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|---|
nfInstances |
array(NFProfileWrapper) | M |
1..N |
Contains an array of NF instance profiles along with associated metadata, matching the search criteria specified by the query parameters. An empty array indicates that no NF instances match the search criteria. |
Table 2-460 UriList
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|---|
_links |
map(LinksValueSchema) | O |
1..N |
Added into the JSON hypermedia object definition. |
2.48 Configuring NF Discovery Mode
nf-discovery-enhancement parameter is enabled.
If
nf-discovery-enhancement is disabled, NRF becomes the default
discovery source. If nf-discovery-enhancement is enabled but no
matching rule is found in the NF discovery mode REST API, NRF becomes the discovery
source in those scenarios.
The following matching keys can be configured in this REST API:
taregetNfTypesrequesterNfTypesserviceNamestargetPlmnListrequesterPlmnListapiRoothdrPresntgroupIdList
targetNfTypes is the only mandatory key to
configure in the rules. The above mentioned matching keys are compared with the NF
discovery headers for Model D indirect discovery communication or with the NF query
parameters for Model C indirect discovery communication.
The
NfDiscoverySource parameter is used to generate the discovery
response using the following options:
- NRF: Generates the discovery response by querying the NRF.
- SCP: Generates the discovery response locally based on the NF discovery rule configuration API.
- SCP_FOLLOWED_BY_NRF: Generates the discovery response
locally. If no matching rule is found and
ruleNotFoundis configured indiscoveryModeFallbackCriteria, it falls back to NRF. - NRF_FOLLOWED_BY_SCP: Generates the discovery response by
querying NRF. If discovery fails and the error codes are in the configured error
list (
discoveryModeFallbackCriteria), it falls back to SCP.
You can configure routeToNrf to explicitly
configure NRF to discover NF profiles for Model D indirect discovery communication
or Model C indirect discovery communication.
This REST API
provides a mechanism to enhance the NF discovery response from the NRF for both
Model D indirect discovery communication and Model C indirect discovery
communication by configuring
enhanceNfDiscoveryRspCfg.
Resources
The following table describes the resource name to retrieve, add, update, or remove the nfdiscovery-mode-cfg configuration data:
Table 2-461 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
|
nfdiscovery-mode-cfg |
/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg | GET | Retrieves all NF discovery mode configurations. |
| nfdiscovery-mode-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} | GET | Retrieves NF discovery mode configuration for a given ruleName. |
| nfdiscovery-mode-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} | PUT | Creates or updates the NF discovery mode
configuration for a given ruleName.
A maximum of 250 records can be configured. |
| nfdiscovery-mode-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} | DELETE |
Deletes NF discovery mode configuration for given ruleName. |
Resource Definition
GET
This resource fetches all the nfdiscovery-mode-cfg configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg
The following table describes the data model supported by the GET response body on this resource:
Table 2-462 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
nFDiscoveryModeConfigWrapper |
M | 1..N | 200 OK | Indicates nFDiscoveryModeConfig
configuration.
|
ProblemDetails |
M | 1 | 500 Internal Server Error | Indicates database access error. |
This resource fetches the nfdiscovery-mode-cfg configuration based on resourceName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-463 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nFDiscoveryModeConfig. It is a unique
string used to identify the record.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-464 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
nFDiscoveryModeConfigWrapper |
M | 1 | 200 OK | Indicates the nFDiscoveryModeConfig
configurations.
|
ProblemDetails |
M | 1 | 404 Not Found | Returns 404 error code with problem details if no record is present with specified ruleName. |
ProblemDetails |
M | 1 | 500 Internal Server Error | Indicates database access error. |
Sample of a Successful GET API
curl -X 'GET' \
'http://10.75.212.69:31111/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
-H 'accept: application/json'
{
"ruleName": "rule1",
"data": {
"apiRoothdrPresent": true,
"targetNfTypes": [
"UDM",
"PCF"
],
"requesterNfTypes": [
"SMF"
],
"serviceNames": [
"nudm-uecm"
],
"targetPlmnList": [
{
"mcc": "141",
"mnc": "744"
}
],
"requesterPlmnList": [
{
"mcc": "361",
"mnc": "839"
}
],
"nfDiscoverySource": "SCP",
"routeToNrf": {
"nfInstanceIdList": [
{
"nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"priority": 3,
"capacity": 65535
},
{
"nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"priority": 9,
"capacity": 65535
}
],
"nfSetIdList": [
{
"nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"priority": 1,
"capacity": null
}
],
"hostList": {
"fqdnList": [
{
"fqdn": "nrf2svc.scpsvc.svc.cluster.local",
"priority": 655,
"capacity": 6
}
],
"ipv4AddressList": [
{
"ipAddress": "12.87.76.90",
"priority": null,
"capacity": 65
}
],
"ipv6AddressList": null
}
},
"discoveryModeFallbackCriteria": [
"304",
"ruleNotFound"
],
"enhanceNfDiscoveryRspCfg": {
"enabled": false,
"includeAllNfsOfNfSet": false,
"addedNfPriorityCapacityInfo": [
{
"localities": [
"loc1"
],
"priority": 10,
"capacity": 1
},
{
"localities": [
"loc2"
],
"priority": 0,
"capacity": null
}
],
"allNfPriorityCapacityInfo": null
}
},
"createdTimestamp": "2025-04-24 08:05:38",
"updatedTimestamp": "2025-04-24 08:05:38"
}
Sample of an Error GET API
curl -X 'GET' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/noRule' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "NF Discovery mode configuration data not found for the given ruleName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/noRule",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures nfdiscovery-mode-cfg for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-465 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nFDiscoveryModeConfig. It is a unique
string used to identify the record.
|
The following table describes the data model supported by the PUT request body on this resource:
Table 2-466 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Code | Description |
|---|---|---|---|---|
nFDiscoveryModeConfigWrapper |
M | 1 | 200 OK | Indicates successful update or replacement of the
nFDiscoveryModeConfig configurations with the
specified ruleName.
|
nFDiscoveryModeConfigWrapper |
M | 1 | 201 Created | Indicates the successful update or replacement of the
nFDiscoveryModeConfig settings for the
specified ruleName.
|
ProblemDetails |
M | 1 | 400 Bad Request | Returns 400 error code with problem details if any validation fails in the request body. |
ProblemDetails |
M | 1 | 500 Internal Server Error | Indicates the database access error. |
Sample of a Successful PUT API
curl -X 'PUT' \
'http://10.75.212.69:31111/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"ruleName": "rule1",
"data": {
"apiRoothdrPresent": true,
"targetNfTypes": [
"UDM",
"PCF"
],
"requesterNfTypes": [
"SMF"
],
"serviceNames": [
"nudm-uecm"
],
"targetPlmnList": [
{
"mcc": "141",
"mnc": "744"
}
],
"requesterPlmnList": [
{
"mcc": "361",
"mnc": "839"
}
],
"nfDiscoverySource": "SCP",
"routeToNrf": {
"nfInstanceIdList": [
{
"priority": 3,
"nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"capacity": 65535
},
{
"priority": 9,
"nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"capacity": 65535
}
],
"nfSetIdList": [
{
"priority": 1,
"nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345"
}
],
"hostList": {
"fqdnList": [
{
"priority": 655,
"capacity": 6,
"fqdn": "nrf2svc.scpsvc.svc.cluster.local"
}
],
"ipv4AddressList": [
{
"capacity": 65,
"ipAddress": "12.87.76.90"
}
]
}
},
"discoveryModeFallbackCriteria": [
"304",
"ruleNotFound"
],
"enhanceNfDiscoveryRspCfg": {
"enabled": false,
"includeAllNfsOfNfSet": false,
"addedNfPriorityCapacityInfo": [
{
"priority": 10,
"localities": [
"loc1"
],
"capacity": 1
},
{
"priority": 0,
"localities": [
"loc2"
]
}
]
}
}
}'
Response:
{
"ruleName": "rule1",
"data": {
"apiRoothdrPresent": true,
"targetNfTypes": [
"UDM",
"PCF"
],
"requesterNfTypes": [
"SMF"
],
"serviceNames": [
"nudm-uecm"
],
"targetPlmnList": [
{
"mcc": "141",
"mnc": "744"
}
],
"requesterPlmnList": [
{
"mcc": "361",
"mnc": "839"
}
],
"nfDiscoverySource": "SCP",
"routeToNrf": {
"nfInstanceIdList": [
{
"nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"priority": 3,
"capacity": 65535
},
{
"nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
"priority": 9,
"capacity": 65535
}
],
"nfSetIdList": [
{
"nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
"priority": 1,
"capacity": null
}
],
"hostList": {
"fqdnList": [
{
"fqdn": "nrf2svc.scpsvc.svc.cluster.local",
"priority": 655,
"capacity": 6
}
],
"ipv4AddressList": [
{
"ipAddress": "12.87.76.90",
"priority": null,
"capacity": 65
}
],
"ipv6AddressList": null
}
},
"discoveryModeFallbackCriteria": [
"304",
"ruleNotFound"
],
"enhanceNfDiscoveryRspCfg": {
"enabled": false,
"includeAllNfsOfNfSet": false,
"addedNfPriorityCapacityInfo": [
{
"localities": [
"loc1"
],
"priority": 10,
"capacity": 1
},
{
"localities": [
"loc2"
],
"priority": 0,
"capacity": null
}
],
"allNfPriorityCapacityInfo": null
}
},
"createdTimestamp": "2025-04-24 08:05:38",
"updatedTimestamp": "2025-04-24 08:05:38"
}
Sample of an Error PUT API
curl -X 'PUT' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule2' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{"ruleName":"rule2"}'
{
"title": "Bad Request",
"status": 400,
"detail": "Field data must not be null or empty. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule2",
"cause": "OPTIONAL_IE_INCORRECT"
}
400 Error: Bad Request
DELETE
This resource removes the nfdiscovery-mode-cfg configuration based on resourceName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-467 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nFDiscoveryModeConfig. It is a unique
string used to identify the record.
|
The following table describes the data model supported by the DELETE response body on this resource:
Table 2-468 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
| NA | M | 1 | 204 No Content | Indicates the successful deletion of the
nFDiscoveryModeConfig record.
|
ProblemDetails |
M | 1 | 404 Not Found | Returns a 404 error code with problem details if no record exists for the specified ruleName. |
ProblemDetails |
M | 1 | 403 Forbidden | Returns a 403 error code with problem details if the user tries to delete the default record. |
ProblemDetails |
M | 1 | 500 Internal Server Error | Indicates the database access error. |
Sample of a Successful of DELETE API
curl -X 'DELETE' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
-H 'accept: */*'
Response: 204 No Content
Sample of an Error DELETE API
curl -X 'DELETE' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule101' \
-H 'accept: */*'
{
"title": "Not Found",
"status": 404,
"detail": "NF Discovery mode configuration data not found for the given ruleName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule101",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-469 NFDiscoveryModeConfigWrapper
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nFDiscoveryModeConfig. It is a unique
string used to identify the record.
Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
data |
Json (nFDiscoveryModeConfig) | M | Indicates a JSON structure that holds different NF discovery mode configurations. |
createdTimestamp |
String | Read Only | Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response. |
A default entry is created with the default key and the JSON structure. Deleting the defaultRule is not allowed, although it can be modified.
{
"ruleName": "defaultRule",
"data": {
"targetNfTypes": [
"*"
],
"nfDiscoveryMode": "NRF"
}
}
JSON Schema
Table 2-470 NFDiscoveryModeConfig
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
targetNfTypes |
List<String> | M | Indicates the list of any valid NfType
configured in Configuring NFTypes-NFServices.
For default rule, "*" is allowed for
These NF discovery criteria are matched with the query parameters in the NF discovery request from the consumer in Model C indirect communication. They are also matched with the discovery headers of the Model D delegated service request in Model D indirect communication. If any attribute is absence, it indicates that it is applicable for all. Either 3GPP-defined NFType as per TS29.510 or custom NFType. |
requesterNfTypes |
List<String> | O | |
apiRoothdrPresent |
Boolean | O | Manages the configuration of NF discovery
request.
If this parameter is set to true, the configuration applies only when the NF discovery request contains the 3gpp-Sbi-Target-Apiroot header. If this parameter is set to false, the configuration applies only when the NF discovery request does not contain the 3gpp-Sbi-Target-Apiroot header. If this parameter is not configured in a rule, the configuration applies to every NF discovery request. Allowed values: true or false |
serviceNames |
List<String> |
O | Indicates the list of any valid NF service-name
configured in Configuring NFTypes-NFServices.
Either 3GPP-defined serviceName as per
TS29.510 or user-defined custom service names pointing to a
|
targetPlmnList |
List<PlmnId> | O | Indicates the list of valid target PLMN
IDs.
Validate if all the PLMN IDS are in the correct format. mcc or mnc cannot be null. "mcc" must be three digits, and "mnc" must 2 or 3 digits. |
requesterPlmnList |
List<PlmnId> | O | Indicates the list of valid PLMN IDs.
Validate if all the PLMN IDS are in the correct format. mcc or mnc cannot be null. "mcc" must be three digits, and "mnc" must 2 or 3 digits. |
groupIdList |
List<String> |
O | Provides the identity of the groups of NFs of the target NF type to be discovered. |
nfDiscoverySource |
Enumeration (NfDiscoverySource) |
M | Defines the source of NF discovery for Model D
delegated discovery requests and Model C discovery requests to
obtain the discovery response.
Allowed values:
If |
routeToNrf |
Object (RouteToNrfConfig) | O | Indicates which NRF to use for NF discovery.
This
configuration is applicable in the following nfDiscoveryMode
values:
The If this attribute is not configured, the 3gpp-Sbi-Target-Apiroot header is used to discover NF profiles. If the 3gpp-Sbi-Target-Apiroot header is not present in the incoming request, NF discovery uses the local NRF. Local NRF information is fetched from the nrf-configuration API. If
any combination of If none of the NRFs configured
in The preference order to get NRF details is as
follows:
|
discoveryModeFallbackCriteria |
List<String> | C | Indicates the list of HTTP error codes and custom
error strings for which fallback applies.
It lists all allowed rerouting codes in the routing options. The following
custom error strings are added as part of this feature:
These NF discovery fallback conditions are used by
SCP-Worker when
5xx is not allowed to be configured along with any valid status code starting from 5. Allowed error codes: |
enhanceNfDiscoveryRspCfg |
Object (EnhanceNfDiscoveryRspCfg) | O | Defines the configuration to enhance the delegated
discovery response received from NRF. As part of this enhancement,
the following can occur:
|
Table 2-471 EnhanceNfDiscoveryRspCfg
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
enabled |
Boolean | M | Indicates whether an enhancement to the received delegated discovery response from NRF should be applied. |
includeAllNfsOfNfSet |
Boolean | M | Manages the addition of NFs to the NF discovery
responses.
If enabled, additional NFs are added to the NF discovery response based on the set ID of the NF profile received in the delegated discovery response. If disabled, no additional NFs are added to the NF discovery response, and routing is performed based on the received delegated discovery response. |
addedNfPriorityCapacityInfo |
List<NFLocalityInfo> | C | Overrides or assigns the priority and capacity of additionally added NFs based on the locality of the NFs received in the delegated discovery response. |
allNfPriorityCapacityInfo |
List<NFLocalityInfo> | C | Overrides or assigns the priority and capacity of all NFs based on the locality of the NFs received in the discovery response. |
Note:
- Either
addedNfPriorityCapacityInfoorallNfPriorityCapacityInfocan be configured at a time. - If
includeAllNfsOfNfSetis set to false, you can configure onlyallNfPriorityCapacityInfo.
Table 2-472 NFLocalityInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
priority |
Integer | C | Indicates any valid integer between 0 and 65,535. If
configured, the NF’s priority is updated to this value (if the
locality matches) during routing or during delegated discovery
response creation.
At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535. |
capacity |
Integer | C | Indicates any valid integer between 0 and 65,535. If
configured, the NF’s capacity is updated to this value (if the
locality matches) during routing or during delegated discovery
response creation.
At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535. |
localities |
List<String> | O | Indicates the list of localities.
Overlapping localities are not allowed. More than one empty locality list is not allowed. Note: If the locality parameter is empty, the priority or capacity update is applied to all profiles. |
Table 2-473 RouteToNrfConfig
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfInstanceIdList |
List<NfInstanceIdInfo> | C | Indicates the list of NfInstanceIdInfo objects.
These objects should contain the instance IDs of NRFs to which
discovery must be performed.
At least one of
The maximum size of
|
nfSetIdList |
List<NfSetIdInfo> | C | Indicates the list of NfSetIdInfo
objects. These objects should contain the set IDs of NRFs to which
discovery must be performed.
At least one of
|
hostList |
HostInfo | C | Indicates custom HostInfo object to hold the FQDN,
IPv4, or IPv6 of NFs, along with their priority and capacity
information. It should contain the host information of NRFs to which
discovery must be performed.
At least one of
|
Table 2-474 NfInstanceIdInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfInstanceId |
String | M | Indicates NF instance ID of NRF to which the
discovery request should be forwarded.
You must validate
|
priority |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s priority is updated to this value.
You must
validate |
capacity |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s capacity is updated to this value.
You must
validate |
Table 2-475 NfSetIdInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfSetId |
String | M | Indicates NF Set ID of NRF to which the discovery
request should be forwarded.
You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535. |
priority |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s priority is updated to this value.
You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535. |
capacity |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s capacity is updated to this value.
You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535. |
Table 2-476 HostInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
fqdnList |
List<FqdnInfo> | C | Indicates the list of FqdnInfo
objects.
At least one of |
ipv4AddressList |
List<IpAddressInfo> | C | Indicates the list of
IpAddressInfo objects.
At least one of
|
ipv6AddressList |
List<IpAddressInfo> | C | Indicates the list of IpAddressInfo
objects.
At least one of |
Table 2-477 FqdnInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
fqdn |
String | M | Indicates the FQDN of NRF to which the discovery
request should be forwarded.
You must validate
|
priority |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s priority is updated to this value.
You must
validate |
capacity |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s capacity is updated to this value.
You must
validate |
Table 2-478 IpAddressInfo
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ipAddress |
String | M | Indicates the IP address of NRF to which the
discovery request should be forwarded.
You must validate the IP
address format based on whether it is IPv4 or IPv6. Overlapping
IP addresses are not allowed within an
|
priority |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s priority is updated to this value.
You must
validate the IP address format based on whether it is IPv4 or
IPv6. Overlapping IP addresses are not allowed within an
|
capacity |
Integer | O | Indicates any valid integer between 0 and 65535. If
configured, the NF’s capacity is updated to this value.
You must
validate the IP address format based on whether it is IPv4 or
IPv6. Overlapping IP addresses are not allowed within an
|
The matching keys are compared with the NF discovery headers in the following sequence to determine the source of NF discovery:
- targetNfTypesList
- apiRoothdrPresnt
- requesterNfTypes
- serviceNames
- targetPlmnList
- requesterPlmnList
- groupIdList
2.49 Configuring Static NF Discovery
nfdiscovery-mode-cfg and the
nf-discovery-enhancement parameter is enabled.
- Multiple discovery parameters can be configured as static matching
criteria, but only
target-nf-typeandrequester-nf-typeare mandatory. - There is no default rule for this REST API.
- If any discovery parameter is not configured in a static rule, that
parameter is not considered when matching the rule even if it is present in the
discovery request (it is treated as a don’t care condition). The NF discovery
criteria is present in:
- query parameters of NF discovery request received from consumer NFs in Model C indirect communication.
- discovery headers of Model D delegated service request in Model D indirect communication.
- SCP creates the NF discovery response based on static NF discovery configuration and learned NF topology available at SCP and forwards the created NF discovery response to consumer NF for Model C indirect communication.
- For Model D indirect communication, SCP uses static NF discovery
configuration to obtain the list of producer NFs
(
nfInstanceIdList,nfSetIdList, andhostList) for routing. - This REST API supports configuration of additional query parameters
beyond the static parameters dynamically at runtime. To add a dynamic query
parameter from the CNC Console, do the following:
- On the CNC Console, click NF Discovery Enhancement and select the Discovery Query Param Binding Info option.
- In the Dynamic IE List section, add the required
query parameter for static discovery.
The added parameters can be used in Static NF Discovery REST API as a match criterion. This configuration can be done as defined in Provision of Dynamic Key Addition Through ie-binding-info.
- Managing query parameters such as Limit, max-payload-size, and
max-payload-size-ext:
- These query parameters cannot be used directly in the Static NF Discovery REST API and cannot be configured statically. This configuration is restricted.
- These parameters are applicable only for Model C indirect communication requests.
- In a Model C NF discovery request, if any of these parameters are included as query parameters, they are applied implicitly when generating the discovery response locally.
- These parameters are not applicable for Model D delegated discovery in the case of static discovery.
- The preferred-api-versions is a string formatted as {operator}+{API Version}. Eg: "=1.2.4.operator-ext" , ">1.2.4" , "^2.3.0".
- If preferred-api-versions is used as matching criteria in the Static NF Discovery REST API, during rule matching the value of this discovery header in the incoming SBI request is matched as an exact string against the configured rule.
- The value "=1.2.4" and "1.2.4" of preferred-api-version is considered for the same during rule match.
Resources
The following table describes the resource name to retrieve, add, or update the nfdiscovery-cfg configuration data:
Table 2-479 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| nfdiscovery-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-cfg | GET | Retrieves all static NF discovery rules from the database. |
| nfdiscovery-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} | GET | Retrieves static NF discovery rule from database for the given ruleName. |
| nfdiscovery-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} | PUT | Creates or updates static NF discovery rule for the
given ruleName.
A maximum of 1000 records are allowed to be configured. |
| nfdiscovery-cfg | /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} | DELETE |
Removes static NF discovery rule for given ruleName. |
Resource Definition
GET
This resource fetches all the nfdiscovery-cfg configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-cfg
The following table describes the data model supported by the GET response body on this resource:
Table 2-480 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
staticNfDiscoveryCfgWrapper |
M | 1..N | 200 OK | Indicates staticNfDiscCfg
configuration.
|
This resource fetches the nfdiscovery-cfg configuration based on ruleName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-481 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for staticNfDiscCfg. It is a unique string
used to identify the record.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-482 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
staticNfDiscCfgWrapper |
M | 1 | 200 OK | Indicates staticNfDiscCfg
configurations.
|
ProblemDetails |
M | 1 | 404 Not Found | Returns 404 error code with problem details if no
record exists for the specified ruleName.
|
Sample of a Successful GET API
curl -X 'GET' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2V3' \
-H 'accept: application/json'
{
"ruleName": "rule2V3",
"data": {
"target-nf-type": "PCF",
"requester-nf-type": "AMF",
"target-nf-instance-id": null,
"target-nf-fqdn": null,
"service-names": [
"npcf-am-policy-control",
"npcf-policyauthorization",
"npcf-bdtpolicycontrol"
],
"target-plmn-list": [
{
"mcc": "127",
"mnc": "115"
},
{
"mcc": "123",
"mnc": "789"
}
],
"requester-plmn-list": [
{
"mcc": "227",
"mnc": "215"
}
],
"snssais": null,
"requester-snssais": null,
"nsi-list": null,
"dnn-list": null,
"group-id-list": [
"group1-v2",
"g1-v2"
],
"supi-ranges": [
{
"start": "1500",
"end": "3000"
},
{
"start": "1234567890000",
"end": "1234567890050"
}
],
"gpsi-ranges": [
{
"start": "1234567890000",
"end": "1234567890050"
},
{
"start": "1130",
"end": "2000"
}
],
"routing-indicators": null,
"imsi-ranges": null,
"msisdn-ranges": null,
"supported-data-sets": null,
"notification-type-list": [
"N1_MESSAGES",
"LOCATION_NOTIFICATION"
],
"n1-msg-class": null,
"n2-info-class": null,
"access-type-list": null,
"external-group-identity": "extgroupid-group@host",
"internal-groupid-range-list": null,
"preferred-api-versions": null,
"preferred-locality-list": null,
"serving-scope": null,
"requester-nf-instance-id": null,
"requester-nf-instance-fqdn": null,
"tai-range-list": null,
"guami-list": null,
"ipv4-address-ranges": null,
"ipv6-prefix-ranges": null,
"pgw": null,
"serving-client-types": null,
"serving-rat-types": null,
"remote-plmn-list": null,
"nf-discovery-result": {
"nfInstanceIdList": null,
"nfSetIdList": null,
"nfGroupId": "12345678W",
"hostList": null,
"validityPeriod": "12h57s"
}
},
"createdTimestamp": "2025-11-03 08:53:59",
"updatedTimestamp": "2025-11-03 08:53:59"
}
Sample of an Error GET API
curl -X 'GET' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/noRule' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Static NF Discovery configuration data not found for the given ruleName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/noRule",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures nfdiscovery-cfg for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-483 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for staticNfDiscCfg. It is a unique string
used to identify the record.
|
The following table describes the data model supported by the PUT request body on this resource:
Table 2-484 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|
staticNfDiscCfgWrapper |
M | 1 | Adds or updates
staticNfDiscCfgWrapper.
|
The following table describes the data stricture supported by the PUT response body on this resource:
Table 2-485 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
staticNfDiscCfgWrapper |
M | 1 | 200 OK | Indicates successful update or replacement of
staticNfDiscCfg configurations with the given
ruleName.
|
staticNfDiscCfgWrapper |
M | 1 | 201 Created | Indicates successful creation of
staticNfDiscCfg configurations with
ruleName.
|
ProblemDetails |
M | 1 | 400 Bad Request | Returns 404 error code with problem details if no
record is present with specified ruleName.
|
Note:
To create distinct rules, see Criteria for Overlapping Rules.
Sample of a Successful PUT API
curl -X 'PUT' \
'http://10.75.224.47:31046/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule1111' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "rule1111",
"data": {
"target-nf-type": "PCF",
"requester-nf-type": "AMF",
"requester-nf-instance-id": "11111113-aaaa-aaaa-aaaa-111111111111",
"target-nf-set-id": "set1.pcfset.5gc.mnc012.mcc345",
"service-names": [
"npcf-smpolicycontrol","npcf-am-policy-control"
],
"target-plmn-list": [{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}],
"requester-plmn-list": [{"mcc":"227","mnc":"215"}],
"preferred-locality-list": [
"USEast","Loc1"
],
"nsi-list": [
"slice-1",
"slice-2"
],
"routing-indicators": [
"7665",
"1234"
],
"nf-discovery-result": {
"nfSetIdList": [{"nfsetId":"set1.pcfset.5gc.mnc012.mcc345"},{"nfsetId":"set2.pcfset.5gc.mnc012.mcc345"},{"nfsetId":"set3.pcfset.5gc.mnc012.mcc345"}],
"nfGroupId": "12345678W",
"validityPeriod": "12h57s"
}
}
}'
{
"ruleName": "rule1111",
"data": {
"target-nf-type": "PCF",
"requester-nf-type": "AMF",
"target-nf-instance-id": null,
"target-nf-fqdn": null,
"service-names": [
"npcf-smpolicycontrol",
"npcf-am-policy-control"
],
"target-plmn-list": [
{
"mcc": "127",
"mnc": "115"
},
{
"mcc": "123",
"mnc": "789"
}
],
"requester-plmn-list": [
{
"mcc": "227",
"mnc": "215"
}
],
"snssais": null,
"requester-snssais": null,
"nsi-list": [
"slice-1",
"slice-2"
],
"dnn-list": null,
"group-id-list": null,
"supi-ranges": null,
"gpsi-ranges": null,
"routing-indicators": [
"7665",
"1234"
],
"imsi-ranges": null,
"msisdn-ranges": null,
"supported-data-sets": null,
"notification-type-list": null,
"n1-msg-class": null,
"n2-info-class": null,
"access-type-list": null,
"external-group-identity": null,
"internal-groupid-range-list": null,
"preferred-api-versions": null,
"preferred-locality-list": [
"USEast",
"Loc1"
],
"serving-scope": null,
"requester-nf-instance-id": "11111113-aaaa-aaaa-aaaa-111111111111",
"requester-nf-instance-fqdn": null,
"tai-range-list": null,
"guami-list": null,
"ipv4-address-ranges": null,
"ipv6-prefix-ranges": null,
"pgw": null,
"serving-client-types": null,
"serving-rat-types": null,
"remote-plmn-list": null,
"nf-discovery-result": {
"nfInstanceIdList": null,
"nfSetIdList": [
{
"nfsetId": "set1.pcfset.5gc.mnc012.mcc345",
"priority": null,
"capacity": null
},
{
"nfsetId": "set2.pcfset.5gc.mnc012.mcc345",
"priority": null,
"capacity": null
},
{
"nfsetId": "set3.pcfset.5gc.mnc012.mcc345",
"priority": null,
"capacity": null
}
],
"nfGroupId": "12345678W",
"hostList": null,
"validityPeriod": "12h57s"
},
"target-nf-set-id": "set1.pcfset.5gc.mnc012.mcc345"
},
"createdTimestamp": "2025-11-06 06:32:50",
"updatedTimestamp": "2025-11-06 06:32:50"
}
Sample of an Error PUT API
curl -X 'PUT' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{"ruleName":"rule2","data":{"target-nf-type":"UDM","requester-nf-type":"SMF","service-names":["npcf-smpolicycontrol"],"nf-discovery-result":{"nfSetIdList":["set5.udmset.5gc.mnc015.mcc327"],"nfGroupId":"12345678W","validityPeriod":100}}}'
{
"title": "Bad Request",
"status": 400,
"detail": "One or more combinations of nfType and serviceName are not configured in the nftypes-nfservices resource API. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2",
"cause": "OPTIONAL_IE_INCORRECT"
}
400 Error: Bad Request
DELETE
This resource removes the nfdiscovery-cfg configuration based on ruleName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-486 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for staticNfDiscCfg. It is a unique string
to identify the record.
|
The following table describes the data stricture supported by the DELETE response body on this resource:
Table 2-487 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NA |
M | 1 | 204 No Content | Indicates successful removal of the
staticNfDiscCfg record.
|
ProblemDetails |
M | 1 | 404 Not Found | Returns 404 error code with problem details if no
record is present with specified ruleName.
|
Sample of a Successful of DELETE API
curl -X 'DELETE' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule1' \
-H 'accept: */*'
204 No Content
Sample of an Error DELETE API
curl -X 'DELETE' \
'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule101' \
-H 'accept: */*'
{
"title": "Not Found",
"status": 404,
"detail": "Static NF Discovery configuration data not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule101",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-488 StaticNfDiscoveryCfgWrapper
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for staticNfDiscCfg. It is a unique
string to identify the record.
Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
data |
Json (StaticNfDiscoveryData) | M | Indicates JSON structure to hold different static NF discovery request configurations. |
createdTimestamp |
String | Read Only | Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response. |
Json Schema
Table 2-489 StaticNfDiscoveryData
| Match Order | Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|---|
| 1 | target-nf-type |
String | M | Indicates any valid NF type as defined in Configuring NFTypes-NFServices. |
| 2 | requester-nf-type |
String | M | Contains the NF type of the requester NF that is invoking the
Nnrf_NFDiscovery service.
All NFTypes configured in Configuring NFTypes-NFServices can be used. |
| 3 | target-nf-instance-id |
String | O | Provides identity of the NF instance being
discovered. |
| 4 | target-nf-fqdn |
String | O | Indicates the FQDN of the target NF instance being discovered. |
| 5 | service-names |
List<String> | O | Indicates the list of any valid NF service-name configured in
Configuring NFTypes-NFServices pointing to configured
target-nf-type.
|
| 6 | target-plmn-list |
List<PlmnId> | O | Indicates the list of valid target PLMN IDs. These are validated
as per the following data
model: |
| 7 | requester-plmn-list |
List<PlmnId> | O | Indicates the list of valid requester PLMN IDs. These are
validated as per the following data
model: |
| 8 | snssais |
List<Snssai> | O | Contains the list of S-NSSAIs that are served by the NF (Service)
instances being
discovered. |
| 9 | requester-snssais |
List<Snssai> |
O | Contain the list of S-NSSAI of the requester
NF. |
| 10 | nsi-list |
List<String> | O | Contains the list of NSI IDs that are served by the services
being
discovered. |
| 11 | dnn-list |
List<String> | O | Contains the network identifier of DNN, and it may
additionally contain an operator identifier.
|
| 12 | group-id-list |
List<String> | O | Indicates the identity of the groups of the NFs of
the target NF type to be
discovered. |
| 13 | supi-ranges |
List<SupiRange> | O | Indicates the list of ranges of SUPIs whose profile
data is available.
Supports only start and end with condition start <= end and no overlapping SUPI ranges are allowed to be configured in a single rule. |
| 14 | gpsi-ranges |
List<IdentityRange> | O | Indicates the list of ranges of GPSI's whose profile
data is available.
Supports only start and end with condition start <= end and no overlapping identity ranges are allowed to be configured in a single rule. |
| 15 | routing-indicators |
List<String> | O | Indicates the list of routing indicator information
that allows network signaling to be routed using
SUCI. |
| 16 | imsi-ranges |
List<ImsiRange> | O | Indicates the list of IMSI ranges for which profile
data is available.
Supports start and end with condition start <= end and no overlapping IMSI ranges are allowed to configured in a single rule. Note: Either the start and end attributes, or the pattern attribute, must be present. |
| 17 | msisdn-ranges |
List<IdentityRange> | O | Indicates the list of MSISDN ranges for which profile
data is available.
Supports start and end with condition start <= end and no overlapping identity ranges are allowed to configured in a single rule. Note: Either the start and end attributes, or the pattern attribute, must be present. |
| 18 | supported-data-sets |
List<DataSetId> | O | Indicates the list of supported data
sets. |
| 19 | notification-type-list |
List<NotificationType> | O | Indicates the types of notifications used in the
default notification URIs in the NF Profile of an NF
instance. |
| 20 | n1-msg-class |
N1MessageClass | O | Contains the N1 message class of default
notification subscriptions that must be registered in the NF profile
or NF service of the NF instances being discovered.
|
| 21 | n2-info-class |
N2InformationClass | O | Contains the notification type of default
notification subscriptions that must be registered in the NF profile
or NF service of the NF instances being
discovered. |
| 22 | access-type-list |
List<AccessType> | O | Indicates whether access is through 3GPP or
non-3GPP. |
| 23 | external-group-identity |
String |
O | Contains the external group identifier of the
requester UE, used to search for an appropriate
NF. |
| 24 | internal-groupId-range-list |
List<InternalGroupIdRange> | O | Indicates the list of ranges of internal group
identifiers for which profile data is available.
Note: Either the start and end attributes, or the pattern attribute, must be present. |
| 25 | preferred-api-versions |
List<PreferredApiVersionsMap> | O | Indicates the preferred API version of the services
supported by the target NF instances. The key of the map is the
serviceName for which the preferred API version is provided. Each
element contains the API version indication for the service
identified by the key.
An API version indication is a string formatted as {operator}+{API Version}. The supported operators are: "=" ">" ">=" "<" "<=" "^" If no operator is provided in the API version indication, "=" operator is applied. Example of an API version indication: ">1.2.4" ,
"^2.3.0"Note: When matching preferred-api-version with the configured rules, an exact match is performed with the incoming request. |
| 26 | preferred-locality-list |
List<String> | O | Indicates preferred target NF's location. |
| 27 | serving-scope |
List<String> | O | Contains the list of areas that can be served by the
NF instances to be
discovered. |
| 28 | requester-nf-instance-id |
String | O | Contains the NF instance ID of the requester
NF. |
| 29 | requester-nf-instance-fqdn |
String | O | Contains the FQDN of the requester NF that invokes
the Nnrf_NFDiscovery
service. |
| 30 | tai-range-list |
List<TaiRange> | O | Indicates the range of Tracking Area
Identity.Note: Either the start and end attributes, or the pattern attribute, must be present. |
| 31 | guami-list |
List<Guami> | O | Indicates Guamis of the NF instances for which
status is requested to be
monitored. |
| 32 | ipv4-address-ranges |
List<Ipv4AddressRange> | O | Indicates the range of IPv4 address of the
UE. |
| 33 | ipv6-prefix-ranges |
List<Ipv6PrefixRange> | O | Indicates the range of IPv6
prefixes. |
| 34 | pgw |
String | O | Contains the PGW FQDN received by the AMF from the
MME, used to find the combined SMF or PGW.
|
| 35 | serving-client-types |
List<ExternalClientType> | O | Indicates that NFs dedicated to serving the specified
client type must be
discovered. |
| 36 | serving-rat-types |
List<RatType> | O | Contains the RAT type that the target NF must
support.
|
| 37 | remote-plmn-list |
List<Plmnid> | O | Contains the remote PLMN ID that must be reachable
through SCP.
|
| 38 | nf-discovery-result |
Json (StaticNfDiscoveryResult) | M | Contains information of producer NFs. |
Note:
- When configuring a rule, validations on the matching keys are applied in accordance with 3GPP specifications.
- The incoming discovery request includes discovery query parameters as defined in TS 29.510, but the configured rules can use different data types.
- Only
target-nf-typeandrequester-nf-typediscovery query parameters are mandatory. All other parameters are optional and are ignored during matching if they are not configured in the rule. For more information, see Rule Matching Criteria.
Table 2-490 PreferredApiVersionsMap
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
serviceName |
String | M | Indicates service name of the target producer NF. |
apiVersions |
List<String> | M | Indicates supported apiVersions of
the target producer NF.
|
Table 2-491 StaticNfDiscoveryResult
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfInstanceIdList |
List<NfInstanceIdInfo> | C | Indicates the list of
NfInstanceIdInfo objects. Each
NfInstanceIdInfo can include priority,
capacity, and NF instance ID. This means that routing to the NF
instance is based on the configured priority or capacity, rather
than the published priority or capacity.
At least one of
If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:
|
nfSetIdList |
List<NfSetIdInfo> | C | Indicates the list of NfSetIdInfo
objects. Each NfSetIdInfo can include priority,
capacity, and NF set ID. This means that routing to the NF instances
in this set is based on the configured priority or capacity, rather
than the published priority or capacity.
At least one of
If an NF
profile is included in nfInstanceIdList, nfSetIdList, and
hostList, the priority and capacity are applied in the following
order:
|
hostList |
HostInfo | C | Provides the list of following objects:
At least one of If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:
|
nfGroupId |
String | C | Indicates NF group ID.
At least one of
If an NF
profile is included in nfInstanceIdList, nfSetIdList, and
hostList, the priority and capacity are applied in the following
order:
|
validityPeriod |
String | M | Defines the validity of the discovery
response.
Indicates the validity of the discovery response. For Model C indirect communication, the SCP generates the discovery response locally and sets this value as the response validity. This parameter is not relevant for Model D discovery request. The value is in the pHqMrS format, where p, q, and r are integers, and H, M, and S or h, m, and s denote hours, minutes, and seconds, respectively. Range: 1 second to 168 hours. |
Note:
nfGroupId is not used when generating the NF discovery
response.
Table 2-492 NfInstanceIdInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfInstanceId |
String | M | Indicates the NF instance ID of the producer NF that
must be included in NF discovery.
You must validate
|
priority |
Integer | O | If configured, the NF instance priority is updated
to the configured value in the NF discovery response.
If priority is not configured, the published priority of the NF instance is used. You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed within the NfInstanceIdInfo object. Priority or capacity ranges from 0 to 65535. |
capacity |
Integer | O | The NF instance capacity is updated to the
configured value in the NF discovery response.
If capacity is not configured, the published capacity of the NF instance is used. You must validate |
Table 2-493 NfSetIdInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
nfSetId |
String | M | Includes all producer NF instances of the specified
NFSetId in the NF discovery response.
You
must validate |
priority |
Integer | O | Updates the priority of all producer NF instances in
the set to the configured value in the NF discovery response.
If priority is not configured, the published priority of the NF instance is used. You must validate
|
capacity |
Integer | O | Updates the capacity of all NF instances in the set
to the configured value in the NF discovery response.
If capacity is not configured, the published capacity of the NF instance is used. You must validate |
Table 2-494 HostInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
fqdnList |
FqdnInfo | C | Indicates the list of FqdnInfo
objects.
At least one of |
ipv4AddressList |
IpAddressInfo | C | Indicates the list of IpAddressInfo
objects.
At least one of |
ipv6AddressList |
IpAddressInfo | C | Indicates the list of IpAddressInfo
objects.
At least one of |
Table 2-495 FqdnInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
fqdn |
String | M | Indicates the FQDN of the NF instance.
You must
validate |
priority |
Integer | O | Indicates the priority of NF instances.
If configured, priority of NF instance is updated with configured value in NF discovery response. If priority is not configured, then published priority of NF instance is used. You must validate |
capacity |
Integer | O | Updates the capacity of NF instance with configured
value in NF discovery response.
If capacity is not configured, then published capacity of NF instance is used. You must
validate |
Table 2-496 IpAddressInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ipAddress |
String | M | Indicates valid IPv4 or IPv6 address of the producer
NFs.
You must validate |
priority |
Integer | O | Indicates the priority of NF instance.
If configured, priority of NF instance is updated with configured value in NF discovery response. If priority is not configured, then published priority of NF instance is used. You must validate |
capacity |
Integer | O | Updates the capacity of NF instance with configured
value in NF discovery response.
If capacity is not configured, then published capacity of NF Instance is used. You must
validate |
Provision of Dynamic Key Addition Through ie-binding-info
The existing discovery query parameter configured in ie-registry is as follows:
{
"name": "access-type",
"metaData": {
"dataType": "AccessType",
"description": "contain the access type required to be supported by target network function",
"validationRegex": "3gppDefinedValidation",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
}
}
To configure this parameter in the nfdiscovery-cfg resource, configure the record in ie-binding-info as follows:
[
{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{.........}
],
"dynamicIeList": [
{
"ieName": "access-type",
"cardinality": "LIST",
"ieAlias": "my-access-type"
}
]
},
}
]
In the nfdiscovery-cfg resource, you can create a rule, and the required validations are applied according to the ie-registry configuration:
{
"ruleName": "rule1",
"data": {
"target-nf-type": "UDM",
"requester-nf-type": "PCF",
"target-nf-instance-id": "8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
"target-nf-fqdn": "udm1svc.scpsvc.svc.cluster.local",
"service-names": [
"nudm-uecm"
],
"target-plmn-list": [
{
"mcc": "741",
"mnc": "25"
}
],
"requester-plmn-list": [
{
"mcc": "505",
"mnc": "469"
}
],
"snssais": [
{
"sd": "EBa634",
"sst": 123
},
{
"sd": "90F64c",
"sst": 156
}
],
"requester-snssais": [
{
"sd": "EBa638",
"sst": 123
},
{
"sd": "90F64d",
"sst": 239
}
],
"my-access-type": [
"NON_3GPP_ACCESS"
].
{.......}
],
"nf-discovery-result": {
"nfInstanceIdList": null,
"nfSetIdList": null,
"nfGroupId": "12345678W",
"hostList": null,
"validityPeriod": "12h57s"
}
}
}
Criteria for Overlapping Rules
Overlapping rules are not allowed. Two rules are considered overlapping if they satisfy both of the following conditions:
- The exact same matching keys are present in both rules.
- The value corresponding to a matching key can be of two types:
- String: The values for that key must be exactly the same in both rules.
- List: The intersection of the values for that key must be non-empty.
Matching Keys
All parameter combinations must be unique to define a new rule. This includes all statically defined discovery query parameters (from target-nf-types through remote-plmn-id), along with any dynamic discovery parameters, if applicable.
The discovery response is stored in nf-discovery-result corresponding to a set of matching keys.
Rule Matching Criteria
To match a rule, if an existing rule contains a key, the incoming discovery request must include that key with the same value. Any additional keys in the incoming discovery request that are not present in the existing rule are treated as optional and do not affect matching.
The following examples represent rule match with the received discovery request:
Configured rule:
{
"ruleName": "rule3V7",
"data": {
"target-nf-type": "PCF",
"requester-nf-type": "AMF",
"service-names": [
"npcf-am-policy-control",
"npcf-policyauthorization",
"npcf-bdtpolicycontrol"
],
"target-plmn-list": [
{
"mcc": "127",
"mnc": "115"
},
{
"mcc": "123",
"mnc": "789"
}
],
"internal-groupId-range-list": [
{
"start": "abcdef12-001-45-a1b2",
"end": "abcdef12-001-45-a1ff"
}
],
"preferred-locality-list": [
"USEast",
"Loc1"
],
"ipv4-address-ranges": [
{
"start": "10.0.0.1",
"end": "10.0.0.100"
},
{
"start": "20.5.0.1",
"end": "20.10.0.100"
},
{
"start": "10.70.0.1",
"end": "10.80.0.100"
}
],
"imsi-ranges": [
{
"start": "3501",
"end": "6001"
},
{
"start": "9001",
"end": "10301"
}
],
"nf-discovery-result": {
"nfGroupId": "12345678W",
"validityPeriod": "12h57s"
}
}
}
Incoming discovery rule1: It matches rule1 because the exact set of key value pairs defined in rule1 is present.
Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0 /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
Incoming discovery rule2: It does not match rule1 because target-plmn-list is not present in the incoming discovery request.
Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0 /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
Incoming discovery rule3: It matches rule1 because all key value pairs defined in rule1 are present in the incoming discovery request and ue-ipv4-prefix is optional and is therefore ignored.
Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0|3gpp-sbi-discovery-requester-nf-instance-id=8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1
Accept=application/json
Content-Type=application/json
Name=Something
3gpp-sbi-discovery-target-nf-type=PCF
3gpp-sbi-discovery-requester-nf-type=AMF
3gpp-Sbi-discovery-preferred-locality=Loc1
3gpp-sbi-discovery-requester-nf-instance-id=8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b
3gpp-sbi-discovery-target-nf-instance-id=1faf1bbc-6e4a-3994-a507-a14ef8e1bc01
3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]
3gpp-sbi-discovery-service-names=npcf-policyauthorization
3gpp-sbi-discovery-target-nf-fqdn:udm1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-requester-plmn-list=[{"mcc":"227","mnc":"215"}]
3gpp-sbi-discovery-snssais=[{"sd": "abcdef","sst": 124}]
3gpp-sbi-discovery-requester-snssais=[{"sd": "abcdef","sst": 124},{"sd": "ecdef","sst": 29}]
3gpp-sbi-discovery-nsi-list=slice-1,clice2
3gpp-sbi-discovery-dnn=AMF
3gpp-sbi-discovery-group-id-list=group1,group10
3gpp-sbi-discovery-supi=msisdn-1234567890001
3gpp-sbi-discovery-routing-indicator=1234
3gpp-sbi-discovery-imsi=12345
3gpp-sbi-discovery-msisdn=2000
3gpp-sbi-discovery-data-set=SUBSCRIPTION,POLICY
3gpp-sbi-discovery-notification-type=LOCATION_NOTIFICATION
3gpp-sbi-discovery-n1-msg-class=UPDP
3gpp-sbi-discovery-n2-info-class=SM
3gpp-sbi-discovery-access-type=3GPP_ACCESS,NON_3GPP_ACCESS
3gpp-sbi-discovery-external-group-identity=extgroupid-group@host
3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b2
3gpp-sbi-discovery-preferred-api-versions={"npcf-policyauthorization":">1.2.0"}
3gpp-sbi-discovery-preferred-locality=Loc1
3gpp-sbi-discovery-serving-scope=Loc2
3gpp-Sbi-discovery-requester-nf-instance-fqdn=amf1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-tai={"plmnId": {"mnc": "131","mcc": "421"},"tac":"aefd"}
3gpp-sbi-discovery-guami={"plmnId": {"mnc": "131","mcc": "421"},"amfId": "C9CF0d"}
3gpp-sbi-discovery-ue-ipv4-address=100.23.0.0
3gpp-sbi-discovery-ue-ipv6-prefix=240e:006a:0000:0000::/32
3gpp-sbi-discovery-pgw=udm1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-client-type=EMERGENCY_SERVICES
3gpp-sbi-discovery-rat-type=VIRTUAL
3gpp-sbi-discovery-remote-plmn-id={"mcc":"227","mnc":"215"}
/var/lib/jenkins/ocscp_tests/data/SMPolicy.json"2.50 Configuring NF Selection Mode
nf-selection-enhancement parameter is enabled.
This configuration is applicable for:
- Model C SBI requests that carry the 3gpp-target-api-root header, the Routing Binding header, or both.
- Model D SBI requests that carry the 3gpp-target-api-root header and Discovery headers.
This configuration is not applicable for Model D SBI requests that carry only Discovery headers.
You can configure rules using the following matching keys:
- targetNfTypeList (mandatory)
- serviceNamesList
- requesterNfTypeList
- targetPlmnList
- requesterPlmnList
Within a single rule, nfSelectionModeInfoList can be configured
to match the NF selection mode based on the presence or absence of incoming request
headers.
- CONSUMER_NF_SELECTION: This is the default NF selection mode. If no rules match an incoming SBI request, this mode is selected for the request. In this mode, SCP performs the functionalists from SCP 25.2.100, with no impact on routing.
- ENHANCED_CONSUMER_NF_SELECTION: This mode provides the
capabilities of the NF Selection enhancements. Using this mode, you can
override the consumer NF selection as follows:
- If the 3gpp-target-api-root header is present in the request, the first routing attempt might not be to the producer NF identified by that header. Instead, SCP first routes the request to another NF in the same NF set based on priority and capacity.
- You can configure priority and capacity based on locality information. In this case, SCP can use the configured priority or capacity instead of the published priority or capacity.
- You can achieve load balancing across all producer NFs in a set by configuring equal priority and capacity.
There is one default rule for this REST API.
Resources
The following table describes the resource name to retrieve, add, update, or remove the nfselection-mode-config configuration data:
Table 2-497 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| nfselection-mode-config | /ocscp/scpc-configuration/{version}/nfselection-mode-config | GET | Retrieves all records for NF selection mode configurations. |
| nfselection-mode-config | /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} | GET | Retrieves NF selection mode configuration for the given ruleName. |
| nfselection-mode-config | /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} | PUT | Creates or updates NF selection mode configuration for the given ruleName. |
| nfselection-mode-config | /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} | DELETE | Removes NF selection mode configuration for the given ruleName. |
Resource Definition
GET
This resource fetches all the nfselection-mode-config configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/nfselection-mode-config
The following table describes the data model supported by the GET response body on this resource:
Table 2-498 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfSelectionModeWrapper |
M | 1..N | 200 OK | Returns the records for all NF selection mode configurations. |
This resource fetches the nfselection-mode-config configuration based on ruleName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-499 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
databse for nfselection-mode-config. It is a unique
string to identify the record.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-500 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfSelectionModeWrapper |
M | 1 | 200 OK | Returns the nf-selection-mode configuration for the given ruleName. |
ProblemDetails |
M | 1 | 404 Not Found | Returns 404 error code with problem details if no record is present with specified ruleName. |
Sample of a Successful GET API
curl -X 'GET' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule1' \
-H 'accept: application/json'
{
"ruleName":"rule1",
"nfSelectionModeCfgData":{
"targetNfTypeList":[
"UDM"
],
"serviceNamesList":[
"nudm-uecm"
],
"nfselectionModeInfoList":[
{
"headerMatchList":[
{
"headerName":"3gpp-sbi-apiroot",
"headerStatus":"PRESENT"
},
{
"headerName":"name",
"headerStatus":"PRESENT"
},
{
"headerName":"name1",
"headerStatus":"ABSENT"
}
],
"nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo":{
"enabled": "true",
"includeAllNfs": "true",
"addedNfPriorityCapacityInfo":[
{
"priority":1,
"capacity":65535,
"localities":[
"Loc8"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc9"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc11"
]
}
]
}
},
{
"headerMatchList":[
{
"headerName":"3gpp-sbi-apiroot",
"headerStatus":"PRESENT"
},
{
"headerName":"name",
"headerStatus":"ABSENT"
},
{
"headerName":"name1",
"headerStatus":"ABSENT"
}
],
"nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo":{
"enabled": "true",
"includeAllNfs": "true",
"allNfPriorityCapacityInfo":[
{
"priority":1,
"capacity":65535,
"localities":[
"Loc8"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc9"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc11"
]
}
]
}
}
]
}
}
Sample of an Error GET API
curl -X 'GET' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": " NF Selection configuration data not found for the given ruleName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures nfselection-mode-config for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-501 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
databse for nfselection-mode-config. It is a unique
string to identify the record.
|
The following table describes the data model supported by the PUT request body on this resource:
Table 2-502 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|
NfSelectionModeWrapper |
M | 1 | Indicates the JSON structure to hold the
configuration for nfselection-mode-config for a
ruleName.
|
The following table describes data structures supported by the PUT response body on these resources:
Table 2-503 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NfSelectionModeWrapper |
M | 1 | 200 OK | Indicates successful update or replacement of
NfSelectionModeCfg with the given
ruleName.
|
NfSelectionModeWrapper |
M | 1 | 201 Created | Indicates successful creation of
NfSelectionModeCfg with ruleName.
|
ProblemDetails |
M | 1 | 400 Bad Request | Returns 400 error code with problem details if any validation fails in request body. |
Sample of a Successful PUT API
curl -X 'PUT' \
'http://10.75.212.108:30630/ocscp/scpc-configuration/v1/nfselection-mode-config/rule1' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d
'{
"ruleName":"rule1",
"nfSelectionModeCfgData":{
"targetNfTypeList":[
"UDM"
],
"serviceNamesList":[
"nudm-uecm"
],
"nfselectionModeInfoList":[
{
"headerMatchList":[
{
"headerName":"3gpp-sbi-apiroot",
"headerStatus":"PRESENT"
},
{
"headerName":"name",
"headerStatus":"PRESENT"
},
{
"headerName":"name1",
"headerStatus":"ABSENT"
}
],
"nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo":{
"enabled": "true",
"includeAllNfs": "true",
"addedNfPriorityCapacityInfo":[
{
"priority":1,
"capacity":65535,
"localities":[
"Loc8"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc9"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc11"
]
}
]
}
},
{
"headerMatchList":[
{
"headerName":"3gpp-sbi-apiroot",
"headerStatus":"PRESENT"
},
{
"headerName":"name",
"headerStatus":"ABSENT"
},
{
"headerName":"name1",
"headerStatus":"ABSENT"
}
],
"nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo":{
"enabled": "true",
"includeAllNfs": "true",
"allNfPriorityCapacityInfo":[
{
"priority":1,
"capacity":65535,
"localities":[
"Loc8"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc9"
]
},
{
"priority":2,
"capacity":65535,
"localities":[
"Loc11"
]
}
]
}
}
]
}
}'
{
"ruleName": "rule1",
"nfSelectionModeCfgData": {
"targetNfTypeList": [
"UDM"
],
"requesterNfTypeList": null,
"serviceNamesList": [
"nudm-uecm"
],
"targetPlmnList": null,
"requesterPlmnList": null,
"nfselectionModeInfoList": [
{
"headerMatchList": [
{
"headerName": "3gpp-sbi-apiroot",
"headerStatus": "PRESENT"
},
{
"headerName": "name",
"headerStatus": "PRESENT"
},
{
"headerName": "name1",
"headerStatus": "ABSENT"
}
],
"nfSelectionMode": "ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo": {
"enabled": true,
"includeAllNfs": true,
"addedNfPriorityCapacityInfo": [
{
"localities": [
"Loc8"
],
"priority": 1,
"capacity": 65535
},
{
"localities": [
"Loc9"
],
"priority": 2,
"capacity": 65535
},
{
"localities": [
"Loc11"
],
"priority": 2,
"capacity": 65535
}
],
"allNfPriorityCapacityInfo": null
}
},
{
"headerMatchList": [
{
"headerName": "3gpp-sbi-apiroot",
"headerStatus": "PRESENT"
},
{
"headerName": "name",
"headerStatus": "ABSENT"
},
{
"headerName": "name1",
"headerStatus": "ABSENT"
}
],
"nfSelectionMode": "ENHANCED_CONSUMER_NF_SELECTION",
"enhancedConsumerNFSelectioninfo": {
"enabled": true,
"includeAllNfs": true,
"addedNfPriorityCapacityInfo": null,
"allNfPriorityCapacityInfo": [
{
"localities": [
"Loc8"
],
"priority": 1,
"capacity": 65535
},
{
"localities": [
"Loc9"
],
"priority": 2,
"capacity": 65535
},
{
"localities": [
"Loc11"
],
"priority": 2,
"capacity": 65535
}
]
}
}
]
},
"createdTimestamp": "2025-09-17 09:54:49",
"updatedTimestamp": "2025-09-17 09:54:49"
}
Sample of an Error PUT API
curl -X 'PUT' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "rule4"
}'
{
"title": "Bad Request",
"status": 400,
"detail": "Field data must not be null or empty",
"instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4",
"cause": "INVALID_VALUE"
}
DELETE
This resource removes the nfselection-mode-config configuration based on resourceName.
Resource URI:
/ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}
The following table describes the path parameter supported by this resource:
Table 2-504 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nfselection-mode-config. It is a
unique string to identify the record.
|
The following table describes the data model supported by the DELETE response body on this resource:
Table 2-505 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NA |
M | 1 | 204 No Content | Indicates successful removal of the
NfSelectionModeCfg record.
|
ProblemDetails |
M | 1 | 403 Forbidden | Returns 403 error code with problem details if user try to remove the default record. |
ProblemDetails |
M | 1 | 404 Not Found | Returns 404 error code with problem details if no record is present with specified ruleName. |
Sample of a Successful of DELETE API
curl -X 'DELETE' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule3' \
-H 'accept: */*'
204 No Content
Sample of an Error DELETE API
curl -X 'DELETE' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
-H 'accept: */*'
"title": "Not Found",
"status": 404,
"detail": " NF Selection configuration data not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule2",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Default rule:
{
"ruleName": "defaultRule",
"nfSelectionModeCfgData": {
"targetNfTypeList": [
"*"
],
"nfselectionModeInfoList": [
{
"nfSelectionMode": "CONSUMER_NF_SELECTION"
}
]
}
}
Data Model
The following table describes data model for request or response:
Table 2-506 NfSelectionModeWrapper
| Parameter | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
ruleName |
String | M | Indicates the name of the rule defined in the
database for nfselection-mode-config. It is a
unique string used to identify the record.
Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
nfSelectionModeCfgData |
NfSelectionModeCfg | M | Indicates JSON to hold different NF selection mode configurations. |
createdTimestamp |
String | Read Only | Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response. |
updatedTimestamp |
String | Read Only | Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response. |
Table 2-507 NfSelectionModeCfg
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
targetNfTypeList |
List<String> | M | Indicates the list of any valid NfType as defined in
Configuring NFTypes-NFServices.
For default rule, "*" is allowed. |
requesterNfTypeList |
List<String> | O | Indicates the list of any valid NfType as defined in Configuring NFTypes-NFServices. |
serviceNamesList |
List<String> | O | Indicates the list of any valid NF service-name as defined in Configuring NFTypes-NFServices. |
targetPlmnList |
List<PlmnId> | O | Indicates the list of valid PLMN IDs. |
requesterPlmnList |
List<PlmnId> | O | |
nfSelectionModeInfoList |
List<NfSelectionModeInfo> |
M | Indicates the list of custom objects that define the NF selection mode configuration for initial and subsequent service requests. |
Table 2-508 NfSelectionModeInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
headerMatchList |
List<HeaderInfo> | O | Indicates a list of headerInfo
objects that are used to match the rule with the incoming request
headers.
Ensure that duplicate header names are not present in the list. |
nfSelectionMode |
NfSelectionMode | M | Indicates the NF selection mode for initial and
subsequent requests:
For any request, if no matching rule is present, then the CONSUMER_NF_SELECTION mode becomes the default. In the CONSUMER_NF_SELECTION mode, existing behavior of SCP take effect. |
enhancedConsumerNFSelectioninfo |
EnhancedConsumerNFSelectionInfo | C | This is an optional parameter and is applicable when
nfSelectionMode is
ENHANCED_CONSUMER_NF_SELECTION.
It is a JSON object, which holds the configuration to enhance the producer NF selection for routing. This parameter is mandatory when the NF selection mode is ENHANCED_CONSUMER_NF_SELECTION. |
Table 2-509 HeaderInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
headerName |
String | O | Indicates the header
name.
|
headerStatus |
Enumeration (HeaderValueMatchEnum) | O | An ENUM indicating whether the specified header
must be present or absent in the request for the configuration to
apply.
Allowed values:
|
Table 2-510 EnhancedConsumerNFSelectionInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
enabled |
Boolean | M | Indicates whether the enhancement to consumer NF selection should be applied. |
includeAllNfs |
Boolean | M | Indicates whether reverse lookup based on the set
IDs in the routing information received in the request is
applicable.
If the value is false, the system finds all producer NFs according to the current SCP behavior. If it is true, SCP finds producer NFs from both the local NF pool and the foreign NF pool. The final producer NF list may include both local and foreign producers. |
addedNFPriorityCapacityInfo |
List<NFPriorityCapacityInfo> | C | Indicates the list of custom JSON objects that hold
the priority and capacity configuration based on locality.
This
configuration applies only to added NFs:
In the following example, the
In
the following example, the
If
present, |
allNfPriorityCapacityInfo |
List<NFPriorityCapacityInfo> | C | Indicates a list of custom JSON objects that hold
the priority and capacity configuration based on locality.
This configuration is applicable for all NFs selected for routing. |
Table 2-511 NFPriorityCapacityInfo
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
capacity |
Integer | C | Indicates any valid integer between 0 and 65,535. If
configured, the NF’s capacity is updated to this value (if the
locality matches) during routing or during delegated discovery
response creation.
At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535. |
priority |
Integer | C | Indicates any valid integer between 0 and 65,535. If
configured, the NF’s priority is updated to this value (if the
locality matches) during routing or during delegated discovery
response creation.
At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535. |
localities |
List<String> | O | Indicates the list of localities.
Overlapping localities are not allowed. More than one empty locality list is not allowed. Note: If the locality parameter is empty, the priority or capacity update is applied to all profiles. |
The order of match keys is as follows:
- targetNfTypesList
- requesterNfTypesList
- serviceNamesList
- targetPlmnList
- requesterPlmnList
2.51 Configuring IE Registry
This section describes the Information Element (IE) Registry REST API parameters used to create, update, and delete discovery parameter records in the registry. Each record in the registry represents a discovery parameter. A discovery parameter can be defined by 3GPP specifications or can be a custom parameter.
Each record contains metadata about the discovery parameter, including the following:
- Type (3GPP or Custom)
- Description
- Validation regex
- Active status indicator
These records are referenced by other APIs, including the Nf-Discovery-Static API (nf-discovery-static-api).
The different types of discovery parameters are as follows:
- 3GPP-defined parameters
- Custom discovery query parameters
This REST API provides separate endpoints for managing the above mentioned parameters.
Resources
The following table describes the resource name to retrieve, add, or update ie-registry configuration data:
Table 2-512 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| 3GPP-Defined | |||
| ie-registry | /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined | GET | Retrieves the configuration of all 3GPP-defined discovery query parameters from the registry. |
| ie-registry | /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName} | GET | Retrieves the configuration of 3GPP-defined discovery query parameters from the registry for a given paramName. |
| ie-registry | /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName} | PUT | Updates the configuration of 3GPP-defined discovery query parameters in the registry for a given paramName. |
| Custom | |||
| ie-registry |
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom |
GET | Retrieves the configuration of all custom discovery query parameters from the registry. |
| ie-registry |
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName} |
GET | Retrieves the configuration of custom discovery query parameters from the registry for a given paramName. |
| ie-registry |
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName} |
PUT |
Creates or updates the configuration of custom discovery query parameters in the registry for a given paramName. |
| ie-registry |
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName} |
DELETE |
Removes the configuration of custom discovery query parameters from the registry for a given paramName. |
Resource Definition (3GPP-Defined)
GET
This resource fetches all the 3gpp-defined ie-registry configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined
The following table describes the data model supported by the GET response body on this resource:
Table 2-513 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M |
1..N |
200 OK |
Returns the configuration of all 3GPP-defined query parameters defined in the registry. |
This resource fetches the 3GPP-defined ie-registry configuration based on paramName.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-514 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
paramName |
String | M | Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-515 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M | 1 |
200 OK |
Returns the configuration for the given 3GPP-defined query parameter, identified by paramName, as defined in the registry. |
ProblemDetails |
M | 1 |
404 Not Found |
Returns a 404 error code with problem details if no record exists for the specified paramName. |
Sample Successful GET Response:
curl -X 'GET' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type'
curl -X 'GET' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type'
\ -H 'accept: application/json' { "name": "target-nf-type", "metaData": {
"dataType": "NFType", "description": "NF type of the target NF being
discovered.", "validationRegex": "3gppDefinedValidation", "isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM" }, "createdTimestamp": "2025-09-12
11:09:08", "updatedTimestamp": "2025-09-12 11:09:08"
}
Sample Error GET Response:
curl -X 'GET' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type1' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Parameter provided is not 3gpp defined. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type1",
"cause": "DATA_NOT_FOUND"
}
PUT
This resource configures 3GPP-defined ie-registry for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName}
The following table describes the path parameter supported by this resource:
Table 2-516 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
paramName |
String | M | Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record. |
The following table describes the data model supported by the PUT response body on this resource:
Table 2-517 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M | 1 | 200 OK | Indicates a successful update of the given 3GPP-defined query parameter identified by paramName. |
DiscQPIEWrapper |
M | 1 | 201 Created | Indicates the successful creation of the given 3GPP-defined query parameter identified by paramName. |
ProblemDetails |
M | 1 | 400 Bad Request | Returns a 400 error code with problem details if any validation fails in the request body. |
Sample Successful PUT Response:
curl -X 'PUT' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/requester-nf-type' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '
{
"name": "requester-nf-type",
"metaData": {
"dataType": "NFType",
"description": "NF type of the target NF being discovered12.",
"validationRegex": "3gppDefinedValidation",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
}
}'
{
"name": "requester-nf-type",
"metaData": {
"dataType": "NFType",
"description": "NF type of the target NF being discovered12.",
"validationRegex": "3gppDefinedValidation",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
},
"createdTimestamp": "2025-09-12 11:09:08",
"updatedTimestamp": "2025-09-19 08:50:00"
}
Sample Error PUT Response:
curl -X 'PUT' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"name": "target-nf-type1",
"metaData": {
"dataType": "NFType",
"description": "NF type of the target NF being discovered1.",
"validationRegex": "3gppDefinedValidation",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
},
"createdTimestamp": "2025-09-12 11:09:08",
"updatedTimestamp": "2025-09-12 11:09:08"
}'
{
"title": "Bad Request",
"status": 400,
"detail": "Please provide same name in Path Variable(paramName) and Request Body(name). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type",
"cause": "INVALID_REQUEST_BODY"
}
Resource Definition (Custom)
GET
This resource fetches all custom ie-registry configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom
The following table describes the data structure supported by the GET response body on this resource:
Table 2-518 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M |
1..N |
200 OK |
Returns the configuration of all custom query parameters defined in the registry. |
This resource fetches the 3GPP-defined ie-registry configuration based on paramName.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-519 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
paramName |
String | M | Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-520 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M | 1 |
200 OK |
Returns the configuration for the given custom query parameter, identified by paramName, as defined in the registry. |
ProblemDetails |
M | 1 |
404 Not Found |
Returns a 404 error code with problem details if no record exists for the specified paramName. |
Sample Successful GET Response:
{
"name": "access-type1",
"metaData": {
"dataType": "String",
"description": "contain the access type required to be supported by target network function1",
"validationRegex": null,
"isActive": true,
"ieType": "CUSTOM_DISCOVERY_QUERY_PARAM"
},
"createdTimestamp": "2025-09-24 08:42:09",
"updatedTimestamp": "2025-09-24 08:42:09"
}
Sample Error GET Response:
curl -X 'GET' \
'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/test' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Discovery Query Param configuration data not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/test",
"cause": "DATA_NOT_FOUND"
}
PUT
This resource configures custom ie-registry for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}
The following table describes the path parameter supported by this resource:
Table 2-521 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
paramName |
String | M | Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record. |
The following table describes the data model supported by the PUT response body on this resource:
Table 2-522 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
DiscQPIEWrapper |
M | 1 | 200 OK | Indicates a successful update of the given custom query parameter identified by paramName. |
DiscQPIEWrapper |
M | 1 | 201 Created | Indicates the successful creation of the given custom query parameter identified by paramName. |
ProblemDetails |
M | 1 | 400 Bad Request | Returns a 400 error code with problem details if any validation fails in the request body. |
Sample Successful PUT Response:
curl -X 'PUT' \
'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '
{
"name": "access-type1",
"metaData": {
"dataType": "String",
"description": "contain the access type required to be supported by target network function1",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
}
}'
{
"name": "access-type1",
"metaData": {
"dataType": "String",
"description": "contain the access type required to be supported by target network function1",
"validationRegex": null,
"isActive": true,
"ieType": "CUSTOM_DISCOVERY_QUERY_PARAM"
},
"createdTimestamp": "2025-09-24 08:46:45",
"updatedTimestamp": "2025-09-24 08:46:45"
}
Sample Error PUT Response:
curl -X 'PUT' \
'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"name": "access-type1",
"metaData": {
"dataType": "nftype",
"description": "contain the access type required to be supported by target network function1",
"isActive": true,
"ieType": "3GPP_DISCOVERY_QUERY_PARAM"
}
}'
{
"title": "Bad Request",
"status": 400,
"detail": "Allowed dataType for custom parameters are: String, Boolean, Integer. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1",
"cause": "INVALID_REQUEST_BODY"
}
DELETE
This resource removes the custom ie-registry configuration based on paramName.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}
The following table describes the path parameter supported by this resource:
Table 2-523 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
paramName |
String | M | Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record. |
The following table describes the data model supported by the DELETE response body on this resource:
Table 2-524 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NA |
M | 1 | 204 No Content | Indicates the successful deletion of the custom query parameter identified by paramName. |
ProblemDetails |
M | 1 | 404 Not Found | Returns a 404 error code with problem details if no record exists for the specified paramName. |
Sample of a Successful DELETE Response:
curl -X 'DELETE' \
'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
-H 'accept: application/json'
Response:
204
Sample of an Error DELETE Response:
curl -X 'DELETE' \
'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type2' \
-H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Discovery Query Param configuration data not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type2",
"cause": "DATA_NOT_FOUND"
}
Data Model
The following table describes data model for request or response:
Table 2-525 DiscQPIEWrapper
| Parameter Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
name |
String | M | Indicates the discovery query parameter name, defined in the registry, is a unique string that can be either 3GPP-defined or custom and is used to store the associated metadata. |
metaData |
IEInfo | M | Indicates a JSON structure that holds different metadata for the given query parameter. |
createdTimestamp |
String | Read Only | Indicates the timestamp of the created record. It is not required in the request, but it is included in the response. |
updatedTimestamp |
String | Read Only | Indicates the timestamp of the updated record, not required in request, but would be present in the response. |
Table 2-526 IEInfo
| Parameter Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
dataType |
String | M | Indicates the name of the data type of the query
parameter, as defined in 3GPP Spec 29510 or in custom query
parameters.
3GPP-defined: Defines the name of the data type defined in the 3GPP Spec 29510. Example:
Custom: Defines the name of the data type for custom query parameters added to the registry. For custom query parameters, the data type supports only three values:
|
description |
String | O | Describes the query parameters.
3gpp-defined: Allows to update only the description of these query parameters. Custom: If the parameter is used in other APIs, this updates only the description for custom query parameters. Otherwise, all parameter can be updated. |
validationRegex |
String | O | Indicates regular expression that defines the query
parameters during configuration. This API has the following
restrictions on this parameter.
3gpp-defined:
Custom:
|
isActive |
Boolean | M | Indicates whether the parameter is active. If it is
active, it can be referenced in other APIs. Otherwise, an error is
returned.
|
ieType |
Enum | O | The value of this parameter is 3GPP_DISCOVERY_QUERY_PARAM for 3GPP-defined query parameters and CUSTOM_DISCOVERY_QUERY_PARAM for custom query parameters. |
Note:
- You can update only the descriptions of the 3GPP-defined query parameters.
- You can update the description for custom query parameters only if the parameter is used in the ie-binding-info API.
Default Records
Table 2-527 Default Records
| Query Parameters | Data Type | Description | ValidationRegex | IsActive | ieType |
|---|---|---|---|---|---|
| target-nf-type | NFType | NF type of the target NF being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-nf-type | NFType | NF type of the consumer NF that is invoking the Nnrf_NFDiscovery service. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-nf-instance-id | NfInstanceId | The NF instance ID of the consumer NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| service-names | array(ServiceName) | An array of service names for which the NRF is queried to provide the list of NF profiles. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-nf-instance-fqdn | Fqdn | The FQDN of the consumer NF that is invoking the Nnrf_NFDiscovery service. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| target-plmn-list | array(PlmnId) | Contains the PLMN ID of the target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-plmn-list | array(PlmnId) | The PLMN ID of the consumr NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-snpn-list | array(PlmnIdNid) | Contains the SNPN ID of the consumer NF. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| target-nf-instance-id | NfInstanceId | Identity of the NF instance being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| target-nf-fqdn | Fqdn | FQDN of the target NF instance being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| hnrf-uri | Uri | Contains the API URI of the NFDiscovery Service of the NRF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| snssais | array(Snssai) | Contains the list of S-NSSAIs that are served by the NF (Service) instances being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-snssais | array(Snssai) | Contains the list of S-NSSAI of the consumer NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| plmn-specific-snssai-list | array(PlmnSnssai) | Contains the list of S-NSSAI that are served by the NF service being discovered for the corresponding PLMN. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-plmn-specific-snssai-list | array(PlmnSnssai) | Contains the list of S-NSSAI of the requester NF, for each of the PLMNs it supports. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| nsi-list | array(string) | Contains the list of NSI ID that are served by the services being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| dnn | Dnn | Contains the network identifier and may additionally contain the operator identifier. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| smf-serving-area | string | Contains the serving area of SMF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| tai | Tai | Tracking area identity. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| amf-region-id | AmfRegionId | AMY region identity. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| amf-set-id | AmfSetId | AMF set identity. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| guami | Guami | Used to search for an appropriate AMF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| supi | Supi | SUPI of the requester UE to search for an appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ue-ipv4-address | Ipv4Addr | IPv4 address of the UE for which a BSF needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ip-domain | string | IPv4 address domain of the UE for which a BSF needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ue-ipv6-prefix | Ipv6Prefix | IPv6 prefix of the UE for which a BSF needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| pgw-ind | boolean | Indicates whether a combined PGW-C/SMF needs to be discovered or standalone SMF needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| pgw | Fqdn | Contains the PGW FQDN received by the AMF to find the combined SMF/PGW. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| gpsi | Gpsi | Contains the GPSI of the requester UE to search for appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| external-group-identity | ExtGroupId | Contains the external group identifier to search for appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| pfd-data | PfdData | Contains the application identifiers or application function identifiers in PFD management. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| data-set | DataSetId | Includes the data set to be supported by the NF to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| routing-indicator | string | Contains information that allows to route network signaling with SUCI to an AUSF and UDM instance capable to serve the subscriber. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| group-id-list | array(NfGroupId) | Identity of the groups of the NFs of the target NF type to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| dnai-list | array(Dnai) | containS the data network access identifiers. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| upf-iwk-eps-ind | boolean | indicates whether UPF supporting networking with EPS needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| chf-supported-plmn | PlmnId | containS the PLMN ID that CHF supports. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| preferred-locality | string | Preferred target NF location (ex-geographic location, data center). | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| access-type | AccessType | Contains the access type required to be supported by target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| supported-features | SupportedFeatures | Features required to be supported by the target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| required-features | array(SupportedFeatures) | List of features required to be supported by the target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| complex-query | ComplexQuery | Used to override the default logical relationship of query parameters. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| limit | integer | Maximum number of NFProfiles to be returned in the response. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| max-payload-size | integer | Maximum payload size of the response, expressed in kilo octets. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| max-payload-size-ext | integer | Maximum payload size of the response, it is used when consumer support payload size bigger than 2 million octets. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| pdu-session-types | array(PduSessionType) | List of the PDU session types requested to be supported by target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| event-id-list | array(EventId) | Contains the list of events requested to be supported by the Nnwdaf AnalyticsInfo Service. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| nwdaf-event-list | array(NwdafEvent) | Contains the list of events requested to be supported by the Nnwdaf EventsSubscription Service. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| atsss-capability | AtsssCapability | Indicates the ATSSS capability of the target UPF needs to be supported. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| upf-ue-ip-addr-ind | boolean | Indicates whether a UPF supporting allocating UE IP addresses needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| client-type | ExternalClientType | Indicates that NFs serving the specified client type needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| lmf-id | LMFIdentification | Contain LMF identification to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| an-node-type | AnNodeType | Contains the AN Node type which is required to be supported by target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| rat-type | RatType | Contains the RAT type which is required to be supported by target NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| target-snpn | PlmnIdNid | Included when NF services of a specific SNPN needs to be discovered. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| af-ee-data | AfEventExposureData | Contain the application events, and optionally application function identifiers, application identifier of the AFs. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| w-agf-info | WAgfInfo | Contain the W-AGF identifiers of the N3 terminations which is received by the SMF to find the combined W-AGF/UPF. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| tngf-info | TngfInfo | Contains the TNGF identifiers of the N3 terminations which is received by the SMF to find the combined TNGF/UPF. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| twif-info | TwifInfo | Contains the TWIF identifiers of the N3 terminations which is received by the SMF to find the combined TWIF/UPF. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| target-nf-set-id | NfSetId | Contains the target NF Set ID. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| target-nf-service-set-id | NfServiceSetId | Contains the target NF Service Set ID. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| preferred-tai | Tai | The NRF shall prefer NF profiles that can serve the TAI. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| nef-id | NefId | Contains the NEF ID of the NEF to be discovered. | 3gppDefinedValidation | False | 3GPP_DISCOVERY_QUERY_PARAM |
| preferred-nf-instances | array(NfInstanceId) | Contains the list of preferred candidate NF Instance IDs. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| notification-type | NotificationType | Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| n1-msg-class | N1MessageClass | Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| n2-info-class | N2InformationClass | Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| serving-scope | array(string) | Contains the list of areas that can be served by the NF instances to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| imsi | string | contain the IMSI of the requester UE to search for an appropriate NF | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ims-private-identity | string | Contains the IMS private identity of the requester UE to search for an appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ims-public-identity | string | Contains the IMS public identity of the requester UE to search for an appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| msisdn | string | Contains the MSISDN of the requester UE to search for an appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| internal-group-identity | GroupId | Contains the internal group identifier of the UE to search for an appropriate NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| preferred-api-versions | map(string) | Contains the preferred API version of the services that are supported by the target NF instances. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| v2x-support-ind | boolean | Indicates whether a PCF supporting V2X policy/parameter provisioning needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| redundant-gtpu | boolean | Indicates whether a UPF supporting redundant GTP-U path needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| redundant-transport | boolean | Indicates whether a UPF supporting redundant transport path on the transport layer in the corresponding network slice needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ipups | boolean | Indicates whether a UPF which is configured for IPUPS is requested to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| scp-domain-list | array(string) | Contains the SCP domains target NF or SCP belongs to. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| address-domain | Fqdn | Contains the address domain that shall be reachable through the SCP. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ipv4-addr | Ipv4Addr | Contains the IPv4 address that shall be reachable through the SCP. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| ipv6-prefix | Ipv6Prefix | Contains the IPv6 prefix that shall be reachable through the SCP. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| served-nf-set-id | NfSetId | Contains the NF Set ID that shall be reachable through the SCP. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| remote-plmn-id | PlmnId | Contains the remote PLMN ID that shall be reachable through the SCP. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| data-forwarding | boolean | indicates the UPFs configured for data forwarding needs to be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| preferredimsi-full-plmn | boolean | Indicates that NRF shall prefer NF profiles that can serve the full PLMN. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| requester-features | SupportedFeatures | Included if at least one feature is supported by the requester NF. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| realm-id | string | Contains the realm id for which a UDSF shall be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| storage-id | string | Contains the storage id for the realm id indicated in the realm id IE for which a UDSF shall be discovered. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
| vsmf-support-ind | boolean | Indicates that target SMFs that supports V-SMF capability are preferred. | 3gppDefinedValidation | True | 3GPP_DISCOVERY_QUERY_PARAM |
2.52 Configuring IE Binding Info
The Information Element (IE) Binding Info REST API links parameters defined in the IE-Registry REST API to other APIs. It enables runtime binding of parameters from the IE-Registry to the Nf-discovery-static REST API.
The Nf-discovery-static REST API uses static parameters to configure rules for static NF discovery. These parameters are usually set during deployment and cannot be changed at runtime. However, this REST API allows users to configure parameters for the Nf-discovery-static REST API dynamically at runtime.
Resources
The following table describes the resource name to retrieve, add, or update the ie-binding-info configuration data:
Table 2-528 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
|
ie-binding-info |
/ocscp/scpc-configuration/{version}/ie-binding-info | GET | Retrieves ie-binding-info for all resources configured in the database. |
| ie-binding-info | /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} | GET | Retrieves ie-binding-info for the specified resourceName. |
| ie-binding-info | /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} | PUT | Creates or updates ie-binding-info for the specified resourceName. |
| ie-binding-info | /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} | DELETE | Removes ie-binding-info for the specified resourceName. |
Default Record
There is one default record for this API that is added during SCP deployment. This default record is for the NF static discovery API resource, that is, nfdiscovery-cfg. You are not allowed to remove this default record.
default-record for ie-binding-info api
[
{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "LIST",
"ieAlias": "dnn-list"
},
{
"ieName": "supi",
"cardinality": "LIST",
"ieAlias": "supi-ranges"
},
{
"ieName": "gpsi",
"cardinality": "LIST",
"ieAlias": "gpsi-ranges"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "supported-data-sets"
},
{
"ieName": "routing-indicator",
"cardinality": "LIST",
"ieAlias": "routing-indicators"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "LIST",
"ieAlias": "preferred-locality-list"
},
{
"ieName": "access-type",
"cardinality": "LIST",
"ieAlias": "access-type-list"
},
{
"ieName": "notification-type",
"cardinality": "LIST",
"ieAlias": "notification-type-list"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "LIST",
"ieAlias": "imsi-ranges"
},
{
"ieName": "msisdn",
"cardinality": "LIST",
"ieAlias": "msisdn-ranges"
},
{
"ieName": "internal-group-identity",
"cardinality": "LIST",
"ieAlias": "internal-groupid-range-list"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "LIST",
"ieAlias": "tai-range-list"
},
{
"ieName": "guami",
"cardinality": "LIST",
"ieAlias": "guami-list"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "LIST",
"ieAlias": "ipv4-address-ranges"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "LIST",
"ieAlias": "ipv6-prefix-ranges"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "LIST",
"ieAlias": "serving-rat-types"
},
{
"ieName": "client-type",
"cardinality": "LIST",
"ieAlias": "serving-client-types"
},
{
"ieName": "remote-plmn-id",
"cardinality": "LIST",
"ieAlias": "remote-plmn-list"
}
],
"dynamicIeList": null
},
"createdTimestamp": "2025-09-12 11:09:09",
"updatedTimestamp": "2025-09-12 11:09:09"
}
]
Resource Definition
GET
This resource fetches all the ie-binding-info configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-binding-info
The following table describes the data model supported by the GET response body on this resource:
Table 2-529 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
IEBindingInfoBaseWrapper |
M |
1..N |
200 OK |
Returns all ie-binding-info records in the database. |
This resource fetches the ie-binding-info configuration based on resourceName.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-530 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
resourceName |
String | M | Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-531 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
IEBindingInfoBaseWrapper |
M | 1 |
200 OK |
Returns all ie-binding-info records in the database. |
ProblemDetails |
M | 1 |
404 Not Found |
Returns a 404 error with problem details if no record exists for the specified resourceName. |
Sample Successful GET Response:
Request:curl -X 'GET' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json'
Response:
{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "SINGLE",
"ieAlias": "dnn"
},
{
"ieName": "supi",
"cardinality": "SINGLE",
"ieAlias": "supi"
},
{
"ieName": "gpsi",
"cardinality": "SINGLE",
"ieAlias": "gpsi"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "data-set"
},
{
"ieName": "routing-indicator",
"cardinality": "SINGLE",
"ieAlias": "routing-indicator"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "SINGLE",
"ieAlias": "preferred-locality"
},
{
"ieName": "access-type",
"cardinality": "SINGLE",
"ieAlias": "access-type"
},
{
"ieName": "notification-type",
"cardinality": "SINGLE",
"ieAlias": "notification-type"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "SINGLE",
"ieAlias": "imsi"
},
{
"ieName": "msisdn",
"cardinality": "SINGLE",
"ieAlias": "msisdn"
},
{
"ieName": "internal-group-identity",
"cardinality": "SINGLE",
"ieAlias": "internal-group-identity"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "SINGLE",
"ieAlias": "tai"
},
{
"ieName": "guami",
"cardinality": "SINGLE",
"ieAlias": "guami"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv4-address"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv6-prefix"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "SINGLE",
"ieAlias": "rat-type"
},
{
"ieName": "client-type",
"cardinality": "SINGLE",
"ieAlias": "client-type"
},
{
"ieName": "remote-plmn-id",
"cardinality": "SINGLE",
"ieAlias": "remote-plmn-id"
}
],
"dynamicIeList": null
},
"createdTimestamp": "2025-04-22 08:50:18",
"updatedTimestamp": "2025-04-23 07:03:04"
}
Sample Error GET Response:
Request:curl -X 'GET' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg1' \
-H 'accept: application/json'
Response:
{
"title": "Not Found",
"status": 404,
"detail": "IE Binding Info configuration not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg1",
"cause": "DATA_NOT_FOUND"
}
PUT
This resource configures ie-binding-info for a given data.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}
The following table describes the path parameter supported by this resource:
Table 2-532 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
resourceName |
String | M | Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record. |
The following table describes the data model supported by the PUT request body on this resource:
Table 2-533 Request Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Description |
|---|---|---|---|
IEBindingInfoBaseWrapper |
M | 1 | Adds or updates DiscoveryQueryParamSetWrapper. |
The following table describes the data model supported by the PUT response body on this resource:
Table 2-534 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Code | Description |
|---|---|---|---|---|
IEBindingInfoBaseWrapper |
M | 1 | 200 OK | Indicates a successful update or replacement of parameter information for the specified resourceName. |
IEBindingInfoBaseWrapper |
M | 1 | 201 Created | Indicates successful creation of parameter information for the specified resourceName. |
ProblemDetails |
M | 1 | 400 Bad Request | Returns a 400 error with problem details if validation of the request body fails. |
Sample Successful PUT Response:
curl -X 'PUT' \
'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-binding-info/test' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"resourceName": "test",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "LIST",
"ieAlias": "dnn-list"
},
{
"ieName": "supi",
"cardinality": "LIST",
"ieAlias": "supi-ranges"
},
{
"ieName": "gpsi",
"cardinality": "LIST",
"ieAlias": "gpsi-ranges"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "supported-data-sets"
},
{
"ieName": "routing-indicator",
"cardinality": "LIST",
"ieAlias": "routing-indicators"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "LIST",
"ieAlias": "preferred-locality-list"
},
{
"ieName": "access-type",
"cardinality": "LIST",
"ieAlias": "access-type-list"
},
{
"ieName": "notification-type",
"cardinality": "LIST",
"ieAlias": "notification-type-list"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "LIST",
"ieAlias": "imsi-ranges"
},
{
"ieName": "msisdn",
"cardinality": "LIST",
"ieAlias": "msisdn-ranges"
},
{
"ieName": "internal-group-identity",
"cardinality": "LIST",
"ieAlias": "internal-groupid-range-list"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "LIST",
"ieAlias": "tai-range-list"
},
{
"ieName": "guami",
"cardinality": "LIST",
"ieAlias": "guami-list"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "LIST",
"ieAlias": "ipv4-address-ranges"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "LIST",
"ieAlias": "ipv6-prefix-ranges"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "LIST",
"ieAlias": "serving-rat-types"
},
{
"ieName": "client-type",
"cardinality": "LIST",
"ieAlias": "serving-client-types"
}
],
"dynamicIeList": null
}}'
Response:
{
"resourceName": "test",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "LIST",
"ieAlias": "dnn-list"
},
{
"ieName": "supi",
"cardinality": "LIST",
"ieAlias": "supi-ranges"
},
{
"ieName": "gpsi",
"cardinality": "LIST",
"ieAlias": "gpsi-ranges"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "supported-data-sets"
},
{
"ieName": "routing-indicator",
"cardinality": "LIST",
"ieAlias": "routing-indicators"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "LIST",
"ieAlias": "preferred-locality-list"
},
{
"ieName": "access-type",
"cardinality": "LIST",
"ieAlias": "access-type-list"
},
{
"ieName": "notification-type",
"cardinality": "LIST",
"ieAlias": "notification-type-list"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "LIST",
"ieAlias": "imsi-ranges"
},
{
"ieName": "msisdn",
"cardinality": "LIST",
"ieAlias": "msisdn-ranges"
},
{
"ieName": "internal-group-identity",
"cardinality": "LIST",
"ieAlias": "internal-groupid-range-list"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "LIST",
"ieAlias": "tai-range-list"
},
{
"ieName": "guami",
"cardinality": "LIST",
"ieAlias": "guami-list"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "LIST",
"ieAlias": "ipv4-address-ranges"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "LIST",
"ieAlias": "ipv6-prefix-ranges"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "LIST",
"ieAlias": "serving-rat-types"
},
{
"ieName": "client-type",
"cardinality": "LIST",
"ieAlias": "serving-client-types"
}
],
"dynamicIeList": null
},
"createdTimestamp": "2025-09-24 15:34:26",
"updatedTimestamp": "2025-09-24 15:34:26"
}
Sample Error PUT Response:
Request:curl -X 'PUT' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "SINGLE",
"ieAlias": "dnn"
},
{
"ieName": "supi",
"cardinality": "SINGLE",
"ieAlias": "supi"
},
{
"ieName": "gpsi",
"cardinality": "SINGLE",
"ieAlias": "gpsi"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "data-set"
},
{
"ieName": "routing-indicator",
"cardinality": "SINGLE",
"ieAlias": "routing-indicator"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "SINGLE",
"ieAlias": "preferred-locality"
},
{
"ieName": "access-type",
"cardinality": "SINGLE",
"ieAlias": "access-type"
},
{
"ieName": "notification-type",
"cardinality": "SINGLE",
"ieAlias": "notification-type"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "SINGLE",
"ieAlias": "imsi"
},
{
"ieName": "msisdn",
"cardinality": "SINGLE",
"ieAlias": "msisdn"
},
{
"ieName": "internal-group-identity",
"cardinality": "SINGLE",
"ieAlias": "internal-group-identity"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "SINGLE",
"ieAlias": "tai"
},
{
"ieName": "guami",
"cardinality": "SINGLE",
"ieAlias": "guami"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv4-address"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv6-prefix"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "SINGLE",
"ieAlias": "rat-type"
},
{
"ieName": "client-type",
"cardinality": "SINGLE",
"ieAlias": "client-type"
},
{
"ieName": "remote-plmn-id",
"cardinality": "SINGLE",
"ieAlias": "remote-plmn-id"
}
],
"dynamicIeList": [{"name": "remote-plmn-id",
"cardinality": "SINGLE",
"keyNameInRule": "remote-plmn-id"
}]
}
}'
Response:
{
"title": "Bad Request",
"status": 400,
"detail": "Duplicate ieName 'remote-plmn-id' not allowed. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg",
"cause": "INVALID_REQUEST_BODY"
}
DELETE
This resource removes the ie-binding-info configuration based on resourceName.
Resource URI:
/ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}
The following table describes the path parameter supported by this resource:
Table 2-535 Path Parameter
| Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
resourceName |
String | M | Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record. |
The following table describes the data model supported by the DELETE response body on this resource:
Table 2-536 Response Body Parameters
| Data Type | Mandatory (M) or Optional (O) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
NA |
M | 1 | 204 No Content | Indicates successful deletion of the record. |
ProblemDetails |
M | 1 | 404 Not Found | Returns a 404 error with problem details if no record exists for the specified resourceName. |
ProblemDetails |
M | 1 | 403 Forbidden | Returns a 403 error with problem details if the user attempts to delete the default record. |
Sample of a Successful DELETE Response:
curl -X 'DELETE' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg2' \
-H 'accept: application/json'
{}
Sample of an Error DELETE Response:
curl -X 'DELETE' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json'
{
"title": "Forbidden",
"status": 403,
"detail": "User is not allowed to delete record for resourceName nfdiscovery-cfg. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg",
"cause": "DATA_CANT_DELETED"
}
Data Model
The following table describes data model for request or response:
Table 2-537 IEBindingInfoBaseWrapper
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
resourceName |
String | M | Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record. |
ieList |
IEList | M | Indicates a JSON structure that contains all information for all supported parameters for the specified resource. |
createdTimestamp |
String | Read Only | Indicates the timestamp of the created record. It is not required in the request, but is included in the response. |
updatedTimestamp |
String | Read Only | Indicates the timestamp of the updated record. It is not required in the request, but is included in the response. |
Table 2-538 IEList
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
staticIeList |
List<IEBindingMetaData> | M | Contains a list of predefined discovery query parameters defined for the specified resourceName. This list cannot be updated. It is read only. |
dynamicIeList |
List<IEBindingMetaData> | O | Contains a list of discovery query parameters that can be added at runtime and used for the specified resourceName. Parameters already present in staticParamList cannot be used again in dynamicParamList. |
Table 2-539 IEBindingMetaData
| Field Name | Data Type | Mandatory (M) or Optional (O) | Description |
|---|---|---|---|
ieName |
String | M | Indicates the name of the information element
defined in the IE-Registry REST API. This information element can be
either 3GPP-defined or custom. The value of this parameter must
match the paramName defined in the IE-Registry API.
This parameter can be added only if its name is not present in staticIeList or dynamicIeList. It can be added only if the record it references in the IE-Registry exists and its isActive flag is set to true. |
cardinality |
Enumeration | M | Indicates whether ieName can be configured as a
single object or a list of objects. It is the name of the
cardinality enumeration.
Allowed values:
|
ieAlias |
String | M | Indicates the other name for the same parameter,
which can be used as JSON key in response body.
For static parameters, ieName and ieAlias are exactly the same as staticIeList cannot be modified. For dynamic parameters, ieName and ieAlias can be the same or different depending on what you want to configure. ieAlias must contain only lowercase letters, digits, hyphen and underscore. For more information, see dynamic parameters SCP Static NF Discovery Rest API#Provisionofdynamickeyadditionthroughie-binding-info |
2.53 Configuring Next Hop Roaming Proxy Routing Config
Resources
The following table describes the resource name to retrieve, add, update, or remove the roaming-proxy-selection-info configuration data:
Table 2-540 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| routing-config/next-hop-roaming-proxy | /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy | GET | Retrieves all
nextHopRoamingProxyRoutingConfig
records.
|
| routing-config/next-hop-roaming-proxy | /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} | GET |
Retrieves
|
| routing-config/next-hop-roaming-proxy | /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} | PUT | Creates or updates the
nextHopRoamingProxyRoutingConfig
record.
|
| routing-config/next-hop-roaming-proxy | /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} | DELETE | Removes
nextHopRoamingProxyRoutingConfig
for the given configName. The default record
(defaultNextHopRoamingProxyConfig) cannot be
removed.
|
Resource Definition
GET
This resource fetches nextHopRoamingProxyRoutingConfigData configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy
The following table describes the data model supported by the GET response body on this resource:
Table 2-541 Response Body Parameters
| Parameter | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
nextHopRoamingProxyRoutingConfigData |
M | 1 | 200 OK | Indicates successful retrieval
of all
nextHopRoamingProxyRoutingConfigData
objects.
|
This resource fetches nextHopRoamingProxyRoutingConfigData configuration based on configName.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-542 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
configName |
String | M | Fetches configurations based on configName. |
The following table describes data structures supported by the GET response body on these resources:
Table 2-543 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
nextHopRoamingProxyRoutingConfigData |
M | 1 | 200 OK | Indicates successful retrieval
of
nextHopRoamingProxyRoutingConfigData
objects.
|
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
Sample of a Successful GET API
curl -X 'GET' 'http://10.75.213.61:32586/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config2' -H 'accept: application/json'
{
"configName": "config2",
"nextHopRoamingProxyRoutingConfigData": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
},
{
"statusCode": "timeout"
},
{
"statusCode": "connectionError"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
},
{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"createdTimestamp": "2025-08-13 09:09:46",
"updatedTimestamp": "2025-08-13 09:09:46"
}
Sample of an Error GET API
curl -X 'GET' 'http://10.75.213.61:32586/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config3' -H 'accept: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Next Hop Roaming Proxy Routing Configuration data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/c2342v",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures nextHopRoamingProxyRoutingConfig for the given data.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}
The following table describes the path parameter supported by this resource:
Table 2-544 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
configName |
String | M | Indicates the key for the PUT operation. |
The following table describes the data structure supported by the PUT request body on this resource:
Table 2-545 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|
nextHopRoamingProxyRoutingConfigData |
M | 1 | Adds or updates
nextHopRoamingProxyRoutingConfigData.
|
The following table describes the data structure supported by the PUT response body on this resource:
Table 2-546 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Code | Description |
|---|---|---|---|---|
nextHopRoamingProxyRoutingConfigData |
M | 1 | 200 OK | Indicates successful update of
nextHopRoamingProxyRouting
configurations.
|
nextHopRoamingProxyRoutingConfigData |
M | 1 | 201 Created | Indicates successful creation
of nextHopRoamingProxyRouting
configurations.
|
ProblemDetails |
M | 1 | 400 Bad Request | Indicates problem details, for
example, invalid exceptions provided inside
nextHopRoamingProxy. The name
value is invalid.
|
ProblemDetails |
M | 1 | 403 Forbidden | Updates the default record results. |
Sample of a Successful PUT API
curl -X 'PUT' \
'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
' {
"configName": "config1",
"nextHopRoamingProxyRoutingConfigData": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
},
{
"statusCode": "timeout"
},
{
"statusCode": "connectionError"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
},
{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"createdTimestamp": "2025-08-13 09:09:46",
"updatedTimestamp": "2025-08-13 09:09:46"
} '
Response:
{
"configName": "config1",
"nextHopRoamingProxyRoutingConfigData": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
},
{
"statusCode": "timeout"
},
{
"statusCode": "connectionError"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
},
{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"createdTimestamp": "2025-08-13 09:09:46",
"updatedTimestamp": "2025-08-13 09:09:46"
}
Sample of an Error PUT API
curl -X 'PUT' \
'http://10.75.224.103:30937/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/defaultNextHopRoamingProxyConfig' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
' {
{
"configName": "defaultNextHopRoamingProxyConfig",
"nextHopRoamingProxyRoutingConfigData": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
},
{
"statusCode": "timeout"
},
{
"statusCode": "connectionError"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_profile": "default_exception_error_no_host"
},
{
"name": "Destination_Exhausted",
"action": "Send_Answer",
"error_profile": "default_exception_error_destination_exhausted"
}
]
},
"createdTimestamp": "2025-08-13 09:09:46",
"updatedTimestamp": "2025-08-13 09:09:46"
}'
Response:
{
"title": "Forbidden",
"status": 403,
"detail": "The default configuration cannot be updated. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/defaultNextHopRoamingProxyConfig",
"cause": "MODIFICATION_NOT_ALLOWED"
}
403 Error: Forbidden
DELETE
This resource removes the
nextHopRoamingProxyRoutingConfigData
configuration based on the configName.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}
The following table describes the path parameter supported by this resource:
Table 2-547 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
configName |
String | M | Indicates the
configName to be removed.
|
The following table describes the data structure supported by the DELETE response body on this resource:
Table 2-548 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
n/a |
M | 1 | 204 No Content | Indicates deletion. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details stating that Next Hop Roaming Proxy Routing Config Data is not found for the corresponding configName. |
ProblemDetails |
M | 1 | 403 Forbidden | Removes the default record. |
Sample of a Successful of DELETE API
curl -X 'DELETE' \
'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
204 No Content
Sample of an Error DELETE API
curl -X 'DELETE' \
'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config5' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "Next Hop Roaming Proxy Routing Configuration data not found against given configName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config5",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-549 nextHopRoamingProxyRoutingConfigData
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description | Applicable to NF Service Level | Applicable to Pod level within NF |
|---|---|---|---|---|---|
totalTransactionLifetime |
String | M | Indicates that the time
consumed in processing all retries should not
exceed the total transaction time.
The total time allowed to forward a request, including initial and all subsequent routing attempts. Default value: NA Range: 100 - 240000 ms or 1 - 240 s |
Yes | Yes |
responseTimeout |
String | M | Indicates the allotted time
to respond to a message request. When the
response timeout expires, SCP performs alternate
rerouting to the available alternate NF or pod, or
sends an error message.
Default value: NA Range: 100 - 50000 ms or 1 - 50 s |
Yes | Yes |
service |
NextHopSeppServiceV2 | M | See Table 2-550 Default value: NA Range: NA |
- | - |
serviceEndpoint
|
NextHopSeppServiceEndpointV2 | M | See Table 2-551 Default value: NA Range: NA |
- | - |
reRouteConditionList |
Array(ProblemData) | O | Specifies the HTTP response
codes and error conditions under which the SCP
attempts alternate routing.
If the upstream server responds with any of the configured response codes, SCP attempts rerouting based on the configured alternate routing mechanism. If SCP encounters errors such as "connectionError" or "timeout" while routing to the upstream server, and these errors are configured, SCP attempts re-routing based on the configured alternate routing mechanism. If not provided, it is initialized with the values specified in the default column. You can add additional entries as applicable, in addition to the default ones. Default value: Range: |
Yes | Yes |
exceptions |
Array(ExceptionErrorResponse) | O |
Host not found Action Specifies the action taken when request routing is abandoned because the host FQDN cannot be resolved. Options are as follows:
Default value: Sends answer with configured http status code (Default 400). Range: This range is fixed, and you cannot add additional entries to this list. If a fewer than two entries are configured, the missing entries are automatically added as specified in the default value column. If more than two entries are provided, the request is rejected. |
Yes | No |
| Destination Exhausted Action | O | Specifies the action taken
when a request cannot be processed due to
exhaustion of internal resources.
Options are as follows:
Default value: Sends answer with configured http status code (Default 504). Range: This range is fixed, and you cannot add additional entries to this list. If a fewer than two entries are configured, the missing entries are automatically added as specified in the default value column. If more than two entries are provided, the request is rejected. |
Yes | No |
Table 2-550 NextHopSeppServiceV2
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description | Applicable to NF Service Level | Applicable to Pod level within NF |
|---|---|---|---|---|---|
maxRoutingAttempts |
int | M | Specifies the number of re-route attempts (retries) at the service
level.
This is the maximum number of times SCP is allowed to forward a request message. If the maximum routing attempts value is set to 1 for both service and pod level, the total transaction lifetime parameter value is not required, and if the maximum routing attempts value (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing. Default value: NA Range: 1 - 5 |
Yes | Yes |
Table 2-551 NextHopSeppServiceEndpointV2
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description | Applicable to NF Service Level | Applicable to Pod level within NF |
|---|---|---|---|---|---|
maxRoutingAttempts |
int | M | Specifies the number of re-route attempts (retries) at the NF or
pod level.
This is the maximum number of times SCP is allowed to forward a request message. If the maximum routing attempts value is set to 1 for both service and pod level, the total transaction lifetime parameter value is not required, and if the maximum routing attempts value (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing. Default value: NA Range: 1 - 5 |
Yes | Yes |
Table 2-552 ProblemData
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description | Applicable to NF Service Level | Applicable to Pod level within NF |
|---|---|---|---|---|---|
statusCode |
String | O | Specifies the HTTP response codes for which SCP attempts alternate
routing. If the upstream server responds with any of the configured response codes,
SCP attempts rerouting based on the configured alternate routing mechanism.
SCP attempts to reroute the request in cases such as response timeout, connection failure, refused stream, or receipt of a GOAWAY frame on any connection. These events are not configurable and are inherently supported by SCP. Default value: NA Range: Sample values |
Yes | Yes |
Table 2-553 ExceptionErrorResponse
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description | Applicable to NF Service Level | Applicable to Pod level within NF |
|---|---|---|---|---|---|
action |
string | M | Indicates the action to be taken when the above mentioned exception name is received. | Yes | Yes |
error_profile |
string | O | Indicates the name of error profile referred in ERROR_PROFILE_CONFIG. If provided, response is created based on the error profile parameters. | Yes | Yes |
2.54 Configuring Roaming Proxy Selection Info
Resources
The following table describes the resource name to retrieve, add, update, or remove the roaming-proxy-selection-info configuration data:
Table 2-554 Resources
| Resource Name | Resource URI | HTTP Method or Custom Operation | Description |
|---|---|---|---|
| roaming-proxy-selection-info | /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info | GET | Retrieves the roaming proxy selection configuration for the specified query parameter, if a matching record exists. |
| roaming-proxy-selection-info | /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} | GET | Retrieves the roaming proxy selection configuration for the specified configName, if a matching record exists. |
| roaming-proxy-selection-info | /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} | PUT | Creates a roaming proxy selection configuration
using the provided NF discovery parameters.
The nfType parameter cannot be updated for an existing configuration. The combination of nfType and targetPlmnList must be unique across all records. |
| roaming-proxy-selection-info | /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} | DELETE | Removes the roaming proxy selection configuration for the given configName. |
Resource Definition
GET
This resource fetches all the roaming-proxy-selection-info configuration.
Resource URI:
/ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info
The following table describes the data model supported by the GET response body on this resource:
Table 2-555 Response Body Parameters
| Parameter | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
roamingProxySelectionCfg |
M | 1..N | 200 OK | Indicates roaming-proxy-selection-info configuration. |
This resource fetches the roaming-proxy-selection-info configuration based on roamingProxyInfoCfg.
Resource URI:
/ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-routing-info/{roamingProxySelectionCfgName}
The following table describes the path parameter supported by the GET response body on this resource:
Table 2-556 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
roamingProxySelectionCfgName |
String | M | Fetches configuration for the corresponding
roamingProxySelectionCfgName.
|
The following table describes data structures supported by the GET response body on these resources:
Table 2-557 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
roamingProxySelectionCfg |
M | 1 | 200 OK | Indicates roaming-proxy-selection-info configuration. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
Sample of a Successful GET API
curl -X 'GET' 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config1' -H 'accept: application/json'
{
"configName": "config1",
"roamingProxySelectionCfgData": {
"isRoamingRequest": true,
"targetPlmnList": [
{
"mcc": "*",
"mnc": "*"
}
],
"nfType": "5GNIF",
"nfDiscoveryParams": {
"mandatory": {
"target-nf-type": {
"value": "5GNIF"
},
"requester-nf-type": {
"source": "SCP",
"value": "SCP"
},
"preferred-locality": {
"source": "SCP",
"value": "Loc1"
},
"remote-plmn-id": {
"source": "CONSUMER",
"value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
},
"requester-snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"target-nf-fqdn": {
"source": "CONSUMER",
"value": "udm1.default.svc.cluster.local"
},
"snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"target-nf-set-id": {
"source": "CONSUMER",
"value": "set1.udmset.5gc.mnc015.mcc327"
},
"limit": {
"value": "5"
},
"max-payload-size": {
"value": "124"
},
},
"optional": {
"target-nf-instance-id": {
"source": "CONSUMER",
"value": "550e8400-e29b-41d4-a716-446655440000"
},
"requester-plmn-list": {
"source": "CONSUMER",
"value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
}
}
}
}
}
Sample of an Error GET API
curl -X 'GET' 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName23' -H 'accept: application/json'
{
"title": "Not Found",
"status": "404",
"detail": "roaming-proxy-selection-info data not found against given roamingProxySelectionCfgName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config23",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
PUT
This resource configures the roaming-proxy-routing-info configuration data.
Resource URI:
/ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName}
The following table describes the path parameter supported by this resource:
Table 2-558 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
configName |
String | M | Indicates the key for PUT operation. |
The following table describes the data structure supported by the PUT request body on this resource:
Table 2-559 Request Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|
roamingProxySelectionCfg |
M | 1 | Indicates the roaming-proxy-selection-info configurations to be added or modified. |
The following table describes the data structure supported by the PUT response body on this resource:
Table 2-560 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Code | Description |
|---|---|---|---|---|
roamingProxySelectionCfgWrapper |
M | 1 | 201 Created | Indicates a new roaming-proxy-selection-info configuration creation. |
roamingProxySelectionCfgWrapper |
M | 1 | 200 OK | Updates an existing record. |
ProblemDetails |
M | 1 | 400 Bad Request | Indicates problem details. |
ProblemDetails |
M | 1 | 403 Forbidden | Updates those parameters that cannot be modified. |
Sample of a Successful PUT API
curl -X 'PUT' \ 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config1'\ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d
'{
"configName": "config1",
"roamingProxySelectionCfgData": {
"isRoamingRequest": true,
"targetPlmnList": [
{
"mcc": "*",
"mnc": "*"
}
],
"nfType": "5GNIF",
"nfDiscoveryParams": {
"mandatory": {
"target-nf-type": {
"value": "5GNIF"
},
"requester-nf-type": {
"source": "SCP",
"value": "SCP"
},
"preferred-locality": {
"source": "SCP",
"value": "Loc1"
},
"remote-plmn-id": {
"source": "CONSUMER",
"value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
},
"requester-snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"target-nf-fqdn": {
"source": "CONSUMER",
"value": "udm1.default.svc.cluster.local"
},
"snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"limit": {
"value": "5"
},
"max-payload-size": {
"value": "124"
}
},
"optional": {
"target-nf-set-id": {
"source": "CONSUMER",
"value": "set1.udmset.5gc.mnc015.mcc327"
},
"requester-plmn-list": {
"source": "CONSUMER",
"value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
}
}
}
}
}'
Response
{
"configName": "config1",
"roamingProxySelectionCfgData": {
"targetPlmnList": [
{
"mcc": "*",
"mnc": "*"
}
],
"nfType": "5GNIF",
"nfDiscoveryParams": {
"mandatory": {
"target-nf-type": {
"value": "5GNIF"
},
"requester-nf-type": {
"source": "SCP",
"value": "SCP"
},
"preferred-locality": {
"source": "SCP",
"value": "Loc1"
},
"remote-plmn-id": {
"source": "CONSUMER",
"value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
},
"requester-snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"target-nf-fqdn": {
"source": "CONSUMER",
"value": "udm1.default.svc.cluster.local"
},
"snssais": {
"source": "CONSUMER",
"value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
},
"limit": {
"value": "5"
},
"max-payload-size": {
"value": "124"
}
},
"optional": {
"target-nf-set-id": {
"source": "CONSUMER",
"value": "set1.udmset.5gc.mnc015.mcc327"
},
"requester-plmn-list": {
"source": "CONSUMER",
"value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
}
}
},
"isRoamingRequest": true
},
"createdTimestamp": "2026-03-18 06:08:18",
"updatedTimestamp": "2026-03-18 06:08:18"
}
Sample of an Error PUT API
curl -X 'PUT' \
'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName5'\
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
'{
"roamingProxySelectionCfgName": "config1",
"roamingProxySelectionCfgData" : {
"isRoamingRequest": true,
"target-plmn-list": [{"mcc": *,"mnc": *}],
"nfType": "5GNIF",
"nfDiscoveryParams":{
"mandatory":{
"target-nf-type": {
"value": "5GNIF"
},
"remote-plmn-id": {
"source": "CONSUMER",
"value": "{"mcc": *,"mnc": *}"
},
"routing-indicator": {
"source": "CONSUMER",
"value": "",
},
"preferred-locality": {
"source": "SCP",
"value": "Loc1"
},
"requester-nf-type": {
"source": "SCP",
"value": "SCP",
}
},
"optional":{
"requester-plmn-list": {
"source": "SCP/CONSUMER"
"value": "[{"mcc": *,"mnc": *},{"mcc": *,"mnc": *}]"
}
}
}
}'
Response:
{
"title": "Bad Request",
"status": 400,
"detail": "roamingProxySelectionCfgName in request Body does not match with roamingProxySelectionCfgName provided in API. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName4",
"cause": "INVALID_KEY_COMBINATION"
}
DELETE
This resource removes the roaming-proxy-selection-info configuration based on configName.
Resource URI:
/ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-proxy-selection-info/{configName}
The following table describes the path parameter supported by this resource:
Table 2-561 Path Parameter
| Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Description |
|---|---|---|---|
roamingProxySelectionCfgName |
String | M | Removes configurations based on configName. |
The following table describes the data structure supported by the DELETE response body on this resource:
Table 2-562 Response Body Parameters
| Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Response Codes | Description |
|---|---|---|---|---|
None |
- | 1 | 204 No Content | Returns only a response code in a successful scenario. |
ProblemDetails |
M | 1 | 404 Not Found | Indicates problem details. |
Sample of a Successful of DELETE API
curl -X 'DELETE' \
'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName5' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
204 OK
Sample of an Error DELETE API
curl -X 'DELETE' \
'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName7' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'
{
"title": "Not Found",
"status": 404,
"detail": "roaming-proxy-selection-info data not found against given roamingProxySelectionCfgName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/proxy-support-info/roaming-proxy-routing-info/CfgName7",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found
Data Model
The following table describes data model for request or response:
Table 2-563 RoamingProxySelectionCfg
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|---|
configName |
String | M | 1 | This is a unique key to identify records.
Length: 256 Allowed character combinations should be alpha-numeric, hyphen, and underscore. |
isRoamingRequest |
Boolean(true/false) | O | 1 | This is a roaming request. |
target-plmn-list |
array(PlmnId) | O | 1..N | This is target networks' PLMN IDs. |
nfType |
NFType | M | 1 | This is custom roaming proxy or proxy NF type (the role must be CUSTOM_5G_ROAMING_PROXY) |
mandatory |
NfDiscoveryParams | M | 1 | These mandatory custom roaming proxy discovery parameters are used by SCP to construct discovery queries for static discovery of the custom roaming proxy. If SCP is unable to extract values for the configured mandatory parameters, it returns an error to the consumer NF. |
optional |
NfDiscoveryParams | O | 1 | These optional custom roaming proxy discovery parameters are used by SCP when constructing discovery queries for static discovery of the custom roaming proxy. If SCP is unable to extract values for any configured optional parameters, it proceeds with the discovery process without including those parameters. |
Table 2-564 NfDiscoveryParams
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Cardinality | Description |
|---|---|---|---|---|
source |
String | C | 1 | Indicates the source to retrieve the value of the discovery parameter. |
value |
String | C | 1 | Indicates a fallback value that can be used if the parameter value cannot be extracted on the basis of source. |
Table 2-565 List of Supported Discovery Parameters
| Parameter Name | Data Type | Mandatory (M), Optional (O), or Conditional (C) | Default Spurce | Description |
|---|---|---|---|---|
target-nf-type |
NFType | M | NA | Indicates the NF type of the target NF to be
discovered. The "source" is not applicable. target-nf-type can only
have "value" configured. "value" must be equal to
RoamingProxySelectionCfg NfType
Default value: 5GNIF |
requester-nf-type |
NFType | M | SCP | Indicates the NF type of the requester NF that
performs discovery. "source" can be SCP or CONSUMER. "value" must
be a valid NF type configured in the nfTypes-nfServices REST
API.
Default value: SCP |
preferred-locality |
String | O | SCP | Indicates the preferred target NF location. "source"
can be SCP or CONSUMER. "value" can be a locality string.
Default value: SCP |
requester-plmn-list |
array(PlmnId) | O | - | Indicates a list of PLMN IDs of the requester NF.
"source" can be SCP or CONSUMER. "value" must be a valid list of
PlmnId json string.
Default value: NA |
requester-snssais |
array(Snssai) | O | - | Indicates a list of S-NSSAIs of the requester NF.
"source" can be SCP or CONSUMER. "value" must be a valid list of
Snssai json string.
Default value: NA |
remote-plmn-id |
PlmnId | O | CONSUMER | Indicates the PLMN ID that is reachable through
target NF. "source" can only be CONSUMER. "source" SCP is not
applicable. "value" must be a valid PlmnId json string.
Default value: NA |
target-nf-instance-id |
NfInstanceId | O | CONSUMER | Indicates the NF instance of target NF. "source"
can only be CONSUMER. "source" SCP is not applicable. "value" must
be a valid NF instance ID.
Default value: |
target-nf-fqdn |
Fqdn | O | CONSUMER | Indicates the FQDN of target NF. "source" can only
be CONSUMER. "source" SCP is not applicable. "value" must be a valid
FQDN.
Default value: NA |
target-nf-set-id |
NfSetId | O | CONSUMER | Indicates the NF set ID of target NF. "source" can
only be CONSUMER. "source" SCP is not applicable. "value" must be a
valid NF Set ID.
Default value: NA |
snssais |
array(Snssai) | O | CONSUMER | Discovers the target NF belonging to Slices List.
"source" can only be CONSUMER. "source" SCP is not applicable.
"value" must be a valid Snssai json string.
Default value: NA |
limit |
Integer | O | - | Indicates the maximum number of NFProfiles to be
returned in the response. "source" is not applicable. "value" must
be a valid integer in the range.
Default value: min:1, max:12 |
max-payload-size |
Integer | O | - | Indicates the maximum payload size (before
compression if any) of the response, expressed in kilooctets.
"source" is not applicable. "value" must be a valid integer in the
range. The minimum and maximum values can be configured through
Helm.
Default value: min:124, max:2000 |
max-payload-size-ext |
Integer | O | - | Indicates the maximum payload size (before
compression if any) of the response, expressed in kilooctets.
"source" is not applicable. "value" must be a valid integer in the
range. The minimum and maximum values can be configured through
Helm.
Default value: min:124, max:2000 |