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 | featureSpecificConfig : { "remoteScpOneEnabled": "false",
"remoteScpTwoEnabled": "false" } |
This parameter enables or disables the Global Egress
Rate Limiting feature.
Type: Boolean
|
modeld_routing | featureSpecificConfig:{ "caching": "true",
"enforceReqSpecificSvcDiscovery": "true" } |
This parameter enables or disables the Model D
Indirect 5G SBI Communication feature.
|
mediation | NA | Not applicable for mediation.
Keep this field blank. |
interplmn_routing | NA | Not applicable for inter-plmn routing.
Keep this field blank. |
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 in
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.
errorProfileName : This
parameter indicates the error profile configuration for the
health query response in the exception conditions.
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.
|
olcHSupportInd |
|
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 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.
nextHopScpOciEnabled :
If this parameter is set to true, the OCI feature is enabled for
SCP scope OCI.
Note: When ociConfigRule is configured for nextHopScpOciRuleName, set relayPeerOci to false and ociEnforcement to true. nextHopSeppOciEnabled : If this parameter
is set to true, OCI enforcement is enabled for SEPP scope
OCI.
Note: When ociConfigRule is configured for nextHopSeppOciRuleName, set relayPeerOci to false and ociEnforcement to true.
|
ignore_unknown_nfservice | NA | The featureSpecificConfig field in
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.
|
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:
|
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://10.75.226.108:32551/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json"
[
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
}
}
]
Successful response 2
$ curl -X GET "http://10.75.226.108:32551/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://10.75.226.108:32551/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://10.75.212.104:32287/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"
}
}
}
}
Failure case 1
$ curl -X GET "http://10.75.226.108:32551/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://10.75.212.104:32287/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 PUT "http://10.75.226.108:32551/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"featureName\":\"interplmn_routing\", \"enabled\":\"false\",\"featureSpecificConfig\":\"{}\"}}"
{
"featureName": "interplmn_routing",
"enabled": false,
"featureSpecificConfig": {
}
}
200 OK
Successful response 2:
curl -X PUT "http://10.75.212.104:32287/ocscp/scpc-configuration/v1/scp-features/egress_host_preference" -H "accept: */*" -H "Content-Type: application/json" -d "{\"featureName\":\"egress_host_preference\",\"enabled\":false,\"featureSpecificConfig\":{\"fqdnResolution\":{\"fqdn\":\"nfProfile\",\"interPlmnFqdn\":\"dns\"},\"hostPreference\":{\"request\":{\"apiRootHdrPresent\":\"passThrough\",\"scpGeneratedNrfMsg\":\"ip\",\"apiRootHdrNotPresent\":\"ip\"},\"response\":{\"headers\":\"followRequest\"}}}}"
{
"featureName": "egress_host_preference",
"enabled": false,
"featureSpecificConfig": {
"fqdnResolution": {
"fqdn": "nfProfile",
"interPlmnFqdn": "dns"
},
"hostPreference": {
"request": {
"apiRootHdrPresent": "passThrough",
"scpGeneratedNrfMsg": "ip",
"apiRootHdrNotPresent": "ip"
},
"response": {
"headers": "followRequest"
}
}
}
}
200 OK
Failure case:
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://10.75.226.108:32551/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"featureName\":\"interplmn_routing\", \"enabled\":\"false\",\"featureSpecificConfig\":\"{}\"}}"
Response Body:
{
"title": "Bad Request",
"status": "400",
"detail": "Missing mandatory configuration. Atleast one local PLMN (SCP Profile) and one remote PLMN (SeppConfig) should be configured for enabling this feature.",
"instance": "/ocscp/scpc-configuration/v1/scp-features",
"cause": "MANDATORY_IE_INCORRECT"
}
2.2 Configuring Routing Options
Parameters for Configuring Routing Options
The following table describes the parameters for configuring routing options.
Table 2-8 Parameters for Routing Options
Parameter Name | Mandatory (M) or Optional(O) | Description | Default Values | Value Range | Applicable to NF Service Level | Applicable to Pod Level within NF | Applicable for R15 Mode | Applicable for R16 Mode |
---|---|---|---|---|---|---|---|---|
odEnabled | M | Enables or disables the Outlier Detection feature. | false | true, false | Yes | Yes | Yes | Yes |
odRuleName | M | Indicates the name of the rule holding the configuration of outlier detection. The outlier detection feature works based on configuration under this rule. | defaultRule | NA | Yes | Yes | Yes | Yes |
ociEnabled | M | Enables and disables the Overload Control Information feature. | false | true, false | Yes | Yes | Yes | Yes |
ociRuleName | M | Indicates the name of the rule holding the configuration of Overload Control Information. The Overload Control Information feature works based on the configuration under this rule. | defaultOciConfigRule | NA | Yes | Yes | Yes | Yes |
responseTimeout | M | Indicates the allotted time to respond to a message
request.
When the response timeout expires, SCP initiates alternate routing to the available alternate NF or pod. Note:Even though SCP supports configuring the response timeout up to 50 seconds, users should exercise caution when setting high response timeout values. If a larger number of requests take longer to get responses, it will negatively impact the overall performance of the worker. Therefore, users should configure higher response timeout values for example, more than 50 seconds only for services that truly need it. SCP supports only 200 requests per second with a response delay of more than 50 seconds. |
1000 ms | 100-50000 ms
The supported values can be in 's' or 'ms'. Where, 's' is seconds and 'ms' is milliseconds. |
Yes | Yes | Yes | Yes |
totalTransactionLifetime | M |
Indicates the total time allowed to forward a request, including the initial and all subsequent routing attempts. Note: The totalTransactionLifetime value should be greater than the value obtained by multiplying responseTimeout by the total maximum number of attempts(pod level + service level). |
6 seconds | 100 - 240000 ms | Yes | Yes | Yes | Yes |
Max Routing Attempts | M |
Indicates the maximum number of forward routing attempts at a service level.
The default routing attempt is 1. |
1 for Pod Level. 3 for Service Level | 1-5 | Yes | Yes | Yes | Yes |
reRouteConditionList | M |
|
"reRouteConditionList":[ { "statusCode": "5xx" }, { "statusCode": "429" }, { "statusCode": "307" }, { "statusCode": "308" }] | 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 | Yes | Yes |
actions | M |
Supported actions:
|
Forward | NA | Yes | NA | Yes | Yes |
loadBalancingAlgorithm | M | Priority Only: Use priority as the first level criteria. Use capacity as second level criteria. | Priority_only | NA | Yes | Yes | Yes | Yes |
defaultPriority | M |
|
1 | 0-65535 | Yes | No | Yes | Yes |
defaultCapacity | M |
|
65535 | 0-65535 | Yes | No | Yes | Yes |
reverseProxySupport | M |
Enables reverse proxy support for a service. In reverse proxy mode, all the requests have the authority as SCP. SCP forwards those requests to respective Producers after making required authority changes in the requests (both initial and subsequent). Currently, reverse proxy mode is supported only for some interfaces. If the parameter is set to false, then transparent proxy mode is enabled. If the |
false | true, false | Yes | No | Yes | No |
exceptionErrorResponses | M |
Resource Exhausted Action:
|
Send Answer with configured http status code (Default 504). | Send_Answer | Yes | No | Yes | Yes |
exceptionErrorResponses | M |
No Producer Response Action
|
Send Answer with configured http status code (Default 504). | Send_Answer | Yes | No | Yes | Yes |
exceptionErrorResponses | M |
Connection Failure Action:
|
Send Answer with configured http status code (Default 504). | Send_Answer | Yes | No | Yes | Yes |
exceptionErrorResponses | M |
Host not found Action:
|
Send Answer with configured http status code (Default 400). | Send_Answer | Yes | No | Yes | Yes |
deploymentModel | M |
Indicates deployment model of the NF or NF service.
|
SITE_WIDE | NA | Yes | Yes | Yes | No |
assignPreferredLocality | M | 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. | false | true, false | Yes | NA | Yes | No |
overridePreferredLocality | M | 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 | false | true, false | Yes | NA | Yes | No |
forwardRevisedPreferredLocality | M | Controls the forwarding of assigned or overridden values of 3gpp-Sbi-Discovery-preferred-locality headers to the next hop SCP. | false | true, false | Yes | NA | Yes | No |
initialServiceRequest | M | Considers reroutePolicy for the initial service request. | NA | NA | Yes | NA | Yes | Yes |
subsequentServiceRequest | M | Considers reroutePolicy for subsequent service requests.
Note: This parameter is not applicable for notification message |
NA | NA | NA | NA | Yes | No |
service | M | Name of the NF service. | SCP level config | NA | Yes | Yes | Yes | Yes |
nextHopSCP.service.maxRoutingAttempts | M |
Indicates the maximum number of reroute attempt (retries) at service level.
The default routing attempt is 1. |
2 attempts | 1-5 | Yes | Yes | No | Yes |
nextHopSCP.serviceEndpoint.maxRoutingAttempts | M |
Indicates the maximum number of reroute attempts (retries) at NF or pod level.
The default routing attempt is 1. |
1 attempt | 1-5 | Yes | Yes | No | Yes |
nextHopSCP.responseTimeout | 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. | 4 seconds | 100-50000 ms | Yes | Yes | No | Yes |
nextHopSCP.totalTransactionLifetime | M |
Indicates the total time allowed to forward a request to Next Hop SCP. Note:
|
7 seconds | 100 - 240,000 ms | Yes | Yes | No | Yes |
nextHopSCP.exceptions | M | Host not found Action
|
Send Answer with configured http status code (Default 400). | - | Yes | - | No | Yes |
nextHopSCP.loadBasedCongestionControlEnabled | M |
Enables and disables Load Based Congestion Control for nextHopSCP. |
true | true, false | Yes | No | No | Yes |
nextHopSCP.nfServiceLoadBasedCongestionControlCfg | M | Name of the rule holding the configuration of congestion control for nextHopSCP. Based on the configuration under this rule, congestion control works. | defaultRuleForNextHopScp
|
No | Yes | |||
nextHopSEPP.totalTransactionLifetime | M |
|
7 seconds | 100 - 240000 | Yes | Yes | No | Yes |
nextHopSEPP.responseTimeout | 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. | 4 seconds | 100-50000 ms | Yes | Yes | No | Yes |
nextHopSEPP.service.maxRoutingAttempts | M |
|
2 | 1 to 5 | Yes | Yes | No | Yes |
nextHopSEPP.serviceEndpoint.maxRoutingAttempts | M |
|
1 | 1 to 5 | Yes | Yes | No | Yes |
nextHopSEPP.reRouteConditionList | M |
|
"reRouteConditionList":[ { "statusCode": "5xx" }, { "statusCode": "429" }, { "statusCode": "307" }, { "statusCode": "308" }] | 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 | No | Yes |
nextHopSEPP.exceptions | M | Host not found Action
|
Send Answer with configured http status code (Default 400). | - | Yes | No | No | Yes |
nextHopSEPP.loadBasedCongestionControlEnabled | M | Enables and disables Load Based Congestion Control for nextHopSEPP. | true | true, false | Yes | No | No | Yes |
nextHopSEPP.nfServiceLoadBasedCongestionControlCfg | M | Name of the rule holding the configuration of congestion control for nexthopSEPP. Based on the configuration under this rule, congestion control will work. | defaultRuleForNextHopSepp
|
- | Yes | - | No | Yes |
alternateNFGroupRoutingOptions | M | This parameter decides the alternate
routing mode, depending on which scp-worker derives the alternate
producer NF
|
NF_SET | NF_SET DNS_SRV NF_SET_FOLLOWED_BY_DNSSRV STATIC_CONFIG NF_SET_FOLLOWED_BY_STATIC_CONFIG | Yes | No | No | Yes |
cbEnabled | M | Enables and disables circuit breaking. | false | true, false | Yes | No | Yes | Yes |
cbRuleName | M | Name of the rule holding the configuration of Circuit Breaking. Based on configuration under this rule, Circuit Breaking works. | defaultRule
|
- | Yes | Yes | ||
loadBasedCongestionControlEnabled | M | Enables and disables Load Based Congestion Control | true | true, false | Yes | No | Yes | Yes |
nfServiceLoadBasedCongestionControlCfg | M | Name of the rule holding the configuration of congestion control. Based on the configuration under this rule, congestion control works. | defaultRule
|
Yes | Yes |
Table 2-9 deploymentCHF
Enumeration value | CHF Deployment |
---|---|
REGIONAL | Regional CHF deployment, that is, CHFs, are deployed in primary region and secondary regions. A region may consist of one or more locality. |
SITE_WIDE | Site specific CHF deployment, that is, CHF instances, are deployed as per SCP's site deployment. |
PRIMARY_SECONDARY_PAIR | Primary and Secondary CHF deployment using ChfServiceInfo. Primary and Secondary CHF instance information is published in ChfServiceInfo while registering with NRF. |
Table 2-10 initialServiceRequest
routePolicy | reroutePolicy |
---|---|
Load_Balance |
Reroute options:
|
Forward_Route |
Reroute options:
|
Table 2-11 subsequentServiceRequest
routePolicy | reroutePolicy |
---|---|
Load_Balance |
Reroute options:
|
Forward_Route |
Reroute options:
|
Configuring Operations for Routing Options
You can configure routing options by using these operations: LIST, GET, PUT, and PATCH.
The following section provides sample details of the operations to configure routing options.
Request_Type: GET
URI: /ocscp/scpc-configuration/v1/routingoptions/
Port: 8081
curl --header 'Content-type: application/json'--header 'accept:
application/json'--request GET http://<SCP
configuration
FQDN>:8081/ocscp/scpc-configuration/v1/routingoptions/<serviceName>
{
"odEnabled": false,
"cbEnabled": false,
"ociEnabled": false,
"odRuleName": "defaultRule",
"cbRuleName": "defaultRule",
"ociRuleName": "defaultOciConfigRule",
"pod": {
"maxRoutingAttempts": 1,
"alternateRouting": true,
"loadBalancingAlgorithm": "Round_Robin"
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"srv": {
"name": "nudm-uecm",
"maxRoutingAttempts": 3,
"actions": "Forward",
"loadBalancingAlgorithm": "Priority_only",
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRule",
"defaultPriority": 1,
"defaultCapacity": 65535,
"reverseProxySupport": true,
"initialServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
},
"subsequentServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
}
},
"totalTransactionLifetime": "6s",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"responseTimeout": "1s",
"exceptionErrorResponses": [
{
"name": "Resource_Exhausted",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Response",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "Connect_Failure",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
},
{
"name": "Db_LookUp_Error",
"action": "Send_Answer",
"error_code": 500,
"error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
}
],
"deploymentModel": "SITE_WIDE",
"name": "nudm-uecm",
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false,
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
},
"nextHopScp": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp",
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
}
}
Request_Type: PUT
URI: /ocscp/scpc-configuration/v1/routingoptions
Port: 8081
Message
curl -X PUT http://<SCP configuration FQDN>:8081/ocscp/scpc-configuration/v1/routingoptions/namf-comm/ \
-H 'Content-Type: application/json' \
-d
{
"odEnabled": false,
"cbEnabled": false,
"ociEnabled": false,
"odRuleName": "defaultRule",
"cbRuleName": "defaultRule",
"ociRuleName": "defaultOciConfigRule",
"pod": {
"maxRoutingAttempts": 1,
"alternateRouting": true,
"loadBalancingAlgorithm": "Round_Robin"
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"srv": {
"name": "namf-comm",
"maxRoutingAttempts": 3,
"actions": "Forward",
"loadBalancingAlgorithm": "Priority_only",
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRule",
"defaultPriority": 1,
"defaultCapacity": 65535,
"reverseProxySupport": true,
"initialServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
},
"subsequentServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
}
},
"totalTransactionLifetime": "6s",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"responseTimeout": "1s",
"exceptionErrorResponses": [
{
"name": "Resource_Exhausted",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Response",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "Connect_Failure",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
},
{
"name": "Db_LookUp_Error",
"action": "Send_Answer",
"error_code": 500,
"error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
}
],
"deploymentModel": "SITE_WIDE",
"name": "namf-comm",
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false,
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
},
"nextHopScp": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp",
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
}
}'
Request_Type: PUT
URI: /ocscp/scpc-configuration/v1/routingoptions/
Port: 8081
Message
curl -X 'PUT' \
'http://<SCP configuration FQDN>:30446/ocscp/scpc-configuration/v1/routingoptions/nnef-eventexposure' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
{
"odEnabled": false,
"cbEnabled": false,
"ociEnabled": false,
"odRuleName": "defaultRule",
"cbRuleName": "defaultRule",
"ociRuleName": "defaultOciConfigRule",
"pod": {
"maxRoutingAttempts": 1,
"alternateRouting": true,
"loadBalancingAlgorithm": "Round_Robin"
},
"alternateNFGroupRoutingOptions": {
"mode": "NF_SET"
},
"srv": {
"name": "namf-comm",
"maxRoutingAttempts": 3,
"actions": "Forward",
"loadBalancingAlgorithm": "Priority_only",
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRule",
"defaultPriority": 1,
"defaultCapacity": 65535,
"reverseProxySupport": true,
"initialServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
},
"subsequentServiceRequest": {
"routePolicy": "Forward_Route",
"reroutePolicy": "RerouteWithinSite"
}
},
"totalTransactionLifetime": "6s",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"responseTimeout": "1s",
"exceptionErrorResponses": [
{
"name": "Resource_Exhausted",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Response",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "Connect_Failure",
"action": "Send_Answer",
"error_code": 504,
"error_response": "Gateway Timeout"
},
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
},
{
"name": "Db_LookUp_Error",
"action": "Send_Answer",
"error_code": 500,
"error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
}
],
"deploymentModel": "SITE_WIDE",
"name": "namf-comm",
"assignPreferredLocality": false,
"overridePreferredLocality": false,
"forwardRevisedPreferredLocality": false,
"nextHopSEPP": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp",
"reRouteConditionList": [
{
"statusCode": "307"
},
{
"statusCode": "308"
},
{
"statusCode": "429"
},
{
"statusCode": "5xx"
}
],
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
},
"nextHopScp": {
"totalTransactionLifetime": "7s",
"responseTimeout": "4s",
"service": {
"maxRoutingAttempts": 2
},
"serviceEndpoint": {
"maxRoutingAttempts": 1
},
"loadBasedCongestionControlEnabled": true,
"nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp",
"exceptions": [
{
"name": "No_Host",
"action": "Send_Answer",
"error_code": 400,
"error_response": "Bad Request"
}
]
}
}'
Request_Type: PATCH
URI: /ocscp/scpc-configuration/v1/routingoptions/
Port: 8081
curl -X PATCH http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/routingoptions/<service name> \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"srv": {
"name": "nudm-uecm",
"reverseProxySupport": true
},
"exceptionErrorResponses": [
{
"name": "Db_LookUp_Error",
"action": "Send_Answer",
"error_code": 500,
"error_response": "Session/Subscriber binding not found/look-up failure at OCSCP-SDS Service"
}
]
}
}'
2.3 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-12 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-13 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-14 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://10.75.214.171:30970/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://10.75.214.171:30970/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-15 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://10.75.214.171:30970/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-16 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://10.75.225.82:30636/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-17 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 reroute to available alternate peers. If it is not able to reroute, 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-18 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-19 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.4 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-20 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-21 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-22 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-23 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-24 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-25 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-26 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. |
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-27 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.5 Routing Options Configurations
This REST API is used to configure routing options at the NFType, NFServicename, and message type levels. The API takes input as NFType, NFServicename, and so on.
The user can specify only the granularity levels using this API; the actual routing options are configured in another table named Routing Config Set. For more information, see Routing Config Set. The name of the routing option is provided in the Routing Options Configurations API as a value for the routingConfigSetName parameter.
Resources
The following table describes the resource name to retrieve, add, update, and remove routing option configurations based on the query parameters.
Resource URI : http://<authority>:<port>/ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName}
Authority: loadbalancer or fqdn
Port: nodeport(Ip address) or internal port (For fqdn)
loadbalancerip: 10.75.225.111
Table 2-28 Resource Name
Resource Name | Resource URI | HTTP Method | Query Parameter | Description |
---|---|---|---|---|
routing-options-config | ocscp/scpc-configuration/{version}/routing-options-config | GET |
Valid Query Parameter combinations:
|
Retrieves routing option name configurations for given filters; if no query parameter is specified, it will return all the data present in the table. |
routing-options-config | ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName} | GET | - | Retrieve the routing option configuration name for the given name. |
routing-options-config | ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName} | PUT | - | Updates or creates routing options configurations for parameters. |
routing-options-config | ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName} | DELETE | - | Deletes routing option configurations for given names. |
Data Model
Request Body (PUT)
The following table describes the field names of the RoutingOptionsConfiguration data type.
Table 2-29 RoutingOptionsConfiguration
Field Name | Data Type | Mandatory (M) or Optional(O) | Default Values | Allowed Values | Description |
---|---|---|---|---|---|
routingOptionsConfigName | String | M | - | - | Unique name to identify the routing options configurations. |
routingConfigSetName | String | M | - | - | Name of the routing configuration used to retrieve routing options from another table (Routing Config Set); if a rule with this name is not present in the Routing Config Set table, then the request is rejected. |
nftype | NFType:
|
C | All | 5G_EIR, AMF, AUSF, BSF, CHF, LMF, NEF, NRF, NSSF, NWDAF, PCF, SEPP, SCP, SMF, SMSF, UDM, UDR | The NF type for which routing options are configured. |
nfservicename | Name of the 5G SBI service:
|
C | All | n5g-eir-eic, namf-comm, namf-evts, namf-loc, namf-mt, nausf-auth, nausf-sorprotection, nausf-upuprotection, nbsf-management, nchf-convergedcharging, nchf-spendinglimitcontrol, nchf-spendinglimitcontrol, nlmf-loc, nnef-pfdmanagement, nnef-eventexposure, nnef-afsessionwithqos, nnrf-disc, nnrf-nfm, nssf-nssaiavailability, nnssf-nsselection, nnwdaf-analyticsinfo, nnwdaf-eventssubscription, npcf-am-policy-control, npcf-bdtpolicycontrol, npcf-eventexposure,npcf-policyauthorization, npcf-smpolicycontrol, npcf-ue-policy-control, ampolicy, bdtpolicycontrol, smpolicy, ue-policy, nscp-5g-sbi-proxy, nsmf-event-exposure, nsmf-pdusession, nsmsf-sms, nudm-ee, nudm-pp, nudm-sdm, nudm-ueau, nudm-uecm, nudr-dr, nudr-group-id-map, 5g-sbi-notification, nmediation-http, ocscp-sds | The NF service name for which routing options are configured |
messagetype | List | C | notification-message | notification-message | The list indicates which message type the configuration is applicable to. |
Note:
- A defaultRule is created during a fresh deployment or upgrade.
This rule cannot be deleted or
updated.
{ "routingOptionsConfigName": "defaultConfig", "nfType": "ALL", "serviceName": "ALL", "messageTypeList": ["notification-message"], "routingConfigSetName": "defaultRoutingConfigSet", }
- If the above mentioned conditional parameters are not provided in the payload, then the default value is used for them.
{
"routingOptionsConfigName": "defaultConfig",
"routingConfigSetName": "amf-notification",
"nftype": "ALL",
"nfservicetype": "ALL",
"messagetype": ["notification-message"]
}
Data Model
Request Body (GET)
The following table describes the field names of the RoutingOptionsConfiguration data type.
Table 2-30 RoutingOptionsConfiguration
Field Name | Data Type | Mandatory (M) or Optional(O) | Default Values | Allowed Values | Description |
---|---|---|---|---|---|
routingOptionsConfigName | String | M | - | - | Unique name to identify the routing option configurations. |
routingConfigSetName | String | M | - | - | Name of the routing configuration used to retrieve routing options from another table (Routing Config Set); if a rule with this name is not present in the Routing Config Set table, then the request is rejected. |
nftype | NFType:
|
M | All | 5G_EIR, AMF, AUSF, BSF, CHF, LMF, NEF, NRF, NSSF, NWDAF, PCF, SEPP, SCP, SMF, SMSF, UDM, UDR | The NF type for which routing options are configured |
nfservicename | Name of the 5G SBI service:
|
M | All | n5g-eir-eic, namf-comm, namf-evts, namf-loc, namf-mt, nausf-auth, nausf-sorprotection, nausf-upuprotection, nbsf-management, nchf-convergedcharging, nchf-spendinglimitcontrol, nchf-spendinglimitcontrol, nlmf-loc, nnef-pfdmanagement, nnef-eventexposure, nnef-afsessionwithqos, nnrf-disc, nnrf-nfm, nssf-nssaiavailability, nnssf-nsselection, nnwdaf-analyticsinfo, nnwdaf-eventssubscription, npcf-am-policy-control, npcf-bdtpolicycontrol, npcf-eventexposure,npcf-policyauthorization, npcf-smpolicycontrol, npcf-ue-policy-control, ampolicy, bdtpolicycontrol, smpolicy, ue-policy, nscp-5g-sbi-proxy, nsmf-event-exposure, nsmf-pdusession, nsmsf-sms, nudm-ee, nudm-pp, nudm-sdm, nudm-ueau, nudm-uecm, nudr-dr, nudr-group-id-map, 5g-sbi-notification, nmediation-http, ocscp-sds | The NF service name for which routing options are configured. |
messagetype | String | M | notification-message | notification message | Indicate whether routing options are for notification messages or not. |
{
"routingOptionsConfigName": "defaultConfig",
"routingConfigSetName": "amf-notification",
"nftype": "ALL",
"nfservicetype": "ALL",
"messagetype": ["notification-message"]
}
Resource Definition
GET REST API:
This resource fetches the routing options configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config?nftype=<nfType>&&nfservicename=<nfservicename>&&isnotification=<yes/no>
Table 2-31 URI query parameters
Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
nftype | String | O | Parameter to fetch routing option data based on nftype. |
nfservicename | String | O | Parameter to fetch routing options based on nfservicenames. |
messageType | String | O | Query parameter to fetch routing options for notification messages or non-notification messages. |
Note:
If no query parameter is specified, the response will contain all the data.Table 2-32 Data structures
Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
---|---|---|---|---|
RoutingOptionsConfiguration | M | 1 | 200 OK | The routing option configuration for the given parameters. |
ProblemDetails | M | 1 | 404 | Problem details |
Example
Successful response 1
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config?nfType=ALL&serviceName=ALL
HTTP/1.1 200 OK
[{"routingOptionsConfigName":"defaultConfig","nfType":"ALL","serviceName":"ALL","messageTypeList":["notification-message"],"routingConfigSetName":"defaultRoutingConfigSet"}]
Successful response 2
curl -v -H "Content-Type: application/json" --request GET 'http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config?nfType=UDM'
HTTP/1.1 200 OK
[{"routingOptionsConfigName":"newROConfig","nfType":"UDM","serviceName":"ALL","messageTypeList":["notification-message"],"routingConfigSetName":"defaultRoutingConfigSet"}]
Failure Case 1
curl -v -H "Content-Type: application/json"--request GET 'http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config?nfType=ALL&serviceName=asa'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"Invalid nfService name provided no rule can be created for invalid nfService.Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-options-config?nfType=ALL&serviceName=asa","cause":"INVALID_REQUEST_BODY"}
Failure Case 2
curl -v -H "Content-Type: application/json" --request GET 'http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config?nfType=Aas'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"Invalid Nftype provided no rule can be created for invalid nfType. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-options-config?nfType=Aas","cause":"INVALID_REQUEST_BODY"}
GET REST API:
This resource fetches the routing option configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName}
Table 2-33 URI query parameters
Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
routingOptionsConfigName | String | O | The name of the routing option for which routingOptionsConfig needs to be retrieved. |
Table 2-34 Data structures
Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
---|---|---|---|---|
RoutingOptionsConfiguration | M | 1..N | 200 OK | The routing option configuration with all other parameters. |
Example of Congestion Control Configuration for GET
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig
HTTP/1.1 200 OK
[{"routingOptionsConfigName":"defaultConfig","nfType":"ALL","serviceName":"ALL","messageTypeList":["notification-message"],"routingConfigSetName":"defaultRoutingConfigSet"}]
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1
HTTP/1.1 404 Not Found
{"title":"Not Found","status":"404","detail":"RoutingOptionsConfig data not found against given query parameters","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1","cause":"DATA_NOT_FOUND"}
PUT REST API:
This resource creates or updates the routing option configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName}
Table 2-35 URI query parameters
Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
routingOptionsConfigName | String | O | The name used to identify the routing options configuration. |
Table 2-36 Data Structures Supported by the PUT Response Body
Data Type | Mandatory (M) or Optional(O) | Cardinality | Response codes | Description |
---|---|---|---|---|
RoutingOptionsConfigurationWrapper | M | 1 | 201 Created | Response if a new record in the table is created. |
RoutingOptionsConfigurationWrapper | M | 1 | 200 OK | Response if an existing record in the table is updated. |
ProblemDetails | M | 1 | 400 | Returns problem details. |
Example
Successful response
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig -d '{
"routingOptionsConfigName": "defaultConfig",
"nfType": "ALL",
"serviceName": "ALL",
"messageTypeList": [
"notification-message"
],
"routingConfigSetName": "defaultRoutingConfigSet"
}'
HTTP/1.1 200 OK
{"routingOptionsConfigName":"defaultConfig","nfType":"ALL","serviceName":"ALL","messageTypeList":["notification-message"],"routingConfigSetName":"defaultRoutingConfigSet"}
Failure Case 1
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1 -d '{
"routingOptionsConfigName": "defaultConfig1",
"nfType": "ALL",
"serviceName": "ALL",
"messageTypeList": [
"notification-message"
],
"routingConfigSetName": "defaultRoutingConfigSet"
}'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"routingOptionsConfigName inside RoutingOptionsConfig data does not match with routingOptionsConfigName passed through API. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1","cause":"INVALID_KEY_COMBINATION"}
Failure Case 2
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1 -d '{
"routingOptionsConfigName": "defaultConfig2",
"nfType": "ALLaa",
"serviceName": "ALL",
"messageTypeList": [
"notification-message"
],
"routingConfigSetName": "defaultRoutingConfigSet"
}'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"Invalid Nftype provided no rule can be created for invalid nfType. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig1","cause":"INVALID_REQUEST_BODY"}
Failure case 3
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig -d '{
"routingOptionsConfigName": "defaultConfig",
"nfType": "UDM",
"serviceName": "ALL",
"messageTypeList": [
"notification-message"
],
"routingConfigSetName": "defaultRoutingConfigSet"
}'
HTTP/1.1 400 Bad Request
{"title":"Bad Request","status":"400","detail":"Cannot update NFType ServiceName or MessageType of default Configuration present for RoutingOptionsConfig. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig","cause":"INVALID_REQUEST_BODY"}
DELETE REST API:
This resource deletes the routing options configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-options-config/{routingOptionsConfigName}
Table 2-37 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 needs to be deleted. |
Table 2-38 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 | 200 OK | - |
ProblemDetails | M | 1 | 400/404 | Problem details. |
Example
curl -v -H
"Content-Type: application/json"--request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/abc HTTP/1.1204No Content
Failure case 1
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig11
HTTP/1.1 404 Not Found
{"title":"Not Found","status":"404","detail":"RoutingOptionsConfig data not found against given routingOptionsConfig Name","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig11","cause":"DATA_NOT_FOUND"}
Failure case 2
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig
HTTP/1.1 403 Forbidden
{"title":"Forbidden","status":"403","detail":"Default Configuration present for RoutingOptionsConfig cannot be deleted","instance":"/ocscp/scpc-configuration/v1/routing-options-config/defaultConfig","cause":"OPERATION_NOT_ALLOWED"}
2.6 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 during the installation of SCP through Helm.
- The same functionality is achieved using the
OutlierDetection
(URI:/ocscp/scpc-configuration/{version}/outlier-detection
) API to thenextHopScpODRule
rule assigned toodScpRuleName
.
REST Message Sample
Request_Type: GET and PUT
http://<SCP configuration FQDN/External
IP>:8081//ocscp/scpc-configuration/v1/systemoptions
{
"odEnabled": true,
"odScpRuleName": "nextHopScpODRule",
"odSeppEnabled": false,
"odSeppRuleName": "defaultRule",
"cbScpEnabled": false,
"cbScpRuleName": "defaultRule",
"cbSeppEnabled": false,
"cbSeppRuleName": "defaultRule",
"viaHeaderCheckEnabled": true,
"interPlmnFqdnValidationEnabled": false,
"forwardNfDiscoveryHeaders": true,
"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-39 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. |
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. |
odSeppEnabled | Boolean | Enables or disables the Outlier Detection feature for
the next Hop SEPP.
For more information, see Outlier Detection Configuration. |
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. |
cbScpEnabled | Boolean | Enables or disables circuit breaking for next Hop SCP.
The default value is false.
For more information, see Circuit Breaking Configurations. |
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. |
cbSeppEnabled | Boolean | Enables or disables circuit breaking for next Hop
SEPP. The default value is false.
For more information, see Circuit Breaking Configurations. |
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. |
forwardNfDiscoveryHeaders | Boolean | Enables or disables the forwarding of discovery headers to next hop SCP. The default value is 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. The default value is 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. The default value is 600s. |
trafficPolicy.connectionPool.tcp.connectTimeout | String | TCP Connection timeout. The valid time units are ns, us (or µs), ms, s. For example: 300ms. |
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.
The default value is 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. |
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. |
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. The default value is 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. The default value is false. |
2.7 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-40 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-41 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-42 | Configures preferred NRF.
This parameter can be configured as nrfInstanceId or nrfSetId or both. |
Table 2-42 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-43 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-44 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://10.75.212.36:30174/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://10.75.226.46:32224/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-45 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://10.75.212.36:30898/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://10.75.226.46:32224/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://10.75.212.36:30898/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.8 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.8.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-46 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-47 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-48 | 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-48 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-49 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-50 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-51 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://10.75.226.108:32551/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://10.75.226.108:32551/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://10.75.226.108:32551/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-52 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://10.75.226.108:32551/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://10.75.226.108:32551/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-53 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-54 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://10.75.226.108:32551/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=Config2"-H
"accept: application/json"*/*"
204OK
Failure response
$ curl -X DELETE
"http://10.75.226.108:32551/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.8.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-55 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-56 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-57 | Indicates the specific data for each OAuth2 configuration type. |
Table 2-57 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-58 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-59 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-60 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-61 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://10.75.226.108:32551/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://10.75.226.108:32551/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-62 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://10.75.226.108:32551/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-63 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-64 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://10.75.226.108:32551/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://10.75.226.108:32551/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.9 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-65 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-66 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-67 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-73 | 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-68 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-69 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://10.75.212.104:31109/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://10.75.212.104:31109/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://10.75.212.104:31109/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-70 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://10.75.212.104:31109/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://10.75.212.104:31109/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-71 Path Parameter
Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
name | String | M | Delete configurations for name. |
Table 2-72 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://10.75.212.104:31109/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://10.75.212.104:31109/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-73 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:
-
invalidParams
attribute 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.10 Configuring CanaryRelease Options
The following REST message samples provide the details about the operations and parameters for CanaryRelease 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.
REST Message Samples
URI:
/ocscp/scpc-configuration/v1/canaryrelease/
Port: 8081
[{
"canaryReleaseFlag": false,
"serviceName": "nudm-uecm"
"apiFullVersion": "1.R15.1.0",
"canaryTraffic": 5
}
...
]
Example:
curl --header 'Content-type: application/json' --header 'accept: application/ json' --request GET http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/canaryrelease/
[{
"canaryReleaseFlag": false,
"serviceName": "nudm-uecm",
"apiFullVersion": "2.R16.1.0",
"canaryTraffic": 5
}
...
]
Message
curl --header 'Content-type: application/json' --header 'accept: application/json' --request GET http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/canaryrelease/
[{
"canaryReleaseFlag": false,
"serviceName": "nudm-uecm",
"apiFullVersion": "2.R16.1.0",
"canaryTraffic": 5
}
...
]
Field Name and Type: canaryReleaseFlag <Boolean>
Description: Enable or disable canary release support. Set the value of the canaryReleaseFlag field and mention the serviceName for which the configuration is required in the resource path of the following curl command.
Default Value: null
curl --header "Content-Type: application/json" --request PATCH --data '{
"canaryReleaseFlag": true
}' http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/canaryrelease/<serviceName>
Field Name and Type: apiFullVersion <String>
Description: The API full version of the canary service. Set the value of the apiFullVersion field and mention the serviceName for which the configuration is required in the resource path of the following curl command.
Default Value: null
Message: apiFullVersion UPDATE Commandcurl --header "Content-Type: application/json" --request PATCH --data '{
"apiFullVersion": "2.R16.1.0"
}' http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/canaryrelease/<serviceName>
Field Name and Type: canaryTraffic <Integer>
Description: The traffic that should be distributed to Canary release. Set the value of the canaryTraffic field and mention the serviceName for which the configuration is required in the resource path of the following curl command.
Default Value: null
curl --header "Content-Type: application/json" --request PATCH --data '{
"canaryTraffic": 10
}' http://<SCP configuration FQDN/External IP>:8081/ocscp/scpc-configuration/v1/canaryrelease/<serviceName>
2.11 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-74 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-75 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-76 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-77 Path Parameters
Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
ruleName | String | M | Fetches configurations on ruleName. |
Table 2-78 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-79 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-80 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-81 Path Parameter
Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
ruleName | String | M | Fetch configurations on ruleName. |
Table 2-82 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.12 Configuring NF Service Groups
Parameters for Configuring NF Service Groups
Table 2-83 Parameters for NF Service Groups
Resource Name | Resource URI | HTTP method or custom operation | Description |
---|---|---|---|
servicegroups |
{apiRoot}/ocscp/scpc-configuration/v1/servicegroups/{serviceName}
Ex: {apiRoot}/ocscp/scpc-configuration/v1/servicegroups/nchf-spendinglimitcontrol |
GET | Returns the NF Service for a given serviceName. |
servicegroups |
{apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=value
Ex: {apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=CHF |
GET | Returns a list of NF Services for a given NF Type. |
servicegroups | {apiRoot}/ocscp/scpc-configuration/v1/servicegroups | PUT | Updates the NF Service. |
servicegroups |
{apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=value&serviceName=value
Ex: {apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=CHF&serviceName=nchf-spendinglimitcontrol |
PATCH | Updates a single NF Service based on serviceName or Updates multiple NF Services based on NF Type. |
servicegroups |
{apiRoot}/ocscp/scpc-configuration/v1/servicegroups/{serviceName}
Ex: {apiRoot}/ocscp/scpc-configuration/v1/servicegroups/nchf-spendinglimitcontrol |
DELETE | Deletes the given NFService with serviceName. |
servicegroups |
{apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=value
Ex: {apiRoot}/ocscp/scpc-configuration/v1/servicegroups?nfType=CHF |
DELETE | Deletes all the services for a given NF Type. |
Resource Definition
Table 2-84 Supported Parameters
Query Parameter | Request Body | HTTP method or custom operation | Data type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
---|---|---|---|---|---|---|---|
servicename | n/a | GET | NFServiceGroup | M | 1 | 200 OK | Upon success, a response body is returned containing the NFServiceGroup for requested Service Name. |
servicename | n/a | GET | String | M | 1 | 404 NOT FOUND | The response body contains the message indicating that the there were no services found for the requested Service Name. |
serviceName: Optional nfType: Optional Note: Either one of above parameters are mandatory. Both cannot be left empty. | NFServiceGroupModifiableFields object with any of the attributes. Note: Data Model for this request body is provided in "Data Models" section. | PATCH | String | M | 1 | 200 OK |
Upon success, the following message is returned: Updated NF Service with serviceName: nchf-spendinglimitcontrol |
serviceName: Optional nfType: Optional | NFServiceGroupModifiableFields object with any of the attributes. Note: Data Model for this request body is provided in "Data Models" section. | PATCH | String | M | 1 | 403 FORBIDDEN | primaryRegionLocalities can not be empty or its size cannot be zero. |
serviceName: Optional nfType: Optional | NFServiceGroupModifiableFields object with any of the attributes. Note: Data Model for this request body is provided in "Data Models" section. | PATCH | String | M | 1 | 400 BAD REQUEST | If both the request parameters are missing, then Bad Request error is returned with the following message: Please pass either serviceName or nfType. |
serviceName | n/a | DELETE | String | M | 1 | 200 OK |
Upon success, the following message is returned: Successfully deleted the Nf Service for ServiceName: nchf -
spendinglimitcontrol
|
nfType | n/a | GET | List<NFServiceGroup> | M | 1 | 200 OK | Upon success, a response body is returned containing a List of NFServiceGroup's for requested nfType. |
nfType | n/a | GET | String | M | 1 | 404 BAD REQUEST | Required parameter 'nfType' is not present. |
nfType | n/a | DELETE | String | M | 1 | 200 OK |
Upon success, the following message is returned: Successfully deleted all Services for NFType : CHF. |
n/a | "NFServiceGroup" object with updated fields. Note: Sample data is provided in Example column and also the "Data Model" for this Request Body could be found in the "Data Models" section. | PUT | NFServiceGroup | M | 1 | 200 OK | Upon success, a response body is returned containing the updated NFServiceGroup object. |
n/a | "NFServiceGroup" object with updated fields. Note: Sample data is provided in Example column and also the "Data Model" for this Request Body could be found in the "Data Models" section. | PUT | String | M | 1 | 403 FORBIDDEN | Not allowed to modify NfType or serviceName of NFServiceGroup. |
n/a | "NFServiceGroup" object with updated fields. Note: Sample data is provided in Example column and also the "Data Model" for this Request Body could be found in the "Data Models" section. | PUT | String | M | 1 | 400 BAD REQUEST |
If any of the mandatory parameters are missing in the Request Body, then BAD REQUEST error would be returned. Note: Refer to Data Model for Mandatory parameters. |
n/a | "NFServiceGroup" object with updated fields. Note: Sample data is provided in Example column and also the "Data Model" for this Request Body could be found in the "Data Models" section. | PUT | String | M | 1 | 400 BAD REQUEST |
If "primaryRegionLocalities" attribute in Request Body is assigned with empty list, then a BAD REQUEST error would be returned as this value cannot be empty. Response message: Primary Region Localities for a NF Service cannot be Null or empty. |
Data Models for NF Service Groups
Table 2-85 NFServiceGroup
Field Name | Type | Mandatory (M) or Optional(O) | Description(With default Values) |
---|---|---|---|
nfType | Enum | M | NRF, UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, 5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP Note: This parameter cannot be modified. |
serviceName | String | M | Only CHF Services are supported: nchf-convergedcharging,
nchf-spendinglimitcontrol.
Note: This parameter cannot be modified. |
primaryRegionLocalities | List<String> | M | This parameter can be modified, but empty values cannot be assigned to this parameter. |
secondaryRegionLocalities | List<String> | O | This is an optional parameter and can be modified. |
ReroutePolicy
Table 2-86 ReroutePolicy
Field Name | Type | Mandatory (M) or Optional(O) | Description(With default Values) |
---|---|---|---|
rerouteOptions | Enum | M | Default values: RerouteWithinSite
This enables SCP to perform alternate routing from one service to another. |
Table 2-87 NFServiceGroupModifiableFields
Field Name | Type | Mandatory (M) or Optional(O) | Description(With default Values) |
---|---|---|---|
primaryRegionLocalities | List<String> | O | This parameter can be modified, but empty values cannot be assigned to this parameter. |
secondaryRegionLocalities | List<String> | O |
Configuring NF Service Groups
User can configure routing options by using the operations GET, PUT, and PATCH.
The following table provides sample details of the operations to configure routing options.
Table 2-88 NF Service Groups Operations
Operations | Message |
---|---|
GET |
|
PUT |
|
PATCH |
|
2.13 Configuring NF Topology Groups
- determine the 5G topology from NRF and use it for creating the routing rules.
- stop determining the 5G topology information from NRF and utilize the user configured or updated NF profiles.
5G Topology Source Information
SCP uses this configuration to determine the 5G topology source, and to create the routing rules accordingly.
Table 2-89 TopologySourceInfo
NF Type (M) | 5G topology source (M) |
---|---|
|
|
Enumeration: TopologySource
Table 2-90 Enumeration: TopologySource
Enumeration Value | Description |
---|---|
"NRF" | SCP 5G Topology information source is NRF. |
"LOCAL" | SCP 5G Topology information source is user configured
and not from NRF.
This status may result from an NF
service failure and may trigger restoration procedures. For more
information, see clause 6.2 of 3GPP 23.527 [27].
|
Table 2-91 Resources and Methods Overview
Resource Name | Resource URI | HTTP Method or Custom Operation | Request Body, Query Parameters | Response Status Code, Body | Description |
---|---|---|---|---|---|
topologysource | {apiroot}/ocscp/scpc-configuration/v1/topologysourceinfo | PUT |
Body
|
200 OK |
Create or update the topology source information for all the NF types. |
topologysource | {apiroot}/ocscp/scpc-configuration/v1/topologysourceinfo | GET |
Query Parameters
|
Read the topology source information for all the NF types. | |
NFtopologysource (individual NF types) |
{apiroot}/ocscp/scpc-configuration/v1/ topologysource/{NFType} | PUT |
Body
|
200 OK | Create or update the topology source information for a specific NF type. |
NFtopologysource (individual NF types) |
{apiroot}/ocscp/scpc-configuration/v1/ topologysource/{NFType} | GET |
Query Parameters
|
Read the topology source information for a specific NF type. |
5G NF Topology Information
This information is used for configuring 5G NF profiles for the NF whose source has been set to "Local". When the learning source is set to "Local", users can modify the 5G NF profile irrespective of whether they are learned from NRF, that is, source='NRF', or configured statically, that is, source='Local'.
Note:
By setting the source to Local, the system does not delete already determined profiles.Table 2-92 Parameters for NF Topology Groups
Resource Name | Resources and Methods Overview | HTTP Method or Custom Operation | Request Body, Query Parameters | Response Status Code, Body | Description |
---|---|---|---|---|---|
nf-instances (Store) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/ | GET | Query Parameters
|
|
Read a collection of NF Instances. |
nf-instances (Store) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/ | GET | Query Parameters
|
|
Read a collection of NF Instance Id. |
nf-instance (Document) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/{nfInstanceID} | GET | Query Parameters
|
200 OK, NFProfile | Read the profile of a given NF Instance. |
nf-instance (Document) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/{nfInstanceID} | PUT | Body
|
200 OK, NFProfile 201 Created, NFProfile | Register or configure in SCP a new NF Instance, or replace the profile of an existing NF Instance, by providing an NF profile. |
nf-instance (Document) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/{nfInstanceID} | PATCH | Body
|
|
Modify the NF profile of an existing NF Instance. |
nf-instance (Document) | {apiRoot}/ocscp/scpc-configuration/v1/nf-instances/{nfInstanceID} | DELETE | Query
|
|
Deregister or delete from SCP a given NF Instance. |
Query Parameters
Table 2-93 Query Parameters
Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description | Applicability |
---|---|---|---|---|---|
nf-type | NFType | M | 1 | This IE shall contain the NF type of the NF Service Producer being queried. | NF type of the NF Instances whose status is requested to be monitored. |
service-names | array(ServiceName) | O |
1..N |
If included, this IE contains an array of service names for which SCP is queried to provide the list of NF profiles. SCP returns the NF profiles that have at least one NF service matching the NF service names in this list. If not included, the NRF returns all the NF service names registered in the NF profile. | Service name offered by the NF Instances whose status is requested to be monitored. This parameter is optional but if provided it returns with NF profile information. |
nf-instance-id | NfInstanceId | O |
0..1 |
Identity of the NF instance being queried. | NF Instance ID of the NF Instance whose status is requested to be monitored. |
limit | integer | O |
0..1 |
Maximum number of NFProfiles to be returned in the response. | Query-Params-Ext1. |
SearchResult
Table 2-94 SearchResult
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
nfInstances | array(NFProfile) | M |
1..N |
It contains an array of NF Instance profiles, matching the search criteria indicated by the query parameters of the query request. An empty array means there is no NF instance that can match the search criteria. |
uriList
Table 2-95 uriList
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
_links | map(LinksValueSchema) | O |
1..N |
For the description of the members, see clause 4.9.4 of 3GPP TS 29.501. |
Configuring NFProfile
Following are the minimum information required by SCP for statically configuring the NFProfile.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-96 Configuring NFProfile
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
nfInstanceId | String | M | 1 | Identity of the NF instance being queried. |
nfType | NFType | M | 1 | This IE contains the NF type of the NF Service Producer being queried. |
nfStatus | NFStatus | M | 1 | This contains the NF status of NF Service Producer. |
nsiList | array(String) | O | 0..N | Returned when SMF is provided as the NFType. |
fqdn | String | O | 0..1 | FQDN of the NF. |
plmnlist | array(PlmnId) | O | 1..N | PLMN(s) of the Network Function: This IE shall be present if the information is available for the NF. For a Self SCP, it represents the list of PLMNs served by the SCP. |
interPlmnFqdn | String | O | 0..1 | If the NF needs to be discovered by other NFs in a different PLMN, then an FQDN that is used for inter-PLMN routing. |
ipv4Addresses | array(String) | O | 0..N | IPv4 addresses of the NF. |
priority | Integer | O | 0..1 | Priority (relative to other NFs of the same type) in the range of 0-65535, to be used for NF selection; lower values indicate a higher priority. |
locality | String | O | 0..1 | Operator defined information about the location of the NF
instance.
Note: This value is case-sensitive. |
udmInfo | UDMInfo | O | 0..1 | Specific data for the UDM (ranges of SUPI, group ID…). |
ausfInfo | AUSFInfo | O | 0..1 | Specific data for the AUSF (ranges of SUPI, group ID…). |
amfInfo | AMFInfo | O | 0..1 | Specific data for the AMF (AMF Set ID, …). |
smfInfo | SMFInfo | O | 0..1 | Specific data for the SMF (DNN's, …). |
pcfInfo | PCFInfo | O | 0..1 | Specific data for PCF. |
chfInfo | CHFInfo | O | 0..1 | Specific data for CHF. |
nfServices | array(NFService) | O | 0..N | List of NF Service Instances. It includes the services produced by the NF that can be discovered by other NFs, if any. |
nrfRegionOrSetId | String | O | 0..1 |
If not provided, it is taken as "default". It must lie under supportedNRFRegionOrSetIdList of SCP profile, otherwise the Profile is rejected. If supportedNRFRegionOrSetIdList of SCP profile is not provided, it must be left empty. If supportedNRFRegionOrSetIdList of SCP profile is provided, then it must be set to any one of the configured nrfRegionOrSetId. It is the SetId of NRF to which the profile belongs to.Note: nrfRegionOrSetId is an SCP introduced parameter and used only for NRF profiles or Statically configured profiles. |
nfSetIdList | List | O | 0..N | Set ID to which NF belongs to. |
capacity | Integer | O | 0..1 | Static capacity information in the range of 0-65535, expressed as a weight relative to other services of the same type. |
load | Integer | O | 0..1 | Dynamic load information, ranged from 0 to 100, indicates the current load percentage of the NF service. |
servingScope | String | O | 0..1 | An SCP parameter that is used only for NRF profiles
or statically configured profiles.
If it is not provided, it is considered as "default". It must remain under servingScope of SCP, otherwise the profile is rejected. If servingScope of SCP is not provided, then it must be left blank. If servingScope of SCP is provided, it must be set to any one of the configured servingScope. |
customInfo | String | O | 0..1 | Provides custom information for an NF.
It is applicable only for SCP or CUSTOM_ORACLE_SCP NF types. |
Configuring UDMInfo
Following are the minimum information required by SCP for statically configuring UDMInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-97 Configuring UDMInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
supiRanges | array(SupiRange) | O | 0..N | List of SUPI ranges whose profile data is available in the UDM instance. |
gpsiRanges | arrray(IdentityRange) | O | 0..N | List of GPSI ranges whose profile data is available in the UDM instance. |
Configuring AUSFInfo
Following are the minimum information required by SCP for statically configuring AUSFInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-98 Configuring AUSFInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
supiRanges | array(SupiRange) | O | 1..N | List of SUPI ranges that can be served by the AUSF instance. If not provided, the AUSF can serve any SUPI. |
routingIndicators | array(String) | O | 0..N | List of Routing Indicator information that allows to route network signaling with SUCI (see 23.003 [12]) to the AUSF instance. If not provided, the AUSF can serve any Routing Indicator. |
GroupId | String | O | 0..1 | Identifier of the AUSF group. If not provided, the AUSF instance does not pertain to any AUSF group. |
Configuring AMFInfo
Following are the minimum information required by SCP for statically configuring AMFInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-99 Configuring AMFInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
guamiList | array(Guami) | M | 1..N | List of supported GUAMIs. |
Configuring SMFInfo
Following are the minimum information required by SCP for statically configuring SMFInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-100 Configuring SMFInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
sNssaiSmfInfoList | array(SnssaiSmfInfoItem) | M | 1..N | List of parameters supported by the SMF per S-NSSAI. |
pgwFqdn | String | O | 0..1 | The FQDN of the PGW if the SMF is a combined SMF/PGW-C. |
accessType | array(AccessType) | O | 0..N | If included, this IE shall contain the access type (3GPP_ACCESS and/or NON_3GPP_ACCESS) supported by the SMF. If not included, it is assumed the both access types are supported. |
Configuring PCFInfo
Following are the minimum information required by SCP for statically configuring PCFInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-101 Configuring PCFInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
supiRanges | array(SupiRange) | O | 1..N | List of ranges of SUPIs that can be served by the PCF instance. If not provided, the PCF can serve any SUPI. |
Configuring CHFInfo
Following are the minimum information required by SCP for statically configuring CHFInfo.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-102 Configuring CHFInfo
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
supiRangeList | array(SupiRange) | O | 1..N | List of SUPI ranges that can be served by the CHF instance. If not provided, the CHF can serve any SUPI. |
gpsiRangeList | arrray(IdentityRange) | O | 0..N | List of GPSI ranges that can be served by the CHF instance. If not provided, the CHF can serve any GPSI. |
Configuring NFService
Following are the minimum information required by SCP for statically configuring NFService.
Note:
The parameters mentioned in the following table are according to the 3GPP TS 29.510 specification and SCP uses only these parameters.Table 2-103 Configuring NFService
Attribute name | Data type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
serviceInstanceId | String | M | 1 | Unique ID of the service instance within a given NF Instance. |
serviceName | ServiceName | M | 1 | Name of the service instance, that is, "udm-sdm". |
nfServiceStatus | NFServiceStatus | M | 1 | Status of the NF Service Instance. |
versions | array(NFServiceVersion) | M | 1..N | The API versions supported by the NF Service and if available, the corresponding retirement date of the NF Service. |
scheme | UriScheme | M | 1 | URI scheme, for example, "http", "https". Note: Only HTTP is supported. |
fqdn | String | O | 0..1 | FQDN of the NF Service Instance. |
ipEndPoints | array(IpEndPoint) | O | 0..N | IP addresses and port information of the Network Function, including IPv4 and IPv6 address, where the service is listening for incoming service requests. Note: IPV4 is supported. |
apiPrefix | String | O | 0..1 | Optional path segments is used to construct the {apiRoot} variable of the different API URIs, as described in 3GPP 29.501 [5], clause 4.4.1. |
priority | Integer | O | 0..1 | Priority, relative to other services of the same type, in the range of 0-65535 must be used for the NF service selection; lower values indicate a higher priority. |
capacity | Integer | O | 0..1 | Static capacity information in the range of 0-65535, expressed as a weight relative to other services of the same type. |
load | Integer | O | 0..1 | Dynamic load information, ranged from 0 to 100, indicates the current load percentage of the NF service. |
The CustomInfo
parameter is used only for nfType as "SCP" or
"CUSTOM_ORACLE_SCP".
Table 2-104 CustomInfo
Attribute Name | Data Type | Range | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|---|
Release 16 Deployment | |||||
mateScpInfoList | List | 0-N | O | 1 | Indicates the list to provide information about mate SCPs. |
mateScpInfoList.capacity | Integer | 0-65535 | O | 1 | Indicates the capacity of mate SCP. |
mateScpInfoList.priority | Integer | 0-65535 | O | 1 | Indicates the priority of mate SCP. |
mateScpInfoList.scpFqdn | String | NA | O | 1 | Indicates the FQDN of mate SCP. |
mateScpInfoList.scpInstanceId | String | NA | O | 1 | Indicates the NFInstanceId of mate SCP. |
mateScpInfoList.mateSCPLocalities | List(String) | NA | O | 0..N | Indicates the list of Localities served by mate SCP. |
Note:
Only for self SCP, you can modify CustomInfo using this REST API. You can add, modify, and remove mate SCP information for self SCP.2.14 Fetching Release 15 Routing Rules
Request_Type: GET
This section provides the following information about Release 15 Routing Rules configurations:
Note:
Release 15 deployment model is not supported from SCP 23.4.0.
URI:
/ocscp/scpc-configuration/v1/routing-rules
Port: 8080
Description: Retrieve a collection list of routing rules (virtual services) configured in SCP.
Table 2-105 Parameter for fetching routing rules
Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
nfFqdn | FQDN | O | 1 | FQDN of NF service. |
nfType | NFType | O | 1 | This IE shall contain the NF type of the NF for which Routing Rules are being fetched. |
nfInstanceId | NfInstanceId | O | 1 | Identity of the NF instance for which Routing Rules are being fetched. |
nfServiceType | NFService | O | 1 | NFService, that is, nudm-uecm, for which Routing Rules are being fetched. |
nfIp | Ipv4Addr | O | 1 | IPv4 address for which Routing Rules are being fetched. |
nfServiceInstanceId | String | C | 1 |
NF Service Instance ID for which Routing Rules are being fetched. To be used along with nfInstanceId. |
Note:
- Only one or two Query parameters are supported.
- Valid combination of two query parameters are provided as
follows:
- nfFqdn + nfType
- NfIp+ nfServiceType
- nfInstanceId + nfServiceInstanceId
Table 2-106 Data Structures Supported by the GET Response Body on this Resource
Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Code | Description |
---|---|---|---|---|
array (VirtualServices) | M | 1 | 200 OK | List of routing Rules (Virtual Services) matching criteria. |
ProblemDetails | M | 1 | 400 BAD REQUEST | Returns when an invalid combination or more than two query parameters are provided. |
[{
"spec": {
"hosts": ["string"],
"http": [{
"match": [{
"app_name": "string",
"authority": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
},
"headers": {
"additionalProp1": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
},
"additionalProp2": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
},
"additionalProp3": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
}
},
"method": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
},
"scheme": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
},
"uri": {
"exact": "string",
"ocscpc_exact_into": "string",
"ocscpw_range_match": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
},
"ocscpw_snssai": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"prefix": "string",
"regex": "string"
}
}],
"ocscpc_app_info": {
"api_version": "string",
"ocscpc_app_name": "string",
"ocscpc_group_id": "string",
"ocscpc_trigger_points": "string"
},
"ocscpc_congestion": {
"ocscpc_alt_rte_clear": 0,
"ocscpc_alt_rte_onset": 0,
"ocscpc_error_code": 0,
"ocscpc_throttle_clear": 0,
"ocscpc_throttle_onset": 0
},
"ocscpc_forward_route": {
"ocscpc_host": "string",
"ocscpc_host_header": "string",
"ocscpc_load": 0,
"ocscpc_nf_instance_id": "string",
"ocscpc_service_instance_id": "string",
"ocscpw_api_prefix": "string"
},
"ocscpc_type": "string",
"ocscpw_reattempt_on": "string",
"ocscpw_reroutes": {
"ocscpw_reroute_attempts": 0
},
"ocscpw_rproxy": true,
"retries": {
"attempts": 0,
"perTryTimeout": "string"
},
"route": [{
"destination": {
"endpoints": [{
"address": "string",
"ports": {
"additionalProp1": 0,
"additionalProp2": 0,
"additionalProp3": 0
}
}],
"host": "string",
"location": "string",
"port": {
"number": 0
},
"ports": [{
"name": "string",
"number": 0,
"protocol": "string"
}],
"resolution": "string"
},
"ocscpc_load": 0,
"ocscpw_api_prefix": "string",
"ocscpw_nf_instance_id": "string",
"ocscpw_priority": 0,
"ocscpw_service_instance_id": "string",
"weight": 0
}],
"timeout": "string"
}],
"ocscp_nf_instance_id": ["string"]
}
}]
$ curl -X GET "http://10.75.236.84:32360/ocscp/scpc-configuration/v1/routing-rules?nfType=NRF&nfFqdn=nrf1svc.scpsvc.svc.cluster.local" -H "accept: */*"
[{
"spec": {
"hosts": ["nrf1svc.scpsvc.svc.cluster.local:8080-nnrf-disc"],
"http": [{
"match": [{
"uri": {
"regex": "/nnrf-disc/v1/(.*)\\??(?:&?[^=&]*=[^=&]*)*"
},
"app_name": "END_NODE"
}],
"route": [{
"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-4454-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}],
"retries": {
"attempts": 1,
"perTryTimeout": "1s"
},
"ocscpw_reroutes": {
"ocscpw_reroute_attempts": 2
},
"ocscpw_reattempt_on": "5xx,404,408,retriable-4xx,410,429,307,308",
"timeout": "6s",
"ocscpc_type": "END_NODE",
"ocscpc_congestion": {
"ocscpc_alt_rte_onset": 80,
"ocscpc_alt_rte_clear": 75,
"ocscpc_throttle_onset": 90,
"ocscpc_throttle_clear": 85,
"ocscpc_error_code": 503
},
"ocscpc_forward_route": {
"ocscpc_host": "nrf1svc.scpsvc.svc.cluster.local:8080",
"ocscpc_host_header": ":authority",
"ocscpc_load": 0,
"ocscpc_nf_instance_id": "6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a",
"ocscpc_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02"
}
}, {
"match": [{
"uri": {
"prefix": "/nnrf-disc/v1"
},
"app_name": "END_NODE"
}],
"route": [{
"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-4454-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}],
"retries": {
"attempts": 1,
"perTryTimeout": "1s"
},
"ocscpw_reroutes": {
"ocscpw_reroute_attempts": 0
},
"ocscpw_reattempt_on": "5xx,404,408,retriable-4xx,410,429,307,308",
"timeout": "6s",
"ocscpc_type": "END_NODE",
"ocscpc_congestion": {
"ocscpc_alt_rte_onset": 80,
"ocscpc_alt_rte_clear": 75,
"ocscpc_throttle_onset": 90,
"ocscpc_throttle_clear": 85,
"ocscpc_error_code": 503
}
}],
"ocscp_nf_instance_id": ["6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a"]
}
}, {
"spec": {
"hosts": ["ocscp-scp-worker.scpsvc.svc.cluster.local:8000-nnrf-disc"],
"http": [{
"match": [{
"uri": {
"regex": "(/.*)?/nnrf-disc/v1/(.*)\\??(?:&?[^=&]*=[^=&]*)*"
},
"app_name": "END_NODE"
}],
"route": [{
"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-4454-a507-a14ef8e1bc5a",
"ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
"ocscpc_load": 0
}],
"retries": {
"attempts": 1,
"perTryTimeout": "1s"
},
"ocscpw_reroutes": {
"ocscpw_reroute_attempts": 2
},
"ocscpw_reattempt_on": "5xx,404,408,retriable-4xx,410,429,307,308",
"timeout": "6s",
"ocscpc_type": "END_NODE",
"ocscpc_congestion": {
"ocscpc_alt_rte_onset": 80,
"ocscpc_alt_rte_clear": 75,
"ocscpc_throttle_onset": 90,
"ocscpc_throttle_clear": 85,
"ocscpc_error_code": 503
}
}]
}
}]
Failure Case
- If the number of Query Parameters is greater than three, following
is the error
response:
$ curl -X GET "http://localhost:8081//ocscp/scpc-configuration/v1/routing-rules?nfType=NRF&nfServiceType=nnrf-nfm&nfInstanceId=abcd" -H "accept: */*" Error response for above curl Request: Response Code: 400 Response Status: Error:BAD_REQUEST Response Body : { "title": "Bad Request", "status": "400", "detail": "Maximum 2 Query Parameters are allowed", "instance": "/ocscp/scpc-configuration/v1/routing-rules?nfType=NRF&nfServiceType=nnrf-nfm&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: chunked
- If any invalid combination of Query Parameters is requested,
following is the error
response:
$ curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/routing-rules?nfType=NRF&nfInstanceId=6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a" -H "accept: */*" Error response for above curl Request: Response Code: 400 Response Status: Error:BAD_REQUEST Response Body: { "title": "Bad Request", "status": "400", "detail": "Requested combination of Query Parameters is not allowed", "instance": "/ocscp/scpc-configuration/v1/routing-rules?nfType=NRF&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: chunked
2.15 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-107 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-108 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-109 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-110 Config Data Type
Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
---|---|---|---|---|---|
durationInSec | integer | M | 1 | 1-300 | Indicates the time unit in seconds to calculate the rate. |
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-111 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": 0,
"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-112 Response Body Data Type
Data Type | Description |
---|---|
IngressRateLimiterData | Same as the request body as described in Table 2-108. |
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-113 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-114 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://10.75.225.82:31578/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://10.75.225.82:31578/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-115 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://10.75.225.82:30361/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://10.75.225.82:31578/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://10.75.215.197:32438/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-116 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-117 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://10.75.225.82:31578/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://10.75.225.82:31578/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.16 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-118 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-119 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-120 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-121 Config Data Type
Name | DataType | Mandatory (M) or Optional(O) | Cardinality | Range | Description |
---|---|---|---|---|---|
durationInSec | integer | M | 1 | 1-300 | Indicates the time unit in seconds to calculate the rate. |
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": send configured error response back immediately "AlternateRoute": attempt alternate routing |
Table 2-122 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": 0,
"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-123 Response Body Data Type
Data Type | Description |
---|---|
EgressRateLimiterData | Same as the request body as described in Table 2-119. |
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-124 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-125 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://10.75.224.67:31612/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://10.75.224.67:31612/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://10.75.226.108:30331/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-126 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://10.75.226.108:32042/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://10.75.226.108:30331/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://10.75.215.197:32438/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-127 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-128 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://10.75.226.108:30331/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://10.75.226.108:30331/ocscp/scpc-configuration/v1/
egressratelimiter?fqdn=udm1.vzw.com"-H "accept:
*/*" 200OK
Failure case 1, Incorrect query parameter like NFType
$ curl -X DELETE "http://10.75.226.108:30331/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://10.75.226.108:30331/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.17 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-129 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
, and scpc-subscription
.
Response Body of GET 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": "OFF"
}
},
"scp-cache": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}
},
"scp-nrfproxy-oauth": {
"appLogLevel": "WARN",
"packageLogLevel": [
{
"packageName": "library",
"logLevelForPackage": "OFF"
}
],
"logRateControl": {
"rate": 100,
"logLevel": "OFF"
}
}
}
]
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-130 Logging
Attribute Name | Data Type | Constraints | Default Values | Description |
---|---|---|---|---|
appLogLevel | string | INFO,DEBUG,WARN,ERROR, TRACE | WARN | Specifies the log level of the application
Note:
|
packageLogLevel | array (PackageLogLevel) | - | See PackageLogLevel table | Specifies a list of individual packages and their respective log levels |
logRateControl | See LogRateControl table | See LogRateControl table | See LogRateControl table | Specifies the log levels of the application to support rate control. |
Table 2-131 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-132 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-133 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
scpWorker: &workerLogLevelRef 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.17.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-134 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.18 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-135 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-136 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-137 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-138 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-139 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-140 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://10.75.236.84:32360/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://10.75.226.108:30701/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: chunked
If 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: chunked
2.19 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-141 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-142 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:
|
Any string followed the convention.
Example: 101400 |
targetRelease | String | O | 1 | Target release version for performing upgrade and
rollback.
The convention to identify a release is
as follows:
|
Any string followed the convention.
Example: 221000 |
Table 2-143 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://10.75.224.18:32054/ocscp/scpc-configuration/v1/upgraderollbackevents" -H "accept: */*"" -H "accept: */*"
[
{
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Started",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T00:36:40.000+00:00"
},
{
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Completed",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T00:40:55.000+00:00"
},
{
"serviceName": "scpc-configuration",
"event": "Post_Upgrade_Started",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T00:50:23.000+00:00"
},
{
"serviceName": "scpc-configuration",
"event": "Post_Upgrade_Completed",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T01:02:02.000+00:00"
},
{
"serviceName": "scpc-configuration",
"event": "Upgrade_Completed",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T01:17:15.000+00:00"
},
{
"serviceName": "scp-worker",
"event": "Pre_Upgrade_Started",
"sourceRelease": "011200",
"targetRelease": "011300",
"creationTimestamp": "2021-05-26T01:31:13.000+00:00"
},
{
"serviceName": "scpc-subscription",
"event": "Pre_Upgrade_Started",
"sourceRelease": "011300",
"targetRelease": "011400",
"creationTimestamp": "2021-05-26T04:01:25.000+00:00"
},
{
"serviceName": "scpc-subscription",
"event": "Pre_Upgrade_Started",
"sourceRelease": "011300",
"targetRelease": "011400",
"creationTimestamp": "2021-05-26T04:15:43.000+00:00"
},
{
"serviceName": "scpc-subscription",
"event": "Pre_Upgrade_Started",
"sourceRelease": "011300",
"targetRelease": "011400",
"creationTimestamp": "2021-05-26T04:28:42.000+00:00"
}
]
2.20 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-144 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-145 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-146 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-147 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.21 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-148 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-149 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-150 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-151 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-152 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. |
spnlist | Array | O | 1 | NA | Provides the list of service proto names to be refreshed. |
Table 2-153 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-154 AlternateNFGroupConfiguration Data Type
Data Type | Description |
---|---|
AlternateNFGroupConfiguration | Indicates the data type of the DNS SRV configuration.
For more information, see Table 2-150. |
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-155 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-156 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-157 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://10.75.212.178:31147/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://10.75.212.178:31147/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-158 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-150. |
Table 2-159 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://10.75.225.82:30361/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://10.75.225.82:31578/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-160 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://10.75.212.178:31147/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://10.75.212.178:31147/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-161 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-152. |
The following examples are of successful and failed responses.
Success response:
curl -X PUT "http://10.75.212.178:31147/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://10.75.212.178:32137/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.22 Configuring Server Header
Resources
The following table describes the resource name to retrieve and update server header configurations in SCP.
Table 2-162 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-163 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(eg: envoy,istio-envoy
etc.. )/string patterns(eg: e.*y, etc) 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.
Applicable to both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2. Note: This parameter allows the string regex patterns. |
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
etc.)/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 Values range: 400-599 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. |
Resource Definition
GET REST API
URL: curl -X GET "http://10.75.236.15:30862/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://10.75.236.15:30862/ocscp/scpc-configuration/v1/serverheader" -H "accept:
application/json"
Response Data Structure:
Response of "curl -X GET "http://10.75.236.15:30862/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://10.75.236.15:30862/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\"]}"
2.23 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-164 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-165 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-166 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
}
},{
....
...
}
]
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-167 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-168 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://10.75.226.108:32551/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
}
},
{
"ruleName": "udm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"GET",
"POST"
],
"messageType": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1
}
}
]
Successful response - 2
$ curl -X GET "http://10.75.226.108:32551/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": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1
}
}
]
Successful response - 3
$ curl -X GET "http://10.75.226.108:32551/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": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": -1
}
}
]
Successful response - 4
$ curl -X GET "http://10.75.226.108:32551/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
}
}
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-169 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://10.75.226.108:32551/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\":\"REQUEST\",\"enableAssignPriority\":true,\"assignPriority\":10,\"enableOverridePriority\":true,\"overridePriority\":10}}"
{
"ruleName": "nudm_test",
"data": {
"nfServiceName": "nudm_uecm",
"httpMethods": [
"PUT",
"PATCH"
],
"messageType": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": true,
"overridePriority": 10
}
}
200 OK
curl -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"
],
"messageType": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 10,
"enableOverridePriority": false,
"overridePriority": 1
}
}'
Failure case 1: Due to missing data object in the request body.
$ curl -X PUT "http://10.75.226.108:32551/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"nudm_test\"}"
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://10.75.226.108:32551/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"
}
PATCH
REST APIThis resource adds or updates the message priority configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority
Table 2-170 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://10.75.226.108:32551/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=udm_test1"
-H "accept: application/json" -H "Content-Type: application/merge-patch+json" -d
"[{\"op\":\"replace\",\"path\":\"/data/nfServiceName\",\"value\":\"nudm_sdm\"},{\"op\":\"replace\",\"path\":\"/data/messageType\",\"value\":\"REQUEST\"},{\"op\":\"replace\",\"path\":\"/data/httpMethods\",\"value\":[\"GET\"]}]"
Table 2-171 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
{
"ruleName": "udm_test1",
"data": {
"nfServiceName": "nudm_sdm",
"httpMethods": [
"GET"
],
"messageType": "REQUEST",
"enableAssignPriority": true,
"assignPriority": 25,
"enableOverridePriority": false,
"overridePriority": 16
}
}
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-172 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-173 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://10.75.226.108:32551/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=udm_test" -H "accept: application/json" */*"
204 OK
Failure case 1: When no matching entry is found.
$ curl -X DELETE "http://10.75.226.108:32551/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.24 Pod Overload Control Configurations
This section provides information about overload policy configurations to control and discard request messages sent to scp-worker.
2.24.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-174 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-175 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-176 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-177 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-178 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-179. |
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-179 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-180 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-181 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-182 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-183 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-184 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-185 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://10.75.227.181:30258/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-186 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-187 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://10.75.227.181:30258/ocscp/scpc-configuration/V1/scp-worker/pod-overload-control-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response code : 204 No Content
2.24.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-188 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-189 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-190 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-191 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-192 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-193 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-194 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://10.75.227.181:30258/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-195 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://10.75.227.181:30258/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-196 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-197 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://10.75.227.181:30258/ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response Code: 204 No Content
2.24.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-198 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-199 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-200 DiscardPolicyConfig Threshold Level
Threshold Level | discardPercentage | sbiMsgPriorityDiscardForm |
---|---|---|
MINOR | 20 | 16 |
MAJOR | 50 | 8 |
CRITICAL | 70 | 4 |
Table 2-201 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-202 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-203 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-204 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://10.75.227.181:30258/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-205 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://10.75.227.181:30258/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-206 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-207 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://10.75.227.181:30258/ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response Code: 204 No Content
2.25 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-208 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-209 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-210 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-211 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-212 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://10.75.226.108:32551/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://10.75.226.108:32551/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://10.75.226.108:32551/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://10.75.226.108:32551/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-213 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://10.75.226.108:32466/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 OK
This resource adds or updates the SEPP Info configuration using the request body.
Resource URI: /ocscp/scpc-configuration/v1/sepp-config/ {nfInstanceId}
Table 2-214 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://10.75.226.108:32551/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-215 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-216 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-217 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://10.75.226.108:32551/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://10.75.226.108:32551/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.26 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-218 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-219 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": 1,
"responseTimeout": "1s", "exceptionErrorResponses": [ {
"statusCode": [ "DEFAULT" ], "action": "continue_processing" } ]
} } } |
Table 2-220 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.
This value must be in seconds. |
1s |
exceptionErrorResponses | JSON | O | Specifies the methods to handle exceptions in case
of routing failures.
Note: exceptionErrorResponses is used to specify how exceptions are to be handled. By default, one exception configuration is created during deployment where statusCode is DEFAULT and action is continue_processing, this means, if during mediation invocation, if any exception occurs it is continue_processing. To change this behavior, you can create own exceptionConfiguration by specifying action on specific statusCodes. |
"exceptionErrorResponses": [ { "statusCode": [ "DEFAULT"
], "action": "continue_processing" } ] |
Table 2-221 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) |
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-222 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",
"serviceTimeout": "1s",
"exceptionErrorResponses": [
{
"statusCode": [
"DEFAULT"
],
"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,
"serviceTimeout": 5 s,
"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-223 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-224 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-225 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 and GET ALL
curl -X GET "http://10.75.175.233:30953/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": "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": ""
}
}
]
}
}
]
Success response 2
curl -X GET "http://10.75.175.233:30953/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": "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": ""
}
}
]
}
}
Failure response
curl -X GET "http://10.75.175.233:30953/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-226 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-227 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://10.75.175.233:30953/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": "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": ""
}
}
]
}
}
Failure response
curl -X PUT "http://10.75.175.233:30953/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-228 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-229 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.27 Configuring Mediation Trigger Point
Resources
The following table describes the resource name to retrieve, add, update, and remove Mediation trigger points.
Table 2-230 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-231 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. The list of match blocks have OR semantics. 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) | O | 1..N | HTTP methods (GET,POST,PUT,PATCH,DELETE,OPTIONS) |
Note:
For each trigger point configuration, the combination of NfType, serviceName, and httpMethods methods must be unique. No new records can be added with the same combination.For example, if a configuration exists with the following values: ruleName=medRule1, nfType=UDM, serviceName=nudm-uecm, httpMethod = {PUT, POST}, then adding a similar configuration with the same combination of nfType, serviceName, and httpMethods with a different rule name as specified are not allowed: ruleName=medRule2, nfType=UDM, serviceName=nudm-uecm, httpMethod = {PUT, POST}.
Table 2-232 TriggerPoint
Enumeration value | Description |
---|---|
"requestIngress" | Mediation invocation after receiving the ingress 5G SBI request message. |
"requestEgress" |
Mediation invocation before forwarding the 5G SBI request message. |
"responseIngress" |
Mediation invocation after receiving the ingress 5G SBI response message. |
"responseEgress" |
Mediation invocation before forwarding the 5G SBI response message. |
Table 2-233 Match
Field Name | Data Type | Description | Required |
---|---|---|---|
headers |
HeaderBodyMatch[] |
List of header name and header value to match using the MatchType comparison. All conditions inside a single header block have AND semantics. Minimum number of elements or conditions is 1. Maximum number of elements or conditions is 5. |
anyOf |
body |
HeaderBodyMatch[] |
List of the "body IE" JSON Pointer and value at that Pointer to match using the MatchType comparison. All conditions inside a single body block have AND semantics. Minimum number of elements or conditions is 1. Maximum number of elements or condition is 5. |
anyOf |
Table 2-234 HeaderBodyMatch
Field Name | Data Type | Mandatory (M) or Optional(O) | Cardinality | Description |
---|---|---|---|---|
name | String | M | 1 | Name of the header or the bodyIE JSON Pointer.
Note: List of predefined headers available at 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 the header or bodyIE 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.Table 2-235 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-236 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]+$" |
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"
}
],
}
],
"serviceName": "5g-sbi-notification",
"httpMethods": ["PUT","POST"]
"nfType": "5G_EIR",
"triggerPoints": [
"requestEgress"
]
}
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"
}
],
}
],
"serviceName": "5g-sbi-notification",
"httpMethods": [ "PUT", "POST" ]
"nfType": "5G_EIR",
"triggerPoints": [
"requestEgress"
]
}
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-237 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-238 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-239 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://10.75.215.251:30131/ocscp/scpc-configuration/v1/mediation-trigger-point-config" -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:06:48 GMT
[
{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "amfId",
"value": "100",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress",
"requestIngress",
"responseEgress"
],
"groupId": "group1"
}
]
Success response 2
curl -X GET "http://10.75.215.251:30131/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -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
{
"ruleName": "Mediation_rule1",
"nfType": "UDR",
"serviceName": "nudr-group-id-map",
"httpMethods": [
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "amfId",
"value": "100",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress",
"requestIngress",
"responseEgress"
],
"groupId": "group1"
}
Failure response
url -X GET "http://10.75.215.251:30131/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med" -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:07:30 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-240 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-241 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://<SCP configuration FQDN>:30446/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "Mediation_rule1",
"nfType": "NEF",
"serviceName": "3gpp-as-session-with-qos",
"httpMethods": [
"PUT"
],
"match": [
{
"headers": [
{
"name": "api-version",
"value": "v2",
"match-type": "exact"
}
],
"body": [
{
"name": "amfId",
"value": "100",
"match-type": "prefix"
}
]
}
],
"triggerPoints": [
"requestEgress",
"requestIngress",
"responseEgress"
],
"groupId": "group1"
}'
Failure response
curl -X PUT "http://10.75.215.251:30131/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"nfType\":\"udr\",\"serviceName\":\"nudr-group-id-map\",\"groupId\":\"group1\",\"ruleName\":\"Mediation_rule1\",\"httpMethods\":[\"PUT\"],\"match\":[{\"headers\":[{\"match-type\":\"exact\",\"name\":\"api-version\",\"value\":\"v2\"}],\"body\":[{\"match-type\":\"prefix\",\"name\":\"amfId\",\"value\":\"100\"}]}],\"triggerPoints\":[\"requestEgress\",\"requestIngress\",\"responseEgress\"]}" -v
HTTP/1.1 400 Bad Request
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/problem+json
Date: Tue, 24 May 2022 12:03:14 GMT
* Connection #0 to host 10.75.215.251 left intact
{
"title": "Bad Request",
"status": "400",
"detail": "Api ruleName and request body ruleName must be same.",
"instance": "/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule",
"cause": "INVALID_KEY"
}
PATCH 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-242 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-243 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://10.75.215.251:30131/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 10.75.215.251 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://10.75.215.251:30131/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 10.75.215.251 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://10.75.215.251:30131/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 10.75.215.251 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-244 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-245 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://10.75.215.251:30131/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://10.75.215.251:30131/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.28 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-246 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-247 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:
|
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. |
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-248 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-249 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-250 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://10.75.213.183:31612/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://10.75.213.183:31612/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://10.75.213.183:31612/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-251 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-252 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://10.75.213.183:31612/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://10.75.213.183:31612/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-253 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-254 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://10.75.213.183:31612/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://10.75.213.183:31612/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-255 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-256 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://10.75.213.183:31612/ocscp/scpc-configuration/mediation/v1/rules/ruleTest999" -H
"accept: application/json"
Failure response
curl -X DELETE "http://10.75.213.183:31612/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.29 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-257 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-258 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-259 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-260 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-261 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://10.75.213.99:31590/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://10.75.213.99:31590/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://10.75.213.99:31590/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://10.75.213.99:31590/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.30 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-262 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-263 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-264 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://10.75.215.87:30287/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-265 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-266 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://10.75.215.87:30287/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"}]}][root@master ocscp]
DELETE REST API
The following table describes the URI query parameters supported by the DELETE method on this resource:
Table 2-267 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://10.75.215.87:30287/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-268 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-269 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-270 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-271 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-272 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-273 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-274 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.31 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-275 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-276 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:
|
userAgentHeaderSeparator | String | M | 1 | This is the separator that the User-Agent header uses
to separate NFINSTANCEID and FQDN.
The default value is space ( ). |
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. |
[
{
"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-277 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://10.75.237.50:31337/ocscp/scpc-configuration/v1/consumerNfInfo/headerInfo" -H "accept: application/json"
{
"primaryHeaderName": "User-Agent",
"secondaryHeaderName": "X-Forwarded-Client-Cert",
"userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
"userAgentHeaderSeparator": "SPACE",
"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-278 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://10.75.237.50:31337/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": "SPACE",
"xfccHeaderCertExtractIndex": "0",
"xfccHeaderExtractField": "DNS",
"xfccHeaderExtractIndex": "0"
}
Response body
[
{
"primaryHeaderName": "X-Forwarded-Client-Cert",
"secondaryHeaderName": "User-Agent",
"userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
"userAgentHeaderSeparator": "SPACE",
"xfccHeaderCertExtractIndex": "0",
"xfccHeaderExtractField": "DNS",
"xfccHeaderExtractIndex": "0"
}
]
2.32 Configuring SCP Services
Resources
The following table describes the resource name to retrieve and update configuration at the SCP microservices level.
Table 2-279 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-280 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-281 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-282. | For default values, see Table 2-282. |
Table 2-282 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-283 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-283. | For information about default values, see Table 2-283. |
Table 2-284 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-285 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-285. | For information about default values, see Table 2-285. |
Table 2-286 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-287 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-288. | For information about default values, see Table 2-288. |
Table 2-288 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 are 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-289 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-290 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-291 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://10.75.213.144:31343/ocscp/scpc-configuration/v1/scp-service-config -H 'accept: application/json' -v
* About to connect() to 10.75.213.144 port 31343 (#0)
* Trying 10.75.213.144...
* Connected to 10.75.213.144 (10.75.213.144) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 10.75.213.144:31343
> 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://10.75.213.144:31343/ocscp/scpc-configuration/v1/scp-service-config/scp-worker -H 'accept: application/json' -v
* About to connect() to 10.75.213.144 port 31343 (#0)
* Trying 10.75.213.144...
* Connected to 10.75.213.144 (10.75.213.144) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/scp-worker HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 10.75.213.144:31343
> 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 10.75.213.144 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://10.75.224.107:31368/ocscp/scpc-configuration/v1/scp-service-config/Worker1' -H 'accept: application/json' -v
* About to connect() to 10.75.224.107 port 31368 (#0)
* Trying 10.75.224.107...
* Connected to 10.75.224.107 (10.75.224.107) port 31368 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/Worker1 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 10.75.224.107:31368
> 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 10.75.224.107 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-292 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-293 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://10.75.213.144:31343/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://10.75.224.107:31368/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://10.75.224.107:31368/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.33 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-294 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-295 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-296 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-297 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-298 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://10.75.214.171:30970/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://10.75.214.171:30970/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-299 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://10.75.214.171:30970/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 OK
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 PUT "http://10.75.214.171:30970/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://10.75.214.171:30970/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 Request
2.34 Message Feed Configurations
This section provides information about message feed Data Director configurations at SCP.
2.34.1 Configuring Traffic Feed Data Director
This section describes the Traffic Feed Data Director configurations.
Table 2-300 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-301 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-302 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-config
Table 2-303 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-304 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-305 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.34.2 Configuring Traffic Feed Trigger Point Config
This section describes the Traffic Feed Trigger Point configurations.
Table 2-306 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-307 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 |
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:
|
Response Body
Table 2-308 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",
"serviceName": "string",
"trafficFeedTriggerPointConfigData":
{
"allowedTrafficPercentage": 0,
"triggerPoints": [
"RxRequest" ]
}
}
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-point
Table 2-309 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
curl -X 'PUT' \
'http://<SCP configuration FQDN>:30446/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/nef_trafficfeed_rule' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"ruleName": "nef_trafficfeed_rule",
"serviceName": "nnef-eventexposure",
"trafficFeedTriggerPointConfigData": {
"allowedTrafficPercentage": 70,
"triggerPoints": [
"RxRequest"
]
}
}
Table 2-310 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-point
Table 2-311 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.35 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-312 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-313 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-314 NFSerAviceLoadBasedCongestionControl
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 alternate routing. |
alternateRoutingAbatementThresholdPercent | Integer | M | 0-100 | This field indicates the threshold percentage for alternate routing 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-315 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-316 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-317 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-318 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-319 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-320 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://10.75.226.21:32474/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://10.75.226.21:32474/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-321 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-322 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 intact
curl -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.36 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-323 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-324 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-325 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-326 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-327 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-328 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://10.75.213.193:30066/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-329 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-330 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-331 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-332 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 Content
curl -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.37 Routing Config Set
This REST API is used to define custom routing options for notification message only.
The routing configuration set defined using this API is used as a reference in another table, Routing Options Configuration. For more information, see Routing Options Configurations.
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-333 Resource Name
Resource Name | Resource URI | HTTP Method | Query Parameter | Description |
---|---|---|---|---|
routing-config-set | /ocscp/scpc-configuration/v1/routing-config-set/<routingConfigSetName> | GET | None | Get routing configurations based on routingConfigSetName. |
routing-config-set | /ocscp/scpc-configuration/v1/routing-config-set/ | GET | None | Get all routing configurations. |
routing-config-set | /ocscp/scpc-configuration/v1/routing-config-set/<routingConfigSetName> | PUT | None |
|
routing-config-set | /ocscp/scpc-configuration/v1/routing-config-set/<routingConfigSetName> | DELETE | None |
|
Resource Definition
GET REST API:
This resource fetches the routing conifig set configurations for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-334 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-335 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
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,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptionErrorResponses":[{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":400,"error_response":"Bad Request"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":400,"error_response":"Bad Request"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":400,"error_response":"Bad Request"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false},"createdTimestamp":"2024-08-20 09:34:57","updatedTimestamp":"2024-08-20 09:34:57"}
Failure case
curl -v -H "Content-Type: application/json" --request GET http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
HTTP/1.1 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"}
GET REST API:
This resource fetches all routing configurations rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set
Table 2-336 Data structures
Data Type | Mandatory (M) or Optional(O) | Cardinality | Response Codes | Description |
---|---|---|---|---|
routingConfigSetWrapperV2 | M | 1..N | 200 OK | The routing options with the rule name. |
Example of Congestion Control Configuration 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,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptionErrorResponses":[{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false},"createdTimestamp":"2024-08-20 09:34:57","updatedTimestamp":"2024-08-20 09:34:57"},{"routingConfigSetName":"svc_req_default_config_set","routingOptions":{"srv":{"maxRoutingAttempts":3,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptionErrorResponses":[{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false},"createdTimestamp":"2024-08-20 09:34:57","updatedTimestamp":"2024-08-20 09:34:57"}]
PUT REST API:
This resource creates or updates the routing config set configurationss for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-337 URI query parameters
Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
routingConfigSetName | String | M | The name of the routing config set rule used to create the respective routing options. |
Table 2-338 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. |
Example
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1 -d '{"routingConfigSetName":"config1","routingOptions":{"srv":{"maxRoutingAttempts":3,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptionErrorResponses":[{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false}}'
HTTP/1.1 201 Created
{"routingConfigSetName":"config1","routingOptions":{"srv":{"maxRoutingAttempts":3,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"5xx"},{"statusCode":"307"},{"statusCode":"429"},{"statusCode":"308"}],"exceptionErrorResponses":[{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"5xx"},{"statusCode":"307"},{"statusCode":"429"},{"statusCode":"308"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false},"createdTimestamp":"2024-08-20 09:57:45","updatedTimestamp":"2024-08-20 09:57:45"}
curl -v -H "Content-Type: application/json" --request PUT http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1123 -d '{"routingConfigSetName":"config1","routingOptions":{"srv":{"maxRoutingAttempts":3,"alternateNfSelection":true},"pod":{"alternateRouting":true,"maxRoutingAttempts":1},"alternateNFGroupRoutingOptions":{"mode":"NF_SET"},"totalTransactionLifetime":"6s","responseTimeout":"1s","reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptionErrorResponses":[{"name":"Resource_Exhausted","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Response","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"Connect_Failure","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"},{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}],"nextHopSCP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"nextHopSEPP":{"totalTransactionLifetime":"7s","responseTimeout":"4s","service":{"maxRoutingAttempts":2},"serviceEndpoint":{"maxRoutingAttempts":1},"reRouteConditionList":[{"statusCode":"307"},{"statusCode":"308"},{"statusCode":"429"},{"statusCode":"5xx"}],"exceptions":[{"name":"No_Host","action":"Send_Answer","error_code":504,"error_response":"Gateway Timeout"}]},"assignPreferredLocality":false,"overridePreferredLocality":false,"forwardRevisedPreferredLocality":false}}'
HTTP/1.1 400 Bad Request
{
"title": "Bad Request",
"status": 400,
"detail": "ConfigName in request Body does not match with ConfigName provided in API. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/routing-config-set/config1123",
"cause": "INVALID_KEY_COMBINATION"
}
DELETE REST API:
This resource deletes the routing config sets for the specified rules.
Resource URI:
/ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}
Table 2-339 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 needs to be deleted. |
Table 2-340 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 | Problem details. |
ProblemDetails | M | 1 | 404 Not Found | Problem details. |
Example
curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
HTTP/1.1 204 No Content
curl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set
HTTP/1.1 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"}
Failure case 2
curl -v -H
"Content-Type: application/json"--request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1 HTTP/1.1404Not 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
Table 2-341 Parameters for Configure Routing Options
Parameter Name | Description | Default Values | 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, SCP performs alternate rerouting to the available alternate NF or pod. If no alternate NFs or pods are available, SCP sends an error message. | 1 second | 100-10000 ms
The supported values can be in 's' or 'ms'. Where, 's' is seconds and 'ms' is milliseconds. |
Yes | Yes |
totalTransactionLifetime |
Indicates the total time allowed to forward a request, including the initial and all subsequent routing attempts. Note: The totalTransactionLifetime value should be greater than the value obtained by multiplying responseTimeout by the total maximum number of attempts (pod level + service level). |
6 seconds | 100 - 240000 ms | Yes | Yes |
|
Indicates the maximum number of forward routing attempts at a service level.
The default route attempt is 1. |
1 for Pod Level. 3 for Service Level | 1-5 | Yes | Yes |
pod.alternateRouting | boolean | true | true or false | - | - |
reRouteConditionList |
|
"reRouteConditionList":[ { "statusCode": "5xx" }, { "statusCode": "429" }, { "statusCode": "307" }, { "statusCode": "308" }] | 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 |
exceptionErrorResponses |
Resource Exhausted Action:
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. |
Send Answer with configured http status code (Default 504). | NA | Yes | No |
exceptionErrorResponses |
No Producer Response Action
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. |
Send Answer with configured http status code (Default 504). | NA | Yes | No |
exceptionErrorResponses |
Connection Failure Action:
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. |
Send Answer with configured http status code (Default 504). | NA | Yes | No |
exceptionErrorResponses |
Host not found Action:
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. |
Send Answer with configured http status code (Default 400). | NA | Yes | No |
assignPreferredLocality | 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. | false | true, false | Yes | NA |
overridePreferredLocality | 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. | false | true, false | Yes | NA |
forwardRevisedPreferredLocality | Controls the forwarding of assigned or overridden values of 3gpp-Sbi-Discovery-preferred-locality headers to the next hop SCP. | false | true, false | Yes | NA |
service | Name of the NF service. | SCP level config | NA | Yes | Yes |
nextHopSCP.service.maxRoutingAttempts |
Indicates the maximum number of reroute attempt (retries) at service level.
The default routing attempt is 1. |
2 attempts | 1-5 | Yes | Yes |
nextHopSCP.serviceEndpoint.maxRoutingAttempts |
Indicates the maximum number of reroute attempts (retries) at NF or pod level.
The default routing attempt is 1. |
1 attempt | 1-5 | Yes | Yes |
nextHopSCP.responseTimeout | 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. | 4 seconds | 100-10000 ms | Yes | Yes |
nextHopSCP.totalTransactionLifetime |
Indicates the total time allowed to forward a request to Next Hop SCP. Note:
|
7 seconds | 100 - 240000 ms | Yes | Yes |
nextHopSCP.exceptions | Host not found Action
|
Send Answer with configured http status code (Default 400). |
|
Yes | - |
nextHopSCP.loadBasedCongestionControlEnabled |
Enables and disables load based congestion control for nextHopSCP. |
true | true, false | Yes | No |
nextHopSCP.nfServiceLoadBasedCongestionControlCfg | Name of the rule holding the configuration of congestion control for nextHopSCP. Based on the configuration under this rule, congestion control works. | defaultRuleForNextHopScp | |||
nextHopSEPP.totalTransactionLifetime |
|
7 seconds | 100 - 240000 | Yes | Yes |
nextHopSEPP.responseTimeout | 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. | 4 seconds | 100-10000 ms | Yes | Yes |
nextHopSEPP.service.maxRoutingAttempts |
|
2 | 1 to 5 | Yes | Yes |
nextHopSEPP.serviceEndpoint.maxRoutingAttempts |
|
1 | 1 to 5 | Yes | Yes |
nextHopSEPP.reRouteConditionList |
|
"reRouteConditionList":[ { "statusCode": "5xx" }, { "statusCode": "429" }, { "statusCode": "307" }, { "statusCode": "308" }] | 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 as configured in enginnerging config table | Yes | Yes |
nextHopSEPP.exceptions | Host not found Action
|
Send Answer with configured http status code (Default 400). |
|
Yes | No |
nextHopSEPP.loadBasedCongestionControlEnabled | Enables and disables load-based congestion control for the nextHopSEPP. | true | true, false | Yes | No |
nextHopSEPP.nfServiceLoadBasedCongestionControlCfg | Name of the rule holding the configuration of congestion control for nexthopSEPP. Based on the configuration under this rule, congestion control will work. | defaultRuleForNextHopSepp | - | Yes | - |
alternateNFGroupRoutingOptions | This parameter decides the alternate
routing mode, depending on which scp-worker derives the alternate
producer NF
|
NF_SET | NF_SET DNS_SRV NF_SET_FOLLOWED_BY_DNSSRV STATIC_CONFIG NF_SET_FOLLOWED_BY_STATIC_CONFIG | Yes | No |
loadBasedCongestionControlEnabled | Enables and disables load-based congestion control. | true | true, false | Yes | No |
nfServiceLoadBasedCongestionControlCfg | Name of the rule holding the
configuration of congestion control. Based on the configuration
under this rule, congestion control
works.
|
defaultRule |
Request Body (PUT)
The following table describes the field names of the routingConfigSetWrapperV2 data type.
Table 2-342 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. |
routingOptions | JSON | M | - | - | This field defines the routing option configurations. |
createdTimestamp | String | Read Only | - | - | Timestamp of the created record: not needed in the request but will be present in the response. |
updatedTimestamp | String | Read Only | - | - | Timestamp of the updated record: not needed in the request but will be present in the response. |
2.38 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-343 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
refreshAll
to 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-344 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-348. |
Table 2-345 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://10.75.226.46:30590/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://10.75.226.46:30590/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-346 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://10.75.226.46:30590/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-347 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://10.75.226.46:30590/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-348 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-349 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-350 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-351 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-349 table configurations. Deletion of nnrf-nfm and nnrf-disc service types from the NRF SRV profile is not supported.
2.39 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-352 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-353 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://10.75.226.46:31527/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-354 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.40 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-355 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-356 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-357 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-358 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-359 Default Rule Names Configuration
ruleName | targetNfType | serviceNames | excludeDiscoveryQueryParams |
---|---|---|---|
defaultNFTypeDiscovery | * | absent | [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] |
defaultNFServiceDiscovery | * | * | [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] |
Table 2-360 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-361 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-362 URI query parameters
Field Name | Data Type | Mandatory (M) or Optional(O) | Description |
---|---|---|---|
ruleName | String | O |
|
Table 2-363 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://10.75.213.61:32586/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 Request
Request:
curl -X 'GET' 'http://10.75.213.61:32586/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 Found
HttpStatus : 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://10.75.213.61:32586/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-364 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-365 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://10.75.213.61:32586/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://10.75.213.61:32586/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://10.75.213.61:32586/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://10.75.213.61:32586/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-366 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-367 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://10.75.213.61:32586/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' -H 'accept: application/json'
Response: 204 OK
Request:
curl -X 'DELETE' 'http://10.75.213.61:32586/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 Found
Request(Input given as wrong version v5):
curl -X 'DELETE' 'http://10.75.213.61:32586/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 Request
HttpStatus : 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://10.75.213.61:32586/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.41 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-368 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-369 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://10.75.225.77:32000/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-370 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://10.75.225.77:32000/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://10.75.225.77:32000/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-371 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-372 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-373 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://10.75.225.77:32000/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://10.75.225.77:30250/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-374 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"
]
}
}